START: ptest-runner
2025-06-04T17:35
+ id -u glib2-test
id: 'glib2-test': no such user
+ useradd glib2-test
+ cd /tmp
+ su glib2-test -c 'G_TEST_TMPDIR=`readlink -f /tmp` gnome-desktop-testing-runner glib'
Running test: glib/protocol.test
TAP version 14
# random seed: R02S8d21038b19d5bda05cc7d30246325901
1..9
# Start of glib tests
# Start of testing tests
# Start of protocol tests
ok 1 /glib/testing/protocol/debug
ok 2 /glib/testing/protocol/info
ok 3 /glib/testing/protocol/message
ok 4 /glib/testing/protocol/warning
ok 5 /glib/testing/protocol/critical
ok 6 /glib/testing/protocol/error
ok 7 /glib/testing/protocol/gtest-message
ok 8 /glib/testing/protocol/test-message
ok 9 /glib/testing/protocol/test-error
# End of protocol tests
# End of testing tests
# End of glib tests
PASS: glib/protocol.test
Running test: glib/bitlock.test
TAP version 14
# random seed: R02Sae27bf1b202ec4a1ec88d2a874f2b8d5
1..1
# Start of bitlock tests
# Start of performance tests
# max perf: iterations per second
ok 1 /bitlock/performance/uncontended
# End of performance tests
# End of bitlock tests
PASS: glib/bitlock.test
Running test: glib/overflow.test
TAP version 14
# random seed: R02S51fd839163676d44dc62420a005a1d46
1..6
# Start of glib tests
# Start of checked-math tests
ok 1 /glib/checked-math/guint-add
ok 2 /glib/checked-math/guint-mul
ok 3 /glib/checked-math/guint64-add
ok 4 /glib/checked-math/guint64-mul
ok 5 /glib/checked-math/gsize-add
ok 6 /glib/checked-math/gsize-mul
# End of checked-math tests
# End of glib tests
PASS: glib/overflow.test
Running test: glib/dynamictests.test
TAP version 14
# random seed: R02Sc3c115e169e2f892e1e9cca7405cfc89
1..2
# Start of GObject tests
ok 1 /GObject/threaded-dynamic-ref-unref-init
ok 2 /GObject/dynamic-interface-properties
# End of GObject tests
PASS: glib/dynamictests.test
Running test: glib/slist.test
TAP version 14
# random seed: R02Sda2d8617f8ae5a28b9c7392793d86f10
1..14
# Start of slist tests
ok 1 /slist/sort
ok 2 /slist/sort-with-data
ok 3 /slist/insert-sorted
ok 4 /slist/insert-sorted-with-data
ok 5 /slist/reverse
ok 6 /slist/nth
ok 7 /slist/remove
ok 8 /slist/remove-all
ok 9 /slist/insert
ok 10 /slist/position
ok 11 /slist/concat
ok 12 /slist/copy
# Start of sort tests
ok 13 /slist/sort/stable
# End of sort tests
# Start of copy tests
ok 14 /slist/copy/deep
# End of copy tests
# End of slist tests
PASS: glib/slist.test
Running test: glib/gobject-private.test
TAP version 14
# random seed: R02Sfdcc73b7de9ea15ae0a886a8c6c8d004
1..3
# Start of private tests
ok 1 /private/instance
ok 2 /private/derived-instance
ok 3 /private/mixed-derived-instance
# End of private tests
PASS: glib/gobject-private.test
Running test: glib/utf8-validate.test
TAP version 14
# random seed: R02Sdfa6f87f83582f12e0fbc1cb38e3032a
1..238
# Start of utf8 tests
# Vector 0
# Vector 1
# Vector 2
# Vector 3
# Vector 4
# Vector 5
# Vector 6
# Vector 7
# Vector 8
# Vector 9
# Vector 10
# Vector 11
# Vector 12
# Vector 13
# Vector 14
# Vector 15
# Vector 16
# Vector 17
# Vector 18
# Vector 19
# Vector 20
# Vector 21
# Vector 22
# Vector 23
# Vector 24
# Vector 25
# Vector 26
# Vector 27
ok 1 /utf8/get-char-validated
# Start of validate tests
ok 2 /utf8/validate/0
ok 3 /utf8/validate/1
ok 4 /utf8/validate/2
ok 5 /utf8/validate/3
ok 6 /utf8/validate/4
ok 7 /utf8/validate/5
ok 8 /utf8/validate/6
ok 9 /utf8/validate/7
ok 10 /utf8/validate/8
ok 11 /utf8/validate/9
ok 12 /utf8/validate/10
ok 13 /utf8/validate/11
ok 14 /utf8/validate/12
ok 15 /utf8/validate/13
ok 16 /utf8/validate/14
ok 17 /utf8/validate/15
ok 18 /utf8/validate/16
ok 19 /utf8/validate/17
ok 20 /utf8/validate/18
ok 21 /utf8/validate/19
ok 22 /utf8/validate/20
ok 23 /utf8/validate/21
ok 24 /utf8/validate/22
ok 25 /utf8/validate/23
ok 26 /utf8/validate/24
ok 27 /utf8/validate/25
ok 28 /utf8/validate/26
ok 29 /utf8/validate/27
ok 30 /utf8/validate/28
ok 31 /utf8/validate/29
ok 32 /utf8/validate/30
ok 33 /utf8/validate/31
ok 34 /utf8/validate/32
ok 35 /utf8/validate/33
ok 36 /utf8/validate/34
ok 37 /utf8/validate/35
ok 38 /utf8/validate/36
ok 39 /utf8/validate/37
ok 40 /utf8/validate/38
ok 41 /utf8/validate/39
ok 42 /utf8/validate/40
ok 43 /utf8/validate/41
ok 44 /utf8/validate/42
ok 45 /utf8/validate/43
ok 46 /utf8/validate/44
ok 47 /utf8/validate/45
ok 48 /utf8/validate/46
ok 49 /utf8/validate/47
ok 50 /utf8/validate/48
ok 51 /utf8/validate/49
ok 52 /utf8/validate/50
ok 53 /utf8/validate/51
ok 54 /utf8/validate/52
ok 55 /utf8/validate/53
ok 56 /utf8/validate/54
ok 57 /utf8/validate/55
ok 58 /utf8/validate/56
ok 59 /utf8/validate/57
ok 60 /utf8/validate/58
ok 61 /utf8/validate/59
ok 62 /utf8/validate/60
ok 63 /utf8/validate/61
ok 64 /utf8/validate/62
ok 65 /utf8/validate/63
ok 66 /utf8/validate/64
ok 67 /utf8/validate/65
ok 68 /utf8/validate/66
ok 69 /utf8/validate/67
ok 70 /utf8/validate/68
ok 71 /utf8/validate/69
ok 72 /utf8/validate/70
ok 73 /utf8/validate/71
ok 74 /utf8/validate/72
ok 75 /utf8/validate/73
ok 76 /utf8/validate/74
ok 77 /utf8/validate/75
ok 78 /utf8/validate/76
ok 79 /utf8/validate/77
ok 80 /utf8/validate/78
ok 81 /utf8/validate/79
ok 82 /utf8/validate/80
ok 83 /utf8/validate/81
ok 84 /utf8/validate/82
ok 85 /utf8/validate/83
ok 86 /utf8/validate/84
ok 87 /utf8/validate/85
ok 88 /utf8/validate/86
ok 89 /utf8/validate/87
ok 90 /utf8/validate/88
ok 91 /utf8/validate/89
ok 92 /utf8/validate/90
ok 93 /utf8/validate/91
ok 94 /utf8/validate/92
ok 95 /utf8/validate/93
ok 96 /utf8/validate/94
ok 97 /utf8/validate/95
ok 98 /utf8/validate/96
ok 99 /utf8/validate/97
ok 100 /utf8/validate/98
ok 101 /utf8/validate/99
ok 102 /utf8/validate/100
ok 103 /utf8/validate/101
ok 104 /utf8/validate/102
ok 105 /utf8/validate/103
ok 106 /utf8/validate/104
ok 107 /utf8/validate/105
ok 108 /utf8/validate/106
ok 109 /utf8/validate/107
ok 110 /utf8/validate/108
ok 111 /utf8/validate/109
ok 112 /utf8/validate/110
ok 113 /utf8/validate/111
ok 114 /utf8/validate/112
ok 115 /utf8/validate/113
ok 116 /utf8/validate/114
ok 117 /utf8/validate/115
ok 118 /utf8/validate/116
ok 119 /utf8/validate/117
ok 120 /utf8/validate/118
ok 121 /utf8/validate/119
ok 122 /utf8/validate/120
ok 123 /utf8/validate/121
ok 124 /utf8/validate/122
ok 125 /utf8/validate/123
ok 126 /utf8/validate/124
ok 127 /utf8/validate/125
ok 128 /utf8/validate/126
ok 129 /utf8/validate/127
ok 130 /utf8/validate/128
ok 131 /utf8/validate/129
ok 132 /utf8/validate/130
ok 133 /utf8/validate/131
ok 134 /utf8/validate/132
ok 135 /utf8/validate/133
ok 136 /utf8/validate/134
ok 137 /utf8/validate/135
ok 138 /utf8/validate/136
ok 139 /utf8/validate/137
ok 140 /utf8/validate/138
ok 141 /utf8/validate/139
ok 142 /utf8/validate/140
ok 143 /utf8/validate/141
ok 144 /utf8/validate/142
ok 145 /utf8/validate/143
ok 146 /utf8/validate/144
ok 147 /utf8/validate/145
ok 148 /utf8/validate/146
ok 149 /utf8/validate/147
ok 150 /utf8/validate/148
ok 151 /utf8/validate/149
ok 152 /utf8/validate/150
ok 153 /utf8/validate/151
ok 154 /utf8/validate/152
ok 155 /utf8/validate/153
ok 156 /utf8/validate/154
ok 157 /utf8/validate/155
ok 158 /utf8/validate/156
ok 159 /utf8/validate/157
ok 160 /utf8/validate/158
ok 161 /utf8/validate/159
ok 162 /utf8/validate/160
ok 163 /utf8/validate/161
ok 164 /utf8/validate/162
ok 165 /utf8/validate/163
ok 166 /utf8/validate/164
ok 167 /utf8/validate/165
ok 168 /utf8/validate/166
ok 169 /utf8/validate/167
ok 170 /utf8/validate/168
ok 171 /utf8/validate/169
ok 172 /utf8/validate/170
ok 173 /utf8/validate/171
ok 174 /utf8/validate/172
ok 175 /utf8/validate/173
ok 176 /utf8/validate/174
ok 177 /utf8/validate/175
ok 178 /utf8/validate/176
ok 179 /utf8/validate/177
ok 180 /utf8/validate/178
ok 181 /utf8/validate/179
ok 182 /utf8/validate/180
ok 183 /utf8/validate/181
ok 184 /utf8/validate/182
ok 185 /utf8/validate/183
ok 186 /utf8/validate/184
ok 187 /utf8/validate/185
ok 188 /utf8/validate/186
ok 189 /utf8/validate/187
ok 190 /utf8/validate/188
ok 191 /utf8/validate/189
ok 192 /utf8/validate/190
ok 193 /utf8/validate/191
ok 194 /utf8/validate/192
ok 195 /utf8/validate/193
ok 196 /utf8/validate/194
ok 197 /utf8/validate/195
ok 198 /utf8/validate/196
ok 199 /utf8/validate/197
ok 200 /utf8/validate/198
ok 201 /utf8/validate/199
ok 202 /utf8/validate/200
ok 203 /utf8/validate/201
ok 204 /utf8/validate/202
ok 205 /utf8/validate/203
ok 206 /utf8/validate/204
ok 207 /utf8/validate/205
ok 208 /utf8/validate/206
ok 209 /utf8/validate/207
ok 210 /utf8/validate/208
ok 211 /utf8/validate/209
ok 212 /utf8/validate/210
ok 213 /utf8/validate/211
ok 214 /utf8/validate/212
ok 215 /utf8/validate/213
ok 216 /utf8/validate/214
ok 217 /utf8/validate/215
ok 218 /utf8/validate/216
ok 219 /utf8/validate/217
ok 220 /utf8/validate/218
ok 221 /utf8/validate/219
ok 222 /utf8/validate/220
ok 223 /utf8/validate/221
ok 224 /utf8/validate/222
ok 225 /utf8/validate/223
ok 226 /utf8/validate/224
ok 227 /utf8/validate/225
ok 228 /utf8/validate/226
ok 229 /utf8/validate/227
ok 230 /utf8/validate/228
ok 231 /utf8/validate/229
ok 232 /utf8/validate/230
ok 233 /utf8/validate/231
ok 234 /utf8/validate/232
ok 235 /utf8/validate/233
ok 236 /utf8/validate/234
ok 237 /utf8/validate/235
ok 238 /utf8/validate/236
# End of validate tests
# End of utf8 tests
PASS: glib/utf8-validate.test
Running test: glib/socket-address.test
TAP version 14
# random seed: R02Sfe18033493ebf85c76ab4ae9ea40a2c2
1..2
# Start of socket tests
# Start of address tests
# Start of unix tests
ok 1 /socket/address/unix/construct
ok 2 /socket/address/unix/to-string
# End of unix tests
# End of address tests
# End of socket tests
PASS: glib/socket-address.test
Running test: glib/gdbus-addresses.test
TAP version 14
# random seed: R02S4080645907b47cf63e8c7f338f8a8a88
1..9
# Start of gdbus tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/empty-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/empty-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/empty-address/.dirs/system-config1:/var/volatile/tmp/gdbus/empty-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/empty-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/empty-address/.dirs/system-data1:/var/volatile/tmp/gdbus/empty-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/empty-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/empty-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/empty-address/.dirs/runtime
ok 1 /gdbus/empty-address
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/unsupported-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/unsupported-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/unsupported-address/.dirs/system-config1:/var/volatile/tmp/gdbus/unsupported-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/unsupported-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/unsupported-address/.dirs/system-data1:/var/volatile/tmp/gdbus/unsupported-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/unsupported-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/unsupported-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/unsupported-address/.dirs/runtime
ok 2 /gdbus/unsupported-address
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/address-parsing/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/address-parsing/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/address-parsing/.dirs/system-config1:/var/volatile/tmp/gdbus/address-parsing/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/address-parsing/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/address-parsing/.dirs/system-data1:/var/volatile/tmp/gdbus/address-parsing/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/address-parsing/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/address-parsing/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/address-parsing/.dirs/runtime
ok 3 /gdbus/address-parsing
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/unix-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/unix-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/unix-address/.dirs/system-config1:/var/volatile/tmp/gdbus/unix-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/unix-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/unix-address/.dirs/system-data1:/var/volatile/tmp/gdbus/unix-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/unix-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/unix-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/unix-address/.dirs/runtime
ok 4 /gdbus/unix-address
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/system-config1:/var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/system-data1:/var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/nonce-tcp-address/.dirs/runtime
ok 5 /gdbus/nonce-tcp-address
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/tcp-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/tcp-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/tcp-address/.dirs/system-config1:/var/volatile/tmp/gdbus/tcp-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/tcp-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/tcp-address/.dirs/system-data1:/var/volatile/tmp/gdbus/tcp-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/tcp-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/tcp-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/tcp-address/.dirs/runtime
ok 6 /gdbus/tcp-address
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/system-config1:/var/volatile/tmp/gdbus/autolaunch-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/system-data1:/var/volatile/tmp/gdbus/autolaunch-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/autolaunch-address/.dirs/runtime
ok 7 /gdbus/autolaunch-address
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/mixed-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/mixed-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/mixed-address/.dirs/system-config1:/var/volatile/tmp/gdbus/mixed-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/mixed-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/mixed-address/.dirs/system-data1:/var/volatile/tmp/gdbus/mixed-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/mixed-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/mixed-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/mixed-address/.dirs/runtime
ok 8 /gdbus/mixed-address
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/escape-address/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/escape-address/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/escape-address/.dirs/system-config1:/var/volatile/tmp/gdbus/escape-address/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/escape-address/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/escape-address/.dirs/system-data1:/var/volatile/tmp/gdbus/escape-address/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/escape-address/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/escape-address/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/escape-address/.dirs/runtime
ok 9 /gdbus/escape-address
# End of gdbus tests
PASS: glib/gdbus-addresses.test
Running test: glib/signalgroup.test
TAP version 14
# random seed: R02S5dcf0e1a18bf53090a2674be75363c25
1..9
# Start of GObject tests
# Start of SignalGroup tests
ok 1 /GObject/SignalGroup/invalid
ok 2 /GObject/SignalGroup/simple
ok 3 /GObject/SignalGroup/changing-target
ok 4 /GObject/SignalGroup/blocking
ok 5 /GObject/SignalGroup/weak-ref-target
ok 6 /GObject/SignalGroup/connect-object
ok 7 /GObject/SignalGroup/signal-parsing
ok 8 /GObject/SignalGroup/properties
ok 9 /GObject/SignalGroup/interface
# Start of signal-parsing tests
# End of signal-parsing tests
# End of SignalGroup tests
# End of GObject tests
PASS: glib/signalgroup.test
Running test: glib/bookmarkfile.test
TAP version 14
# random seed: R02S5d2ff78bb80baa83e1aa65cabfa06734
1..96
# Start of bookmarks tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/system-config1:/var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/system-data1:/var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/load-from-data-dirs/.dirs/runtime
ok 1 /bookmarks/load-from-data-dirs
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/to-file/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/to-file/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/to-file/.dirs/system-config1:/var/volatile/tmp/bookmarks/to-file/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/to-file/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/to-file/.dirs/system-data1:/var/volatile/tmp/bookmarks/to-file/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/to-file/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/to-file/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/to-file/.dirs/runtime
# Roundtrip from newly created bookmark file /var/volatile/tmp/bookmarkfile-test-NA0V72.xbel
# Roundtrip from a valid bookmark file
ok 2 /bookmarks/to-file
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/move-item/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/move-item/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/move-item/.dirs/system-config1:/var/volatile/tmp/bookmarks/move-item/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/move-item/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/move-item/.dirs/system-data1:/var/volatile/tmp/bookmarks/move-item/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/move-item/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/move-item/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/move-item/.dirs/runtime
ok 3 /bookmarks/move-item
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/corner-cases/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/corner-cases/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/corner-cases/.dirs/system-config1:/var/volatile/tmp/bookmarks/corner-cases/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/corner-cases/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/corner-cases/.dirs/system-data1:/var/volatile/tmp/bookmarks/corner-cases/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/corner-cases/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/corner-cases/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/corner-cases/.dirs/runtime
ok 4 /bookmarks/corner-cases
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/misc/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/misc/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/misc/.dirs/system-config1:/var/volatile/tmp/bookmarks/misc/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/misc/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/misc/.dirs/system-data1:/var/volatile/tmp/bookmarks/misc/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/misc/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/misc/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/misc/.dirs/runtime
ok 5 /bookmarks/misc
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/deprecated/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/deprecated/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/deprecated/.dirs/system-config1:/var/volatile/tmp/bookmarks/deprecated/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/deprecated/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/deprecated/.dirs/system-data1:/var/volatile/tmp/bookmarks/deprecated/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/deprecated/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/deprecated/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/deprecated/.dirs/runtime
ok 6 /bookmarks/deprecated
# Start of parse tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-22.xbel/.dirs/runtime
ok 7 /bookmarks/parse/fail-22.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-26.xbel/.dirs/runtime
ok 8 /bookmarks/parse/fail-26.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-17.xbel/.dirs/runtime
ok 9 /bookmarks/parse/fail-17.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-39.xbel/.dirs/runtime
ok 10 /bookmarks/parse/fail-39.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-34.xbel/.dirs/runtime
ok 11 /bookmarks/parse/fail-34.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/valid-01.xbel/.dirs/runtime
ok 12 /bookmarks/parse/valid-01.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-40.xbel/.dirs/runtime
ok 13 /bookmarks/parse/fail-40.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-31.xbel/.dirs/runtime
ok 14 /bookmarks/parse/fail-31.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-41.xbel/.dirs/runtime
ok 15 /bookmarks/parse/fail-41.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-07.xbel/.dirs/runtime
ok 16 /bookmarks/parse/fail-07.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-15.xbel/.dirs/runtime
ok 17 /bookmarks/parse/fail-15.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-01.xbel/.dirs/runtime
ok 18 /bookmarks/parse/fail-01.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-10.xbel/.dirs/runtime
ok 19 /bookmarks/parse/fail-10.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-30.xbel/.dirs/runtime
ok 20 /bookmarks/parse/fail-30.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-37.xbel/.dirs/runtime
ok 21 /bookmarks/parse/fail-37.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-23.xbel/.dirs/runtime
ok 22 /bookmarks/parse/fail-23.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-21.xbel/.dirs/runtime
ok 23 /bookmarks/parse/fail-21.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-04.xbel/.dirs/runtime
ok 24 /bookmarks/parse/fail-04.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-09.xbel/.dirs/runtime
ok 25 /bookmarks/parse/fail-09.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-28.xbel/.dirs/runtime
ok 26 /bookmarks/parse/fail-28.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-42.xbel/.dirs/runtime
ok 27 /bookmarks/parse/fail-42.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-27.xbel/.dirs/runtime
ok 28 /bookmarks/parse/fail-27.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-14.xbel/.dirs/runtime
ok 29 /bookmarks/parse/fail-14.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-16.xbel/.dirs/runtime
ok 30 /bookmarks/parse/fail-16.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-33.xbel/.dirs/runtime
ok 31 /bookmarks/parse/fail-33.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-24.xbel/.dirs/runtime
ok 32 /bookmarks/parse/fail-24.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-18.xbel/.dirs/runtime
ok 33 /bookmarks/parse/fail-18.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-32.xbel/.dirs/runtime
ok 34 /bookmarks/parse/fail-32.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-19.xbel/.dirs/runtime
ok 35 /bookmarks/parse/fail-19.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-29.xbel/.dirs/runtime
ok 36 /bookmarks/parse/fail-29.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-12.xbel/.dirs/runtime
ok 37 /bookmarks/parse/fail-12.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-25.xbel/.dirs/runtime
ok 38 /bookmarks/parse/fail-25.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-06.xbel/.dirs/runtime
ok 39 /bookmarks/parse/fail-06.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-05.xbel/.dirs/runtime
ok 40 /bookmarks/parse/fail-05.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/valid-02.xbel/.dirs/runtime
ok 41 /bookmarks/parse/valid-02.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-13.xbel/.dirs/runtime
ok 42 /bookmarks/parse/fail-13.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-08.xbel/.dirs/runtime
ok 43 /bookmarks/parse/fail-08.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-03.xbel/.dirs/runtime
ok 44 /bookmarks/parse/fail-03.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-36.xbel/.dirs/runtime
ok 45 /bookmarks/parse/fail-36.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-02.xbel/.dirs/runtime
ok 46 /bookmarks/parse/fail-02.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-38.xbel/.dirs/runtime
ok 47 /bookmarks/parse/fail-38.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/valid-03.xbel/.dirs/runtime
ok 48 /bookmarks/parse/valid-03.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-35.xbel/.dirs/runtime
ok 49 /bookmarks/parse/fail-35.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-11.xbel/.dirs/runtime
ok 50 /bookmarks/parse/fail-11.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/parse/fail-20.xbel/.dirs/runtime
ok 51 /bookmarks/parse/fail-20.xbel
# End of parse tests
# Start of copy tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-22.xbel/.dirs/runtime
ok 52 /bookmarks/copy/fail-22.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-26.xbel/.dirs/runtime
ok 53 /bookmarks/copy/fail-26.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-17.xbel/.dirs/runtime
ok 54 /bookmarks/copy/fail-17.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-39.xbel/.dirs/runtime
ok 55 /bookmarks/copy/fail-39.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-34.xbel/.dirs/runtime
ok 56 /bookmarks/copy/fail-34.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/valid-01.xbel/.dirs/runtime
ok 57 /bookmarks/copy/valid-01.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-40.xbel/.dirs/runtime
ok 58 /bookmarks/copy/fail-40.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-31.xbel/.dirs/runtime
ok 59 /bookmarks/copy/fail-31.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-41.xbel/.dirs/runtime
ok 60 /bookmarks/copy/fail-41.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-07.xbel/.dirs/runtime
ok 61 /bookmarks/copy/fail-07.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-15.xbel/.dirs/runtime
ok 62 /bookmarks/copy/fail-15.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-01.xbel/.dirs/runtime
ok 63 /bookmarks/copy/fail-01.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-10.xbel/.dirs/runtime
ok 64 /bookmarks/copy/fail-10.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-30.xbel/.dirs/runtime
ok 65 /bookmarks/copy/fail-30.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-37.xbel/.dirs/runtime
ok 66 /bookmarks/copy/fail-37.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-23.xbel/.dirs/runtime
ok 67 /bookmarks/copy/fail-23.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-21.xbel/.dirs/runtime
ok 68 /bookmarks/copy/fail-21.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-04.xbel/.dirs/runtime
ok 69 /bookmarks/copy/fail-04.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-09.xbel/.dirs/runtime
ok 70 /bookmarks/copy/fail-09.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-28.xbel/.dirs/runtime
ok 71 /bookmarks/copy/fail-28.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-42.xbel/.dirs/runtime
ok 72 /bookmarks/copy/fail-42.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-27.xbel/.dirs/runtime
ok 73 /bookmarks/copy/fail-27.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-14.xbel/.dirs/runtime
ok 74 /bookmarks/copy/fail-14.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-16.xbel/.dirs/runtime
ok 75 /bookmarks/copy/fail-16.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-33.xbel/.dirs/runtime
ok 76 /bookmarks/copy/fail-33.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-24.xbel/.dirs/runtime
ok 77 /bookmarks/copy/fail-24.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-18.xbel/.dirs/runtime
ok 78 /bookmarks/copy/fail-18.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-32.xbel/.dirs/runtime
ok 79 /bookmarks/copy/fail-32.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-19.xbel/.dirs/runtime
ok 80 /bookmarks/copy/fail-19.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-29.xbel/.dirs/runtime
ok 81 /bookmarks/copy/fail-29.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-12.xbel/.dirs/runtime
ok 82 /bookmarks/copy/fail-12.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-25.xbel/.dirs/runtime
ok 83 /bookmarks/copy/fail-25.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-06.xbel/.dirs/runtime
ok 84 /bookmarks/copy/fail-06.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-05.xbel/.dirs/runtime
ok 85 /bookmarks/copy/fail-05.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/valid-02.xbel/.dirs/runtime
ok 86 /bookmarks/copy/valid-02.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-13.xbel/.dirs/runtime
ok 87 /bookmarks/copy/fail-13.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-08.xbel/.dirs/runtime
ok 88 /bookmarks/copy/fail-08.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-03.xbel/.dirs/runtime
ok 89 /bookmarks/copy/fail-03.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-36.xbel/.dirs/runtime
ok 90 /bookmarks/copy/fail-36.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-02.xbel/.dirs/runtime
ok 91 /bookmarks/copy/fail-02.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-38.xbel/.dirs/runtime
ok 92 /bookmarks/copy/fail-38.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/valid-03.xbel/.dirs/runtime
ok 93 /bookmarks/copy/valid-03.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-35.xbel/.dirs/runtime
ok 94 /bookmarks/copy/fail-35.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-11.xbel/.dirs/runtime
ok 95 /bookmarks/copy/fail-11.xbel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/system-config1:/var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/system-data1:/var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/bookmarks/copy/fail-20.xbel/.dirs/runtime
ok 96 /bookmarks/copy/fail-20.xbel
# End of copy tests
# End of bookmarks tests
PASS: glib/bookmarkfile.test
Running test: glib/rec-mutex.test
TAP version 14
# random seed: R02Sada6140b98f04e4fe96312a9e957f123
1..29
# Start of thread tests
ok 1 /thread/rec-mutex1
ok 2 /thread/rec-mutex2
ok 3 /thread/rec-mutex3
ok 4 /thread/rec-mutex4
# Start of rec-mutex tests
# Start of perf tests
# Start of uncontended tests
# max perf: 0.011364 mips
ok 5 /thread/rec-mutex/perf/uncontended/depth1
# max perf: 0.066667 mips
ok 6 /thread/rec-mutex/perf/uncontended/depth2
# max perf: 0.500000 mips
ok 7 /thread/rec-mutex/perf/uncontended/depth3
# max perf: 0.333333 mips
ok 8 /thread/rec-mutex/perf/uncontended/depth4
# max perf: 0.333333 mips
ok 9 /thread/rec-mutex/perf/uncontended/depth5
# End of uncontended tests
# Start of contended1 tests
# max perf: 1.000000 mips
ok 10 /thread/rec-mutex/perf/contended1/depth1
# max perf: 1.000000 mips
ok 11 /thread/rec-mutex/perf/contended1/depth2
# max perf: 0.666667 mips
ok 12 /thread/rec-mutex/perf/contended1/depth3
# max perf: 0.666667 mips
ok 13 /thread/rec-mutex/perf/contended1/depth4
# max perf: 0.500000 mips
ok 14 /thread/rec-mutex/perf/contended1/depth5
# End of contended1 tests
# Start of contended2 tests
# max perf: 0.036145 mips
ok 15 /thread/rec-mutex/perf/contended2/depth1
# max perf: 0.166667 mips
ok 16 /thread/rec-mutex/perf/contended2/depth2
# max perf: 0.600000 mips
ok 17 /thread/rec-mutex/perf/contended2/depth3
# max perf: 0.500000 mips
ok 18 /thread/rec-mutex/perf/contended2/depth4
# max perf: 0.428571 mips
ok 19 /thread/rec-mutex/perf/contended2/depth5
# End of contended2 tests
# Start of contended3 tests
# max perf: 0.235294 mips
ok 20 /thread/rec-mutex/perf/contended3/depth1
# max perf: 0.333333 mips
ok 21 /thread/rec-mutex/perf/contended3/depth2
# max perf: 0.057143 mips
ok 22 /thread/rec-mutex/perf/contended3/depth3
# max perf: 0.266667 mips
ok 23 /thread/rec-mutex/perf/contended3/depth4
# max perf: 0.222222 mips
ok 24 /thread/rec-mutex/perf/contended3/depth5
# End of contended3 tests
# Start of contended4 tests
# max perf: 0.833333 mips
ok 25 /thread/rec-mutex/perf/contended4/depth1
# max perf: 0.294118 mips
ok 26 /thread/rec-mutex/perf/contended4/depth2
# max perf: 0.056180 mips
ok 27 /thread/rec-mutex/perf/contended4/depth3
# max perf: 0.035971 mips
ok 28 /thread/rec-mutex/perf/contended4/depth4
# max perf: 0.200000 mips
ok 29 /thread/rec-mutex/perf/contended4/depth5
# End of contended4 tests
# End of perf tests
# End of rec-mutex tests
# End of thread tests
PASS: glib/rec-mutex.test
Running test: glib/trash.test
TAP version 14
# random seed: R02Sb6227984a1ad832b2def5c6aa8f9bd63
1..3
# Start of trash tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/251
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
# File: /var/volatile/tmp/test-trashZGQ772 (parent st_dev: 21)
# Home: /home/glib2-test (st_dev: 64768)
# Mount: /var/volatile
# Error: Trashing on system internal mounts is not supported
ok 1 /trash/not-supported
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1522
ok 2 /trash/symlinks # SKIP Directory '/home/glib2-test/.local' does not exist
ok 3 /trash/long-filename
# End of trash tests
PASS: glib/trash.test
Running test: glib/shell.test
TAP version 14
# random seed: R02S11e4b82ba25eb17cf9cfd29177704038
1..51
# Start of shell tests
# Start of cmdline tests
test cmdline: foo bar
ok 1 /shell/cmdline/0
test cmdline: foo 'bar'
ok 2 /shell/cmdline/1
test cmdline: foo "bar"
ok 3 /shell/cmdline/2
test cmdline: foo '' 'bar'
ok 4 /shell/cmdline/3
test cmdline: foo "bar"'baz'blah'foo'\''blah'"boo"
ok 5 /shell/cmdline/4
test cmdline: foo 	 	blah	foo		bar  baz
ok 6 /shell/cmdline/5
test cmdline: foo '    spaces more spaces lots of     spaces in this   '  	
ok 7 /shell/cmdline/6
test cmdline: foo \
bar
ok 8 /shell/cmdline/7
test cmdline: foo '' ''
ok 9 /shell/cmdline/8
test cmdline: foo \" la la la
ok 10 /shell/cmdline/9
test cmdline: foo \ foo woo woo\ 
ok 11 /shell/cmdline/10
test cmdline: foo "yada yada \$\""
ok 12 /shell/cmdline/11
test cmdline: foo "c:\\"
ok 13 /shell/cmdline/12
test cmdline: foo # bla bla bla
 bar
ok 14 /shell/cmdline/13
test cmdline: foo a#b
ok 15 /shell/cmdline/14
test cmdline: #foo
ok 16 /shell/cmdline/15
test cmdline: foo bar \
ok 17 /shell/cmdline/16
test cmdline: foo 'bar baz
ok 18 /shell/cmdline/17
test cmdline: foo '"bar" baz
ok 19 /shell/cmdline/18
test cmdline: 
ok 20 /shell/cmdline/19
test cmdline:   
ok 21 /shell/cmdline/20
test cmdline: # foo bar
ok 22 /shell/cmdline/21
test cmdline: foo '/bar/summer'\''09 tours.pdf'
ok 23 /shell/cmdline/22
# End of cmdline tests
# Start of quote tests
ok 24 /shell/quote/0
ok 25 /shell/quote/1
ok 26 /shell/quote/2
ok 27 /shell/quote/3
ok 28 /shell/quote/4
ok 29 /shell/quote/5
ok 30 /shell/quote/6
# End of quote tests
# Start of unquote tests
ok 31 /shell/unquote/0
ok 32 /shell/unquote/1
ok 33 /shell/unquote/2
ok 34 /shell/unquote/3
ok 35 /shell/unquote/4
ok 36 /shell/unquote/5
ok 37 /shell/unquote/6
ok 38 /shell/unquote/7
ok 39 /shell/unquote/8
ok 40 /shell/unquote/9
ok 41 /shell/unquote/10
ok 42 /shell/unquote/11
ok 43 /shell/unquote/12
ok 44 /shell/unquote/13
ok 45 /shell/unquote/14
ok 46 /shell/unquote/15
ok 47 /shell/unquote/16
ok 48 /shell/unquote/17
ok 49 /shell/unquote/18
ok 50 /shell/unquote/19
ok 51 /shell/unquote/20
# End of unquote tests
# End of shell tests
PASS: glib/shell.test
Running test: glib/socket-service.test
TAP version 14
# random seed: R02Sa84550f5c5263579ae0b2f703dab3700
1..4
# Start of socket-service tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation dummy (GDummyProxyResolver) for ?gio-proxy-resolver?
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555589f8cab0 and GSocketClientAsyncConnectData 0x555589f681f0
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
ok 1 /socket-service/start-stop
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555589f90ad0 and GSocketClientAsyncConnectData 0x555589f90770
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555589f90a50 for GSocketClientAsyncConnectData 0x555589f681f0
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555589f90a50 for GSocketClientAsyncConnectData 0x555589f90770
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 2 /socket-service/read_write_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555589f90ad0 and GSocketClientAsyncConnectData 0x555589f94dc0
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555589f941c0 for GSocketClientAsyncConnectData 0x555589f94dc0
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 3 /socket-service/read_writev_async
# Start of threaded tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=712570
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555589f92160 and GSocketClientAsyncConnectData 0x555589f94760
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555589f95750 for GSocketClientAsyncConnectData 0x555589f94760
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 4 /socket-service/threaded/712570
# End of threaded tests
# End of socket-service tests
PASS: glib/socket-service.test
Running test: glib/relation.test
TAP version 14
# random seed: R02Sbd50f2df501e04a0771b383ec4f4dbfa
1..1
# Start of glib tests
ok 1 /glib/relation
# End of glib tests
PASS: glib/relation.test
Running test: glib/resolver-parsing.test
TAP version 14
# random seed: R02S47e8f7f999f00ade0226ba107b81553c
1..21
# Start of gresolver tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/invalid-header/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/invalid-header/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/invalid-header/.dirs/system-config1:/var/volatile/tmp/gresolver/invalid-header/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/invalid-header/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/invalid-header/.dirs/system-data1:/var/volatile/tmp/gresolver/invalid-header/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/invalid-header/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/invalid-header/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/invalid-header/.dirs/runtime
ok 1 /gresolver/invalid-header
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/record-ownership/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/record-ownership/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/record-ownership/.dirs/system-config1:/var/volatile/tmp/gresolver/record-ownership/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/record-ownership/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/record-ownership/.dirs/system-data1:/var/volatile/tmp/gresolver/record-ownership/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/record-ownership/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/record-ownership/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/record-ownership/.dirs/runtime
ok 2 /gresolver/record-ownership
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/system-config1:/var/volatile/tmp/gresolver/unknown-record-type/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/system-data1:/var/volatile/tmp/gresolver/unknown-record-type/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/unknown-record-type/.dirs/runtime
# GLib-GIO-DEBUG: Unrecognized DNS record type 20
ok 3 /gresolver/unknown-record-type
# Start of mx tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/mx/valid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/mx/valid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/mx/valid/.dirs/system-config1:/var/volatile/tmp/gresolver/mx/valid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/mx/valid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/mx/valid/.dirs/system-data1:/var/volatile/tmp/gresolver/mx/valid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/mx/valid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/mx/valid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/mx/valid/.dirs/runtime
ok 4 /gresolver/mx/valid
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/mx/invalid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/mx/invalid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/mx/invalid/.dirs/system-config1:/var/volatile/tmp/gresolver/mx/invalid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/mx/invalid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/mx/invalid/.dirs/system-data1:/var/volatile/tmp/gresolver/mx/invalid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/mx/invalid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/mx/invalid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/mx/invalid/.dirs/runtime
ok 5 /gresolver/mx/invalid
# Start of invalid tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/system-config1:/var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/system-data1:/var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/mx/invalid/too-short/.dirs/runtime
ok 6 /gresolver/mx/invalid/too-short
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/system-config1:/var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/system-data1:/var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/mx/invalid/too-short2/.dirs/runtime
ok 7 /gresolver/mx/invalid/too-short2
# End of invalid tests
# End of mx tests
# Start of ns tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/ns/valid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/ns/valid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/ns/valid/.dirs/system-config1:/var/volatile/tmp/gresolver/ns/valid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/ns/valid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/ns/valid/.dirs/system-data1:/var/volatile/tmp/gresolver/ns/valid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/ns/valid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/ns/valid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/ns/valid/.dirs/runtime
ok 8 /gresolver/ns/valid
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/ns/invalid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/ns/invalid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/ns/invalid/.dirs/system-config1:/var/volatile/tmp/gresolver/ns/invalid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/ns/invalid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/ns/invalid/.dirs/system-data1:/var/volatile/tmp/gresolver/ns/invalid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/ns/invalid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/ns/invalid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/ns/invalid/.dirs/runtime
ok 9 /gresolver/ns/invalid
# End of ns tests
# Start of soa tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/soa/valid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/soa/valid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/soa/valid/.dirs/system-config1:/var/volatile/tmp/gresolver/soa/valid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/soa/valid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/soa/valid/.dirs/system-data1:/var/volatile/tmp/gresolver/soa/valid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/soa/valid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/soa/valid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/soa/valid/.dirs/runtime
ok 10 /gresolver/soa/valid
# Start of invalid tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/system-config1:/var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/system-data1:/var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/soa/invalid/mname/.dirs/runtime
ok 11 /gresolver/soa/invalid/mname
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/system-config1:/var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/system-data1:/var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/soa/invalid/rname/.dirs/runtime
ok 12 /gresolver/soa/invalid/rname
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/system-config1:/var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/system-data1:/var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/soa/invalid/too-short/.dirs/runtime
ok 13 /gresolver/soa/invalid/too-short
# End of invalid tests
# End of soa tests
# Start of srv tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/srv/valid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/srv/valid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/srv/valid/.dirs/system-config1:/var/volatile/tmp/gresolver/srv/valid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/srv/valid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/srv/valid/.dirs/system-data1:/var/volatile/tmp/gresolver/srv/valid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/srv/valid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/srv/valid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/srv/valid/.dirs/runtime
ok 14 /gresolver/srv/valid
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/srv/invalid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/srv/invalid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/srv/invalid/.dirs/system-config1:/var/volatile/tmp/gresolver/srv/invalid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/srv/invalid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/srv/invalid/.dirs/system-data1:/var/volatile/tmp/gresolver/srv/invalid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/srv/invalid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/srv/invalid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/srv/invalid/.dirs/runtime
ok 15 /gresolver/srv/invalid
# Start of invalid tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/system-config1:/var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/system-data1:/var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/srv/invalid/too-short/.dirs/runtime
ok 16 /gresolver/srv/invalid/too-short
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/system-config1:/var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/system-data1:/var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/srv/invalid/too-short2/.dirs/runtime
ok 17 /gresolver/srv/invalid/too-short2
# End of invalid tests
# End of srv tests
# Start of txt tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/txt/valid/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/txt/valid/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/txt/valid/.dirs/system-config1:/var/volatile/tmp/gresolver/txt/valid/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/txt/valid/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/txt/valid/.dirs/system-data1:/var/volatile/tmp/gresolver/txt/valid/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/txt/valid/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/txt/valid/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/txt/valid/.dirs/runtime
ok 18 /gresolver/txt/valid
# Start of valid tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/system-config1:/var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/system-data1:/var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/txt/valid/multiple-strings/.dirs/runtime
ok 19 /gresolver/txt/valid/multiple-strings
# End of valid tests
# Start of invalid tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/system-config1:/var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/system-data1:/var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/txt/invalid/empty/.dirs/runtime
ok 20 /gresolver/txt/invalid/empty
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/system-config1:/var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/system-data1:/var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gresolver/txt/invalid/overflow/.dirs/runtime
ok 21 /gresolver/txt/invalid/overflow
# End of invalid tests
# End of txt tests
# End of gresolver tests
PASS: glib/resolver-parsing.test
Running test: glib/test-printf.test
TAP version 14
# random seed: R02S9d897e294d8b377fd84e0155fd78d0e7
1..22
# Start of snprintf tests
ok 1 /snprintf/retval-and-trunc
ok 2 /snprintf/%d
ok 3 /snprintf/%d-invalid
ok 4 /snprintf/%o
ok 5 /snprintf/%u
ok 6 /snprintf/%x
ok 7 /snprintf/%X
ok 8 /snprintf/%f
ok 9 /snprintf/%e
ok 10 /snprintf/%c
ok 11 /snprintf/%s
ok 12 /snprintf/%n
ok 13 /snprintf/test-percent
ok 14 /snprintf/test-positional-params
ok 15 /snprintf/test-64bit
# End of snprintf tests
# Start of printf tests
ok 16 /printf/test-percent
ok 17 /printf/test-positional-params
ok 18 /printf/test-64bit
# Start of test-64bit tests
# Start of subprocess tests
# End of subprocess tests
# End of test-64bit tests
# End of printf tests
# Start of sprintf tests
ok 19 /sprintf/test-positional-params
ok 20 /sprintf/upper-bound
# End of sprintf tests
# Start of vasprintf tests
# /vasprintf/invalid-format-placeholder summary: Test error handling for invalid format placeholder in g_vasprintf()
ok 21 /vasprintf/invalid-format-placeholder
# /vasprintf/invalid-wide-string summary: Test error handling for invalid wide strings in g_vasprintf()
ok 22 /vasprintf/invalid-wide-string
# End of vasprintf tests
PASS: glib/test-printf.test
Running test: glib/once.test
TAP version 14
# random seed: R02S33e90376933ec07996c83c661221c259
1..5
# Start of once tests
# /once/single-threaded summary: Test g_once() usage from a single thread
ok 1 /once/single-threaded
# /once/multi-threaded summary: Test g_once() usage from multiple threads
ok 2 /once/multi-threaded
# End of once tests
# Start of once-init tests
# /once-init/single-threaded summary: Test g_once_init_{enter,leave}() usage from a single thread
ok 3 /once-init/single-threaded
# /once-init/multi-threaded summary: Test g_once_init_{enter,leave}() usage from multiple threads
ok 4 /once-init/multi-threaded
# /once-init/string summary: Test g_once_init_{enter,leave}() usage with a string
ok 5 /once-init/string
# End of once-init tests
PASS: glib/once.test
Running test: glib/portal-support-snap.test
TAP version 14
# random seed: R02S4f5b05063a7f769f99050ac7158fb69a
1..7
# Start of portal-support tests
# Start of snap tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/system-config1:/var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/system-data1:/var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap/no-snapctl/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap/no-snapctl: No such file or directory
ok 1 /portal-support/snap/no-snapctl
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap/none/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap/none/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap/none/.dirs/system-config1:/var/volatile/tmp/portal-support/snap/none/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap/none/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap/none/.dirs/system-data1:/var/volatile/tmp/portal-support/snap/none/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap/none/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap/none/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap/none/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap/none/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap/none: No such file or directory
ok 2 /portal-support/snap/none
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap/all/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap/all/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap/all/.dirs/system-config1:/var/volatile/tmp/portal-support/snap/all/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap/all/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap/all/.dirs/system-data1:/var/volatile/tmp/portal-support/snap/all/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap/all/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap/all/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap/all/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap/all/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap/all: No such file or directory
ok 3 /portal-support/snap/all
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/system-config1:/var/volatile/tmp/portal-support/snap/desktop-only/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/system-data1:/var/volatile/tmp/portal-support/snap/desktop-only/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap/desktop-only/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap/desktop-only: No such file or directory
ok 4 /portal-support/snap/desktop-only
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap/network-only/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap/network-only/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap/network-only/.dirs/system-config1:/var/volatile/tmp/portal-support/snap/network-only/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap/network-only/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap/network-only/.dirs/system-data1:/var/volatile/tmp/portal-support/snap/network-only/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap/network-only/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap/network-only/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap/network-only/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap/network-only/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap/network-only: No such file or directory
ok 5 /portal-support/snap/network-only
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/system-config1:/var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/system-data1:/var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap/gsettings-only/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap/gsettings-only: No such file or directory
ok 6 /portal-support/snap/gsettings-only
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/system-config1:/var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/system-data1:/var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime/snapctl
# Created snapctl in /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime/snapctl
# Created snapctl in /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime/snapctl
# Created snapctl in /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime/snapctl
# Created snapctl in /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime/snapctl
# Created snapctl in /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime/snapctl
# Created snapctl in /var/volatile/tmp/portal-support/snap/updates-dynamically/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap/updates-dynamically: No such file or directory
ok 7 /portal-support/snap/updates-dynamically
# End of snap tests
# End of portal-support tests
PASS: glib/portal-support-snap.test
Running test: glib/objects-refcount1.test
TAP version 14
# random seed: R02S4fbf0855700b3c054f2734d2d1795466
1..1
# Start of gobject tests
# Start of refcount tests
# init 0x55555d497380
# 
# init 0x55555d497d10
# 
Executing: glib/objects-refcount1.test
# dispose 0x55555d497380!
# 
# dispose 0x55555d497d10!
# 
ok 1 /gobject/refcount/object-basics
# slow test /gobject/refcount/object-basics executed in 5.01 secs
# End of refcount tests
# End of gobject tests
PASS: glib/objects-refcount1.test
Running test: glib/cxx-2b.test
TAP version 14
# random seed: R02Sa2a585c6a1699ce33875dd4948936e0c
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx-2b.test
Running test: glib/timeout.test
TAP version 14
# random seed: R02Sef192ce1bf9d52cb5ce5ecf52681d9d5
1..4
# Start of timeout tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=642052
ok 1 /timeout/seconds
# slow test /timeout/seconds executed in 2.10 secs
Executing: glib/timeout.test
ok 2 /timeout/seconds-once
# slow test /timeout/seconds-once executed in 2.10 secs
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1600
ok 3 /timeout/weeks-overflow
# slow test /timeout/weeks-overflow executed in 2.10 secs
ok 4 /timeout/far-future-ready-time
# End of timeout tests
PASS: glib/timeout.test
Running test: glib/io-channel-basic.test
TAP version 14
# random seed: R02S6a5fbf0a410094fdefb9df9eabed30ba
1..1
# Start of gio tests
# Subtest: /usr/libexec/installed-tests/glib/io-channel-basic
    # random seed: R02S0ff0cf397b0b3e49872e2e4343f33ba6
    # GLib-DEBUG: io-channel-basic: child writing 8+1500 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1500 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1625 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1625 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4918 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 4918 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2799 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 2799 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
Executing: glib/io-channel-basic.test
    # GLib-DEBUG: io-channel-basic: child writing 8+4212 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 4212 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+534 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 534 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+137 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 137 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3389 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 3389 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1557 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1557 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3692 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 3692 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3173 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 3173 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4751 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 4751 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2088 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 2088 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3167 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 3167 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1370 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1370 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1951 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1951 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1111 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1111 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+296 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 296 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+345 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 345 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1372 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1372 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1584 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1584 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3045 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 3045 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2965 bytes to 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 2965 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
Executing: glib/io-channel-basic.test
    # GLib-DEBUG: io-channel-basic: child writing 8+1278 bytes to 6
    # GLib-DEBUG: io-channel-basic: child exiting, closing 6
# GLib-DEBUG: io-channel-basic: ...from 5: IN
# GLib-DEBUG: io-channel-basic: ...from 5: 1278 bytes
# GLib-DEBUG: io-channel-basic: ...from 5: OK
# GLib-DEBUG: io-channel-basic: ...from 5: HUP
# Subtest: /usr/libexec/installed-tests/glib/io-channel-basic
    # random seed: R02S3561b3af36570a6fae49a584ade3428d
# Subtest: /usr/libexec/installed-tests/glib/io-channel-basic
    # random seed: R02S6b85cbbf02f9b382031e4a2b996ca6ec
# Subtest: /usr/libexec/installed-tests/glib/io-channel-basic
    # random seed: R02S5c9d06fedf2caddeefddaf5f6f93fe9a
# Subtest: /usr/libexec/installed-tests/glib/io-channel-basic
    # random seed: R02S040d5b5bb53ac4a217408b466c1a813d
# Subtest: /usr/libexec/installed-tests/glib/io-channel-basic
    # random seed: R02S0eaf3b376fc94bedbc43f07d5597b80d
    # GLib-DEBUG: io-channel-basic: child writing 8+1433 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 1433 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4518 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 4518 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2555 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 2555 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1533 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 1533 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1971 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 1971 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4382 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 4382 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4097 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 4097 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4304 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4304 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1116 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 1116 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3230 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 3230 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+682 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
    # GLib-DEBUG: io-channel-basic: child writing 8+210 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 14: 682 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 210 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3185 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 3185 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2862 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 2862 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4307 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 4307 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+359 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 359 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2007 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 2007 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4284 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 4284 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4088 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 4088 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+891 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 891 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3740 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3740 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+145 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 145 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2919 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 2919 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2549 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 2549 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4189 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 4189 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4891 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4891 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+837 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 837 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1651 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 1651 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+315 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
    # GLib-DEBUG: io-channel-basic: child writing 8+1579 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 8: 315 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 1579 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4329 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4329 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2017 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 2017 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+536 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 536 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1327 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 1327 bytes
    # GLib-DEBUG: io-channel-basic: child writing 8+2285 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 8: OK
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 2285 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4342 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4342 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+102 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 102 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3530 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 3530 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+146 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 146 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+595 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 595 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4724 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4724 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+675 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 675 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3777 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 3777 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+540 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 540 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1416 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 1416 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3783 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3783 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4365 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 4365 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1889 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 1889 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1338 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 1338 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+883 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 883 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3635 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3635 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1372 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 1372 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2503 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 2503 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2274 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 2274 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3948 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 3948 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3538 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3538 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3868 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 3868 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4231 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 4231 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4374 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 4374 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+684 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 684 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3922 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3922 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+76 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 76 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2167 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 2167 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3169 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 3169 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+551 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 551 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4005 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4005 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+479 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 479 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3871 bytes to 11
    # GLib-DEBUG: io-channel-basic: child writing 8+3485 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 3485 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 3871 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1769 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 1769 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3308 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3308 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2324 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 2324 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4304 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 4304 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3384 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 3384 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2067 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 2067 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3722 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3722 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4657 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 4657 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4047 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 4047 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2483 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 2483 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2074 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 2074 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4067 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4067 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2340 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 2340 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1424 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 1424 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1137 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 1137 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2693 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 2693 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4897 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4897 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+42 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 42 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+516 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 516 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2600 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 2600 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+227 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 227 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
Executing: glib/io-channel-basic.test
    # GLib-DEBUG: io-channel-basic: child writing 8+3386 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 3386 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+843 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 843 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1071 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 1071 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2304 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 2304 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4934 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 4934 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4319 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4319 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1700 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 1700 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+2956 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 2956 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3000 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 3000 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4814 bytes to 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 4814 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4768 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4768 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+3261 bytes to 17
# GLib-DEBUG: io-channel-basic: ...from 16: IN
# GLib-DEBUG: io-channel-basic: ...from 16: 3261 bytes
# GLib-DEBUG: io-channel-basic: ...from 16: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+390 bytes to 9
# GLib-DEBUG: io-channel-basic: ...from 8: IN
# GLib-DEBUG: io-channel-basic: ...from 8: 390 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1139 bytes to 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 1139 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1659 bytes to 11
    # GLib-DEBUG: io-channel-basic: child exiting, closing 11
# GLib-DEBUG: io-channel-basic: ...from 10: IN
# GLib-DEBUG: io-channel-basic: ...from 10: 1659 bytes
# GLib-DEBUG: io-channel-basic: ...from 10: OK
# GLib-DEBUG: io-channel-basic: ...from 10: HUP
    # GLib-DEBUG: io-channel-basic: child writing 8+4310 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 4310 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+4062 bytes to 17
    # GLib-DEBUG: io-channel-basic: child exiting, closing 17
# GLib-DEBUG: io-channel-basic: ...from 16: HUP IN
# GLib-DEBUG: io-channel-basic: ...from 16: 4062 bytes
    # GLib-DEBUG: io-channel-basic: child writing 8+191 bytes to 9
    # GLib-DEBUG: io-channel-basic: child exiting, closing 9
# GLib-DEBUG: io-channel-basic: ...from 16: OK
# GLib-DEBUG: io-channel-basic: ...from 8: HUP IN
# GLib-DEBUG: io-channel-basic: ...from 8: 191 bytes
# GLib-DEBUG: io-channel-basic: ...from 8: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+72 bytes to 13
    # GLib-DEBUG: io-channel-basic: child exiting, closing 13
# GLib-DEBUG: io-channel-basic: ...from 12: IN
# GLib-DEBUG: io-channel-basic: ...from 12: 72 bytes
# GLib-DEBUG: io-channel-basic: ...from 12: OK
# GLib-DEBUG: io-channel-basic: ...from 12: HUP
    # GLib-DEBUG: io-channel-basic: child writing 8+2578 bytes to 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 2578 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
    # GLib-DEBUG: io-channel-basic: child writing 8+1968 bytes to 15
    # GLib-DEBUG: io-channel-basic: child exiting, closing 15
# GLib-DEBUG: io-channel-basic: ...from 14: IN
# GLib-DEBUG: io-channel-basic: ...from 14: 1968 bytes
# GLib-DEBUG: io-channel-basic: ...from 14: OK
# GLib-DEBUG: io-channel-basic: ...from 14: HUP
ok 1 /gio/io-basics
# slow test /gio/io-basics executed in 12.66 secs
# End of gio tests
PASS: glib/io-channel-basic.test
Running test: glib/utils-c-99.test
TAP version 14
# random seed: R02S6a0c85c0b78f82ff6cb88ff4531a051e
1..41
# Start of utils tests
ok 1 /utils/language-names
# Testing locale ?en?
# Testing locale ?sr@latin?
# Testing locale ?fr_BE?
# Testing locale ?sr_SR@latin?
# Testing locale ?sr_SR@latin.UTF-8?
# Testing locale ?sr@latin_invalid?
# Testing locale ?sr.UTF-8@latin?
# Testing locale ?sr.UTF-8_latin?
# Testing locale ?sr.UTF-8@latin_invalid?
ok 2 /utils/locale-variants
ok 3 /utils/version
ok 4 /utils/appname
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/847
# /utils/prgname-thread-safety summary: Test that threads racing to get and set the program name always receive a valid program name.
ok 5 /utils/prgname-thread-safety
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=627969
# /utils/tmpdir summary: Test that g_get_tmp_dir() returns a correct default if TMPDIR is set to the empty string
ok 6 /utils/tmpdir
ok 7 /utils/basic_bits
ok 8 /utils/bits
ok 9 /utils/swap
ok 10 /utils/find-program
ok 11 /utils/find-program-for-path
ok 12 /utils/debug
ok 13 /utils/codeset
ok 14 /utils/codeset2
ok 15 /utils/console-charset
ok 16 /utils/gettext
ok 17 /utils/username
ok 18 /utils/realname
ok 19 /utils/hostname
ok 20 /utils/xdgdirs
ok 21 /utils/specialdir
# NAME: Linux
ok 22 /utils/os-info
ok 23 /utils/clear-pointer
ok 24 /utils/clear-pointer-cast
ok 25 /utils/take-pointer
ok 26 /utils/clear-source
ok 27 /utils/misc-mem
# /utils/aligned-mem summary: Aligned memory allocator
# Alignment must not be zero
# Alignment must be a power of two
# Alignment must be a multiple of sizeof(void*)
ok 28 /utils/aligned-mem
# /utils/free-sized summary: Check that g_free_sized() works
ok 29 /utils/free-sized
ok 30 /utils/nullify
ok 31 /utils/atexit
ok 32 /utils/check-setuid
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1663
ok 33 /utils/int-limits
ok 34 /utils/clear-list
ok 35 /utils/clear-slist
ok 36 /utils/steal-handle-id
# Start of specialdir tests
ok 37 /utils/specialdir/desktop
# End of specialdir tests
# Start of clear-pointer tests
ok 38 /utils/clear-pointer/side-effects
# End of clear-pointer tests
# Start of aligned-mem tests
# /utils/aligned-mem/alignment summary: Check that g_aligned_alloc() returns a correctly aligned pointer
ok 39 /utils/aligned-mem/alignment
# /utils/aligned-mem/zeroed summary: Check that g_aligned_alloc0() zeroes out its allocation
ok 40 /utils/aligned-mem/zeroed
# /utils/aligned-mem/free-sized summary: Check that g_aligned_free_sized() works
ok 41 /utils/aligned-mem/free-sized
# Start of subprocess tests
# End of subprocess tests
# End of aligned-mem tests
# End of utils tests
PASS: glib/utils-c-99.test
Running test: glib/include.test
TAP version 14
# random seed: R02Sdd4c26300810f3038499484e23160d61
1..1
# Start of include tests
ok 1 /include/rwlock
# End of include tests
PASS: glib/include.test
Running test: glib/queue.test
TAP version 14
# random seed: R02Sa3fdc8584f0a60ae28971e3c3664e395
1..12
# Start of queue tests
ok 1 /queue/basic
ok 2 /queue/copy
ok 3 /queue/off-by-one
ok 4 /queue/find-custom
ok 5 /queue/static
ok 6 /queue/clear
ok 7 /queue/free-full
ok 8 /queue/clear-full
ok 9 /queue/insert-sibling-link
ok 10 /queue/push-nth-link
# Start of clear-full tests
ok 11 /queue/clear-full/noop
# End of clear-full tests
# Start of random tests
ok 12 /queue/random/seed:421649525
# slow test /queue/random/seed:421649525 executed in 1.69 secs
# End of random tests
# End of queue tests
PASS: glib/queue.test
Running test: glib/cond.test
TAP version 14
# random seed: R02Sb42eb0392b70ae3745c72f693b8e3530
1..4
# Start of thread tests
ok 1 /thread/cond1
ok 2 /thread/cond2
# Start of cond tests
ok 3 /thread/cond/wait-until
# slow test /thread/cond/wait-until executed in 1.02 secs
# Start of wait-until tests
# /thread/cond/wait-until/contended-and-interrupted summary: Check proper handling of errno in g_cond_wait_until with a contended mutex
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/957
Executing: glib/cond.test
ok 4 /thread/cond/wait-until/contended-and-interrupted
# slow test /thread/cond/wait-until/contended-and-interrupted executed in 1.10 secs
# End of wait-until tests
# End of cond tests
# End of thread tests
PASS: glib/cond.test
Running test: glib/convert.test
TAP version 14
# random seed: R02Sab2756c269ec0a6203d56b884a37639d
1..14
# Start of conversion tests
ok 1 /conversion/no-conv
ok 2 /conversion/iconv-state
ok 3 /conversion/illegal-sequence
ok 4 /conversion/byte-order
ok 5 /conversion/unicode
ok 6 /conversion/filename-utf8
ok 7 /conversion/filename-display
ok 8 /conversion/convert-embedded-nul
# Start of locale-to-utf8 tests
ok 9 /conversion/locale-to-utf8/embedded-nul
# Start of embedded-nul tests
# Start of subprocess tests
# End of subprocess tests
# End of embedded-nul tests
# End of locale-to-utf8 tests
# Start of locale-from-utf8 tests
ok 10 /conversion/locale-from-utf8/embedded-nul
# Start of embedded-nul tests
# Start of subprocess tests
# End of subprocess tests
# End of embedded-nul tests
# End of locale-from-utf8 tests
# Start of filename-to-utf8 tests
ok 11 /conversion/filename-to-utf8/embedded-nul
# Start of embedded-nul tests
# Start of subprocess tests
# End of subprocess tests
# End of embedded-nul tests
# End of filename-to-utf8 tests
# Start of filename-from-utf8 tests
ok 12 /conversion/filename-from-utf8/embedded-nul
# Start of embedded-nul tests
# Start of subprocess tests
# End of subprocess tests
# End of embedded-nul tests
# End of filename-from-utf8 tests
# Start of filename-from-uri tests
ok 13 /conversion/filename-from-uri/query-is-ignored
ok 14 /conversion/filename-from-uri/fragment-is-ignored
# End of filename-from-uri tests
# End of conversion tests
PASS: glib/convert.test
Running test: glib/refcount.test
TAP version 14
# random seed: R02Sde2bb3b90d42461459ab0a822b931ac9
1..4
# Start of refcount tests
ok 1 /refcount/grefcount
ok 2 /refcount/gatomicrefcount
# Start of grefcount tests
ok 3 /refcount/grefcount/saturation
# End of grefcount tests
# Start of gatomicrefcount tests
ok 4 /refcount/gatomicrefcount/saturation
# End of gatomicrefcount tests
# End of refcount tests
PASS: glib/refcount.test
Running test: glib/timer.test
TAP version 14
# random seed: R02Sc773aa6d826e739e1d294948b6a20dfa
1..10
# Start of timer tests
ok 1 /timer/basic
ok 2 /timer/stop
ok 3 /timer/continue
ok 4 /timer/reset
ok 5 /timer/is_active
# End of timer tests
# Start of timeval tests
ok 6 /timeval/add
ok 7 /timeval/from-iso8601
ok 8 /timeval/to-iso8601
# Start of to-iso8601 tests
ok 9 /timeval/to-iso8601/overflow
# End of to-iso8601 tests
# End of timeval tests
# Start of usleep tests
ok 10 /usleep/with-zero-wait
# End of usleep tests
PASS: glib/timer.test
Running test: glib/gobject-query.py.test
TAP version 13
ok 1 __main__.TestGobjectQuery.test_froots
# gobject-query: /usr/bin/gobject-query
# tmpdir: /tmp/tmp_rmgsdxa
# Running: ['/usr/bin/gobject-query', 'froots']
# Return code: 0
# Output:
#  ├void
# ├GInterface
# │ └GTypePlugin
# ├gchar
# ├guchar
# ├gboolean
# ├gint
# ├guint
# ├glong
# ├gulong
# ├gint64
# ├guint64
# ├GEnum
# ├GFlags
# ├gfloat
# ├gdouble
# ├gchararray
# ├gpointer
# │ └GType
# ├GBoxed
# │ └GValueArray
# ├GParam
# │ ├GParamChar
# │ ├GParamUChar
# │ ├GParamBoolean
# │ ├GParamInt
# │ ├GParamUInt
# │ ├GParamLong
# │ ├GParamULong
# │ ├GParamInt64
# │ ├GParamUInt64
# │ ├GParamUnichar
# │ ├GParamEnum
# │ ├GParamFlags
# │ ├GParamFloat
# │ ├GParamDouble
# │ ├GParamString
# │ ├GParamParam
# │ ├GParamBoxed
# │ ├GParamPointer
# │ ├GParamValueArray
# │ ├GParamObject
# │ ├GParamOverride
# │ ├GParamGType
# │ └GParamVariant
# ├GObject
# └GVariant
# Error:
ok 2 __main__.TestGobjectQuery.test_help
# gobject-query: /usr/bin/gobject-query
# tmpdir: /tmp/tmptlay0k2h
# Running: ['/usr/bin/gobject-query', '--help']
# Return code: 0
# Output:
#  usage: gobject-query <qualifier> [-r <type>] [-{i|b} ""] [-s #] [-{h|x|y}]
#        -r       specify root type
#        -n       don't descend type tree
#        -h       show help
#        -b       specify indent string
#        -i       specify incremental indent string
#        -s       specify line spacing
# qualifiers:
#        froots   iterate over fundamental roots
#        tree     print type tree
# Error:
ok 3 __main__.TestGobjectQuery.test_tree
# gobject-query: /usr/bin/gobject-query
# tmpdir: /tmp/tmprhc1b998
# Running: ['/usr/bin/gobject-query', 'tree']
# Return code: 0
# Output:
#  GObject
# Error:
ok 4 __main__.TestGobjectQuery.test_version
# gobject-query: /usr/bin/gobject-query
# tmpdir: /tmp/tmpshrnvwc4
# Running: ['/usr/bin/gobject-query', '--version']
# Return code: 0
# Output:
#  2.84.2
# Error:
1..4
PASS: glib/gobject-query.py.test
Running test: glib/spawn-test.test
TAP version 14
# random seed: R02Sce280f92d2b1e23b62a002e142048223
1..2
# Start of spawn tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/spawn/basics/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/spawn/basics/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/spawn/basics/.dirs/system-config1:/var/volatile/tmp/spawn/basics/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/spawn/basics/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/spawn/basics/.dirs/system-data1:/var/volatile/tmp/spawn/basics/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/spawn/basics/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/spawn/basics/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/spawn/basics/.dirs/runtime
ok 1 /spawn/basics
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/system-config1:/var/volatile/tmp/spawn/stdio-overwrite/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/system-data1:/var/volatile/tmp/spawn/stdio-overwrite/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/spawn/stdio-overwrite/.dirs/runtime
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/16
# Fetching GSpawn result output and error output with stdin open, stdout open, stderr open
# Fetching GSpawn result output and error output with stdin open, stdout open, stderr already closed
# Fetching GSpawn result output and error output with stdin open, stdout already closed, stderr open
# Fetching GSpawn result output and error output with stdin open, stdout already closed, stderr already closed
# Fetching GSpawn result output and error output with stdin already closed, stdout open, stderr open
# Fetching GSpawn result output and error output with stdin already closed, stdout open, stderr already closed
# Fetching GSpawn result output and error output with stdin already closed, stdout already closed, stderr open
# Fetching GSpawn result output and error output with stdin already closed, stdout already closed, stderr already closed
# Fetching GSpawn result output with stdin open, stdout open, stderr open
# Fetching GSpawn result output with stdin open, stdout open, stderr already closed
# Fetching GSpawn result output with stdin open, stdout already closed, stderr open
# Fetching GSpawn result output with stdin open, stdout already closed, stderr already closed
# Fetching GSpawn result output with stdin already closed, stdout open, stderr open
# Fetching GSpawn result output with stdin already closed, stdout open, stderr already closed
# Fetching GSpawn result output with stdin already closed, stdout already closed, stderr open
# Fetching GSpawn result output with stdin already closed, stdout already closed, stderr already closed
# Fetching GSpawn result error output with stdin open, stdout open, stderr open
# Fetching GSpawn result error output with stdin open, stdout open, stderr already closed
# Fetching GSpawn result error output with stdin open, stdout already closed, stderr open
# Fetching GSpawn result error output with stdin open, stdout already closed, stderr already closed
# Fetching GSpawn result error output with stdin already closed, stdout open, stderr open
# Fetching GSpawn result error output with stdin already closed, stdout open, stderr already closed
# Fetching GSpawn result error output with stdin already closed, stdout already closed, stderr open
# Fetching GSpawn result error output with stdin already closed, stdout already closed, stderr already closed
# Fetching GSpawn result  with stdin open, stdout open, stderr open
# Fetching GSpawn result  with stdin open, stdout open, stderr already closed
# Fetching GSpawn result  with stdin open, stdout already closed, stderr open
# Fetching GSpawn result  with stdin open, stdout already closed, stderr already closed
# Fetching GSpawn result  with stdin already closed, stdout open, stderr open
# Fetching GSpawn result  with stdin already closed, stdout open, stderr already closed
# Fetching GSpawn result  with stdin already closed, stdout already closed, stderr open
# Fetching GSpawn result  with stdin already closed, stdout already closed, stderr already closed
ok 2 /spawn/stdio-overwrite
# End of spawn tests
PASS: glib/spawn-test.test
Running test: glib/macros.test
TAP version 14
# random seed: R02S8f2a2a16a1b0f2da751ebe6a46b1c426
1..3
# Start of alignof tests
ok 1 /alignof/fallback
# End of alignof tests
# Start of assert tests
ok 2 /assert/static
# End of assert tests
# Start of struct tests
ok 3 /struct/sizeof_member
# End of struct tests
PASS: glib/macros.test
Running test: glib/portal-support-flatpak-full.test
TAP version 14
# random seed: R02Se8766c9400a65b24ec2932794a665e37
1..1
# Start of portal-support tests
# Start of flatpak tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/flatpak/full/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/flatpak/full/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/flatpak/full/.dirs/system-config1:/var/volatile/tmp/portal-support/flatpak/full/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/flatpak/full/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/flatpak/full/.dirs/system-data1:/var/volatile/tmp/portal-support/flatpak/full/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/flatpak/full/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/flatpak/full/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/flatpak/full/.dirs/runtime
# Creating .flatpak-info in /var/volatile/tmp/portal-support/flatpak/full/.dirs/runtime/.flatpak-info
ok 1 /portal-support/flatpak/full
# End of flatpak tests
# End of portal-support tests
PASS: glib/portal-support-flatpak-full.test
Running test: glib/singleton.test
TAP version 14
# random seed: R02S958246427b887e5a6fa81272f9efaafb
1..2
# Start of gobject tests
# Start of singleton tests
ok 1 /gobject/singleton/construction
# /gobject/singleton/construct-property summary: Test that creating a singleton with a construct-time property works
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2666
ok 2 /gobject/singleton/construct-property
# End of singleton tests
# End of gobject tests
PASS: glib/singleton.test
Running test: glib/hostutils.test
TAP version 14
# random seed: R02S4fcfc273aed11f01a124dfe774e0d6dd
1..3
# Start of hostutils tests
ok 1 /hostutils/to_ascii
ok 2 /hostutils/to_unicode
ok 3 /hostutils/is_ip_addr
# End of hostutils tests
PASS: glib/hostutils.test
Running test: glib/macros-c-89.test
TAP version 14
# random seed: R02S091a6d795fc3b3fe4050f67e99089a99
1..4
# Start of C tests
ok 1 /C/standard-89
# End of C tests
# Start of alignof tests
ok 2 /alignof/fallback
# End of alignof tests
# Start of assert tests
ok 3 /assert/static
# End of assert tests
# Start of struct tests
ok 4 /struct/sizeof_member
# End of struct tests
PASS: glib/macros-c-89.test
Running test: glib/gdbus-peer.test
TAP version 14
# random seed: R02S50053b7aa2b954eb93e91aae6a7037b8
1..12
# Start of gdbus tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-to-peer/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-to-peer/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-to-peer/.dirs/runtime
# Testing with unix:dir address
# Testing with unix:tmpdir address
# Testing with unix:path address
ok 1 /gdbus/peer-to-peer
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/system-config1:/var/volatile/tmp/gdbus/delayed-message-processing/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/system-data1:/var/volatile/tmp/gdbus/delayed-message-processing/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/delayed-message-processing/.dirs/runtime
# Testing with unix:dir address
ok 2 /gdbus/delayed-message-processing
# slow test /gdbus/delayed-message-processing executed in 0.54 secs
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/system-config1:/var/volatile/tmp/gdbus/nonce-tcp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/system-data1:/var/volatile/tmp/gdbus/nonce-tcp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/nonce-tcp/.dirs/runtime
ok 3 /gdbus/nonce-tcp
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/system-config1:/var/volatile/tmp/gdbus/tcp-anonymous/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/system-data1:/var/volatile/tmp/gdbus/tcp-anonymous/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/tcp-anonymous/.dirs/runtime
ok 4 /gdbus/tcp-anonymous
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/credentials/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/credentials/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/credentials/.dirs/system-config1:/var/volatile/tmp/gdbus/credentials/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/credentials/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/credentials/.dirs/system-data1:/var/volatile/tmp/gdbus/credentials/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/credentials/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/credentials/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/credentials/.dirs/runtime
ok 5 /gdbus/credentials
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/system-config1:/var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/system-data1:/var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/codegen-peer-to-peer/.dirs/runtime
# Testing with unix:dir address
# Machine ID: e194c3363d7f1b0c9ce9c29a684083e9
Executing: glib/gdbus-peer.test
ok 6 /gdbus/codegen-peer-to-peer
# slow test /gdbus/codegen-peer-to-peer executed in 1.14 secs
# Start of peer-to-peer tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-to-peer/signals/.dirs/runtime
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1620
# Testing with unix:dir address
ok 7 /gdbus/peer-to-peer/signals
# Start of invalid tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-to-peer/invalid/server/.dirs/runtime
ok 8 /gdbus/peer-to-peer/invalid/server
# Start of conn tests
# Start of stream tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/async/.dirs/runtime
ok 9 /gdbus/peer-to-peer/invalid/conn/stream/async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/stream/sync/.dirs/runtime
ok 10 /gdbus/peer-to-peer/invalid/conn/stream/sync
# End of stream tests
# Start of addr tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/async/.dirs/runtime
ok 11 /gdbus/peer-to-peer/invalid/conn/addr/async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-to-peer/invalid/conn/addr/sync/.dirs/runtime
ok 12 /gdbus/peer-to-peer/invalid/conn/addr/sync
# End of addr tests
# End of conn tests
# End of invalid tests
# End of peer-to-peer tests
# End of gdbus tests
PASS: glib/gdbus-peer.test
Running test: glib/cxx-03.test
TAP version 14
# random seed: R02Sfe685ef638e06e2c007a5e750d44f6aa
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx-03.test
Running test: glib/cancellable.test
TAP version 14
# random seed: R02S310f568b9d5ad5ff943f99558c1f7096
1..18
# Start of cancellable tests
ok 1 /cancellable/multiple-concurrent # SKIP Not running timing heavy test
ok 2 /cancellable/null
ok 3 /cancellable/connect-data-is-destroyed-on-disconnect-and-dispose
# /cancellable/connect-to-disposing-callback summary: A cancellable signal callback can unref the cancellable
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3643
ok 4 /cancellable/connect-to-disposing-callback
ok 5 /cancellable/connect-cancelled-data-is-destroyed
# Toggle reference callback for GCancellable (0x555579593520), last: 1
# Toggle reference callback for GCancellable (0x555579593520), last: 0
# Toggle reference callback for GCancellable (0x555579593520), last: 1
ok 6 /cancellable/connect-to-disposing-callback-with-toggle-reference
# /cancellable/connect-cancelled-to-disposing-callback summary: A cancellable signal callback can unref the cancellable
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3643
ok 7 /cancellable/connect-cancelled-to-disposing-callback
ok 8 /cancellable/connect-cancelled-with-destroy-func-disposing-cancellable
# Toggle reference callback for GCancellable (0x555579593520), last: 1
# Toggle reference callback for GCancellable (0x555579593520), last: 0
# Toggle reference callback for GCancellable (0x555579593520), last: 1
# Toggle reference callback for GCancellable (0x555579593520), last: 0
# Toggle reference callback for GCancellable (0x555579593520), last: 1
ok 9 /cancellable/connect-cancelled-to-disposing-callback-with-toggle-reference
# /cancellable/disconnect-on-cancelled-callback-hangs summary: Tests that trying to disconnect a cancellable from the cancelled signal callback will result in a deadlock as per #GCancellable::cancelled
ok 10 /cancellable/disconnect-on-cancelled-callback-hangs
# /cancellable/resets-on-cancel-callback-hangs summary: Tests that trying to reset a cancellable from the cancelled signal callback will result in a deadlock as per #GCancellable::cancelled
ok 11 /cancellable/resets-on-cancel-callback-hangs
ok 12 /cancellable/poll-fd
# /cancellable/poll-fd-cancelled summary: Tests that cancellation wakes up a pollable FD on creation
ok 13 /cancellable/poll-fd-cancelled
# /cancellable/poll-fd-cancelled-threaded summary: Tests that a cancellation wakes up a pollable FD
ok 14 /cancellable/poll-fd-cancelled-threaded
# /cancellable/cancel-reset-races summary: Tests threads racing for cancelling and resetting a GCancellable
ok 15 /cancellable/cancel-reset-races
# /cancellable/cancel-reset-connect-races summary: Tests threads racing for cancelling, connecting and disconnecting  and resetting a GCancellable
ok 16 /cancellable/cancel-reset-connect-races
# End of cancellable tests
# Start of cancellable-source tests
# /cancellable-source/threaded-dispose summary: Test a thread race between disposing of a GCancellableSource (in one thread) and cancelling the GCancellable it refers to (in another thread)
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1841
Executing: glib/cancellable.test
ok 17 /cancellable-source/threaded-dispose
# slow test /cancellable-source/threaded-dispose executed in 3.60 secs
# /cancellable-source/can-be-fired-multiple-times summary: Test a cancellable source callback can be called multiple times
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/774
ok 18 /cancellable-source/can-be-fired-multiple-times
# End of cancellable-source tests
PASS: glib/cancellable.test
Running test: glib/mkenums.py.test
TAP version 13
ok 1 __main__.TestMkenums.test_available_in
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp1ko2zx1c
# rspfile: False
# /tmp/tmp1ko2zx1c/tmp1yytfb2m.h: 
#         typedef enum {
#           G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<2)
#         } GDBusServerFlags;
#         
# /tmp/tmp1ko2zx1c/tmprk05i6tb.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmp1ko2zx1c/tmprk05i6tb.template', '/tmp/tmp1ko2zx1c/tmp1yytfb2m.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp1ko2zx1c/tmp1yytfb2m.h
# basename: tmp1yytfb2m.h
# enumeration-production
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-header
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-production
# VALUENAME: G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER
# valuenick: user
# valuenum: 4
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-tail
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 2 __main__.TestMkenums.test_comma_in_enum_value
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmplwu9g2yu
# rspfile: False
# /tmp/tmplwu9g2yu/tmpr0n3b2ec.h: 
#         typedef enum {
#           ENUM_VALUE_WITH_COMMA = ',',
#         } TestCommaEnum;
#         
# /tmp/tmplwu9g2yu/tmp52qkw0ec.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmplwu9g2yu/tmp52qkw0ec.template', '/tmp/tmplwu9g2yu/tmpr0n3b2ec.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmplwu9g2yu/tmpr0n3b2ec.h
# basename: tmpr0n3b2ec.h
# enumeration-production
# EnumName: TestCommaEnum
# enum_name: test_comma_enum
# ENUMNAME: TEST_COMMA_ENUM
# ENUMSHORT: COMMA_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: TestCommaEnum
# enum_name: test_comma_enum
# ENUMNAME: TEST_COMMA_ENUM
# ENUMSHORT: COMMA_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_WITH_COMMA
# valuenick: comma
# valuenum: 44
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: TestCommaEnum
# enum_name: test_comma_enum
# ENUMNAME: TEST_COMMA_ENUM
# ENUMSHORT: COMMA_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 3 __main__.TestMkenums.test_deprecated_in
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp1f23ycwi
# rspfile: False
# /tmp/tmp1f23ycwi/tmpnlg1y52k.h: 
#         typedef enum {
#           G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_DEPRECATED_ENUMERATOR_IN_2_68 = (1<<2)
#         } GDBusServerFlags;
#         
# /tmp/tmp1f23ycwi/tmp8gyl_26f.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmp1f23ycwi/tmp8gyl_26f.template', '/tmp/tmp1f23ycwi/tmpnlg1y52k.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp1f23ycwi/tmpnlg1y52k.h
# basename: tmpnlg1y52k.h
# enumeration-production
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-header
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-production
# VALUENAME: G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER
# valuenick: user
# valuenum: 4
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-tail
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 4 __main__.TestMkenums.test_deprecated_in_for
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpctro2i70
# rspfile: False
# /tmp/tmpctro2i70/tmpd2yt8331.h: 
#         typedef enum {
#           G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_DEPRECATED_ENUMERATOR_IN_2_68_FOR(G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER2) = (1<<2)
#         } GDBusServerFlags;
#         
# /tmp/tmpctro2i70/tmp9ulok7hy.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpctro2i70/tmp9ulok7hy.template', '/tmp/tmpctro2i70/tmpd2yt8331.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpctro2i70/tmpd2yt8331.h
# basename: tmpd2yt8331.h
# enumeration-production
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-header
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-production
# VALUENAME: G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER
# valuenick: user
# valuenum: 4
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-tail
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 5 __main__.TestMkenums.test_empty_header
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp5k8k288i
# rspfile: False
# /tmp/tmp5k8k288i/tmp10vbzxxa.h: 
# /tmp/tmp5k8k288i/tmpsx3gt976.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmp5k8k288i/tmpsx3gt976.template', '/tmp/tmp5k8k288i/tmp10vbzxxa.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 6 __main__.TestMkenums.test_empty_template
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp9gf2ij3z
# rspfile: False
# /tmp/tmp9gf2ij3z/tmpa3cl635a.template: 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmp9gf2ij3z/tmpa3cl635a.template']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
Executing: glib/mkenums.py.test
ok 7 __main__.TestMkenums.test_enum_name
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpdii1ye9k
# rspfile: False
# /tmp/tmpdii1ye9k/tmppvc4oxxu.h: 
#         typedef enum _SomeEnumIdentifier {
#           ENUM_VALUE
#         } SomeEnumIdentifier;
#         
# /tmp/tmpdii1ye9k/tmpp9_bl41p.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpdii1ye9k/tmpp9_bl41p.template', '/tmp/tmpdii1ye9k/tmppvc4oxxu.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpdii1ye9k/tmppvc4oxxu.h
# basename: tmppvc4oxxu.h
# enumeration-production
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE
# valuenick: value
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 8 __main__.TestMkenums.test_enum_private_public
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmprqntvpkl
# rspfile: False
# /tmp/tmprqntvpkl/tmphn_b4glt.h: 
#         typedef enum {
#           ENUM_VALUE_PUBLIC1,
#           /*< private >*/
#           ENUM_VALUE_PRIVATE,
#         } SomeEnumA
#         
# /tmp/tmprqntvpkl/tmp5___id79.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmprqntvpkl/tmp5___id79.template', '/tmp/tmprqntvpkl/tmphn_b4glt.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmprqntvpkl/tmphn_b4glt.h
# basename: tmphn_b4glt.h
# enumeration-production
# EnumName: SomeEnumA
# enum_name: some_enum_a
# ENUMNAME: SOME_ENUM_A
# ENUMSHORT: ENUM_A
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumA
# enum_name: some_enum_a
# ENUMNAME: SOME_ENUM_A
# ENUMSHORT: ENUM_A
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_PUBLIC1
# valuenick: public1
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumA
# enum_name: some_enum_a
# ENUMNAME: SOME_ENUM_A
# ENUMSHORT: ENUM_A
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
#  
# /tmp/tmprqntvpkl/tmpfn3rwzet.h: 
#         typedef enum {
#           /*< private >*/
#           ENUM_VALUE_PRIVATE,
#           /*< public >*/
#           ENUM_VALUE_PUBLIC2,
#         } SomeEnumB;
#         
# /tmp/tmprqntvpkl/tmpu5a9xwy3.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmprqntvpkl/tmpu5a9xwy3.template', '/tmp/tmprqntvpkl/tmpfn3rwzet.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmprqntvpkl/tmpfn3rwzet.h
# basename: tmpfn3rwzet.h
# enumeration-production
# EnumName: SomeEnumB
# enum_name: some_enum_b
# ENUMNAME: SOME_ENUM_B
# ENUMSHORT: ENUM_B
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumB
# enum_name: some_enum_b
# ENUMNAME: SOME_ENUM_B
# ENUMSHORT: ENUM_B
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_PUBLIC2
# valuenick: public2
# valuenum: 1
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumB
# enum_name: some_enum_b
# ENUMNAME: SOME_ENUM_B
# ENUMSHORT: ENUM_B
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 9 __main__.TestMkenums.test_enum_symbolic_expression
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpwc_rr9ql
# rspfile: False
# /tmp/tmpwc_rr9ql/tmpshw6hjjy.h: 
#         typedef enum {
#           /*< private >*/
#           ENUM_VALUE_PRIVATE = 5,
#           /*< public >*/
#           ENUM_VALUE_PUBLIC = ENUM_VALUE_PRIVATE + 2,
#         } TestSymbolicEnum;
#         
# /tmp/tmpwc_rr9ql/tmp2sub6ak5.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpwc_rr9ql/tmp2sub6ak5.template', '/tmp/tmpwc_rr9ql/tmpshw6hjjy.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpwc_rr9ql/tmpshw6hjjy.h
# basename: tmpshw6hjjy.h
# enumeration-production
# EnumName: TestSymbolicEnum
# enum_name: test_symbolic_enum
# ENUMNAME: TEST_SYMBOLIC_ENUM
# ENUMSHORT: SYMBOLIC_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: TestSymbolicEnum
# enum_name: test_symbolic_enum
# ENUMNAME: TEST_SYMBOLIC_ENUM
# ENUMSHORT: SYMBOLIC_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_PUBLIC
# valuenick: public
# valuenum: 7
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: TestSymbolicEnum
# enum_name: test_symbolic_enum
# ENUMNAME: TEST_SYMBOLIC_ENUM
# ENUMSHORT: SYMBOLIC_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 10 __main__.TestMkenums.test_filename_basename_in_fhead_ftail
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmph4hwezmt
# rspfile: False
# /tmp/tmph4hwezmt/tmp0t47lqhs.template: 
# /*** BEGIN file-header ***/
# file-header
# filename: @filename@
# basename: @basename@
# /*** END file-header ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# filename: @filename@
# basename: @basename@
# /*** END file-tail ***/
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmph4hwezmt/tmp0t47lqhs.template']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# filename: @filename@
# basename: @basename@
# file-tail
# filename: @filename@
# basename: @basename@
# 
# comment
# comment: Generated data ends here
# Error:
#  WARNING: @filename@ used in file-header section.
# WARNING: @basename@ used in file-header section.
# WARNING: @filename@ used in file-tail section.
# WARNING: @basename@ used in file-tail section.
ok 11 __main__.TestMkenums.test_help
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpzdzl6w2y
# rspfile: False
# Running: ['/usr/bin/glib-mkenums', '--help']
# Return code: 0
# Output:
#  usage: glib-mkenums [-h] [--identifier-prefix IDPREFIX]
#                     [--symbol-prefix SYMPREFIX] [--fhead FHEAD]
#                     [--ftail FTAIL] [--fprod FPROD] [--eprod EPROD]
#                     [--vhead VHEAD] [--vprod VPROD] [--vtail VTAIL]
#                     [--comments COMMENT_TMPL] [--template TEMPLATE]
#                     [--output OUTPUT] [--version]
#                     [args ...]
# 
# positional arguments:
#   args                  One or more input files, or a single argument
#                         @rspfile_path pointing to a file that contains the
#                         actual arguments
# 
# options:
#   -h, --help            show this help message and exit
#   --identifier-prefix IDPREFIX
#                         Identifier prefix
#   --symbol-prefix SYMPREFIX
#                         Symbol prefix
#   --fhead FHEAD         Output file header
#   --ftail FTAIL         Output file footer
#   --fprod FPROD         Put out TEXT every time a new input file is being
#                         processed.
#   --eprod EPROD         Per enum text, produced prior to value iterations
#   --vhead VHEAD         Value header, produced before iterating over enum
#                         values
#   --vprod VPROD         Value text, produced for each enum value.
#   --vtail VTAIL         Value tail, produced after iterating over enum values
#   --comments COMMENT_TMPL
#                         Comment structure
#   --template TEMPLATE   Template file
#   --output OUTPUT
#   --version, -v         Print version information
# 
# Production text substitutions:
#   @EnumName@            PrefixTheXEnum
#   @enum_name@           prefix_the_xenum
#   @ENUMNAME@            PREFIX_THE_XENUM
#   @ENUMSHORT@           THE_XENUM
#   @ENUMPREFIX@          PREFIX
#   @enumsince@           the user-provided since value given
#   @VALUENAME@           PREFIX_THE_XVALUE
#   @valuenick@           the-xvalue
#   @valuenum@            the integer value (limited support, Since: 2.26)
#   @type@                either enum or flags
#   @Type@                either Enum or Flags
#   @TYPE@                either ENUM or FLAGS
#   @filename@            name of current input file
#   @basename@            base name of the current input file (Since: 2.22)
# Error:
ok 12 __main__.TestMkenums.test_no_args
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp2s_i_q1x
# rspfile: False
# Running: ['/usr/bin/glib-mkenums']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
ok 13 __main__.TestMkenums.test_no_headers
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpr05b3zes
# rspfile: False
# /tmp/tmpr05b3zes/tmpp4n3heax.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpr05b3zes/tmpp4n3heax.template']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 14 __main__.TestMkenums.test_no_nick
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp1hewwd5y
# rspfile: False
# /tmp/tmp1hewwd5y/tmp4kxwo1ui.h: 
#         typedef enum {
#           GEGL_SAMPLER_NEAREST = 0,   /*< desc="nearest"      >*/
#         } GeglSamplerType;
#         
# /tmp/tmp1hewwd5y/tmpw1ctvz5w.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmp1hewwd5y/tmpw1ctvz5w.template', '/tmp/tmp1hewwd5y/tmp4kxwo1ui.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp1hewwd5y/tmp4kxwo1ui.h
# basename: tmp4kxwo1ui.h
# enumeration-production
# EnumName: GeglSamplerType
# enum_name: gegl_sampler_type
# ENUMNAME: GEGL_SAMPLER_TYPE
# ENUMSHORT: SAMPLER_TYPE
# ENUMPREFIX: GEGL
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: GeglSamplerType
# enum_name: gegl_sampler_type
# ENUMNAME: GEGL_SAMPLER_TYPE
# ENUMSHORT: SAMPLER_TYPE
# ENUMPREFIX: GEGL
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: GEGL_SAMPLER_NEAREST
# valuenick: nearest
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: GeglSamplerType
# enum_name: gegl_sampler_type
# ENUMNAME: GEGL_SAMPLER_TYPE
# ENUMSHORT: SAMPLER_TYPE
# ENUMPREFIX: GEGL
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
Executing: glib/mkenums.py.test
ok 15 __main__.TestMkenums.test_non_utf8_encoding
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpswxu9r2m
# rspfile: False
# /tmp/tmpswxu9r2m/tmp3h93ysse.h: 
#         /* Copyright © La Peña */
#         typedef enum {
#           ENUM_VALUE
#         } SomeEnumIdentifier;
#         
# /tmp/tmpswxu9r2m/tmpygs70ye4.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpswxu9r2m/tmpygs70ye4.template', '/tmp/tmpswxu9r2m/tmp3h93ysse.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpswxu9r2m/tmp3h93ysse.h
# basename: tmp3h93ysse.h
# enumeration-production
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE
# valuenick: value
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
#  WARNING: UnicodeWarning: invalid start byte at 22 (b'yright \xa9 La Pe\xf1')
# WARNING: UnicodeWarning: invalid continuation byte at 29 (b'\xa9 La Pe\xf1a */\n  ')
ok 16 __main__.TestMkenums.test_reproducible
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpcuhtrht3
# rspfile: False
# /tmp/tmpcuhtrht3/tmpsx7bdzn7.template: template
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpcuhtrht3/tmpsx7bdzn7.template', '/tmp/tmpcuhtrht3/tmpw_0lu7pb1.h', '/tmp/tmpcuhtrht3/tmp2kke4e2a2.h']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
#  
# /tmp/tmpcuhtrht3/tmpvb3gvexi.template: template
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpcuhtrht3/tmpvb3gvexi.template', '/tmp/tmpcuhtrht3/tmp2kke4e2a2.h', '/tmp/tmpcuhtrht3/tmpw_0lu7pb1.h']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
ok 17 __main__.TestMkenums.test_since
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpwmwhko2w
# rspfile: False
# /tmp/tmpwmwhko2w/tmpbugzt739.h: 
#         typedef enum { /*< since=1.0 >*/
#             QMI_WMS_MESSAGE_PROTOCOL_CDMA = 0,
#         } QmiWmsMessageProtocol;
#         
# /tmp/tmpwmwhko2w/tmpvpuycz3i.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpwmwhko2w/tmpvpuycz3i.template', '/tmp/tmpwmwhko2w/tmpbugzt739.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpwmwhko2w/tmpbugzt739.h
# basename: tmpbugzt739.h
# enumeration-production
# EnumName: QmiWmsMessageProtocol
# enum_name: qmi_wms_message_protocol
# ENUMNAME: QMI_WMS_MESSAGE_PROTOCOL
# ENUMSHORT: WMS_MESSAGE_PROTOCOL
# ENUMPREFIX: QMI
# enumsince: 1.0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: QmiWmsMessageProtocol
# enum_name: qmi_wms_message_protocol
# ENUMNAME: QMI_WMS_MESSAGE_PROTOCOL
# ENUMSHORT: WMS_MESSAGE_PROTOCOL
# ENUMPREFIX: QMI
# enumsince: 1.0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: QMI_WMS_MESSAGE_PROTOCOL_CDMA
# valuenick: cdma
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: QmiWmsMessageProtocol
# enum_name: qmi_wms_message_protocol
# ENUMNAME: QMI_WMS_MESSAGE_PROTOCOL
# ENUMSHORT: WMS_MESSAGE_PROTOCOL
# ENUMPREFIX: QMI
# enumsince: 1.0
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 18 __main__.TestMkenums.test_with_double_quotes
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpe5kshdqz
# rspfile: False
# /tmp/tmpe5kshdqz/tmphdot0ww7.h: 
#         typedef enum {
#           FOO_VALUE /*< nick="eek, a comma" >*/
#         } Foo;
#         
# /tmp/tmpe5kshdqz/tmp9gzij31x.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Running: ['/usr/bin/glib-mkenums', '--template', '/tmp/tmpe5kshdqz/tmp9gzij31x.template', '/tmp/tmpe5kshdqz/tmphdot0ww7.h']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpe5kshdqz/tmphdot0ww7.h
# basename: tmphdot0ww7.h
# enumeration-production
# EnumName: Foo
# enum_name: foo_
# ENUMNAME: FOO_
# ENUMSHORT: 
# ENUMPREFIX: FOO
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: Foo
# enum_name: foo_
# ENUMNAME: FOO_
# ENUMSHORT: 
# ENUMPREFIX: FOO
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: FOO_VALUE
# valuenick: eek, a comma
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: Foo
# enum_name: foo_
# ENUMNAME: FOO_
# ENUMSHORT: 
# ENUMPREFIX: FOO
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 19 __main__.TestRspMkenums.test_available_in
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpjqlr2nrm
# rspfile: True
# /tmp/tmpjqlr2nrm/tmp2ccmhsx5.h: 
#         typedef enum {
#           G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_AVAILABLE_ENUMERATOR_IN_2_68 = (1<<2)
#         } GDBusServerFlags;
#         
# /tmp/tmpjqlr2nrm/tmpu7v0b48o.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmpjqlr2nrm/tmpu7v0b48o.template /tmp/tmpjqlr2nrm/tmp2ccmhsx5.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpjqlr2nrm/tmpd01x7v5p']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpjqlr2nrm/tmp2ccmhsx5.h
# basename: tmp2ccmhsx5.h
# enumeration-production
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-header
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-production
# VALUENAME: G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER
# valuenick: user
# valuenum: 4
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-tail
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 20 __main__.TestRspMkenums.test_comma_in_enum_value
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp6k0u9c88
# rspfile: True
# /tmp/tmp6k0u9c88/tmpa4ekzv6n.h: 
#         typedef enum {
#           ENUM_VALUE_WITH_COMMA = ',',
#         } TestCommaEnum;
#         
# /tmp/tmp6k0u9c88/tmpqu5saoyg.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmp6k0u9c88/tmpqu5saoyg.template /tmp/tmp6k0u9c88/tmpa4ekzv6n.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmp6k0u9c88/tmpc0dhj3nh']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp6k0u9c88/tmpa4ekzv6n.h
# basename: tmpa4ekzv6n.h
# enumeration-production
# EnumName: TestCommaEnum
# enum_name: test_comma_enum
# ENUMNAME: TEST_COMMA_ENUM
# ENUMSHORT: COMMA_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: TestCommaEnum
# enum_name: test_comma_enum
# ENUMNAME: TEST_COMMA_ENUM
# ENUMSHORT: COMMA_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_WITH_COMMA
# valuenick: comma
# valuenum: 44
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: TestCommaEnum
# enum_name: test_comma_enum
# ENUMNAME: TEST_COMMA_ENUM
# ENUMSHORT: COMMA_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 21 __main__.TestRspMkenums.test_deprecated_in
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpxuk_kr_8
# rspfile: True
# /tmp/tmpxuk_kr_8/tmpsmjr1nqu.h: 
#         typedef enum {
#           G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_DEPRECATED_ENUMERATOR_IN_2_68 = (1<<2)
#         } GDBusServerFlags;
#         
# /tmp/tmpxuk_kr_8/tmp6v0g6v2f.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmpxuk_kr_8/tmp6v0g6v2f.template /tmp/tmpxuk_kr_8/tmpsmjr1nqu.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpxuk_kr_8/tmprfgubo60']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpxuk_kr_8/tmpsmjr1nqu.h
# basename: tmpsmjr1nqu.h
# enumeration-production
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-header
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-production
# VALUENAME: G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER
# valuenick: user
# valuenum: 4
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-tail
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
Executing: glib/mkenums.py.test
ok 22 __main__.TestRspMkenums.test_deprecated_in_for
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpvcd7ul_t
# rspfile: True
# /tmp/tmpvcd7ul_t/tmpa46kswqc.h: 
#         typedef enum {
#           G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER GLIB_DEPRECATED_ENUMERATOR_IN_2_68_FOR(G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER2) = (1<<2)
#         } GDBusServerFlags;
#         
# /tmp/tmpvcd7ul_t/tmpbmmomxoa.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmpvcd7ul_t/tmpbmmomxoa.template /tmp/tmpvcd7ul_t/tmpa46kswqc.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpvcd7ul_t/tmpgtlah36e']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpvcd7ul_t/tmpa46kswqc.h
# basename: tmpa46kswqc.h
# enumeration-production
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-header
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-production
# VALUENAME: G_DBUS_SERVER_FLAGS_AUTHENTICATION_REQUIRE_SAME_USER
# valuenick: user
# valuenum: 4
# type: flags
# Type: Flags
# TYPE: FLAGS
# value-tail
# EnumName: GDBusServerFlags
# enum_name: g_dbus_server_flags
# ENUMNAME: G_DBUS_SERVER_FLAGS
# ENUMSHORT: DBUS_SERVER_FLAGS
# ENUMPREFIX: G
# enumsince: 
# type: flags
# Type: Flags
# TYPE: FLAGS
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 23 __main__.TestRspMkenums.test_empty_header
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpghzypf1r
# rspfile: True
# /tmp/tmpghzypf1r/tmpoaybqcvz.h: 
# /tmp/tmpghzypf1r/tmpelii7o3o.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmpghzypf1r/tmpelii7o3o.template /tmp/tmpghzypf1r/tmpoaybqcvz.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpghzypf1r/tmpmgb2coj0']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 24 __main__.TestRspMkenums.test_empty_template
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpajo45xiw
# rspfile: True
# /tmp/tmpajo45xiw/tmpgt5m3xle.template: 
# Response file contains: --template /tmp/tmpajo45xiw/tmpgt5m3xle.template
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpajo45xiw/tmpg_83jkzj']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
ok 25 __main__.TestRspMkenums.test_enum_name
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpl03izb_s
# rspfile: True
# /tmp/tmpl03izb_s/tmp2fi9grs_.h: 
#         typedef enum _SomeEnumIdentifier {
#           ENUM_VALUE
#         } SomeEnumIdentifier;
#         
# /tmp/tmpl03izb_s/tmpe8o7obn2.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmpl03izb_s/tmpe8o7obn2.template /tmp/tmpl03izb_s/tmp2fi9grs_.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpl03izb_s/tmpdn7d8lxz']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpl03izb_s/tmp2fi9grs_.h
# basename: tmp2fi9grs_.h
# enumeration-production
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE
# valuenick: value
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 26 __main__.TestRspMkenums.test_enum_private_public
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp37hn8mts
# rspfile: True
# /tmp/tmp37hn8mts/tmpieineowv.h: 
#         typedef enum {
#           ENUM_VALUE_PUBLIC1,
#           /*< private >*/
#           ENUM_VALUE_PRIVATE,
#         } SomeEnumA
#         
# /tmp/tmp37hn8mts/tmpcsn7it6u.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmp37hn8mts/tmpcsn7it6u.template /tmp/tmp37hn8mts/tmpieineowv.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmp37hn8mts/tmpabjkc84y']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp37hn8mts/tmpieineowv.h
# basename: tmpieineowv.h
# enumeration-production
# EnumName: SomeEnumA
# enum_name: some_enum_a
# ENUMNAME: SOME_ENUM_A
# ENUMSHORT: ENUM_A
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumA
# enum_name: some_enum_a
# ENUMNAME: SOME_ENUM_A
# ENUMSHORT: ENUM_A
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_PUBLIC1
# valuenick: public1
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumA
# enum_name: some_enum_a
# ENUMNAME: SOME_ENUM_A
# ENUMSHORT: ENUM_A
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
#  
# /tmp/tmp37hn8mts/tmpurap_84b.h: 
#         typedef enum {
#           /*< private >*/
#           ENUM_VALUE_PRIVATE,
#           /*< public >*/
#           ENUM_VALUE_PUBLIC2,
#         } SomeEnumB;
#         
# /tmp/tmp37hn8mts/tmpka3f853q.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmp37hn8mts/tmpka3f853q.template /tmp/tmp37hn8mts/tmpurap_84b.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmp37hn8mts/tmplnyo8x1w']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp37hn8mts/tmpurap_84b.h
# basename: tmpurap_84b.h
# enumeration-production
# EnumName: SomeEnumB
# enum_name: some_enum_b
# ENUMNAME: SOME_ENUM_B
# ENUMSHORT: ENUM_B
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumB
# enum_name: some_enum_b
# ENUMNAME: SOME_ENUM_B
# ENUMSHORT: ENUM_B
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_PUBLIC2
# valuenick: public2
# valuenum: 1
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumB
# enum_name: some_enum_b
# ENUMNAME: SOME_ENUM_B
# ENUMSHORT: ENUM_B
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 27 __main__.TestRspMkenums.test_enum_symbolic_expression
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp7ckkpqae
# rspfile: True
# /tmp/tmp7ckkpqae/tmpmk8jogjz.h: 
#         typedef enum {
#           /*< private >*/
#           ENUM_VALUE_PRIVATE = 5,
#           /*< public >*/
#           ENUM_VALUE_PUBLIC = ENUM_VALUE_PRIVATE + 2,
#         } TestSymbolicEnum;
#         
# /tmp/tmp7ckkpqae/tmp3an1v8_f.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmp7ckkpqae/tmp3an1v8_f.template /tmp/tmp7ckkpqae/tmpmk8jogjz.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmp7ckkpqae/tmpn79ljrnv']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp7ckkpqae/tmpmk8jogjz.h
# basename: tmpmk8jogjz.h
# enumeration-production
# EnumName: TestSymbolicEnum
# enum_name: test_symbolic_enum
# ENUMNAME: TEST_SYMBOLIC_ENUM
# ENUMSHORT: SYMBOLIC_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: TestSymbolicEnum
# enum_name: test_symbolic_enum
# ENUMNAME: TEST_SYMBOLIC_ENUM
# ENUMSHORT: SYMBOLIC_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE_PUBLIC
# valuenick: public
# valuenum: 7
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: TestSymbolicEnum
# enum_name: test_symbolic_enum
# ENUMNAME: TEST_SYMBOLIC_ENUM
# ENUMSHORT: SYMBOLIC_ENUM
# ENUMPREFIX: TEST
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 28 __main__.TestRspMkenums.test_filename_basename_in_fhead_ftail
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmppv50eefb
# rspfile: True
# /tmp/tmppv50eefb/tmpj03h71te.template: 
# /*** BEGIN file-header ***/
# file-header
# filename: @filename@
# basename: @basename@
# /*** END file-header ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# filename: @filename@
# basename: @basename@
# /*** END file-tail ***/
# Response file contains: --template /tmp/tmppv50eefb/tmpj03h71te.template
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmppv50eefb/tmpsw7rx63z']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# filename: @filename@
# basename: @basename@
# file-tail
# filename: @filename@
# basename: @basename@
# 
# comment
# comment: Generated data ends here
# Error:
#  WARNING: @filename@ used in file-header section.
# WARNING: @basename@ used in file-header section.
# WARNING: @filename@ used in file-tail section.
# WARNING: @basename@ used in file-tail section.
ok 29 __main__.TestRspMkenums.test_help
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpfzu64ryt
# rspfile: True
# Response file contains: --help
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpfzu64ryt/tmpcm67h9zu']
# Return code: 0
# Output:
#  usage: glib-mkenums [-h] [--identifier-prefix IDPREFIX]
#                     [--symbol-prefix SYMPREFIX] [--fhead FHEAD]
#                     [--ftail FTAIL] [--fprod FPROD] [--eprod EPROD]
#                     [--vhead VHEAD] [--vprod VPROD] [--vtail VTAIL]
#                     [--comments COMMENT_TMPL] [--template TEMPLATE]
#                     [--output OUTPUT] [--version]
#                     [args ...]
# 
# positional arguments:
#   args                  One or more input files, or a single argument
#                         @rspfile_path pointing to a file that contains the
#                         actual arguments
# 
# options:
#   -h, --help            show this help message and exit
#   --identifier-prefix IDPREFIX
#                         Identifier prefix
#   --symbol-prefix SYMPREFIX
#                         Symbol prefix
#   --fhead FHEAD         Output file header
#   --ftail FTAIL         Output file footer
#   --fprod FPROD         Put out TEXT every time a new input file is being
#                         processed.
#   --eprod EPROD         Per enum text, produced prior to value iterations
#   --vhead VHEAD         Value header, produced before iterating over enum
#                         values
#   --vprod VPROD         Value text, produced for each enum value.
#   --vtail VTAIL         Value tail, produced after iterating over enum values
#   --comments COMMENT_TMPL
#                         Comment structure
#   --template TEMPLATE   Template file
#   --output OUTPUT
#   --version, -v         Print version information
# 
# Production text substitutions:
#   @EnumName@            PrefixTheXEnum
#   @enum_name@           prefix_the_xenum
#   @ENUMNAME@            PREFIX_THE_XENUM
#   @ENUMSHORT@           THE_XENUM
#   @ENUMPREFIX@          PREFIX
#   @enumsince@           the user-provided since value given
#   @VALUENAME@           PREFIX_THE_XVALUE
#   @valuenick@           the-xvalue
#   @valuenum@            the integer value (limited support, Since: 2.26)
#   @type@                either enum or flags
#   @Type@                either Enum or Flags
#   @TYPE@                either ENUM or FLAGS
#   @filename@            name of current input file
#   @basename@            base name of the current input file (Since: 2.22)
# Error:
Executing: glib/mkenums.py.test
ok 30 __main__.TestRspMkenums.test_no_args
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpshzwt3kf
# rspfile: True
# Response file contains: 
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpshzwt3kf/tmp1xm7lx8y']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
ok 31 __main__.TestRspMkenums.test_no_headers
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpmk0e7kmb
# rspfile: True
# /tmp/tmpmk0e7kmb/tmpdcvo2s7s.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmpmk0e7kmb/tmpdcvo2s7s.template
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpmk0e7kmb/tmpt2e4ogsc']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 32 __main__.TestRspMkenums.test_no_nick
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp0s4olapj
# rspfile: True
# /tmp/tmp0s4olapj/tmp1j6iv24b.h: 
#         typedef enum {
#           GEGL_SAMPLER_NEAREST = 0,   /*< desc="nearest"      >*/
#         } GeglSamplerType;
#         
# /tmp/tmp0s4olapj/tmp49qrcvgl.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmp0s4olapj/tmp49qrcvgl.template /tmp/tmp0s4olapj/tmp1j6iv24b.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmp0s4olapj/tmpkjvixior']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp0s4olapj/tmp1j6iv24b.h
# basename: tmp1j6iv24b.h
# enumeration-production
# EnumName: GeglSamplerType
# enum_name: gegl_sampler_type
# ENUMNAME: GEGL_SAMPLER_TYPE
# ENUMSHORT: SAMPLER_TYPE
# ENUMPREFIX: GEGL
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: GeglSamplerType
# enum_name: gegl_sampler_type
# ENUMNAME: GEGL_SAMPLER_TYPE
# ENUMSHORT: SAMPLER_TYPE
# ENUMPREFIX: GEGL
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: GEGL_SAMPLER_NEAREST
# valuenick: nearest
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: GeglSamplerType
# enum_name: gegl_sampler_type
# ENUMNAME: GEGL_SAMPLER_TYPE
# ENUMSHORT: SAMPLER_TYPE
# ENUMPREFIX: GEGL
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 33 __main__.TestRspMkenums.test_non_utf8_encoding
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmps9vnx26b
# rspfile: True
# /tmp/tmps9vnx26b/tmp8b_z_r2o.h: 
#         /* Copyright © La Peña */
#         typedef enum {
#           ENUM_VALUE
#         } SomeEnumIdentifier;
#         
# /tmp/tmps9vnx26b/tmpveg3awi3.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmps9vnx26b/tmpveg3awi3.template /tmp/tmps9vnx26b/tmp8b_z_r2o.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmps9vnx26b/tmpb8dtbz53']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmps9vnx26b/tmp8b_z_r2o.h
# basename: tmp8b_z_r2o.h
# enumeration-production
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: ENUM_VALUE
# valuenick: value
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: SomeEnumIdentifier
# enum_name: some_enum_identifier
# ENUMNAME: SOME_ENUM_IDENTIFIER
# ENUMSHORT: ENUM_IDENTIFIER
# ENUMPREFIX: SOME
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
#  WARNING: UnicodeWarning: invalid start byte at 22 (b'yright \xa9 La Pe\xf1')
# WARNING: UnicodeWarning: invalid continuation byte at 29 (b'\xa9 La Pe\xf1a */\n  ')
ok 34 __main__.TestRspMkenums.test_reproducible
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpotc07wmb
# rspfile: True
# /tmp/tmpotc07wmb/tmp_aq3w27t.template: template
# Response file contains: --template /tmp/tmpotc07wmb/tmp_aq3w27t.template /tmp/tmpotc07wmb/tmplra_s_xv1.h /tmp/tmpotc07wmb/tmpyr70a2s12.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpotc07wmb/tmpurs4v57e']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
#  
# /tmp/tmpotc07wmb/tmp7k9mthu0.template: template
# Response file contains: --template /tmp/tmpotc07wmb/tmp7k9mthu0.template /tmp/tmpotc07wmb/tmpyr70a2s12.h /tmp/tmpotc07wmb/tmplra_s_xv1.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpotc07wmb/tmpk_m2ydvy']
# Return code: 0
# Output:
#  /* This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# 
# 
# /* Generated data ends here */
# Error:
ok 35 __main__.TestRspMkenums.test_since
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmpgibs06bq
# rspfile: True
# /tmp/tmpgibs06bq/tmpz2zqnen2.h: 
#         typedef enum { /*< since=1.0 >*/
#             QMI_WMS_MESSAGE_PROTOCOL_CDMA = 0,
#         } QmiWmsMessageProtocol;
#         
# /tmp/tmpgibs06bq/tmpat6lwaws.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmpgibs06bq/tmpat6lwaws.template /tmp/tmpgibs06bq/tmpz2zqnen2.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmpgibs06bq/tmpcqdeid6p']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmpgibs06bq/tmpz2zqnen2.h
# basename: tmpz2zqnen2.h
# enumeration-production
# EnumName: QmiWmsMessageProtocol
# enum_name: qmi_wms_message_protocol
# ENUMNAME: QMI_WMS_MESSAGE_PROTOCOL
# ENUMSHORT: WMS_MESSAGE_PROTOCOL
# ENUMPREFIX: QMI
# enumsince: 1.0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: QmiWmsMessageProtocol
# enum_name: qmi_wms_message_protocol
# ENUMNAME: QMI_WMS_MESSAGE_PROTOCOL
# ENUMSHORT: WMS_MESSAGE_PROTOCOL
# ENUMPREFIX: QMI
# enumsince: 1.0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: QMI_WMS_MESSAGE_PROTOCOL_CDMA
# valuenick: cdma
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: QmiWmsMessageProtocol
# enum_name: qmi_wms_message_protocol
# ENUMNAME: QMI_WMS_MESSAGE_PROTOCOL
# ENUMSHORT: WMS_MESSAGE_PROTOCOL
# ENUMPREFIX: QMI
# enumsince: 1.0
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
ok 36 __main__.TestRspMkenums.test_with_double_quotes
# glib-mkenums: /usr/bin/glib-mkenums
# tmpdir: /tmp/tmp0m43r8gl
# rspfile: True
# /tmp/tmp0m43r8gl/tmp4b8rc7sz.h: 
#         typedef enum {
#           FOO_VALUE /*< nick="eek, a comma" >*/
#         } Foo;
#         
# /tmp/tmp0m43r8gl/tmpdeul6jvl.template: 
# /*** BEGIN file-header ***/
# file-header
# /*** END file-header ***/
# 
# /*** BEGIN file-production ***/
# file-production
# filename: @filename@
# basename: @basename@
# /*** END file-production ***/
# 
# /*** BEGIN enumeration-production ***/
# enumeration-production
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END enumeration-production ***/
# 
# /*** BEGIN value-header ***/
# value-header
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-header ***/
# 
# /*** BEGIN value-production ***/
# value-production
# VALUENAME: @VALUENAME@
# valuenick: @valuenick@
# valuenum: @valuenum@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-production ***/
# 
# /*** BEGIN value-tail ***/
# value-tail
# EnumName: @EnumName@
# enum_name: @enum_name@
# ENUMNAME: @ENUMNAME@
# ENUMSHORT: @ENUMSHORT@
# ENUMPREFIX: @ENUMPREFIX@
# enumsince: @enumsince@
# type: @type@
# Type: @Type@
# TYPE: @TYPE@
# /*** END value-tail ***/
# 
# /*** BEGIN comment ***/
# comment
# comment: @comment@
# /*** END comment ***/
# 
# /*** BEGIN file-tail ***/
# file-tail
# /*** END file-tail ***/
# 
# Response file contains: --template /tmp/tmp0m43r8gl/tmpdeul6jvl.template /tmp/tmp0m43r8gl/tmp4b8rc7sz.h
# Running: ['/usr/bin/glib-mkenums', '@/tmp/tmp0m43r8gl/tmpr_m8docu']
# Return code: 0
# Output:
#  comment
# comment: This file is generated by glib-mkenums, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses.
# 
# 
# file-header
# file-production
# filename: /tmp/tmp0m43r8gl/tmp4b8rc7sz.h
# basename: tmp4b8rc7sz.h
# enumeration-production
# EnumName: Foo
# enum_name: foo_
# ENUMNAME: FOO_
# ENUMSHORT: 
# ENUMPREFIX: FOO
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-header
# EnumName: Foo
# enum_name: foo_
# ENUMNAME: FOO_
# ENUMSHORT: 
# ENUMPREFIX: FOO
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# value-production
# VALUENAME: FOO_VALUE
# valuenick: eek, a comma
# valuenum: 0
# type: enum
# Type: Enum
# TYPE: ENUM
# value-tail
# EnumName: Foo
# enum_name: foo_
# ENUMNAME: FOO_
# ENUMSHORT: 
# ENUMPREFIX: FOO
# enumsince: 
# type: enum
# Type: Enum
# TYPE: ENUM
# file-tail
# 
# comment
# comment: Generated data ends here
# Error:
1..36
PASS: glib/mkenums.py.test
Running test: glib/g-file.test
TAP version 14
# random seed: R02S8bc6764a30c7503563a9187e4b7357f5
1..8
# Start of g-file tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 1 /g-file/test_g_file_new_null
ok 2 /g-file/test_g_file_new_for_path
ok 3 /g-file/test_g_file_new_for_uri
ok 4 /g-file/test_g_file_dup
ok 5 /g-file/test_g_file_get_parse_name_utf8
file:///var/volatile/tmp/test-tmp-glib_g-file.test-X0WT72
file:///var/volatile/tmp
file:///tmp
file:////UTF-8%20p%C5%99%C3%ADli%C5%A1%20%C5%BElu%C5%A5ou%C4%8Dk%C3%BD%20k%C5%AF%C5%88
file:///UTF-8%20p%C5%99%C3%ADli%C5%A1%20%C5%BElu%C5%A5ou%C4%8Dk%C3%BD%20k%C5%AF%C5%88
ok 6 /g-file/test_g_file_new_for_commandline_arg
/dir1 /dir1/dir2/dir3/
/dir1/ /dir1/dir2/dir3/
/dir1 /dir1/dir2/dir3
/dir1/ /dir1/dir2/dir3
/tmp/ /something/
/dir1/dir2 /dir1/
//dir1/new //dir1/new/dir2/dir3
/dir/UTF-8 p??li? ?lu?ou?k? k?? /dir/UTF-8 p??li? ?lu?ou?k? k??/dir2
file:///dir1 file:///dir1/dir2/dir3/
file:///dir1/ file:///dir1/dir2/dir3/
file:///dir1 file:///dir1/dir2/dir3
file:///dir1/ file:///dir1/dir2/dir3
file:///tmp/ file:///something/
file:///dir1/dir2 file:///dir1/
file:////dir1/new file:////dir1/new/dir2/dir3
file:///dir/UTF-8%20p%C5%99%C3%ADli%C5%A1%20%C5%BElu%C5%A5ou%C4%8Dk%C3%BD%20k%C5%AF%C5%88 file:///dir/UTF-8%20p%C5%99%C3%ADli%C5%A1%20%C5%BElu%C5%A5ou%C4%8Dk%C3%BD%20k%C5%AF%C5%88/dir2
ok 7 /g-file/test_g_file_has_prefix
ok 8 /g-file/test_g_file_get_parent_child
# End of g-file tests
PASS: glib/g-file.test
Running test: glib/tls-bindings.test
TAP version 14
# random seed: R02S9832ce4d755a14aecd9005f6611bf164
1..2
# Start of tls-connection tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation test (GTestTlsBackend) for ?gio-tls-backend?
ok 1 /tls-connection/get-tls-channel-binding
ok 2 /tls-connection/get-dtls-channel-binding
# End of tls-connection tests
PASS: glib/tls-bindings.test
Running test: glib/utils-c-11.test
TAP version 14
# random seed: R02S854c5c0873b4fd0c81d3c36597f7c7c8
1..41
# Start of utils tests
ok 1 /utils/language-names
# Testing locale ?en?
# Testing locale ?sr@latin?
# Testing locale ?fr_BE?
# Testing locale ?sr_SR@latin?
# Testing locale ?sr_SR@latin.UTF-8?
# Testing locale ?sr@latin_invalid?
# Testing locale ?sr.UTF-8@latin?
# Testing locale ?sr.UTF-8_latin?
# Testing locale ?sr.UTF-8@latin_invalid?
ok 2 /utils/locale-variants
ok 3 /utils/version
ok 4 /utils/appname
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/847
# /utils/prgname-thread-safety summary: Test that threads racing to get and set the program name always receive a valid program name.
ok 5 /utils/prgname-thread-safety
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=627969
# /utils/tmpdir summary: Test that g_get_tmp_dir() returns a correct default if TMPDIR is set to the empty string
ok 6 /utils/tmpdir
ok 7 /utils/basic_bits
ok 8 /utils/bits
ok 9 /utils/swap
ok 10 /utils/find-program
ok 11 /utils/find-program-for-path
ok 12 /utils/debug
ok 13 /utils/codeset
ok 14 /utils/codeset2
ok 15 /utils/console-charset
ok 16 /utils/gettext
ok 17 /utils/username
ok 18 /utils/realname
ok 19 /utils/hostname
ok 20 /utils/xdgdirs
ok 21 /utils/specialdir
# NAME: Linux
ok 22 /utils/os-info
ok 23 /utils/clear-pointer
ok 24 /utils/clear-pointer-cast
ok 25 /utils/take-pointer
ok 26 /utils/clear-source
ok 27 /utils/misc-mem
# /utils/aligned-mem summary: Aligned memory allocator
# Alignment must not be zero
# Alignment must be a power of two
# Alignment must be a multiple of sizeof(void*)
ok 28 /utils/aligned-mem
# /utils/free-sized summary: Check that g_free_sized() works
ok 29 /utils/free-sized
ok 30 /utils/nullify
ok 31 /utils/atexit
ok 32 /utils/check-setuid
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1663
ok 33 /utils/int-limits
ok 34 /utils/clear-list
ok 35 /utils/clear-slist
ok 36 /utils/steal-handle-id
# Start of specialdir tests
ok 37 /utils/specialdir/desktop
# End of specialdir tests
# Start of clear-pointer tests
ok 38 /utils/clear-pointer/side-effects
# End of clear-pointer tests
# Start of aligned-mem tests
# /utils/aligned-mem/alignment summary: Check that g_aligned_alloc() returns a correctly aligned pointer
ok 39 /utils/aligned-mem/alignment
# /utils/aligned-mem/zeroed summary: Check that g_aligned_alloc0() zeroes out its allocation
ok 40 /utils/aligned-mem/zeroed
# /utils/aligned-mem/free-sized summary: Check that g_aligned_free_sized() works
ok 41 /utils/aligned-mem/free-sized
# Start of subprocess tests
# End of subprocess tests
# End of aligned-mem tests
# End of utils tests
PASS: glib/utils-c-11.test
Running test: glib/flags.test
TAP version 14
# random seed: R02Sc1768bde70749259ea03312d1c6eeb48
1..1
# Start of gobject tests
# Start of flags tests
ok 1 /gobject/flags/validate
# End of flags tests
# End of gobject tests
PASS: glib/flags.test
Running test: glib/converter-stream.test
TAP version 14
# random seed: R02S6483c825cc4c08c5755fbf2506738dc0
1..17
# Start of converter tests
Executing: glib/converter-stream.test
ok 1 /converter/basics
# End of converter tests
# Start of converter-input-stream tests
ok 2 /converter-input-stream/expander
ok 3 /converter-input-stream/compressor
# Start of truncation tests
ok 4 /converter-input-stream/truncation/zlib
# slow test /converter-input-stream/truncation/zlib executed in 0.65 secs
ok 5 /converter-input-stream/truncation/gzip
# slow test /converter-input-stream/truncation/gzip executed in 0.66 secs
ok 6 /converter-input-stream/truncation/raw
# slow test /converter-input-stream/truncation/raw executed in 0.69 secs
# End of truncation tests
# Start of charset tests
ok 7 /converter-input-stream/charset/utf8->latin1
ok 8 /converter-input-stream/charset/latin1->utf8
ok 9 /converter-input-stream/charset/fallbacks
# End of charset tests
# End of converter-input-stream tests
# Start of converter-output-stream tests
# Start of roundtrip tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=619945
ok 10 /converter-output-stream/roundtrip/zlib-0
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=619945
ok 11 /converter-output-stream/roundtrip/zlib-9
# slow test /converter-output-stream/roundtrip/zlib-9 executed in 0.62 secs
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=619945
ok 12 /converter-output-stream/roundtrip/gzip-0
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=619945
ok 13 /converter-output-stream/roundtrip/gzip-9
# slow test /converter-output-stream/roundtrip/gzip-9 executed in 0.62 secs
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=619945
ok 14 /converter-output-stream/roundtrip/raw-0
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=619945
ok 15 /converter-output-stream/roundtrip/raw-9
# slow test /converter-output-stream/roundtrip/raw-9 executed in 0.61 secs
# End of roundtrip tests
# End of converter-output-stream tests
# Start of converter-stream tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation dummy (GDummyProxyResolver) for ?gio-proxy-resolver?
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x5555559ebed0 and GSocketClientAsyncConnectData 0x5555559e8ce0
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x5555555fb060 for GSocketClientAsyncConnectData 0x5555559e8ce0
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 16 /converter-stream/pollable
ok 17 /converter-stream/leftover
# End of converter-stream tests
PASS: glib/converter-stream.test
Running test: glib/642026-ec.test
TAP version 14
# random seed: R02S7b1f228363656a27f2b29ef26fd08d29
1..1
# Start of glib tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=642026
Executing: glib/642026-ec.test
ok 1 /glib/642026
# End of glib tests
PASS: glib/642026-ec.test
Running test: glib/converter.test
TAP version 14
# random seed: R02S7daa042a3f34a1a36ddd3b4956d825eb
1..2
# Start of converter tests
ok 1 /converter/bytes
ok 2 /converter/extra-bytes-at-end
# End of converter tests
PASS: glib/converter.test
Running test: glib/stream-rw_all.test
TAP version 14
# random seed: R02S58452f9ec099e2281ae2be535bdf4e48
1..3
# Start of stream tests
# Start of read_all_async tests
ok 1 /stream/read_all_async/memory
# End of read_all_async tests
# Start of write_all_async tests
ok 2 /stream/write_all_async/memory
# End of write_all_async tests
# Start of read_write_all_async tests
ok 3 /stream/read_write_all_async/pipe
# End of read_write_all_async tests
# End of stream tests
PASS: glib/stream-rw_all.test
Running test: glib/pathbuf.test
TAP version 14
# random seed: R02S810bd9c8332b8d02592936f922db25ec
1..3
# Start of pathbuf tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/pathbuf/init/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/pathbuf/init/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/pathbuf/init/.dirs/system-config1:/var/volatile/tmp/pathbuf/init/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/pathbuf/init/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/pathbuf/init/.dirs/system-data1:/var/volatile/tmp/pathbuf/init/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/pathbuf/init/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/pathbuf/init/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/pathbuf/init/.dirs/runtime
# Initializing empty path buf
# Initializing with empty path
# Initializing with full path
# Initializing with no path
# Allocating GPathBuf on the heap
ok 1 /pathbuf/init
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/pathbuf/push-pop/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/pathbuf/push-pop/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/pathbuf/push-pop/.dirs/system-config1:/var/volatile/tmp/pathbuf/push-pop/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/pathbuf/push-pop/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/pathbuf/push-pop/.dirs/system-data1:/var/volatile/tmp/pathbuf/push-pop/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/pathbuf/push-pop/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/pathbuf/push-pop/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/pathbuf/push-pop/.dirs/runtime
# Pushing relative path component
# Pushing absolute path component
# Popping a path component
# Can't pop the last element of a path buffer
ok 2 /pathbuf/push-pop
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/pathbuf/filename-extension/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/pathbuf/filename-extension/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/pathbuf/filename-extension/.dirs/system-config1:/var/volatile/tmp/pathbuf/filename-extension/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/pathbuf/filename-extension/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/pathbuf/filename-extension/.dirs/system-data1:/var/volatile/tmp/pathbuf/filename-extension/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/pathbuf/filename-extension/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/pathbuf/filename-extension/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/pathbuf/filename-extension/.dirs/runtime
ok 3 /pathbuf/filename-extension
# End of pathbuf tests
PASS: glib/pathbuf.test
Running test: glib/notify-init.test
TAP version 14
# random seed: R02Sa6e15a0ccaaa1f7f92062510edb7b978
1..1
# Start of properties tests
# /properties/notify-in-init summary: Test that emitting notify with a handler already connected in test_object_init() works
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2665
ok 1 /properties/notify-in-init
# End of properties tests
PASS: glib/notify-init.test
Running test: glib/properties-introspection.test
TAP version 14
# random seed: R02S4558bd7364ba129f787aeb8aaaf122d3
1..2
# Start of properties tests
# /properties/introspection summary: Verify that introspecting properties on an interface initializes the GParamSpecPool.
ok 1 /properties/introspection
# /properties/collision summary: Verify that multiple threads create a single GParamSpecPool.
ok 2 /properties/collision
# End of properties tests
PASS: glib/properties-introspection.test
Running test: glib/unix-streams.test
TAP version 14
# random seed: R02Sd99f321b36d9b8e56b7e12284e2f62d0
1..9
# Start of unix-streams tests
ok 1 /unix-streams/basic
ok 2 /unix-streams/pipe-io-test
# slow test /unix-streams/pipe-io-test executed in 0.50 secs
ok 3 /unix-streams/nonblocking-io-test
# slow test /unix-streams/nonblocking-io-test executed in 0.50 secs
ok 4 /unix-streams/read_write
ok 5 /unix-streams/read_writev
ok 6 /unix-streams/write-wouldblock
ok 7 /unix-streams/writev-wouldblock
ok 8 /unix-streams/write-async-wouldblock
ok 9 /unix-streams/writev-async-wouldblock
# End of unix-streams tests
PASS: glib/unix-streams.test
Running test: glib/rwlock.test
TAP version 14
# random seed: R02Se0610aeca92012bd2f33a2de177befa0
1..8
# Start of thread tests
ok 1 /thread/rwlock1
ok 2 /thread/rwlock2
ok 3 /thread/rwlock3
ok 4 /thread/rwlock4
ok 5 /thread/rwlock5
ok 6 /thread/rwlock6
Executing: glib/rwlock.test
Executing: glib/rwlock.test
ok 7 /thread/rwlock7
# slow test /thread/rwlock7 executed in 11.51 secs
ok 8 /thread/rwlock8
# slow test /thread/rwlock8 executed in 1.74 secs
# End of thread tests
PASS: glib/rwlock.test
Running test: glib/autoptr.test
TAP version 14
# random seed: R02S87f7b35dd294c3bfe3f3189f37b379e9
1..6
# Start of autoptr tests
ok 1 /autoptr/autoptr
ok 2 /autoptr/autoptr_steal
ok 3 /autoptr/autolist
ok 4 /autoptr/autoslist
ok 5 /autoptr/autoqueue
ok 6 /autoptr/autoclass
# End of autoptr tests
PASS: glib/autoptr.test
Running test: glib/simple-proxy.test
TAP version 14
# random seed: R02S1cc730940121bbfd8a7a68c0c52deb7e
1..3
# Start of static-proxy tests
ok 1 /static-proxy/uri
ok 2 /static-proxy/socks
ok 3 /static-proxy/ignore
# End of static-proxy tests
PASS: glib/simple-proxy.test
Running test: glib/notify-init2.test
TAP version 14
# random seed: R02S7fc5687144236e2214719f87a685f70e
1..1
# Start of properties tests
# /properties/notify-in-init2 summary: Test that notify freezing during construction of objects with custom constructor works
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2665
ok 1 /properties/notify-in-init2
# End of properties tests
PASS: glib/notify-init2.test
Running test: glib/bytes.test
TAP version 14
# random seed: R02S332819cf63ed678f6f33eae7baf6d071
1..21
# Start of bytes tests
ok 1 /bytes/new
ok 2 /bytes/new-take
ok 3 /bytes/new-static
ok 4 /bytes/new-with-free-func
ok 5 /bytes/new-from-bytes
ok 6 /bytes/new-from-bytes-slice
ok 7 /bytes/new-from-bytes-shared-ref
ok 8 /bytes/hash
ok 9 /bytes/equal
ok 10 /bytes/compare
ok 11 /bytes/null
ok 12 /bytes/get-region
# /bytes/unref-null summary: Test that calling g_bytes_unref() on NULL is a no-op
ok 13 /bytes/unref-null
# Start of to-data tests
ok 14 /bytes/to-data/transferred
ok 15 /bytes/to-data/two-refs
ok 16 /bytes/to-data/non-malloc
ok 17 /bytes/to-data/different-free-func
# End of to-data tests
# Start of to-array tests
ok 18 /bytes/to-array/transferred
ok 19 /bytes/to-array/two-refs
ok 20 /bytes/to-array/non-malloc
# Start of transferred tests
# g_bytes_unref_to_array() can only take GBytes up to G_MAXUINT in length; test that longer ones are rejected
ok 21 /bytes/to-array/transferred/oversize
# End of transferred tests
# End of to-array tests
# End of bytes tests
PASS: glib/bytes.test
Running test: glib/guuid.test
TAP version 14
# random seed: R02Scdfa63d51fc209240faffe9a82d6256d
1..2
# Start of uuid tests
ok 1 /uuid/string
ok 2 /uuid/random
# End of uuid tests
PASS: glib/guuid.test
Running test: glib/module-test-library.test
TAP version 14
# random seed: R02S761bafe7ccfadc323b9ad9e09e884732
1..3
# Start of module tests
ok 1 /module/basics
# /module/invalid-libtool-archive summary: Test that opening an invalid .la file fails
ok 2 /module/invalid-libtool-archive
# /module/local-binding summary: Test that binding a library's symbols locally does not add them globally
ok 3 /module/local-binding
# End of module tests
PASS: glib/module-test-library.test
Running test: glib/inet-address.test
Executing: glib/inet-address.test
TAP version 14
# random seed: R02S90a321ab750b481a27ba3a7a7777bd8e
1..11
# Start of inet-address tests
ok 1 /inet-address/parse
ok 2 /inet-address/any
ok 3 /inet-address/loopback
ok 4 /inet-address/bytes
ok 5 /inet-address/property
# End of inet-address tests
# Start of socket-address tests
ok 6 /socket-address/basic
ok 7 /socket-address/to-string
# End of socket-address tests
# Start of address-mask tests
ok 8 /address-mask/parse
ok 9 /address-mask/property
ok 10 /address-mask/equal
ok 11 /address-mask/match
# End of address-mask tests
PASS: glib/inet-address.test
Running test: glib/data-input-stream.test
TAP version 14
# random seed: R02Sf99f5f697878701ba9d46b7c49390000
1..10
# Start of data-input-stream tests
ok 1 /data-input-stream/basic
ok 2 /data-input-stream/read-lines-LF
ok 3 /data-input-stream/read-lines-LF-valid-utf8
ok 4 /data-input-stream/read-lines-LF-invalid-utf8
ok 5 /data-input-stream/read-lines-CR
ok 6 /data-input-stream/read-lines-CR-LF
ok 7 /data-input-stream/read-lines-any
ok 8 /data-input-stream/read-until
# Test vector 0:  part1 # part2 $ part3 ? part4 ? and #$?^
# Test vector 1: {"key": "value"}? and ?
ok 9 /data-input-stream/read-upto
ok 10 /data-input-stream/read-int
# slow test /data-input-stream/read-int executed in 1.37 secs
# End of data-input-stream tests
PASS: glib/data-input-stream.test
Running test: glib/portal-support-flatpak-none.test
TAP version 14
# random seed: R02S6421ae5151a270a0a3253534023e8922
1..1
# Start of portal-support tests
# Start of flatpak tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/flatpak/none/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/flatpak/none/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/flatpak/none/.dirs/system-config1:/var/volatile/tmp/portal-support/flatpak/none/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/flatpak/none/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/flatpak/none/.dirs/system-data1:/var/volatile/tmp/portal-support/flatpak/none/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/flatpak/none/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/flatpak/none/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/flatpak/none/.dirs/runtime
# Creating .flatpak-info in /var/volatile/tmp/portal-support/flatpak/none/.dirs/runtime/.flatpak-info
ok 1 /portal-support/flatpak/none
# End of flatpak tests
# End of portal-support tests
PASS: glib/portal-support-flatpak-none.test
Running test: glib/appmonitor.test
TAP version 14
# random seed: R02Sb6d4e5bb8dc1b35178df83f8a1a34787
1..1
# Start of monitor tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/monitor/app/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/monitor/app/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/monitor/app/.dirs/system-config1:/var/volatile/tmp/monitor/app/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/monitor/app/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/monitor/app/.dirs/system-data1:/var/volatile/tmp/monitor/app/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/monitor/app/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/monitor/app/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/monitor/app/.dirs/runtime
# Using data directory: /var/volatile/tmp/monitor/app/.dirs/data
ok 1 /monitor/app
# End of monitor tests
PASS: glib/appmonitor.test
Running test: glib/portal-support-none.test
TAP version 14
# random seed: R02Sc2c44e57d123a40e699730de364b79c0
1..1
# Start of portal-support tests
ok 1 /portal-support/none
# End of portal-support tests
PASS: glib/portal-support-none.test
Running test: glib/cxx-20.test
TAP version 14
# random seed: R02Sdbdff6fc9d690fd682de2a95a09bc5e8
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx-20.test
Running test: glib/642026.test
TAP version 14
# random seed: R02S34bf3ae4f1406e5158e33bf8ed2f1506
1..1
# Start of glib tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=642026
ok 1 /glib/642026
# End of glib tests
PASS: glib/642026.test
Running test: glib/tls-certificate.test
TAP version 14
# random seed: R02S9bdda244d73cbd3d5e412bbc4c2d523a
1..19
# Start of tls-certificate tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation test (GTestTlsBackend) for ?gio-tls-backend?
ok 1 /tls-certificate/pem-parser
ok 2 /tls-certificate/pem-parser-handles-chain
ok 3 /tls-certificate/from_file
ok 4 /tls-certificate/from_files
ok 5 /tls-certificate/from_files_crlf
ok 6 /tls-certificate/from_files_pkcs8
ok 7 /tls-certificate/from_files_pkcs8enc
ok 8 /tls-certificate/list_from_file
ok 9 /tls-certificate/pkcs11-uri
ok 10 /tls-certificate/pkcs11-uri-unsupported
ok 11 /tls-certificate/from_pkcs12
ok 12 /tls-certificate/from_pkcs12_file
ok 13 /tls-certificate/not-valid-before
ok 14 /tls-certificate/not-valid-after
ok 15 /tls-certificate/subject-name
ok 16 /tls-certificate/issuer-name
ok 17 /tls-certificate/dns-names
ok 18 /tls-certificate/ip-addresses
ok 19 /tls-certificate/pem-parser-no-sentinel
# End of tls-certificate tests
PASS: glib/tls-certificate.test
Running test: glib/tls-interaction.test
TAP version 14
# random seed: R02Sf02636936cc4a901abe8c06f04dc70f7
1..42
# Start of tls-interaction tests
# Start of ask-password tests
# Start of invoke-with-loop tests
ok 1 /tls-interaction/ask-password/invoke-with-loop/unhandled-implementation
ok 2 /tls-interaction/ask-password/invoke-with-loop/async-implementation-success
ok 3 /tls-interaction/ask-password/invoke-with-loop/async-implementation-failure
ok 4 /tls-interaction/ask-password/invoke-with-loop/sync-implementation-success
ok 5 /tls-interaction/ask-password/invoke-with-loop/sync-implementation-failure
# End of invoke-with-loop tests
# Start of invoke-without-loop tests
ok 6 /tls-interaction/ask-password/invoke-without-loop/unhandled-implementation
ok 7 /tls-interaction/ask-password/invoke-without-loop/async-implementation-success
ok 8 /tls-interaction/ask-password/invoke-without-loop/async-implementation-failure
ok 9 /tls-interaction/ask-password/invoke-without-loop/sync-implementation-success
ok 10 /tls-interaction/ask-password/invoke-without-loop/sync-implementation-failure
# End of invoke-without-loop tests
# Start of invoke-in-loop tests
ok 11 /tls-interaction/ask-password/invoke-in-loop/unhandled-implementation
ok 12 /tls-interaction/ask-password/invoke-in-loop/async-implementation-success
ok 13 /tls-interaction/ask-password/invoke-in-loop/async-implementation-failure
ok 14 /tls-interaction/ask-password/invoke-in-loop/sync-implementation-success
ok 15 /tls-interaction/ask-password/invoke-in-loop/sync-implementation-failure
# End of invoke-in-loop tests
# Start of sync tests
ok 16 /tls-interaction/ask-password/sync/unhandled-implementation
ok 17 /tls-interaction/ask-password/sync/sync-implementation-success
ok 18 /tls-interaction/ask-password/sync/sync-implementation-failure
# End of sync tests
# Start of async tests
ok 19 /tls-interaction/ask-password/async/unhandled-implementation
ok 20 /tls-interaction/ask-password/async/async-implementation-success
ok 21 /tls-interaction/ask-password/async/async-implementation-failure
# End of async tests
# End of ask-password tests
# Start of request-certificate tests
# Start of invoke-with-loop tests
ok 22 /tls-interaction/request-certificate/invoke-with-loop/unhandled-implementation
ok 23 /tls-interaction/request-certificate/invoke-with-loop/async-implementation-success
ok 24 /tls-interaction/request-certificate/invoke-with-loop/async-implementation-failure
ok 25 /tls-interaction/request-certificate/invoke-with-loop/sync-implementation-success
ok 26 /tls-interaction/request-certificate/invoke-with-loop/sync-implementation-failure
# End of invoke-with-loop tests
# Start of invoke-without-loop tests
ok 27 /tls-interaction/request-certificate/invoke-without-loop/unhandled-implementation
ok 28 /tls-interaction/request-certificate/invoke-without-loop/async-implementation-success
ok 29 /tls-interaction/request-certificate/invoke-without-loop/async-implementation-failure
ok 30 /tls-interaction/request-certificate/invoke-without-loop/sync-implementation-success
ok 31 /tls-interaction/request-certificate/invoke-without-loop/sync-implementation-failure
# End of invoke-without-loop tests
# Start of invoke-in-loop tests
ok 32 /tls-interaction/request-certificate/invoke-in-loop/unhandled-implementation
ok 33 /tls-interaction/request-certificate/invoke-in-loop/async-implementation-success
ok 34 /tls-interaction/request-certificate/invoke-in-loop/async-implementation-failure
ok 35 /tls-interaction/request-certificate/invoke-in-loop/sync-implementation-success
ok 36 /tls-interaction/request-certificate/invoke-in-loop/sync-implementation-failure
# End of invoke-in-loop tests
# Start of sync tests
ok 37 /tls-interaction/request-certificate/sync/unhandled-implementation
ok 38 /tls-interaction/request-certificate/sync/sync-implementation-success
ok 39 /tls-interaction/request-certificate/sync/sync-implementation-failure
# End of sync tests
# Start of async tests
ok 40 /tls-interaction/request-certificate/async/unhandled-implementation
ok 41 /tls-interaction/request-certificate/async/async-implementation-success
ok 42 /tls-interaction/request-certificate/async/async-implementation-failure
# End of async tests
# End of request-certificate tests
# End of tls-interaction tests
PASS: glib/tls-interaction.test
Running test: glib/thread-pool.test
TAP version 14
# random seed: R02Sbb6216904274f4f7a6ee76fcf86e3792
1..5
# Start of thread_pool tests
# /thread_pool/shared summary: Tests that a shared, non-exclusive thread pool generally works.
ok 1 /thread_pool/shared
# /thread_pool/exclusive summary: Tests that an exclusive thread pool generally works.
ok 2 /thread_pool/exclusive
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/2012
# /thread_pool/create_shared_after_exclusive summary: Tests that creating a shared pool after an exclusive one works.
ok 3 /thread_pool/create_shared_after_exclusive
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/121
ok 4 /thread_pool/create_full
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/2012
# /thread_pool/create_exclusive_after_shared summary: Tests that creating an exclusive pool after a shared one works.
ok 5 /thread_pool/create_exclusive_after_shared
# End of thread_pool tests
PASS: glib/thread-pool.test
Running test: glib/function-info.test
TAP version 14
# random seed: R02S47f995020707f5c2d6caf76175220f29
1..1
# Start of function-info tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/function-info/invoker/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/function-info/invoker/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/function-info/invoker/.dirs/system-config1:/var/volatile/tmp/function-info/invoker/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/function-info/invoker/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/function-info/invoker/.dirs/system-data1:/var/volatile/tmp/function-info/invoker/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/function-info/invoker/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/function-info/invoker/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/function-info/invoker/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /function-info/invoker summary: Test preparing a function invoker
ok 1 /function-info/invoker
# End of function-info tests
PASS: glib/function-info.test
Running test: glib/callable-info.test
TAP version 14
# random seed: R02S835a7e4af93441e41733625218c2df51
1..5
# Start of callable-info tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/callable-info/sync-function/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/callable-info/sync-function/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/callable-info/sync-function/.dirs/system-config1:/var/volatile/tmp/callable-info/sync-function/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/callable-info/sync-function/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/callable-info/sync-function/.dirs/system-data1:/var/volatile/tmp/callable-info/sync-function/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/callable-info/sync-function/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/callable-info/sync-function/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/callable-info/sync-function/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 1 /callable-info/sync-function
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/callable-info/async-function/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/callable-info/async-function/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/callable-info/async-function/.dirs/system-config1:/var/volatile/tmp/callable-info/async-function/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/callable-info/async-function/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/callable-info/async-function/.dirs/system-data1:/var/volatile/tmp/callable-info/async-function/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/callable-info/async-function/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/callable-info/async-function/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/callable-info/async-function/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 2 /callable-info/async-function
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/callable-info/is-method/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/callable-info/is-method/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/callable-info/is-method/.dirs/system-config1:/var/volatile/tmp/callable-info/is-method/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/callable-info/is-method/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/callable-info/is-method/.dirs/system-data1:/var/volatile/tmp/callable-info/is-method/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/callable-info/is-method/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/callable-info/is-method/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/callable-info/is-method/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 3 /callable-info/is-method
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/callable-info/static-method/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/callable-info/static-method/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/callable-info/static-method/.dirs/system-config1:/var/volatile/tmp/callable-info/static-method/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/callable-info/static-method/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/callable-info/static-method/.dirs/system-data1:/var/volatile/tmp/callable-info/static-method/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/callable-info/static-method/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/callable-info/static-method/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/callable-info/static-method/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 4 /callable-info/static-method
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/callable-info/static-vfunc/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/callable-info/static-vfunc/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/callable-info/static-vfunc/.dirs/system-config1:/var/volatile/tmp/callable-info/static-vfunc/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/callable-info/static-vfunc/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/callable-info/static-vfunc/.dirs/system-data1:/var/volatile/tmp/callable-info/static-vfunc/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/callable-info/static-vfunc/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/callable-info/static-vfunc/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/callable-info/static-vfunc/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# Bug Reference: https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/361
ok 5 /callable-info/static-vfunc # SKIP g-ir-scanner is not new enough
# End of callable-info tests
PASS: glib/callable-info.test
Running test: glib/pattern.test
TAP version 14
# random seed: R02S8c9b571b5d2dedd3af1e95b6a6f63380
1..90
# Start of pattern tests
# Start of compile tests
ok 1 /pattern/compile/0
ok 2 /pattern/compile/1
ok 3 /pattern/compile/2
ok 4 /pattern/compile/3
ok 5 /pattern/compile/4
ok 6 /pattern/compile/5
ok 7 /pattern/compile/6
ok 8 /pattern/compile/7
ok 9 /pattern/compile/8
ok 10 /pattern/compile/9
ok 11 /pattern/compile/10
ok 12 /pattern/compile/11
ok 13 /pattern/compile/12
ok 14 /pattern/compile/13
# End of compile tests
# Start of copy tests
ok 15 /pattern/copy/0
ok 16 /pattern/copy/1
ok 17 /pattern/copy/2
ok 18 /pattern/copy/3
ok 19 /pattern/copy/4
ok 20 /pattern/copy/5
ok 21 /pattern/copy/6
ok 22 /pattern/copy/7
ok 23 /pattern/copy/8
ok 24 /pattern/copy/9
ok 25 /pattern/copy/10
ok 26 /pattern/copy/11
ok 27 /pattern/copy/12
ok 28 /pattern/copy/13
# End of copy tests
# Start of match tests
ok 29 /pattern/match/0
ok 30 /pattern/match/1
ok 31 /pattern/match/2
ok 32 /pattern/match/3
ok 33 /pattern/match/4
ok 34 /pattern/match/5
ok 35 /pattern/match/6
ok 36 /pattern/match/7
ok 37 /pattern/match/8
ok 38 /pattern/match/9
ok 39 /pattern/match/10
ok 40 /pattern/match/11
ok 41 /pattern/match/12
ok 42 /pattern/match/13
ok 43 /pattern/match/14
ok 44 /pattern/match/15
ok 45 /pattern/match/16
ok 46 /pattern/match/17
ok 47 /pattern/match/18
ok 48 /pattern/match/19
ok 49 /pattern/match/20
ok 50 /pattern/match/21
ok 51 /pattern/match/22
ok 52 /pattern/match/23
ok 53 /pattern/match/24
ok 54 /pattern/match/25
ok 55 /pattern/match/26
ok 56 /pattern/match/27
ok 57 /pattern/match/28
ok 58 /pattern/match/29
ok 59 /pattern/match/30
ok 60 /pattern/match/31
ok 61 /pattern/match/32
ok 62 /pattern/match/33
ok 63 /pattern/match/34
ok 64 /pattern/match/35
ok 65 /pattern/match/36
ok 66 /pattern/match/37
ok 67 /pattern/match/38
ok 68 /pattern/match/39
ok 69 /pattern/match/40
ok 70 /pattern/match/41
ok 71 /pattern/match/42
ok 72 /pattern/match/43
ok 73 /pattern/match/44
ok 74 /pattern/match/45
ok 75 /pattern/match/46
ok 76 /pattern/match/47
ok 77 /pattern/match/48
ok 78 /pattern/match/49
ok 79 /pattern/match/50
# End of match tests
# Start of equal tests
ok 80 /pattern/equal/0
ok 81 /pattern/equal/1
ok 82 /pattern/equal/2
ok 83 /pattern/equal/3
ok 84 /pattern/equal/4
ok 85 /pattern/equal/5
ok 86 /pattern/equal/6
ok 87 /pattern/equal/7
ok 88 /pattern/equal/8
ok 89 /pattern/equal/9
ok 90 /pattern/equal/10
# End of equal tests
# End of pattern tests
PASS: glib/pattern.test
Running test: glib/portal-support-flatpak-gsettings-only.test
TAP version 14
# random seed: R02Se254b174c5106d91113d1d25c3884c99
1..1
# Start of portal-support tests
# Start of flatpak tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/system-config1:/var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/system-data1:/var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/runtime
# Creating .flatpak-info in /var/volatile/tmp/portal-support/flatpak/gsettings/.dirs/runtime/.flatpak-info
ok 1 /portal-support/flatpak/gsettings
# End of flatpak tests
# End of portal-support tests
PASS: glib/portal-support-flatpak-gsettings-only.test
Running test: glib/mem-overflow.test
TAP version 14
# random seed: R02Sc2ea66098cea5be3da9ccc5689474c14
1..2
# Start of mem tests
ok 1 /mem/overflow
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=615379
ok 2 /mem/empty-alloc
# Start of overflow tests
# Start of subprocess tests
# End of subprocess tests
# End of overflow tests
# Start of empty-alloc tests
# End of empty-alloc tests
# End of mem tests
PASS: glib/mem-overflow.test
Running test: glib/tree.test
TAP version 14
# random seed: R02Saedd2b798995fbc8c2ef05fb02a2eeb4
1..7
# Start of tree tests
ok 1 /tree/search
ok 2 /tree/remove
ok 3 /tree/destroy
ok 4 /tree/traverse
ok 5 /tree/insert
ok 6 /tree/bounds
ok 7 /tree/remove-all
# End of tree tests
PASS: glib/tree.test
Running test: glib/closure.test
TAP version 14
# random seed: R02S8c71a1c3ab741603e4c9604cb4a56473
1..6
# Start of closure tests
ok 1 /closure/idle
ok 2 /closure/timeout
ok 3 /closure/iochannel
ok 4 /closure/child
ok 5 /closure/fd
ok 6 /closure/signal
# End of closure tests
PASS: glib/closure.test
Running test: glib/gsocketclient-slow.test
TAP version 14
# random seed: R02Scec5553b94b420999b9225e0dfecd979
1..4
# Start of socket-client tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3184
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation dummy (GDummyProxyResolver) for ?gio-proxy-resolver?
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x55557be92340 and GSocketClientAsyncConnectData 0x55557be6d6e0
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x55557be95ef0 for GSocketClientAsyncConnectData 0x55557be6d6e0
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: Connection attempt delay reached, trying another enumeration
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Connection attempt failed: Connection refused
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x55557be95ef0 for GSocketClientAsyncConnectData 0x55557be6d6e0
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: Address enumeration completed (out of addresses)
# GLib-GIO-DEBUG: GSocketClient: Connection attempt failed: Connection refused
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Could not connect to localhost: Connection refused
ok 1 /socket-client/connection-fail
# slow test /socket-client/connection-fail executed in 1.23 secs
# Start of happy-eyeballs tests
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x55557be94c30 and GSocketClientAsyncConnectData 0x55557be97630
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x55557be975d0 for GSocketClientAsyncConnectData 0x55557be97630
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: Connection attempt delay reached, trying another enumeration
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 2 /socket-client/happy-eyeballs/slow
# slow test /socket-client/happy-eyeballs/slow executed in 0.61 secs
# Start of cancellation tests
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x55557be95580 and GSocketClientAsyncConnectData 0x55557be99570
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Operation was cancelled
ok 3 /socket-client/happy-eyeballs/cancellation/instant
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x55557be94a80 and GSocketClientAsyncConnectData 0x55557be99210
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x55557be99cc0 for GSocketClientAsyncConnectData 0x55557be99210
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
Executing: glib/gsocketclient-slow.test
# GLib-GIO-DEBUG: GSocketClient: Connection attempt delay reached, trying another enumeration
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection cancelled!
ok 4 /socket-client/happy-eyeballs/cancellation/delayed
# slow test /socket-client/happy-eyeballs/cancellation/delayed executed in 0.60 secs
# End of cancellation tests
# End of happy-eyeballs tests
# End of socket-client tests
PASS: glib/gsocketclient-slow.test
Running test: glib/sort.test
TAP version 14
# random seed: R02S35c37a08c4c46af7cbd15c3969e90662
1..5
# Start of sort tests
ok 1 /sort/basic
ok 2 /sort/zero-elements
ok 3 /sort/stable
ok 4 /sort/big
ok 5 /sort/deprecated
# End of sort tests
PASS: glib/sort.test
Running test: glib/object.test
TAP version 14
# random seed: R02S8a6a80edc0754a666be199f0c97ae9a7
1..2
# Start of object tests
# Start of constructor tests
ok 1 /object/constructor/singleton
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=661576
ok 2 /object/constructor/infanticide
# End of constructor tests
# End of object tests
PASS: glib/object.test
Running test: glib/logging.test
TAP version 14
# random seed: R02S85aad2f409ea724956a4ea9f79bdab2e
1..17
# Start of logging tests
Executing: glib/logging.test
ok 1 /logging/default-handler
# slow test /logging/default-handler executed in 9.18 secs
ok 2 /logging/warnings
ok 3 /logging/fatal-log-mask
# bu-DEBUG: message
# ba-DEBUG: message
# ba-INFO: message
ok 4 /logging/set-handler
ok 5 /logging/print-handler
ok 6 /logging/printerr-handler
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=653052
# The Log Message Handler
# 
# The Good Fail Message Handler
# 
ok 7 /logging/653052
ok 8 /logging/gibberish
# Start of default-handler tests
# Start of subprocess tests
# End of subprocess tests
# End of default-handler tests
# End of logging tests
# Start of structured-logging tests
ok 9 /structured-logging/no-state
ok 10 /structured-logging/some-state
ok 11 /structured-logging/robustness
ok 12 /structured-logging/roundtrip1
ok 13 /structured-logging/roundtrip2
ok 14 /structured-logging/roundtrip3
ok 15 /structured-logging/variant1
ok 16 /structured-logging/variant2
ok 17 /structured-logging/set-writer-func-twice
# End of structured-logging tests
PASS: glib/logging.test
Running test: glib/module-test-plugin.test
Executing: glib/module-test-plugin.test
TAP version 14
# random seed: R02Sd86b8a93394786091e7a4f9e0374da06
1..3
# Start of module tests
ok 1 /module/basics
# /module/invalid-libtool-archive summary: Test that opening an invalid .la file fails
ok 2 /module/invalid-libtool-archive
# /module/local-binding summary: Test that binding a library's symbols locally does not add them globally
ok 3 /module/local-binding
# End of module tests
PASS: glib/module-test-plugin.test
Running test: glib/option-context.test
TAP version 14
# random seed: R02Sdacda206084f0947561bff2718207ec1
1..58
# Start of option tests
ok 1 /option/basic
ok 2 /option/translate
ok 3 /option/strict-posix
# Start of help tests
ok 4 /option/help/options
ok 5 /option/help/no-options
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=697652
ok 6 /option/help/no-help-options
# Usage:
#   /usr/libexec/installed-tests/glib/option-context [OPTION?] blabla
# 
# Summary
# 
# Help Options:
#   -h, --help                                          Show help options
# 
# Application Options:
#   -t, --test=Argument to use in test (deprecated)     Test tests
#   --test2                                             Tests also
# 
# Description
# 
ok 7 /option/help/deprecated
# End of help tests
# Start of group tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=504142
ok 8 /option/group/captions
ok 9 /option/group/main
ok 10 /option/group/error-hook
ok 11 /option/group/parse
# Start of captions tests
# Start of subprocess tests
# End of subprocess tests
# End of captions tests
# End of group tests
# Start of restoration tests
ok 12 /option/restoration/int
ok 13 /option/restoration/string
ok 14 /option/restoration/boolean
# End of restoration tests
# Start of arg tests
ok 15 /option/arg/reverse-string
ok 16 /option/arg/optional-int
# Start of repetition tests
ok 17 /option/arg/repetition/int
ok 18 /option/arg/repetition/string
ok 19 /option/arg/repetition/filename
ok 20 /option/arg/repetition/double
ok 21 /option/arg/repetition/locale
ok 22 /option/arg/repetition/int64
# End of repetition tests
# Start of array tests
ok 23 /option/arg/array/string
# End of array tests
# Start of callback tests
ok 24 /option/arg/callback/string
ok 25 /option/arg/callback/count
ok 26 /option/arg/callback/optional1
ok 27 /option/arg/callback/optional2
ok 28 /option/arg/callback/optional3
ok 29 /option/arg/callback/optional4
ok 30 /option/arg/callback/optional5
ok 31 /option/arg/callback/optional6
ok 32 /option/arg/callback/optional7
ok 33 /option/arg/callback/optional8
# End of callback tests
# Start of remaining tests
ok 34 /option/arg/remaining/callback
ok 35 /option/arg/remaining/callback-false
ok 36 /option/arg/remaining/non-option
ok 37 /option/arg/remaining/separator
ok 38 /option/arg/remaining/array
# End of remaining tests
# Start of ignore tests
ok 39 /option/arg/ignore/long
ok 40 /option/arg/ignore/short
ok 41 /option/arg/ignore/arg
# End of ignore tests
# Start of rest tests
ok 42 /option/arg/rest/non-option
ok 43 /option/arg/rest/separator1
ok 44 /option/arg/rest/separator2
ok 45 /option/arg/rest/separator3
ok 46 /option/arg/rest/separator4
ok 47 /option/arg/rest/separator5
# End of rest tests
# End of arg tests
# Start of context tests
ok 48 /option/context/add
ok 49 /option/context/empty2
ok 50 /option/context/empty3
# End of context tests
# Start of bug tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=166609
ok 51 /option/bug/unknown-short
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=168008
ok 52 /option/bug/lonely-dash
ok 53 /option/bug/triple-dash
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=305576
ok 54 /option/bug/missing-arg
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=577638
ok 55 /option/bug/dash-arg
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=729563
ok 56 /option/bug/short-remaining
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=646926
ok 57 /option/bug/double-free
ok 58 /option/bug/double-zero
# End of bug tests
# End of option tests
PASS: glib/option-context.test
Running test: glib/utils-c-17.test
TAP version 14
# random seed: R02Sf8c151ef106ffcf806e13a8f0b06f667
1..41
# Start of utils tests
ok 1 /utils/language-names
# Testing locale ?en?
# Testing locale ?sr@latin?
# Testing locale ?fr_BE?
# Testing locale ?sr_SR@latin?
# Testing locale ?sr_SR@latin.UTF-8?
# Testing locale ?sr@latin_invalid?
# Testing locale ?sr.UTF-8@latin?
# Testing locale ?sr.UTF-8_latin?
# Testing locale ?sr.UTF-8@latin_invalid?
ok 2 /utils/locale-variants
ok 3 /utils/version
ok 4 /utils/appname
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/847
# /utils/prgname-thread-safety summary: Test that threads racing to get and set the program name always receive a valid program name.
ok 5 /utils/prgname-thread-safety
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=627969
# /utils/tmpdir summary: Test that g_get_tmp_dir() returns a correct default if TMPDIR is set to the empty string
ok 6 /utils/tmpdir
ok 7 /utils/basic_bits
ok 8 /utils/bits
ok 9 /utils/swap
ok 10 /utils/find-program
ok 11 /utils/find-program-for-path
ok 12 /utils/debug
ok 13 /utils/codeset
ok 14 /utils/codeset2
ok 15 /utils/console-charset
ok 16 /utils/gettext
ok 17 /utils/username
ok 18 /utils/realname
ok 19 /utils/hostname
ok 20 /utils/xdgdirs
ok 21 /utils/specialdir
# NAME: Linux
ok 22 /utils/os-info
ok 23 /utils/clear-pointer
ok 24 /utils/clear-pointer-cast
ok 25 /utils/take-pointer
ok 26 /utils/clear-source
ok 27 /utils/misc-mem
# /utils/aligned-mem summary: Aligned memory allocator
# Alignment must not be zero
# Alignment must be a power of two
# Alignment must be a multiple of sizeof(void*)
ok 28 /utils/aligned-mem
# /utils/free-sized summary: Check that g_free_sized() works
ok 29 /utils/free-sized
ok 30 /utils/nullify
ok 31 /utils/atexit
ok 32 /utils/check-setuid
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1663
ok 33 /utils/int-limits
ok 34 /utils/clear-list
ok 35 /utils/clear-slist
ok 36 /utils/steal-handle-id
# Start of specialdir tests
ok 37 /utils/specialdir/desktop
# End of specialdir tests
# Start of clear-pointer tests
ok 38 /utils/clear-pointer/side-effects
# End of clear-pointer tests
# Start of aligned-mem tests
# /utils/aligned-mem/alignment summary: Check that g_aligned_alloc() returns a correctly aligned pointer
ok 39 /utils/aligned-mem/alignment
# /utils/aligned-mem/zeroed summary: Check that g_aligned_alloc0() zeroes out its allocation
ok 40 /utils/aligned-mem/zeroed
# /utils/aligned-mem/free-sized summary: Check that g_aligned_free_sized() works
ok 41 /utils/aligned-mem/free-sized
# Start of subprocess tests
# End of subprocess tests
# End of aligned-mem tests
# End of utils tests
PASS: glib/utils-c-17.test
Running test: glib/hmac.test
TAP version 14
# random seed: R02Sca518f8a62bfd723215bb0b1cf4a80fb
1..37
# Start of hmac tests
ok 1 /hmac/sha1-1
ok 2 /hmac/sha1-2
ok 3 /hmac/sha1-3
ok 4 /hmac/sha1-4
ok 5 /hmac/sha1-5
ok 6 /hmac/sha1-6
ok 7 /hmac/sha1-7
ok 8 /hmac/sha256-1
ok 9 /hmac/sha256-2
ok 10 /hmac/sha256-3
ok 11 /hmac/sha256-4
ok 12 /hmac/sha256-5
ok 13 /hmac/sha256-6
ok 14 /hmac/sha384-1
ok 15 /hmac/sha384-2
ok 16 /hmac/sha384-3
ok 17 /hmac/sha384-4
ok 18 /hmac/sha384-5
ok 19 /hmac/sha384-6
ok 20 /hmac/sha512-1
ok 21 /hmac/sha512-2
ok 22 /hmac/sha512-3
ok 23 /hmac/sha512-4
ok 24 /hmac/sha512-5
ok 25 /hmac/sha512-6
ok 26 /hmac/md5-1
ok 27 /hmac/md5-2
ok 28 /hmac/md5-3
ok 29 /hmac/md5-4
ok 30 /hmac/md5-5
ok 31 /hmac/md5-6
ok 32 /hmac/md5-7
ok 33 /hmac/ref-unref
ok 34 /hmac/copy
ok 35 /hmac/for-data
ok 36 /hmac/for-string
ok 37 /hmac/for-bytes
# End of hmac tests
PASS: glib/hmac.test
Running test: glib/network-monitor.test
TAP version 14
# random seed: R02S1d926ee7001e104861ecc89f70600e18
1..4
# Start of network-monitor tests
# GLib-GIO-DEBUG: Failed to initialize portal (GNetworkMonitorPortal) for gio-network-monitor: Not using portals
# GLib-GIO-DEBUG: Failed to initialize networkmanager (GNetworkMonitorNM) for gio-network-monitor: NetworkManager not running
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation netlink (GNetworkMonitorNetlink) for ?gio-network-monitor?
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation dummy (GDummyProxyResolver) for ?gio-proxy-resolver?
ok 1 /network-monitor/default
ok 2 /network-monitor/remove_default
ok 3 /network-monitor/add_networks
ok 4 /network-monitor/remove_networks
# End of network-monitor tests
PASS: glib/network-monitor.test
Running test: glib/proxy-test.test
TAP version 14
# random seed: R02S0b3aa522ec959f3219d6490fbc985573
1..11
# Start of proxy tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation test (GTestProxyResolver) for ?gio-proxy-resolver?
ok 1 /proxy/direct_sync
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842250 and GSocketClientAsyncConnectData 0x555558841780
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558842be0 for GSocketClientAsyncConnectData 0x555558841780
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 2 /proxy/direct_async
ok 3 /proxy/single_sync
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842740 and GSocketClientAsyncConnectData 0x555558841780
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558842be0 for GSocketClientAsyncConnectData 0x555558841780
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 4 /proxy/single_async
ok 5 /proxy/multiple_sync
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x5555588429e0 and GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x5555588445b0 for GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x5555588440c0 for GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 6 /proxy/multiple_async
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2597
ok 7 /proxy/invalid-uris-sync
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2597
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842590 and GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration completed (out of addresses)
# GLib-GIO-DEBUG: GSocketClient: Address enumeration failed: Unspecified proxy lookup failure
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Unspecified proxy lookup failure
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842740 and GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration completed (out of addresses)
# GLib-GIO-DEBUG: GSocketClient: Address enumeration failed: Unspecified proxy lookup failure
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Unspecified proxy lookup failure
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842590 and GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558842c40 for GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842740 and GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558842be0 for GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 8 /proxy/invalid-uris-async
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842250 and GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: IPv6 DNS error: Not found
# GLib-GIO-DEBUG: IPv4 DNS error: Not found
# GLib-GIO-DEBUG: GSocketClient: Address enumeration completed (out of addresses)
# GLib-GIO-DEBUG: GSocketClient: Address enumeration failed: Not found
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Not found
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558844be0 and GSocketClientAsyncConnectData 0x555558842b30
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558843d30 for GSocketClientAsyncConnectData 0x555558842b30
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration completed (out of addresses)
# GLib-GIO-DEBUG: GSocketClient: Address enumeration failed: (null)
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Unsupported protocol
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842590 and GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558842c40 for GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 9 /proxy/dns
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842250 and GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x5555588445b0 for GSocketClientAsyncConnectData 0x555558842970
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration completed (out of addresses)
# GLib-GIO-DEBUG: GSocketClient: Address enumeration failed: (null)
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Unsupported protocol
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842590 and GSocketClientAsyncConnectData 0x5555588447c0
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558842be0 for GSocketClientAsyncConnectData 0x5555588447c0
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
# GLib-GIO-DEBUG: g_socket_client_connect_to_uri_async
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x555558842250 and GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x555558843d30 for GSocketClientAsyncConnectData 0x555558844830
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Starting proxy connection
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration completed (out of addresses)
# GLib-GIO-DEBUG: GSocketClient: Address enumeration failed: (null)
# GLib-GIO-DEBUG: GSocketClient: Connection failed: Unsupported protocol
ok 10 /proxy/override
ok 11 /proxy/enumerator-ports
# End of proxy tests
PASS: glib/proxy-test.test
Running test: glib/custom-dispatch.test
TAP version 14
# random seed: R02S644eb32def25dba41c9c0757bace5305
1..2
# Start of properties tests
# Start of custom-dispatch tests
# /properties/custom-dispatch/init summary: Test that custom dispatch_properties_changed is called on initialization
ok 1 /properties/custom-dispatch/init
# /properties/custom-dispatch/set summary: Test that custom dispatch_properties_changed is called regardless of connected notify handlers
ok 2 /properties/custom-dispatch/set
# End of custom-dispatch tests
# End of properties tests
PASS: glib/custom-dispatch.test
Running test: glib/async-close-output-stream.test
TAP version 14
# random seed: R02S376414893c4d334664d249cf3b5d9d29
1..3
# Start of close-async tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=617937
ok 1 /close-async/without-flush
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=617937
ok 2 /close-async/with-flush
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=617937
ok 3 /close-async/with-async-flush
# End of close-async tests
PASS: glib/async-close-output-stream.test
Running test: glib/unix-fd.test
TAP version 14
# random seed: R02Sb0e0025eb8f2a7e8bc52228164d4b8b2
1..2
# Start of unix-fd tests
ok 1 /unix-fd/fd-list
ok 2 /unix-fd/scm
# End of unix-fd tests
PASS: glib/unix-fd.test
Running test: glib/bindinggroup.test
TAP version 14
# random seed: R02Sdba0dbbc8f0b135608e148b139424816
1..11
# Start of GObject tests
# Start of BindingGroup tests
ok 1 /GObject/BindingGroup/invalid
ok 2 /GObject/BindingGroup/default
ok 3 /GObject/BindingGroup/bidirectional
ok 4 /GObject/BindingGroup/transform
ok 5 /GObject/BindingGroup/transform-closures
ok 6 /GObject/BindingGroup/same-object
ok 7 /GObject/BindingGroup/weak-ref-source
ok 8 /GObject/BindingGroup/weak-ref-target
ok 9 /GObject/BindingGroup/properties
ok 10 /GObject/BindingGroup/weak-notify-no-bindings
ok 11 /GObject/BindingGroup/empty-closures
# End of BindingGroup tests
# End of GObject tests
PASS: glib/bindinggroup.test
Running test: glib/cxx-11.test
TAP version 14
# random seed: R02S959318d3b265c0e17ccc8d822301a7a8
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx-11.test
Running test: glib/cache.test
TAP version 14
# random seed: R02S6e61c12b4a25c101890f9332d09db4f2
1..1
# Start of cache tests
ok 1 /cache/basic
# End of cache tests
PASS: glib/cache.test
Running test: glib/io-channel.test
TAP version 14
# random seed: R02S757ed867124160553cd363abd5e946f0
1..2
# Start of io-channel tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/io-channel/read-write/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/io-channel/read-write/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/io-channel/read-write/.dirs/system-config1:/var/volatile/tmp/io-channel/read-write/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/io-channel/read-write/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/io-channel/read-write/.dirs/system-data1:/var/volatile/tmp/io-channel/read-write/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/io-channel/read-write/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/io-channel/read-write/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/io-channel/read-write/.dirs/runtime
# Line one
# 
# Line two
# 
# Line three
# 
# /* Hello */
# 
# \x1234\x567890\x6666
# 
# read 62 bytes, wrote 62 bytes
ok 1 /io-channel/read-write
# Start of read-line tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/system-config1:/var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/system-data1:/var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/io-channel/read-line/embedded-nuls/.dirs/runtime
# /io-channel/read-line/embedded-nuls summary: Test that reading a line containing embedded nuls works when using non-standard line terminators.
ok 2 /io-channel/read-line/embedded-nuls
# End of read-line tests
# End of io-channel tests
PASS: glib/io-channel.test
Running test: glib/registered-type-info.test
TAP version 14
# random seed: R02S3ca7bd88f24240b414f02853ad62479f
1..1
# Start of registered-type-info tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/registered-type-info/boxed/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/registered-type-info/boxed/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/registered-type-info/boxed/.dirs/system-config1:/var/volatile/tmp/registered-type-info/boxed/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/registered-type-info/boxed/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/registered-type-info/boxed/.dirs/system-data1:/var/volatile/tmp/registered-type-info/boxed/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/registered-type-info/boxed/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/registered-type-info/boxed/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/registered-type-info/boxed/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /registered-type-info/boxed summary: Test various boxed and non-boxed types for GIRegisteredTypeInfo
# Expecting CClosure to not be boxed
# Expecting TypeCValue to not be boxed
# Expecting InitiallyUnownedClass to not be boxed
# Expecting BookmarkFile to be boxed
# Expecting Closure to be boxed
# Expecting Object to not be boxed
ok 1 /registered-type-info/boxed
# End of registered-type-info tests
PASS: glib/registered-type-info.test
Running test: glib/memory-monitor.test
TAP version 14
# random seed: R02S1745756aa3ef4d2d53a9d932cce502fb
1..1
# Start of memory-monitor tests
# GLib-GIO-DEBUG: Failed to initialize portal (GMemoryMonitorPortal) for gio-memory-monitor: Not using portals
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation dbus (GMemoryMonitorDBus) for ?gio-memory-monitor?
ok 1 /memory-monitor/default
# End of memory-monitor tests
PASS: glib/memory-monitor.test
Running test: glib/g-file-info.test
TAP version 14
# random seed: R02Sd05133b967d79a621e6eee9fff06e61e
1..6
# Start of g-file-info tests
ok 1 /g-file-info/test_g_file_info
# /g-file-info/xattrs summary: Test setting and getting escaped xattrs
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 2 /g-file-info/xattrs
# /g-file-info/set-modified-date-time-precision summary: Test that g_file_info_set_modified_date_time() preserves microseconds
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3116
ok 3 /g-file-info/set-modified-date-time-precision
# Start of test_g_file_info tests
# /g-file-info/test_g_file_info/modification-time summary: Test that getting the modification time of a file works.
ok 4 /g-file-info/test_g_file_info/modification-time
# /g-file-info/test_g_file_info/access-time summary: Test that getting the access time of a file works.
ok 5 /g-file-info/test_g_file_info/access-time
# /g-file-info/test_g_file_info/creation-time summary: Test that getting the creation time of a file works.
ok 6 /g-file-info/test_g_file_info/creation-time
# End of test_g_file_info tests
# End of g-file-info tests
PASS: glib/g-file-info.test
Running test: glib/repository.test
TAP version 14
# random seed: R02Sb4f4171efd87d49c22f716d02ae2ce95
1..23
# Start of repository tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/basic/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/basic/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/basic/.dirs/system-config1:/var/volatile/tmp/repository/basic/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/basic/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/basic/.dirs/system-data1:/var/volatile/tmp/repository/basic/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/basic/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/basic/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/basic/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/basic summary: Test basic opening of a repository and requiring a typelib
ok 1 /repository/basic
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/info/.dirs/system-config1:/var/volatile/tmp/repository/info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/info/.dirs/system-data1:/var/volatile/tmp/repository/info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/info summary: Test retrieving some basic info blobs from a typelib
ok 2 /repository/info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/dependencies/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/dependencies/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/dependencies/.dirs/system-config1:/var/volatile/tmp/repository/dependencies/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/dependencies/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/dependencies/.dirs/system-data1:/var/volatile/tmp/repository/dependencies/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/dependencies/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/dependencies/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/dependencies/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/dependencies summary: Test ensures namespace dependencies are correctly exposed
ok 3 /repository/dependencies
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/arg-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/arg-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/arg-info/.dirs/system-config1:/var/volatile/tmp/repository/arg-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/arg-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/arg-info/.dirs/system-data1:/var/volatile/tmp/repository/arg-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/arg-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/arg-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/arg-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/arg-info summary: Test retrieving GIArgInfos from a typelib
ok 4 /repository/arg-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/callable-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/callable-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/callable-info/.dirs/system-config1:/var/volatile/tmp/repository/callable-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/callable-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/callable-info/.dirs/system-data1:/var/volatile/tmp/repository/callable-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/callable-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/callable-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/callable-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/callable-info summary: Test retrieving GICallableInfos from a typelib
ok 5 /repository/callable-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/callback-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/callback-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/callback-info/.dirs/system-config1:/var/volatile/tmp/repository/callback-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/callback-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/callback-info/.dirs/system-data1:/var/volatile/tmp/repository/callback-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/callback-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/callback-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/callback-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/callback-info summary: Test retrieving GICallbackInfos from a typelib
ok 6 /repository/callback-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/char-types/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/char-types/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/char-types/.dirs/system-config1:/var/volatile/tmp/repository/char-types/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/char-types/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/char-types/.dirs/system-data1:/var/volatile/tmp/repository/char-types/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/char-types/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/char-types/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/char-types/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/char-types summary: Test that signed and unsigned char GITypeInfo have GITypeTag of INT8 and UINT8 respectively
ok 7 /repository/char-types
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/constructor-return-type/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/constructor-return-type/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/constructor-return-type/.dirs/system-config1:/var/volatile/tmp/repository/constructor-return-type/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/constructor-return-type/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/constructor-return-type/.dirs/system-data1:/var/volatile/tmp/repository/constructor-return-type/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/constructor-return-type/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/constructor-return-type/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/constructor-return-type/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/constructor-return-type summary: Test the return type of a constructor, g_object_newv()
ok 8 /repository/constructor-return-type
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/system-config1:/var/volatile/tmp/repository/enum-info-c-identifier/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/system-data1:/var/volatile/tmp/repository/enum-info-c-identifier/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/enum-info-c-identifier/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/enum-info-c-identifier summary: Test that every enum member has a C identifier
ok 9 /repository/enum-info-c-identifier
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/system-config1:/var/volatile/tmp/repository/enum-info-static-methods/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/system-data1:/var/volatile/tmp/repository/enum-info-static-methods/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/enum-info-static-methods/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/enum-info-static-methods summary: Test an enum with methods
ok 10 /repository/enum-info-static-methods
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/error-quark/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/error-quark/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/error-quark/.dirs/system-config1:/var/volatile/tmp/repository/error-quark/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/error-quark/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/error-quark/.dirs/system-data1:/var/volatile/tmp/repository/error-quark/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/error-quark/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/error-quark/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/error-quark/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/error-quark summary: Test finding an error quark by error domain
ok 11 /repository/error-quark
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/system-config1:/var/volatile/tmp/repository/flags-info-c-identifier/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/system-data1:/var/volatile/tmp/repository/flags-info-c-identifier/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/flags-info-c-identifier/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/flags-info-c-identifier summary: Test that every flags member has a C identifier
ok 12 /repository/flags-info-c-identifier
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/system-config1:/var/volatile/tmp/repository/fundamental-ref-func/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/system-data1:/var/volatile/tmp/repository/fundamental-ref-func/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/fundamental-ref-func/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/fundamental-ref-func summary: Test getting the ref func of a fundamental type
ok 13 /repository/fundamental-ref-func
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/system-config1:/var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/system-data1:/var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/instance-method-ownership-transfer/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/instance-method-ownership-transfer summary: Test two methods of the same object having opposite ownership transfer of the instance parameter
ok 14 /repository/instance-method-ownership-transfer
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/system-config1:/var/volatile/tmp/repository/object-gtype-interfaces/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/system-data1:/var/volatile/tmp/repository/object-gtype-interfaces/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/object-gtype-interfaces/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/object-gtype-interfaces summary: Test gi_repository_get_object_gtype_interfaces()
ok 15 /repository/object-gtype-interfaces
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/system-config1:/var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/system-data1:/var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/signal-info-with-array-length-arg/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/signal-info-with-array-length-arg summary: Test finding the associated array length argument of an array parameter of a signal
ok 16 /repository/signal-info-with-array-length-arg
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/type-info-name/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/type-info-name/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/type-info-name/.dirs/system-config1:/var/volatile/tmp/repository/type-info-name/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/type-info-name/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/type-info-name/.dirs/system-data1:/var/volatile/tmp/repository/type-info-name/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/type-info-name/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/type-info-name/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/type-info-name/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/type-info-name summary: Test that gi_base_info_get_name() returns null for GITypeInfo
# Bug Reference: https://gitlab.gnome.org/GNOME/gobject-introspection/issues/96
ok 17 /repository/type-info-name
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/system-config1:/var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/system-data1:/var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/vfunc-info-with-no-invoker/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/vfunc-info-with-no-invoker summary: Test vfunc with no known invoker on object, such as GObject.dispose
ok 18 /repository/vfunc-info-with-no-invoker
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/system-config1:/var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/system-data1:/var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-interface/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/vfunc-info-with-invoker-on-interface summary: Test vfunc with invoker on interface, such as GFile.read_async
ok 19 /repository/vfunc-info-with-invoker-on-interface
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/system-config1:/var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/system-data1:/var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/vfunc-info-with-invoker-on-object/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/vfunc-info-with-invoker-on-object summary: Test vfunc with invoker on object, such as GAppLaunchContext.get_display
ok 20 /repository/vfunc-info-with-invoker-on-object
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/find-by-gtype/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/find-by-gtype/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/find-by-gtype/.dirs/system-config1:/var/volatile/tmp/repository/find-by-gtype/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/find-by-gtype/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/find-by-gtype/.dirs/system-data1:/var/volatile/tmp/repository/find-by-gtype/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/find-by-gtype/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/find-by-gtype/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/find-by-gtype/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/find-by-gtype summary: Test finding a GType
ok 21 /repository/find-by-gtype
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/loaded-namespaces/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/loaded-namespaces/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/loaded-namespaces/.dirs/system-config1:/var/volatile/tmp/repository/loaded-namespaces/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/loaded-namespaces/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/loaded-namespaces/.dirs/system-data1:/var/volatile/tmp/repository/loaded-namespaces/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/loaded-namespaces/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/loaded-namespaces/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/loaded-namespaces/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/loaded-namespaces summary: Test listing loaded namespaces
ok 22 /repository/loaded-namespaces
# Start of base-info tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/base-info/clear/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/base-info/clear/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/base-info/clear/.dirs/system-config1:/var/volatile/tmp/repository/base-info/clear/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/base-info/clear/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/base-info/clear/.dirs/system-data1:/var/volatile/tmp/repository/base-info/clear/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/base-info/clear/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/base-info/clear/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/base-info/clear/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /repository/base-info/clear summary: Test calling gi_base_info_clear() on a zero-filled struct
ok 23 /repository/base-info/clear
# End of base-info tests
# End of repository tests
PASS: glib/repository.test
Running test: glib/properties.test
TAP version 14
# random seed: R02S17df3ffbd8db32d9419f50625dcb2b98
1..14
# Start of properties tests
ok 1 /properties/install
ok 2 /properties/install-many
ok 3 /properties/notify
ok 4 /properties/notify-queue
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=630357
ok 5 /properties/construct
# /properties/get-property summary: g_object_get_property() accepts uninitialized, initialized, and transformable values
# Test g_object_get_property with an initialized value
# Test g_object_get_property with an uninitialized value
# Test g_object_get_property with a transformable value
ok 6 /properties/get-property
ok 7 /properties/testv_with_no_properties
ok 8 /properties/testv_with_valid_properties
ok 9 /properties/testv_with_invalid_property_type
ok 10 /properties/testv_with_invalid_property_names
ok 11 /properties/testv_getv
ok 12 /properties/testv_notify_queue
# Start of notify tests
ok 13 /properties/notify/too-many-freezes
# End of notify tests
# Start of set-property tests
# Start of variant tests
# /properties/set-property/variant/floating summary: Test that setting a property to a floating variant consumes the reference
ok 14 /properties/set-property/variant/floating
# End of variant tests
# End of set-property tests
# End of properties tests
PASS: glib/properties.test
Running test: glib/unix-mounts.test
TAP version 14
# random seed: R02S985a122bd5503aab872141d46ca80c95
1..4
# Start of unix-mounts tests
ok 1 /unix-mounts/is-system-fs-type
ok 2 /unix-mounts/is-system-device-path
# /unix-mounts/get-mount-points summary: Basic test of g_unix_mount_points_get_from_file()
# Icon: . GThemedIcon drive-removable-media drive-removable drive drive-removable-media-symbolic drive-removable-symbolic drive-symbolic
# Icon: . GThemedIcon drive-removable-media-symbolic drive-removable-symbolic drive-symbolic drive-removable-media drive-removable drive
# Icon: . GThemedIcon drive-removable-media drive-removable drive drive-removable-media-symbolic drive-removable-symbolic drive-symbolic
# Icon: . GThemedIcon drive-removable-media-symbolic drive-removable-symbolic drive-symbolic drive-removable-media drive-removable drive
# Icon: . GThemedIcon drive-removable-media drive-removable drive drive-removable-media-symbolic drive-removable-symbolic drive-symbolic
# Icon: . GThemedIcon drive-removable-media-symbolic drive-removable-symbolic drive-symbolic drive-removable-media drive-removable drive
# Icon: . GThemedIcon drive-removable-media drive-removable drive drive-removable-media-symbolic drive-removable-symbolic drive-symbolic
# Icon: . GThemedIcon drive-removable-media-symbolic drive-removable-symbolic drive-symbolic drive-removable-media drive-removable drive
ok 3 /unix-mounts/get-mount-points
# /unix-mounts/get-mount-entries summary: Basic test of g_unix_mounts_get_from_file()
ok 4 /unix-mounts/get-mount-entries
# End of unix-mounts tests
PASS: glib/unix-mounts.test
Running test: glib/vfs.test
TAP version 14
# random seed: R02S2ce7684fffd0c85278fb9e78d498e9db
1..3
# Start of gvfs tests
ok 1 /gvfs/local
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 2 /gvfs/register-scheme
# Start of resource tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3090
# /gvfs/resource/malformed-escaping summary: Test that g_vfs_get_file_for_uri() returns an invalid file for an invalid URI
ok 3 /gvfs/resource/malformed-escaping
# End of resource tests
# End of gvfs tests
PASS: glib/vfs.test
Running test: glib/basics-gobject.test
TAP version 14
# random seed: R02Sfffe1ceca765f2252058f00f07adb27e
1..1
# Start of gobject tests
# private data during initialization: 54321 == 54321
# MAIN: emit test-signal:
# ::test_signal default_handler called
# ::test_signal default_handler called
# ::test_signal default_handler called
# signal return: "<default_handler><default_handler><default_handler>"
# MAIN: call iface print-string on test and derived object:
# Iface-FOO: "iface-string-from-test-type" from 0x55555b5b7aa0
# Iface-BAR: "iface-string-from-derived-type" from 0x55555b5b78e0
# chaining: 
# Iface-FOO: "iface-string-from-derived-type" from 0x55555b5b78e0
# private data after initialization: 54321 == 54321
ok 1 /gobject/basics
# End of gobject tests
PASS: glib/basics-gobject.test
Running test: glib/markup-parse.test
TAP version 14
# random seed: R02Sd76a218f8d0157f9d27f4f53467a602e
1..71
# Start of markup tests
# Start of parse tests
ok 1 /markup/parse/fail-1.gmarkup
ok 2 /markup/parse/valid-15.gmarkup
ok 3 /markup/parse/fail-3.gmarkup
ok 4 /markup/parse/fail-35.gmarkup
ok 5 /markup/parse/valid-13.gmarkup
ok 6 /markup/parse/fail-17.gmarkup
ok 7 /markup/parse/valid-6.gmarkup
ok 8 /markup/parse/fail-16.gmarkup
ok 9 /markup/parse/fail-19.gmarkup
ok 10 /markup/parse/fail-43.gmarkup
ok 11 /markup/parse/valid-1.gmarkup
ok 12 /markup/parse/fail-20.gmarkup
ok 13 /markup/parse/fail-44.gmarkup
ok 14 /markup/parse/fail-34.gmarkup
ok 15 /markup/parse/fail-30.gmarkup
ok 16 /markup/parse/valid-16.gmarkup
ok 17 /markup/parse/fail-24.gmarkup
ok 18 /markup/parse/valid-12.gmarkup
ok 19 /markup/parse/fail-32.gmarkup
ok 20 /markup/parse/valid-3.gmarkup
ok 21 /markup/parse/fail-42.gmarkup
ok 22 /markup/parse/fail-40.gmarkup
ok 23 /markup/parse/fail-54.gmarkup
ok 24 /markup/parse/valid-11.gmarkup
ok 25 /markup/parse/fail-33.gmarkup
ok 26 /markup/parse/fail-28.gmarkup
ok 27 /markup/parse/fail-45.gmarkup
ok 28 /markup/parse/fail-36.gmarkup
ok 29 /markup/parse/fail-27.gmarkup
ok 30 /markup/parse/fail-31.gmarkup
ok 31 /markup/parse/valid-10.gmarkup
ok 32 /markup/parse/fail-7.gmarkup
ok 33 /markup/parse/valid-7.gmarkup
ok 34 /markup/parse/fail-49.gmarkup
ok 35 /markup/parse/fail-41.gmarkup
ok 36 /markup/parse/fail-52.gmarkup
ok 37 /markup/parse/valid-5.gmarkup
ok 38 /markup/parse/fail-23.gmarkup
ok 39 /markup/parse/fail-26.gmarkup
ok 40 /markup/parse/fail-4.gmarkup
ok 41 /markup/parse/fail-22.gmarkup
ok 42 /markup/parse/valid-4.gmarkup
ok 43 /markup/parse/fail-8.gmarkup
ok 44 /markup/parse/fail-50.gmarkup
ok 45 /markup/parse/fail-21.gmarkup
ok 46 /markup/parse/valid-8.gmarkup
ok 47 /markup/parse/fail-39.gmarkup
ok 48 /markup/parse/valid-2.gmarkup
ok 49 /markup/parse/fail-13.gmarkup
ok 50 /markup/parse/fail-10.gmarkup
ok 51 /markup/parse/fail-18.gmarkup
ok 52 /markup/parse/fail-38.gmarkup
ok 53 /markup/parse/valid-9.gmarkup
ok 54 /markup/parse/fail-12.gmarkup
ok 55 /markup/parse/fail-51.gmarkup
ok 56 /markup/parse/fail-2.gmarkup
ok 57 /markup/parse/fail-11.gmarkup
ok 58 /markup/parse/fail-6.gmarkup
ok 59 /markup/parse/valid-17.gmarkup
ok 60 /markup/parse/valid-14.gmarkup
ok 61 /markup/parse/fail-53.gmarkup
ok 62 /markup/parse/fail-25.gmarkup
ok 63 /markup/parse/fail-15.gmarkup
ok 64 /markup/parse/fail-48.gmarkup
ok 65 /markup/parse/fail-29.gmarkup
ok 66 /markup/parse/fail-9.gmarkup
ok 67 /markup/parse/fail-14.gmarkup
ok 68 /markup/parse/fail-5.gmarkup
ok 69 /markup/parse/fail-37.gmarkup
ok 70 /markup/parse/fail-47.gmarkup
ok 71 /markup/parse/fail-46.gmarkup
# End of parse tests
# End of markup tests
PASS: glib/markup-parse.test
Running test: glib/uri.test
TAP version 14
# random seed: R02S8e437a2102a19af1504012ba77f4e41a
1..24
# Start of uri tests
ok 1 /uri/file-to-uri
ok 2 /uri/file-from-uri
ok 3 /uri/file-roundtrip
ok 4 /uri/list
# Test 0: %2Babc %4F
# Test 1: %2Babc %4F
# Test 2: %00abc %4F
# Test 3: /cursors/none.png
# Test 4: /cursors%2fbad-subdir/none.png
# Test 5: %0
# Test 6: %ra
# Test 7: %2r
# Test 8: Timm B?der
# Test 9: (null)
ok 5 /uri/unescape-string
ok 6 /uri/unescape-segment
# Test 0: abcdefgABCDEFG._~
# Test 1: :+ \\?#
# Test 2: a+b:c
# Test 3: a+b:c\303\234
# Test 4: \374;\322
# Test 5: \303\261\303(
ok 7 /uri/escape-string
ok 8 /uri/escape-bytes
ok 9 /uri/scheme
ok 10 /uri/build
ok 11 /uri/split
ok 12 /uri/is_valid
ok 13 /uri/to-string
ok 14 /uri/join
# /uri/join-split-round-trip summary: Test that joining different URI components survives a round trip
# Combination 0
# Combination 1
# Combination 2
# Combination 3
# Combination 4
# Combination 5
# Combination 6
# Combination 7
# Combination 8
# Combination 9
# Combination 10
# Combination 11
# Combination 12
# Combination 13
# Combination 14
# Combination 15
# Combination 16
# Combination 17
# Combination 18
# Combination 19
# Combination 20
# Combination 21
# Combination 22
# Combination 23
# Combination 24
# Combination 25
# Combination 26
# Combination 27
# Combination 28
# Combination 29
# Combination 30
# Combination 31
# Combination 32
# Combination 33
# Combination 34
# Combination 35
# Combination 36
# Combination 37
# Combination 38
# Combination 39
# Combination 40
# Combination 41
# Combination 42
# Combination 43
# Combination 44
# Combination 45
# Combination 46
# Combination 47
# Combination 48
# Combination 49
# Combination 50
# Combination 51
# Combination 52
# Combination 53
# Combination 54
# Combination 55
# Combination 56
# Combination 57
# Combination 58
# Combination 59
# Combination 60
# Combination 61
# Combination 62
# Combination 63
# Combination 64
# Combination 65
# Combination 66
# Combination 67
# Combination 68
# Combination 69
# Combination 70
# Combination 71
# Combination 72
# Combination 73
# Combination 74
# Combination 75
# Combination 76
# Combination 77
# Combination 78
# Combination 79
# Combination 80
# Combination 81
# Combination 82
# Combination 83
# Combination 84
# Combination 85
# Combination 86
# Combination 87
# Combination 88
# Combination 89
# Combination 90
# Combination 91
# Combination 92
# Combination 93
# Combination 94
# Combination 95
# Combination 96
# Combination 97
# Combination 98
# Combination 99
# Combination 100
# Combination 101
# Combination 102
# Combination 103
# Combination 104
# Combination 105
# Combination 106
# Combination 107
# Combination 108
# Combination 109
# Combination 110
# Combination 111
# Combination 112
# Combination 113
# Combination 114
# Combination 115
# Combination 116
# Combination 117
# Combination 118
# Combination 119
# Combination 120
# Combination 121
# Combination 122
# Combination 123
# Combination 124
# Combination 125
# Combination 126
# Combination 127
# Combination 128
# Combination 129
# Combination 130
# Combination 131
# Combination 132
# Combination 133
# Combination 134
# Combination 135
# Combination 136
# Combination 137
# Combination 138
# Combination 139
# Combination 140
# Combination 141
# Combination 142
# Combination 143
# Combination 144
# Combination 145
# Combination 146
# Combination 147
# Combination 148
# Combination 149
# Combination 150
# Combination 151
# Combination 152
# Combination 153
# Combination 154
# Combination 155
# Combination 156
# Combination 157
# Combination 158
# Combination 159
# Combination 160
# Combination 161
# Combination 162
# Combination 163
# Combination 164
# Combination 165
# Combination 166
# Combination 167
# Combination 168
# Combination 169
# Combination 170
# Combination 171
# Combination 172
# Combination 173
# Combination 174
# Combination 175
# Combination 176
# Combination 177
# Combination 178
# Combination 179
# Combination 180
# Combination 181
# Combination 182
# Combination 183
# Combination 184
# Combination 185
# Combination 186
# Combination 187
# Combination 188
# Combination 189
# Combination 190
# Combination 191
# Combination 192
# Combination 193
# Combination 194
# Combination 195
# Combination 196
# Combination 197
# Combination 198
# Combination 199
# Combination 200
# Combination 201
# Combination 202
# Combination 203
# Combination 204
# Combination 205
# Combination 206
# Combination 207
# Combination 208
# Combination 209
# Combination 210
# Combination 211
# Combination 212
# Combination 213
# Combination 214
# Combination 215
# Combination 216
# Combination 217
# Combination 218
# Combination 219
# Combination 220
# Combination 221
# Combination 222
# Combination 223
# Combination 224
# Combination 225
# Combination 226
# Combination 227
# Combination 228
# Combination 229
# Combination 230
# Combination 231
# Combination 232
# Combination 233
# Combination 234
# Combination 235
# Combination 236
# Combination 237
# Combination 238
# Combination 239
# Combination 240
# Combination 241
# Combination 242
# Combination 243
# Combination 244
# Combination 245
# Combination 246
# Combination 247
# Combination 248
# Combination 249
# Combination 250
# Combination 251
# Combination 252
# Combination 253
# Combination 254
# Combination 255
ok 15 /uri/join-split-round-trip
ok 16 /uri/normalize
# Start of unescape-bytes tests
# Test 0: %00%00
# Test 1: /cursors/none.png
# Test 2: /cursors%2fbad-subdir/none.png
# Test 3: %%
# Test 4: %
ok 17 /uri/unescape-bytes/nul-terminated
# Test 0: %00%00
# Test 1: /cursors/none.png
# Test 2: /cursors%2fbad-subdir/none.png
# Test 3: %%
# Test 4: %
ok 18 /uri/unescape-bytes/length
# End of unescape-bytes tests
# Start of parsing tests
# Test 0: foo:
# Test 1: file:/dev/null
# Test 2: file:///dev/null
# Test 3: ftp://user@host/path
# Test 4: ftp://user@host:9999/path
# Test 5: ftp://user:password@host/path
# Test 6: ftp://user:password@host:9999/path
# Test 7: ftp://user:password@host
# Test 8: http://us%65r@host
# Test 9: http://us%40r@host
# Test 10: http://us%3ar@host
# Test 11: http://us%2fr@host
# Test 12: http://us%3fr@host
# Test 13: http://host?query
# Test 14: http://host/path?query=http%3A%2F%2Fhost%2Fpath%3Fchildparam%3Dchildvalue&param=value
# Test 15: http://control-chars/%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F
# Test 16: http://space/%20
# Test 17: http://delims/%3C%3E%23%25%22
# Test 18: http://unwise-chars/%7B%7D%7C%5C%5E%5B%5D%60
# Test 19: http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
# Test 20: http://[1080:0:0:0:8:800:200C:417A]/index.html
# Test 21: http://[3ffe:2a00:100:7031::1]
# Test 22: http://[1080::8:800:200C:417A]/foo
# Test 23: http://[::192.9.5.5]/ipng
# Test 24: http://[::FFFF:129.144.52.38]:80/index.html
# Test 25: http://[2010:836B:4179::836B:4179]
# Test 26: http://host/path with spaces
# Test 27:   http://host/path
# Test 28: http://host/path  
# Test 29: http://host  
# Test 30: http://host:999  
# Test 31: http://host/pa
# th
# Test 32: http:
# //host/path
# Test 33: http://	host/path
# Test 34: http://host/path?
# Test 35: http://host/path#
# Test 36: http://host/path%
# Test 37: http://h%ost/path
# Test 38: http://host/path%%
# Test 39: http://host/path%%%
# Test 40: http://host/path%/x/
# Test 41: http://host/path%0x/
# Test 42: http://host/path%ax
# Test 43: http://host/p?th/
# Test 44: HTTP:////////////////
# Test 45: http://@host
# Test 46: http://:@host
# Test 47: scheme://foo%3Abar._webdav._tcp.local
# Test 48: http://example.com/..
# Test 49: foo0://host/path
# Test 50: f0.o://host/path
# Test 51: http++://host/path
# Test 52: http-ish://host/path
# Test 53: http://[fe80::dead:beef%]/
# Test 54: http://[fe80::dead:beef%em1]/
# Test 55: http://[fe80::dead:beef%em1]/
# Test 56: http://[fe80::dead:beef%25em1]/
# Test 57: http://[fe80::dead:beef%25em1%20]/
# Test 58: http://[fe80::dead:beef%25em%31]/
# Test 59: http://[fe80::dead:beef%10]/
# Test 60: http://[fe80::dead:beef%10]/
# Test 61: http://[fe80::dead:beef%25]/
# Test 62: http://[fe80::dead:beef%25]/
# Test 63: http://[192.168.0.1%25em1]/
# Test 64: http://[fe80::dead:beef%2em1]/
# Test 65: http://[fe80::dead:beef%2em1]/
# Test 66: http://[fe80::dead:beef%25em1%00]/
# Test 67: http://[fe80::dead:beef%25em1%00]/
# Test 68: http://xn--mixed-?p/
# Test 69: data:.///
# Test 70: data:/.//
ok 19 /uri/parsing/absolute
ok 20 /uri/parsing/relative
# End of parsing tests
# Start of iter-params tests
# URI 0: p1=foo&p2=bar;p3=baz
# URI 1: p1=foo&p2=bar
# URI 2: p1=foo&&P1=bar
# URI 3: %00=foo
# URI 4: p1=%00
# URI 5: p1=foo&p1=bar
# URI 6: p1=foo&P1=bar
# URI 7: =%
# URI 8: =
# URI 9: foo
# URI 10: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 11: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 12: token=exp=123~acl=/QualityLevels(*~hmac=0cb
ok 21 /uri/iter-params/nul-terminated
# URI 0: p1=foo&p2=bar;p3=baz
# URI 1: p1=foo&p2=bar
# URI 2: p1=foo&&P1=bar
# URI 3: %00=foo
# URI 4: p1=%00
# URI 5: p1=foo&p1=bar
# URI 6: p1=foo&P1=bar
# URI 7: =%
# URI 8: =
# URI 9: foo
# URI 10: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 11: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 12: token=exp=123~acl=/QualityLevels(*~hmac=0cb
ok 22 /uri/iter-params/length
# End of iter-params tests
# Start of parse-params tests
# URI 0: p1=foo&p2=bar;p3=baz
# URI 1: p1=foo&p2=bar
# URI 2: p1=foo&&P1=bar
# URI 3: %00=foo
# URI 4: p1=%00
# URI 5: p1=foo&p1=bar
# URI 6: p1=foo&P1=bar
# URI 7: =%
# URI 8: =
# URI 9: foo
# URI 10: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 11: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 12: token=exp=123~acl=/QualityLevels(*~hmac=0cb
ok 23 /uri/parse-params/nul-terminated
# URI 0: p1=foo&p2=bar;p3=baz
# URI 1: p1=foo&p2=bar
# URI 2: p1=foo&&P1=bar
# URI 3: %00=foo
# URI 4: p1=%00
# URI 5: p1=foo&p1=bar
# URI 6: p1=foo&P1=bar
# URI 7: =%
# URI 8: =
# URI 9: foo
# URI 10: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 11: foo=bar+%26+baz&saisons=%C3%89t%C3%A9%2Bhiver
# URI 12: token=exp=123~acl=/QualityLevels(*~hmac=0cb
ok 24 /uri/parse-params/length
# End of parse-params tests
# End of uri tests
PASS: glib/uri.test
Running test: glib/utils-c-89.test
TAP version 14
# random seed: R02S15edd309db737b0ba1cabe75e545b562
1..41
# Start of utils tests
ok 1 /utils/language-names
# Testing locale ?en?
# Testing locale ?sr@latin?
# Testing locale ?fr_BE?
# Testing locale ?sr_SR@latin?
# Testing locale ?sr_SR@latin.UTF-8?
# Testing locale ?sr@latin_invalid?
# Testing locale ?sr.UTF-8@latin?
# Testing locale ?sr.UTF-8_latin?
# Testing locale ?sr.UTF-8@latin_invalid?
ok 2 /utils/locale-variants
ok 3 /utils/version
ok 4 /utils/appname
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/847
# /utils/prgname-thread-safety summary: Test that threads racing to get and set the program name always receive a valid program name.
ok 5 /utils/prgname-thread-safety
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=627969
# /utils/tmpdir summary: Test that g_get_tmp_dir() returns a correct default if TMPDIR is set to the empty string
ok 6 /utils/tmpdir
ok 7 /utils/basic_bits
ok 8 /utils/bits
ok 9 /utils/swap
ok 10 /utils/find-program
ok 11 /utils/find-program-for-path
ok 12 /utils/debug
ok 13 /utils/codeset
ok 14 /utils/codeset2
ok 15 /utils/console-charset
ok 16 /utils/gettext
ok 17 /utils/username
ok 18 /utils/realname
ok 19 /utils/hostname
ok 20 /utils/xdgdirs
ok 21 /utils/specialdir
# NAME: Linux
ok 22 /utils/os-info
ok 23 /utils/clear-pointer
ok 24 /utils/clear-pointer-cast
ok 25 /utils/take-pointer
ok 26 /utils/clear-source
ok 27 /utils/misc-mem
# /utils/aligned-mem summary: Aligned memory allocator
# Alignment must not be zero
# Alignment must be a power of two
# Alignment must be a multiple of sizeof(void*)
ok 28 /utils/aligned-mem
# /utils/free-sized summary: Check that g_free_sized() works
ok 29 /utils/free-sized
ok 30 /utils/nullify
ok 31 /utils/atexit
ok 32 /utils/check-setuid
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1663
ok 33 /utils/int-limits
ok 34 /utils/clear-list
ok 35 /utils/clear-slist
ok 36 /utils/steal-handle-id
# Start of specialdir tests
ok 37 /utils/specialdir/desktop
# End of specialdir tests
# Start of clear-pointer tests
ok 38 /utils/clear-pointer/side-effects
# End of clear-pointer tests
# Start of aligned-mem tests
# /utils/aligned-mem/alignment summary: Check that g_aligned_alloc() returns a correctly aligned pointer
ok 39 /utils/aligned-mem/alignment
# /utils/aligned-mem/zeroed summary: Check that g_aligned_alloc0() zeroes out its allocation
ok 40 /utils/aligned-mem/zeroed
# /utils/aligned-mem/free-sized summary: Check that g_aligned_free_sized() works
ok 41 /utils/aligned-mem/free-sized
# Start of subprocess tests
# End of subprocess tests
# End of aligned-mem tests
# End of utils tests
PASS: glib/utils-c-89.test
Running test: glib/power-profile-monitor.test
TAP version 14
# random seed: R02S952ff55983f6cd7b2dfdecf3a0c45677
1..1
# Start of power-profile-monitor tests
# GLib-GIO-DEBUG: Failed to initialize portal (GPowerProfileMonitorPortal) for gio-power-profile-monitor: Not using portals
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation dbus (GPowerProfileMonitorDBus) for ?gio-power-profile-monitor?
ok 1 /power-profile-monitor/default
# End of power-profile-monitor tests
PASS: glib/power-profile-monitor.test
Running test: glib/testfilemonitor.test
TAP version 14
# random seed: R02S77cde4391d34ec3b57e90c06f9b12d8b
1..8
# Start of monitor tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_TPNW72
# Using GFileMonitor GInotifyFileMonitor
ok 1 /monitor/atomic-replace
# slow test /monitor/atomic-replace executed in 2.02 secs
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_65XW72
# Using GFileMonitor GInotifyFileMonitor
Executing: glib/testfilemonitor.test
ok 2 /monitor/file-changes
# slow test /monitor/file-changes executed in 2.51 secs
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_LBU772
# Using GFileMonitor GInotifyFileMonitor
Executing: glib/testfilemonitor.test
ok 3 /monitor/dir-monitor
# slow test /monitor/dir-monitor executed in 3.51 secs
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_J2TV72
# Using GFileMonitor GInotifyFileMonitor
Executing: glib/testfilemonitor.test
Executing: glib/testfilemonitor.test
Executing: glib/testfilemonitor.test
Executing: glib/testfilemonitor.test
Executing: glib/testfilemonitor.test
ok 4 /monitor/dir-not-existent
# slow test /monitor/dir-not-existent executed in 25.02 secs
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_DDCW72
# Using GFileMonitor 0 GInotifyFileMonitor
# Using GFileMonitor 1 GInotifyFileMonitor
ok 5 /monitor/cross-dir-moves
# slow test /monitor/cross-dir-moves executed in 2.00 secs
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_NMEW72
# /monitor/finalize-in-callback summary: Test that finalization of a GFileMonitor in one of its callbacks doesn?t cause a deadlock.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/1941
ok 6 /monitor/finalize-in-callback
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_TOHY72
# /monitor/root summary: Test that GFileMonitor can monitor the root directory.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3241
ok 7 /monitor/root
# Start of file tests
# Using temporary directory: /var/volatile/tmp/gio-test-testfilemonitor_9ZGY72
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=755721
# Running with hard link tests
# Using GFileMonitor GInotifyFileMonitor
Executing: glib/testfilemonitor.test
# Event 0 at expected index 7 skipped because it is marked as optional
# Event 2 at expected index 11 skipped because it is marked as optional
ok 8 /monitor/file/hard-links
# slow test /monitor/file/hard-links executed in 3.52 secs
# End of file tests
# End of monitor tests
PASS: glib/testfilemonitor.test
Running test: glib/refcount-macro.test
TAP version 14
# random seed: R02Se94f67eb511df50d56a8f4bce5a71330
1..4
# Start of refcount tests
ok 1 /refcount/grefcount
ok 2 /refcount/gatomicrefcount
# Start of grefcount tests
ok 3 /refcount/grefcount/saturation
# End of grefcount tests
# Start of gatomicrefcount tests
ok 4 /refcount/gatomicrefcount/saturation
# End of gatomicrefcount tests
# End of refcount tests
PASS: glib/refcount-macro.test
Running test: glib/portal-support-env-var.test
TAP version 14
# random seed: R02S3ace25427b485082e4b0119312c0f92f
1..1
# Start of portal-support tests
ok 1 /portal-support/env-var
# End of portal-support tests
PASS: glib/portal-support-env-var.test
Running test: glib/unicode.test
TAP version 14
# random seed: R02Sf00318f90a9ee0c97a20f1217de95c56
1..39
# Start of unicode tests
ok 1 /unicode/alnum
ok 2 /unicode/alpha
ok 3 /unicode/break-type
ok 4 /unicode/canonical-decomposition
ok 5 /unicode/casefold
ok 6 /unicode/casemap_and_casefold
ok 7 /unicode/cases
ok 8 /unicode/character-type
ok 9 /unicode/cntrl
ok 10 /unicode/combining-class
# Composing U+000041 and U+000042; expecting U+000000
# Composing U+000041 and U+000000; expecting U+000000
# Composing U+000066 and U+000069; expecting U+000000
# Composing U+000308 and U+000301; expecting U+000000
# Composing U+000f71 and U+000f72; expecting U+000000
# Composing U+00212b and U+000000; expecting U+000000
# Composing U+0000c5 and U+000000; expecting U+000000
# Composing U+002126 and U+000000; expecting U+000000
# Composing U+0003a9 and U+000000; expecting U+000000
# Composing U+000041 and U+00030a; expecting U+0000c5
# Composing U+00006f and U+000302; expecting U+0000f4
# Composing U+001e63 and U+000307; expecting U+001e69
# Composing U+000073 and U+000323; expecting U+001e63
# Composing U+000064 and U+000307; expecting U+001e0b
# Composing U+000064 and U+000323; expecting U+001e0d
# Composing U+00d4cc and U+0011b6; expecting U+00d4db
# Composing U+001111 and U+001171; expecting U+00d4cc
# Composing U+00ce20 and U+0011b8; expecting U+00ce31
# Composing U+00110e and U+001173; expecting U+00ce20
# Composing U+001100 and U+001160; expecting U+000000
# Composing U+001100 and U+001177; expecting U+000000
# Composing U+00abff and U+0011b6; expecting U+000000
# Composing U+00d7a5 and U+0011b6; expecting U+000000
# Composing U+00ac01 and U+0011b6; expecting U+000000
# Composing U+00d4cc and U+0011a6; expecting U+000000
# Composing U+00d4cc and U+0011c4; expecting U+000000
# Composing U+01611e and U+01611e; expecting U+016121
# Composing U+01611e and U+01611f; expecting U+016123
# Composing U+0000f6 and U+000304; expecting U+00022b
# Composing U+000b47 and U+000b57; expecting U+000b4c
# Composing U+0000a0 and U+000b57; expecting U+000000
# Composing U+016e00 and U+00030a; expecting U+000000
# Composing U+00212b and U+016e00; expecting U+000000
# Composing U+001e63 and U+000306; expecting U+000000
# Composing U+001e63 and U+000304; expecting U+000000
# Composing U+001e63 and U+000b57; expecting U+000000
# Composing U+001e63 and U+000000; expecting U+000000
# Composing U+001e63 and U+0113c2; expecting U+000000
# Composing U+001f01 and U+0113c2; expecting U+000000
# Composing U+00006e and U+000302; expecting U+000000
# Composing U+001e63 and U+01611f; expecting U+000000
# Composing U+01138e and U+0113b8; expecting U+000000
# Composing U+01611e and U+000000; expecting U+000000
# Composing U+000000 and U+01611f; expecting U+000000
# Composing U+011390 and U+0113c2; expecting U+000000
ok 11 /unicode/compose
ok 12 /unicode/decompose
ok 13 /unicode/decompose-tail
ok 14 /unicode/defined
ok 15 /unicode/digit
ok 16 /unicode/digit-value
# Fully decomposing U+000041; expecting 1 codepoints
# Fully decomposing U+00fb01; expecting 1 codepoints
# Fully decomposing U+00212b; expecting 2 codepoints
# Fully decomposing U+002126; expecting 1 codepoints
# Fully decomposing U+000344; expecting 2 codepoints
# Fully decomposing U+000f73; expecting 2 codepoints
# Fully decomposing U+0000c5; expecting 2 codepoints
# Fully decomposing U+0000f4; expecting 2 codepoints
# Fully decomposing U+001e69; expecting 3 codepoints
# Fully decomposing U+001e63; expecting 2 codepoints
# Fully decomposing U+001e0b; expecting 2 codepoints
# Fully decomposing U+001e0d; expecting 2 codepoints
# Fully decomposing U+00d4db; expecting 3 codepoints
# Fully decomposing U+00d4cc; expecting 2 codepoints
# Fully decomposing U+00ce31; expecting 3 codepoints
# Fully decomposing U+00ce20; expecting 2 codepoints
ok 17 /unicode/fully-decompose-canonical
ok 18 /unicode/fully-decompose-len
ok 19 /unicode/normalization
ok 20 /unicode/graph
# Testing script Zyyy (code 1517910393)
# Testing script Zinh (code 1516858984)
# Testing script Zmth (code 1517122664)
# Testing script Arab (code 1098015074)
# Testing script Armn (code 1098018158)
# Testing script Beng (code 1113943655)
# Testing script Bopo (code 1114599535)
# Testing script Cher (code 1130915186)
# Testing script Copt (code 1131376756)
# Testing script Cyrl (code 1132032620)
# Testing script Dsrt (code 1148416628)
# Testing script Deva (code 1147500129)
# Testing script Ethi (code 1165256809)
# Testing script Geor (code 1197830002)
# Testing script Goth (code 1198486632)
# Testing script Grek (code 1198679403)
# Testing script Gujr (code 1198877298)
# Testing script Guru (code 1198879349)
# Testing script Hani (code 1214344809)
# Testing script Hang (code 1214344807)
# Testing script Hebr (code 1214603890)
# Testing script Hira (code 1214870113)
# Testing script Knda (code 1265525857)
# Testing script Kana (code 1264676449)
# Testing script Khmr (code 1265134962)
# Testing script Laoo (code 1281453935)
# Testing script Latn (code 1281455214)
# Testing script Mlym (code 1298954605)
# Testing script Mong (code 1299148391)
# Testing script Mymr (code 1299803506)
# Testing script Ogam (code 1332175213)
# Testing script Ital (code 1232363884)
# Testing script Orya (code 1332902241)
# Testing script Runr (code 1383427698)
# Testing script Sinh (code 1399418472)
# Testing script Syrc (code 1400468067)
# Testing script Taml (code 1415671148)
# Testing script Telu (code 1415933045)
# Testing script Thaa (code 1416126817)
# Testing script Thai (code 1416126825)
# Testing script Tibt (code 1416192628)
# Testing script Cans (code 1130458739)
# Testing script Yiii (code 1500080489)
# Testing script Tglg (code 1416064103)
# Testing script Hano (code 1214344815)
# Testing script Buhd (code 1114990692)
# Testing script Tagb (code 1415669602)
# Testing script Brai (code 1114792297)
# Testing script Cprt (code 1131442804)
# Testing script Limb (code 1281977698)
# Testing script Osma (code 1332964705)
# Testing script Shaw (code 1399349623)
# Testing script Linb (code 1281977954)
# Testing script Tale (code 1415670885)
# Testing script Ugar (code 1432838514)
# Testing script Talu (code 1415670901)
# Testing script Bugi (code 1114990441)
# Testing script Glag (code 1198285159)
# Testing script Tfng (code 1415999079)
# Testing script Sylo (code 1400466543)
# Testing script Xpeo (code 1483761007)
# Testing script Khar (code 1265131890)
# Testing script Zzzz (code 1517976186)
# Testing script Bali (code 1113681001)
# Testing script Xsux (code 1483961720)
# Testing script Phnx (code 1349021304)
# Testing script Phag (code 1349017959)
# Testing script Nkoo (code 1315663727)
# Testing script Kali (code 1264675945)
# Testing script Lepc (code 1281716323)
# Testing script Rjng (code 1382706791)
# Testing script Sund (code 1400204900)
# Testing script Saur (code 1398895986)
# Testing script Cham (code 1130914157)
# Testing script Olck (code 1332503403)
# Testing script Vaii (code 1449224553)
# Testing script Cari (code 1130459753)
# Testing script Lyci (code 1283023721)
# Testing script Lydi (code 1283023977)
# Testing script Avst (code 1098281844)
# Testing script Bamu (code 1113681269)
# Testing script Egyp (code 1164409200)
# Testing script Armi (code 1098018153)
# Testing script Phli (code 1349020777)
# Testing script Prti (code 1349678185)
# Testing script Java (code 1247901281)
# Testing script Kthi (code 1265920105)
# Testing script Lisu (code 1281979253)
# Testing script Mtei (code 1299473769)
# Testing script Sarb (code 1398895202)
# Testing script Orkh (code 1332898664)
# Testing script Samr (code 1398893938)
# Testing script Lana (code 1281453665)
# Testing script Tavt (code 1415673460)
# Testing script Batk (code 1113683051)
# Testing script Brah (code 1114792296)
# Testing script Mand (code 1298230884)
# Testing script Cakm (code 1130457965)
# Testing script Merc (code 1298494051)
# Testing script Mero (code 1298494063)
# Testing script Plrd (code 1349284452)
# Testing script Shrd (code 1399353956)
# Testing script Sora (code 1399812705)
# Testing script Takr (code 1415670642)
# Testing script Bass (code 1113682803)
# Testing script Aghb (code 1097295970)
# Testing script Dupl (code 1148547180)
# Testing script Elba (code 1164730977)
# Testing script Gran (code 1198678382)
# Testing script Khoj (code 1265135466)
# Testing script Sind (code 1399418468)
# Testing script Lina (code 1281977953)
# Testing script Mahj (code 1298229354)
# Testing script Mani (code 1298230889)
# Testing script Mend (code 1298493028)
# Testing script Modi (code 1299145833)
# Testing script Mroo (code 1299345263)
# Testing script Nbat (code 1315070324)
# Testing script Narb (code 1315009122)
# Testing script Perm (code 1348825709)
# Testing script Hmng (code 1215131239)
# Testing script Palm (code 1348562029)
# Testing script Pauc (code 1348564323)
# Testing script Phlp (code 1349020784)
# Testing script Sidd (code 1399415908)
# Testing script Tirh (code 1416196712)
# Testing script Wara (code 1466004065)
# Testing script Ahom (code 1097363309)
# Testing script Hluw (code 1215067511)
# Testing script Hatr (code 1214346354)
# Testing script Mult (code 1299541108)
# Testing script Hung (code 1215655527)
# Testing script Sgnw (code 1399287415)
# Testing script Adlm (code 1097100397)
# Testing script Bhks (code 1114139507)
# Testing script Marc (code 1298231907)
# Testing script Newa (code 1315272545)
# Testing script Osge (code 1332963173)
# Testing script Tang (code 1415671399)
# Testing script Gonm (code 1198485101)
# Testing script Nshu (code 1316186229)
# Testing script Soyo (code 1399814511)
# Testing script Zanb (code 1516334690)
# Testing script Dogr (code 1148151666)
# Testing script Gong (code 1198485095)
# Testing script Rohg (code 1383032935)
# Testing script Maka (code 1298230113)
# Testing script Medf (code 1298490470)
# Testing script Sogo (code 1399809903)
# Testing script Sogd (code 1399809892)
# Testing script Elym (code 1164736877)
# Testing script Nand (code 1315008100)
# Testing script Hmnp (code 1215131248)
# Testing script Wcho (code 1466132591)
# Testing script Chrs (code 1130918515)
# Testing script Diak (code 1147756907)
# Testing script Kits (code 1265202291)
# Testing script Yezi (code 1499822697)
# Testing script Cpmn (code 1131441518)
# Testing script Ougr (code 1333094258)
# Testing script Tnsa (code 1416524641)
# Testing script Toto (code 1416590447)
# Testing script Vith (code 1449751656)
# Testing script Kawi (code 1264678761)
# Testing script Nagm (code 1315006317)
# Testing script Todr (code 1416586354)
# Testing script Gara (code 1197568609)
# Testing script Tutg (code 1416983655)
# Testing script Sunu (code 1400204917)
# Testing script Gukh (code 1198877544)
# Testing script Krai (code 1265787241)
# Testing script Onao (code 1332633967)
ok 21 /unicode/iso15924
ok 22 /unicode/lower
ok 23 /unicode/mark
ok 24 /unicode/mirror
ok 25 /unicode/print
ok 26 /unicode/punctuation
ok 27 /unicode/script
ok 28 /unicode/space
ok 29 /unicode/strdown
ok 30 /unicode/strup
ok 31 /unicode/turkish-strupdown
ok 32 /unicode/title
ok 33 /unicode/upper
ok 34 /unicode/validate
ok 35 /unicode/wide
ok 36 /unicode/xdigit
ok 37 /unicode/xdigit-value
ok 38 /unicode/zero-width
ok 39 /unicode/normalize
# End of unicode tests
PASS: glib/unicode.test
Running test: glib/performance-threaded.test
Running test "liststore-is-a"
  1883 runs, min/avg/max = 0.516/0.530/0.705 ms
Running test "liststore-interface-peek"
  2821 runs, min/avg/max = 0.303/0.353/0.702 ms
Running test "liststore-interface-peek-same"
  2911 runs, min/avg/max = 0.309/0.342/0.601 ms
PASS: glib/performance-threaded.test
Running test: glib/1bit-mutex.test
TAP version 14
# random seed: R02S6b417b5356e66e06a3ad949596608d21
1..2
# Start of glib tests
# Start of 1bit-mutex tests
Executing: glib/1bit-mutex.test
Executing: glib/1bit-mutex.test
Executing: glib/1bit-mutex.test
ok 1 /glib/1bit-mutex/int
# slow test /glib/1bit-mutex/int executed in 12.17 secs
Executing: glib/1bit-mutex.test
Executing: glib/1bit-mutex.test
ok 2 /glib/1bit-mutex/pointer
# slow test /glib/1bit-mutex/pointer executed in 12.78 secs
# End of 1bit-mutex tests
# End of glib tests
PASS: glib/1bit-mutex.test
Running test: glib/unicode-encoding.test
TAP version 14
# random seed: R02Sf8896556b3da1ec481b58e6973502ace
1..1
# Start of unicode tests
ok 1 /unicode/encoding
# End of unicode tests
PASS: glib/unicode-encoding.test
Running test: glib/rand.test
TAP version 14
# random seed: R02S77a2d760bfb8a6cfaa4b208b726018b9
1..2
# Start of rand tests
Executing: glib/rand.test
ok 1 /rand/test-rand
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=502560
ok 2 /rand/double-range
# End of rand tests
PASS: glib/rand.test
Running test: glib/async-splice-output-stream.test
TAP version 14
# random seed: R02S89b054c0ab1c558ab7e829f2af5f68df
1..5
# Start of async-splice tests
ok 1 /async-splice/copy-chunks
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 2 /async-splice/copy-chunks-threaded-input
ok 3 /async-splice/copy-chunks-threaded-output
ok 4 /async-splice/copy-chunks-threaded
ok 5 /async-splice/cancelled
# End of async-splice tests
PASS: glib/async-splice-output-stream.test
Running test: glib/fileutils.test
TAP version 14
# random seed: R02S2da6c616023f08ccb4ff2aa5055a4155
1..27
# Start of fileutils tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/paths/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/paths/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/paths/.dirs/system-config1:/var/volatile/tmp/fileutils/paths/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/paths/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/paths/.dirs/system-data1:/var/volatile/tmp/fileutils/paths/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/paths/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/paths/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/paths/.dirs/runtime
ok 1 /fileutils/paths
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/build-path/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/build-path/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/build-path/.dirs/system-config1:/var/volatile/tmp/fileutils/build-path/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/build-path/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/build-path/.dirs/system-data1:/var/volatile/tmp/fileutils/build-path/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/build-path/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/build-path/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/build-path/.dirs/runtime
ok 2 /fileutils/build-path
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/build-pathv/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/build-pathv/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/build-pathv/.dirs/system-config1:/var/volatile/tmp/fileutils/build-pathv/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/build-pathv/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/build-pathv/.dirs/system-data1:/var/volatile/tmp/fileutils/build-pathv/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/build-pathv/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/build-pathv/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/build-pathv/.dirs/runtime
ok 3 /fileutils/build-pathv
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/build-filename/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/build-filename/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/build-filename/.dirs/system-config1:/var/volatile/tmp/fileutils/build-filename/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/build-filename/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/build-filename/.dirs/system-data1:/var/volatile/tmp/fileutils/build-filename/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/build-filename/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/build-filename/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/build-filename/.dirs/runtime
ok 4 /fileutils/build-filename
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/build-filenamev/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/build-filenamev/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/build-filenamev/.dirs/system-config1:/var/volatile/tmp/fileutils/build-filenamev/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/build-filenamev/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/build-filenamev/.dirs/system-data1:/var/volatile/tmp/fileutils/build-filenamev/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/build-filenamev/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/build-filenamev/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/build-filenamev/.dirs/runtime
ok 5 /fileutils/build-filenamev
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/system-config1:/var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/system-data1:/var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/mkdir-with-parents/.dirs/runtime
# We do not have CAP_DAC_OVERRIDE or equivalent
# Checking g_mkdir_with_parents() in subdir ./hum/
# Checking g_mkdir_with_parents() in subdir ./hii///haa/hee/
ok 6 /fileutils/mkdir-with-parents
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/system-config1:/var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/system-data1:/var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/mkdir-with-parents-permission/.dirs/runtime
# We do not have CAP_DAC_OVERRIDE or equivalent
ok 7 /fileutils/mkdir-with-parents-permission
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/system-config1:/var/volatile/tmp/fileutils/format-size-for-display/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/system-data1:/var/volatile/tmp/fileutils/format-size-for-display/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/format-size-for-display/.dirs/runtime
ok 8 /fileutils/format-size-for-display
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/errors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/errors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/errors/.dirs/system-config1:/var/volatile/tmp/fileutils/errors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/errors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/errors/.dirs/system-data1:/var/volatile/tmp/fileutils/errors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/errors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/errors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/errors/.dirs/runtime
ok 9 /fileutils/errors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/basename/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/basename/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/basename/.dirs/system-config1:/var/volatile/tmp/fileutils/basename/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/basename/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/basename/.dirs/system-data1:/var/volatile/tmp/fileutils/basename/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/basename/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/basename/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/basename/.dirs/runtime
ok 10 /fileutils/basename
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/get-basename/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/get-basename/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/get-basename/.dirs/system-config1:/var/volatile/tmp/fileutils/get-basename/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/get-basename/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/get-basename/.dirs/system-data1:/var/volatile/tmp/fileutils/get-basename/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/get-basename/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/get-basename/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/get-basename/.dirs/runtime
ok 11 /fileutils/get-basename
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/dirname/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/dirname/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/dirname/.dirs/system-config1:/var/volatile/tmp/fileutils/dirname/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/dirname/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/dirname/.dirs/system-data1:/var/volatile/tmp/fileutils/dirname/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/dirname/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/dirname/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/dirname/.dirs/runtime
ok 12 /fileutils/dirname
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/system-config1:/var/volatile/tmp/fileutils/dir-make-tmp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/system-data1:/var/volatile/tmp/fileutils/dir-make-tmp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/dir-make-tmp/.dirs/runtime
ok 13 /fileutils/dir-make-tmp
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/system-config1:/var/volatile/tmp/fileutils/file-open-tmp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/system-data1:/var/volatile/tmp/fileutils/file-open-tmp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/file-open-tmp/.dirs/runtime
ok 14 /fileutils/file-open-tmp
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/file-test/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/file-test/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/file-test/.dirs/system-config1:/var/volatile/tmp/fileutils/file-test/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/file-test/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/file-test/.dirs/system-data1:/var/volatile/tmp/fileutils/file-test/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/file-test/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/file-test/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/file-test/.dirs/runtime
ok 15 /fileutils/file-test
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/mkstemp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/mkstemp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/mkstemp/.dirs/system-config1:/var/volatile/tmp/fileutils/mkstemp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/mkstemp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/mkstemp/.dirs/system-data1:/var/volatile/tmp/fileutils/mkstemp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/mkstemp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/mkstemp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/mkstemp/.dirs/runtime
ok 16 /fileutils/mkstemp
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/mkdtemp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/mkdtemp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/mkdtemp/.dirs/system-config1:/var/volatile/tmp/fileutils/mkdtemp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/mkdtemp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/mkdtemp/.dirs/system-data1:/var/volatile/tmp/fileutils/mkdtemp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/mkdtemp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/mkdtemp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/mkdtemp/.dirs/runtime
ok 17 /fileutils/mkdtemp
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/get-contents/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/get-contents/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/get-contents/.dirs/system-config1:/var/volatile/tmp/fileutils/get-contents/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/get-contents/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/get-contents/.dirs/system-data1:/var/volatile/tmp/fileutils/get-contents/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/get-contents/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/get-contents/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/get-contents/.dirs/runtime
ok 18 /fileutils/get-contents
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/system-config1:/var/volatile/tmp/fileutils/get-contents-large-file/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/system-data1:/var/volatile/tmp/fileutils/get-contents-large-file/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/get-contents-large-file/.dirs/runtime
ok 19 /fileutils/get-contents-large-file # SKIP Skipping slow largefile test
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/set-contents/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/set-contents/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/set-contents/.dirs/system-config1:/var/volatile/tmp/fileutils/set-contents/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/set-contents/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/set-contents/.dirs/system-data1:/var/volatile/tmp/fileutils/set-contents/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/set-contents/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/set-contents/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/set-contents/.dirs/runtime
ok 20 /fileutils/set-contents
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/set-contents-full/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/set-contents-full/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/set-contents-full/.dirs/system-config1:/var/volatile/tmp/fileutils/set-contents-full/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/set-contents-full/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/set-contents-full/.dirs/system-data1:/var/volatile/tmp/fileutils/set-contents-full/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/set-contents-full/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/set-contents-full/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/set-contents-full/.dirs/runtime
# /fileutils/set-contents-full summary: Test g_file_set_contents_full() with various flags
# Flags 0 and test 0
# Flags 0 and test 1
# Flags 0 and test 2
# Flags 0 and test 3
# Flags 0 and test 4
# Flags 0 and test 5
# Flags 1 and test 0
# Flags 1 and test 1
# Flags 1 and test 2
# Flags 1 and test 3
# Flags 1 and test 4
# Flags 1 and test 5
# Flags 2 and test 0
# Flags 2 and test 1
# Flags 2 and test 2
# Flags 2 and test 3
# Flags 2 and test 4
# Flags 2 and test 5
# Flags 3 and test 0
# Flags 3 and test 1
# Flags 3 and test 2
# Flags 3 and test 3
# Flags 3 and test 4
# Flags 3 and test 5
# Flags 4 and test 0
# Flags 4 and test 1
# Flags 4 and test 2
# Flags 4 and test 3
# Flags 4 and test 4
# Flags 4 and test 5
# Flags 5 and test 0
# Flags 5 and test 1
# Flags 5 and test 2
# Flags 5 and test 3
# Flags 5 and test 4
# Flags 5 and test 5
# Flags 6 and test 0
# Flags 6 and test 1
# Flags 6 and test 2
# Flags 6 and test 3
# Flags 6 and test 4
# Flags 6 and test 5
ok 21 /fileutils/set-contents-full
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/read-link/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/read-link/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/read-link/.dirs/system-config1:/var/volatile/tmp/fileutils/read-link/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/read-link/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/read-link/.dirs/system-data1:/var/volatile/tmp/fileutils/read-link/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/read-link/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/read-link/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/read-link/.dirs/runtime
ok 22 /fileutils/read-link
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/system-config1:/var/volatile/tmp/fileutils/stdio-wrappers/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/system-data1:/var/volatile/tmp/fileutils/stdio-wrappers/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/stdio-wrappers/.dirs/runtime
# We do not have CAP_DAC_OVERRIDE or equivalent
ok 23 /fileutils/stdio-wrappers
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/fopen-modes/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/fopen-modes/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/fopen-modes/.dirs/system-config1:/var/volatile/tmp/fileutils/fopen-modes/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/fopen-modes/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/fopen-modes/.dirs/system-data1:/var/volatile/tmp/fileutils/fopen-modes/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/fopen-modes/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/fopen-modes/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/fopen-modes/.dirs/runtime
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/119
# Testing fopen() mode 'w'
# Testing fopen() mode 'r'
# Testing fopen() mode 'a'
# Testing fopen() mode 'w+'
# Testing fopen() mode 'r+'
# Testing fopen() mode 'a+'
# Testing fopen() mode 'wb'
# Testing fopen() mode 'rb'
# Testing fopen() mode 'ab'
# Testing fopen() mode 'w+b'
# Testing fopen() mode 'r+b'
# Testing fopen() mode 'a+b'
# Testing fopen() mode 'wb+'
# Testing fopen() mode 'rb+'
# Testing fopen() mode 'ab+'
ok 24 /fileutils/fopen-modes
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/clear-fd/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/clear-fd/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/clear-fd/.dirs/system-config1:/var/volatile/tmp/fileutils/clear-fd/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/clear-fd/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/clear-fd/.dirs/system-data1:/var/volatile/tmp/fileutils/clear-fd/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/clear-fd/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/clear-fd/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/clear-fd/.dirs/runtime
# /fileutils/clear-fd summary: Test g_clear_fd() and g_autofd
# Will be closed by autocleanup: 3, -42
# Testing error handling
ok 25 /fileutils/clear-fd
# Start of set-contents-full tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/system-config1:/var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/system-data1:/var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/set-contents-full/read-only-file/.dirs/runtime
# We do not have CAP_DAC_OVERRIDE or equivalent
# /fileutils/set-contents-full/read-only-file summary: Test g_file_set_contents_full() on a read-only file
ok 26 /fileutils/set-contents-full/read-only-file
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/system-config1:/var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/system-data1:/var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/fileutils/set-contents-full/read-only-directory/.dirs/runtime
# /fileutils/set-contents-full/read-only-directory summary: Test g_file_set_contents_full() on a file in a read-only directory
# Flags 0
# We do not have CAP_DAC_OVERRIDE or equivalent
# Flags 1
# We do not have CAP_DAC_OVERRIDE or equivalent
# Flags 2
# We do not have CAP_DAC_OVERRIDE or equivalent
# Flags 3
# We do not have CAP_DAC_OVERRIDE or equivalent
# Flags 4
# We do not have CAP_DAC_OVERRIDE or equivalent
# Flags 5
# We do not have CAP_DAC_OVERRIDE or equivalent
# Flags 6
# We do not have CAP_DAC_OVERRIDE or equivalent
ok 27 /fileutils/set-contents-full/read-only-directory
# End of set-contents-full tests
# Start of clear-fd tests
# Start of subprocess tests
# End of subprocess tests
# End of clear-fd tests
# End of fileutils tests
PASS: glib/fileutils.test
Running test: glib/thread.test
TAP version 14
# random seed: R02S4911cfefb3f3ace7e5eeb0144c27b47d
1..7
# Start of thread tests
ok 1 /thread/thread1
ok 2 /thread/thread2
ok 3 /thread/thread3
ok 4 /thread/thread4
ok 5 /thread/thread5
ok 6 /thread/thread6
ok 7 /thread/thread7
# End of thread tests
PASS: glib/thread.test
Running test: glib/object-info.test
TAP version 14
# random seed: R02Scf71a5b374d2554a55490a534d050aed
1..2
# Start of object-info tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/system-config1:/var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/system-data1:/var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/object-info/find-method-using-interfaces/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 1 /object-info/find-method-using-interfaces
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/system-config1:/var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/system-data1:/var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/object-info/find-vfunc-using-interfaces/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 2 /object-info/find-vfunc-using-interfaces
# End of object-info tests
PASS: glib/object-info.test
Running test: glib/socket.test
TAP version 14
# random seed: R02S9491ada717c9bd8b5e5dc6c3fdf6c420
1..28
# Start of socket tests
ok 1 /socket/ipv4_sync
# slow test /socket/ipv4_sync executed in 1.01 secs
ok 2 /socket/ipv4_async
# slow test /socket/ipv4_async executed in 1.01 secs
ok 3 /socket/ipv6_sync
ok 4 /socket/ipv6_async
ok 5 /socket/ipv6_v4mapped
ok 6 /socket/close_graceful
# slow test /socket/close_graceful executed in 1.00 secs
ok 7 /socket/timed_wait # SKIP Not running timing heavy test
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=741707
ok 8 /socket/fd_reuse
ok 9 /socket/address
ok 10 /socket/unix-from-fd
ok 11 /socket/unix-connection
ok 12 /socket/unix-connection-ancillary-data
ok 13 /socket/source-postmortem
ok 14 /socket/read_write
ok 15 /socket/read_writev
# /socket/receive_bytes summary: Test basic functionality of g_socket_receive_bytes()
ok 16 /socket/receive_bytes
# /socket/receive_bytes_from summary: Test basic functionality of g_socket_receive_bytes_from()
ok 17 /socket/receive_bytes_from
# Start of ipv4_sync tests
ok 18 /socket/ipv4_sync/datagram
# Start of datagram tests
ok 19 /socket/ipv4_sync/datagram/timeouts
# slow test /socket/ipv4_sync/datagram/timeouts executed in 1.10 secs
# End of datagram tests
# End of ipv4_sync tests
# Start of ipv6_sync tests
ok 20 /socket/ipv6_sync/datagram
# Start of datagram tests
Executing: glib/socket.test
ok 21 /socket/ipv6_sync/datagram/timeouts
# slow test /socket/ipv6_sync/datagram/timeouts executed in 1.10 secs
# End of datagram tests
# End of ipv6_sync tests
# Start of reuse tests
ok 22 /socket/reuse/tcp
ok 23 /socket/reuse/udp
# End of reuse tests
# Start of get_available tests
ok 24 /socket/get_available/datagram
ok 25 /socket/get_available/stream
# End of get_available tests
# Start of credentials tests
# Supported on this OS: GCredentials:linux-ucred:pid=0
ok 26 /socket/credentials/tcp_client
# Supported on this OS: GCredentials:linux-ucred:pid=0
ok 27 /socket/credentials/tcp_server
# Supported on this OS: GCredentials:linux-ucred:pid=3753,uid=1000,gid=1000
ok 28 /socket/credentials/unix_socketpair
# End of credentials tests
# End of socket tests
PASS: glib/socket.test
Running test: glib/buffered-output-stream.test
TAP version 14
# random seed: R02Sc8d59d9bd633082840cd342908dd3181
1..5
# Start of buffered-output-stream tests
ok 1 /buffered-output-stream/write
ok 2 /buffered-output-stream/grow
ok 3 /buffered-output-stream/seek
ok 4 /buffered-output-stream/truncate
# End of buffered-output-stream tests
# Start of filter-output-stream tests
ok 5 /filter-output-stream/close
# End of filter-output-stream tests
PASS: glib/buffered-output-stream.test
Running test: glib/list.test
TAP version 14
# random seed: R02S0d381060376d6bd0f927be528d37c15f
1..20
# Start of list tests
ok 1 /list/sort
ok 2 /list/sort-with-data
ok 3 /list/insert-before-link
ok 4 /list/insert-sorted
ok 5 /list/insert-sorted-with-data
ok 6 /list/reverse
ok 7 /list/nth
ok 8 /list/concat
ok 9 /list/remove
ok 10 /list/remove-all
ok 11 /list/first-last
ok 12 /list/insert
ok 13 /list/free-full
ok 14 /list/copy
ok 15 /list/copy-deep
ok 16 /list/delete-link
ok 17 /list/prepend
ok 18 /list/position
ok 19 /list/double-free
# Start of sort tests
ok 20 /list/sort/stable
# End of sort tests
# End of list tests
PASS: glib/list.test
Running test: glib/param.test
TAP version 14
# random seed: R02Sfefa2b1c6d16ca73fee62181acca9f13
1..32
# Start of param tests
ok 1 /param/value
ok 2 /param/strings
ok 3 /param/qdata
ok 4 /param/validate
ok 5 /param/convert
ok 6 /param/implement # SKIP Skipping slow /param/implement test
ok 7 /param/default
ok 8 /param/is-valid-name
# Start of invalid-name tests
# /param/invalid-name/colon summary: Test that properties cannot be created with invalid names
ok 9 /param/invalid-name/colon
# slow test /param/invalid-name/colon executed in 0.50 secs
# /param/invalid-name/first-char summary: Test that properties cannot be created with invalid names
ok 10 /param/invalid-name/first-char
# /param/invalid-name/empty summary: Test that properties cannot be created with invalid names
ok 11 /param/invalid-name/empty
# End of invalid-name tests
# Start of implement tests
# Start of subprocess tests
# End of subprocess tests
# End of implement tests
# End of param tests
# Start of value tests
ok 12 /value/transform
# End of value tests
# Start of paramspec tests
ok 13 /paramspec/char
ok 14 /paramspec/uchar
ok 15 /paramspec/int
ok 16 /paramspec/uint
ok 17 /paramspec/long
ok 18 /paramspec/ulong
ok 19 /paramspec/int64
ok 20 /paramspec/uint64
ok 21 /paramspec/float
ok 22 /paramspec/double
ok 23 /paramspec/unichar
ok 24 /paramspec/param
ok 25 /paramspec/null-param
ok 26 /paramspec/string
ok 27 /paramspec/override
ok 28 /paramspec/gtype
ok 29 /paramspec/variant
ok 30 /paramspec/custom
ok 31 /paramspec/pool
# Start of variant tests
ok 32 /paramspec/variant/cmp
# End of variant tests
# End of paramspec tests
PASS: glib/param.test
Running test: glib/atomic-c-99.test
TAP version 14
# random seed: R02S865bb45295083efb572417062f85a6e4
1..2
# Start of atomic tests
ok 1 /atomic/types
ok 2 /atomic/threaded
# End of atomic tests
PASS: glib/atomic-c-99.test
Running test: glib/portal-support-snap-classic.test
TAP version 14
# random seed: R02S84331a17d682c0dfecc3cd6b17fd4e91
1..3
# Start of portal-support tests
# Start of snap-classic tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/system-config1:/var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/system-data1:/var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap-classic/no-snapctl/.dirs/runtime
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap-classic/no-snapctl: No such file or directory
ok 1 /portal-support/snap-classic/no-snapctl
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/system-config1:/var/volatile/tmp/portal-support/snap-classic/none/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/system-data1:/var/volatile/tmp/portal-support/snap-classic/none/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap-classic/none/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap-classic/none/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap-classic/none: No such file or directory
ok 2 /portal-support/snap-classic/none
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/system-config1:/var/volatile/tmp/portal-support/snap-classic/all/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/system-data1:/var/volatile/tmp/portal-support/snap-classic/all/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/snap-classic/all/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/meta/snap.yaml
# Created snapctl in /var/volatile/tmp/portal-support/snap-classic/all/.dirs/runtime/snapctl
Unable to clean up temporary directory /var/volatile/tmp/portal-support/snap-classic/all: No such file or directory
ok 3 /portal-support/snap-classic/all
# End of snap-classic tests
# End of portal-support tests
PASS: glib/portal-support-snap-classic.test
Running test: glib/sequence.test
TAP version 14
# random seed: R02S1bc068c6bb5ff058c951a1d623fdeeca
1..16
# Start of sequence tests
ok 1 /sequence/out-of-range-jump
ok 2 /sequence/iter-move
ok 3 /sequence/insert-sorted-non-pointer
# slow test /sequence/insert-sorted-non-pointer executed in 0.96 secs
ok 4 /sequence/stable-sort
ok 5 /sequence/is_empty
# Start of random tests
Executing: glib/sequence.test
ok 6 /sequence/random/seed:825541564
# slow test /sequence/random/seed:825541564 executed in 5.44 secs
Executing: glib/sequence.test
ok 7 /sequence/random/seed:801678400
# slow test /sequence/random/seed:801678400 executed in 5.06 secs
Executing: glib/sequence.test
Executing: glib/sequence.test
ok 8 /sequence/random/seed:1477639090
# slow test /sequence/random/seed:1477639090 executed in 5.33 secs
ok 9 /sequence/random/seed:3369132895
# slow test /sequence/random/seed:3369132895 executed in 4.90 secs
Executing: glib/sequence.test
Executing: glib/sequence.test
ok 10 /sequence/random/seed:1192944867
# slow test /sequence/random/seed:1192944867 executed in 5.53 secs
Executing: glib/sequence.test
ok 11 /sequence/random/seed:770458294
# slow test /sequence/random/seed:770458294 executed in 5.33 secs
Executing: glib/sequence.test
ok 12 /sequence/random/seed:1099575817
# slow test /sequence/random/seed:1099575817 executed in 5.12 secs
Executing: glib/sequence.test
ok 13 /sequence/random/seed:590523467
# slow test /sequence/random/seed:590523467 executed in 5.33 secs
Executing: glib/sequence.test
ok 14 /sequence/random/seed:3583571454
# slow test /sequence/random/seed:3583571454 executed in 5.40 secs
Executing: glib/sequence.test
ok 15 /sequence/random/seed:579241222
# slow test /sequence/random/seed:579241222 executed in 5.57 secs
Executing: glib/sequence.test
ok 16 /sequence/random/seed:576001676
# slow test /sequence/random/seed:576001676 executed in 5.08 secs
# End of random tests
# End of sequence tests
PASS: glib/sequence.test
Running test: glib/cmph-bdz.test
TAP version 14
# random seed: R02S400d28485867b7d928818562d559ef9c
1..2
# Start of cmph-bdz tests
ok 1 /cmph-bdz/search
ok 2 /cmph-bdz/search-packed
# End of cmph-bdz tests
PASS: glib/cmph-bdz.test
Running test: glib/dataset.test
TAP version 14
# random seed: R02S7d70c9bb0c8f5f30efe365fe93f48b2a
1..14
# Start of quark tests
ok 1 /quark/basic
ok 2 /quark/string
# End of quark tests
# Start of dataset tests
ok 3 /dataset/basic
ok 4 /dataset/id
ok 5 /dataset/full
ok 6 /dataset/foreach
ok 7 /dataset/destroy
# End of dataset tests
# Start of datalist tests
ok 8 /datalist/basic
ok 9 /datalist/id
ok 10 /datalist/recursive-clear
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/2672
ok 11 /datalist/id-remove-multiple
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/2672
ok 12 /datalist/id-remove-multiple-destroy-order
ok 13 /datalist/update-atomic
# Start of id-remove-multiple tests
ok 14 /datalist/id-remove-multiple/resize
# End of id-remove-multiple tests
# End of datalist tests
PASS: glib/dataset.test
Running test: glib/node.test
TAP version 14
# random seed: R02S5b2013251942de9a638fb0c432313c41
1..6
# Start of node tests
ok 1 /node/allocation
ok 2 /node/construction
ok 3 /node/traversal
ok 4 /node/misc
ok 5 /node/unlink
ok 6 /node/copy
# End of node tests
PASS: glib/node.test
Running test: glib/option-argv0.test
TAP version 14
# random seed: R02S14a9e652901463bb44dda12e309b81cb
1..1
# Start of option tests
ok 1 /option/argv0
# End of option tests
PASS: glib/option-argv0.test
Running test: glib/mount-operation.test
TAP version 14
# random seed: R02Sfd2ebfb0e36e8e4676be472c13b75ddb
1..2
# Start of mount-operation tests
ok 1 /mount-operation/construction
ok 2 /mount-operation/properties
# End of mount-operation tests
PASS: glib/mount-operation.test
Running test: glib/accumulator.test
TAP version 14
# random seed: R02S0429bb87079b40c30e707fb9ee855b55
1..1
# Start of gobject tests
ok 1 /gobject/accumulator
# End of gobject tests
PASS: glib/accumulator.test
Running test: glib/tls-database.test
TAP version 14
# random seed: R02S05498f0b58f4ba7b27e57f58438ea5ee
1..1
# Start of tls-backend tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation test (GTestTlsBackend) for ?gio-tls-backend?
ok 1 /tls-backend/set-default-database
# End of tls-backend tests
PASS: glib/tls-database.test
Running test: glib/gdatetime.test
TAP version 14
# random seed: R02Sad1bd8db91e6b9b5fe12dc08d05df5e3
1..68
# Start of GDateTime tests
# Bug Reference: http://bugzilla.gnome.org/702674
ok 1 /GDateTime/invalid
ok 2 /GDateTime/add_days
ok 3 /GDateTime/add_full
ok 4 /GDateTime/add_hours
ok 5 /GDateTime/add_minutes
ok 6 /GDateTime/add_months
ok 7 /GDateTime/add_seconds
ok 8 /GDateTime/add_weeks
ok 9 /GDateTime/add_years
ok 10 /GDateTime/compare
ok 11 /GDateTime/diff
ok 12 /GDateTime/equal
ok 13 /GDateTime/get_day_of_week
ok 14 /GDateTime/get_day_of_month
ok 15 /GDateTime/get_day_of_year
ok 16 /GDateTime/get_hour
ok 17 /GDateTime/get_microsecond
ok 18 /GDateTime/get_minute
ok 19 /GDateTime/get_month
ok 20 /GDateTime/get_second
ok 21 /GDateTime/get_utc_offset
ok 22 /GDateTime/get_year
ok 23 /GDateTime/hash
ok 24 /GDateTime/new_from_unix
ok 25 /GDateTime/new_from_unix_utc
ok 26 /GDateTime/new_from_timeval
ok 27 /GDateTime/new_from_timeval_utc
ok 28 /GDateTime/new_from_iso8601
ok 29 /GDateTime/new_full
ok 30 /GDateTime/now
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2215
ok 31 /GDateTime/test-6-days-until-end-of-the-month
# %a -> expected: Sat
# %a -> actual:   Sat
# %A -> expected: Saturday
# %A -> actual:   Saturday
# %b -> expected: Oct
# %b -> actual:   Oct
# %B -> expected: October
# %B -> actual:   October
# %d -> expected: 24
# %d -> actual:   24
# %d -> expected: 01
# %d -> actual:   01
# %e -> expected: 24
# %e -> actual:   24
# %e -> expected:  1
# %e -> actual:    1
# %f -> expected: 001000
# %f -> actual:   001000
# %h -> expected: Oct
# %h -> actual:   Oct
# %H -> expected: 00
# %H -> actual:   00
# %H -> expected: 15
# %H -> actual:   15
# %I -> expected: 12
# %I -> actual:   12
# %I -> expected: 12
# %I -> actual:   12
# %I -> expected: 03
# %I -> actual:   03
# %j -> expected: 297
# %j -> actual:   297
# %k -> expected:  0
# %k -> actual:    0
# %k -> expected: 13
# %k -> actual:   13
# %l -> expected: 12
# %l -> actual:   12
# %I -> expected: 12
# %I -> actual:   12
# %l -> expected:  1
# %l -> actual:    1
# %l -> expected: 10
# %l -> actual:   10
# %m -> expected: 10
# %m -> actual:   10
# %M -> expected: 00
# %M -> actual:   00
# %p -> expected: AM
# %p -> actual:   AM
# %p -> expected: PM
# %p -> actual:   PM
# %P -> expected: am
# %P -> actual:   am
# %P -> expected: pm
# %P -> actual:   pm
# %r -> expected: 12:00:00 AM
# %r -> actual:   12:00:00 AM
# %r -> expected: 01:13:13 PM
# %r -> actual:   01:13:13 PM
# %R -> expected: 00:00
# %R -> actual:   00:00
# %R -> expected: 13:13
# %R -> actual:   13:13
# %S -> expected: 00
# %S -> actual:   00
# %t -> expected: 	
# %t -> actual:   	
# %u -> expected: 6
# %u -> actual:   6
# %x -> expected: 10/24/09
# %x -> actual:   10/24/09
# %X -> expected: 00:00:00
# %X -> actual:   00:00:00
# %X -> expected: 13:14:15
# %X -> actual:   13:14:15
# %y -> expected: 09
# %y -> actual:   09
# %Y -> expected: 2009
# %Y -> actual:   2009
# %% -> expected: %
# %% -> actual:   %
# % -> expected: 
# % -> actual:   
# %9 -> expected: (null)
# %9 -> actual:   (null)
# %Z -> expected: UTC
# %Z -> actual:   UTC
# %#Z %Z -> expected: utc UTC
# %#Z %Z -> actual:   utc UTC
ok 32 /GDateTime/printf
# %a -> expected: 
# %a -> actual:   
# %A -> expected: 
# %A -> actual:   
# %b -> expected: 10
# %b -> actual:   10
# %B -> expected: 10
# %B -> actual:   10
# %c -> expected: 2009ǯ1024 0000ʬ00
# %c -> actual:   2009ǯ1024 0000ʬ00
# %C -> expected: 20
# %C -> actual:   20
# %d -> expected: 24
# %d -> actual:   24
# %d -> expected: 01
# %d -> actual:   01
# %e -> expected: 24
# %e -> actual:   24
# %h -> expected: 10
# %h -> actual:   10
# %H -> expected: 00
# %H -> actual:   00
# %H -> expected: 15
# %H -> actual:   15
# %I -> expected: 12
# %I -> actual:   12
# %I -> expected: 12
# %I -> actual:   12
# %I -> expected: 03
# %I -> actual:   03
# %j -> expected: 297
# %j -> actual:   297
# %k -> expected: ?0
# %k -> actual:   ?0
# %k -> expected: 13
# %k -> actual:   13
# %l -> expected: 12
# %l -> actual:   12
# %I -> expected: 12
# %I -> actual:   12
# %l -> expected: ?1
# %l -> actual:   ?1
# %l -> expected: 10
# %l -> actual:   10
# %m -> expected: 10
# %m -> actual:   10
# %M -> expected: 00
# %M -> actual:   00
# %p -> expected: 
# %p -> actual:   
# %p -> expected: 
# %p -> actual:   
# %P -> expected: 
# %P -> actual:   
# %P -> expected: 
# %P -> actual:   
# %r -> expected: 1200ʬ00
# %r -> actual:   1200ʬ00
# %r -> expected: 0113ʬ13
# %r -> actual:   0113ʬ13
# %R -> expected: 00:00
# %R -> actual:   00:00
# %R -> expected: 13:13
# %R -> actual:   13:13
# %S -> expected: 00
# %S -> actual:   00
# %t -> expected: 	
# %t -> actual:   	
# %u -> expected: 6
# %u -> actual:   6
# %x -> expected: 2009ǯ1024
# %x -> actual:   2009ǯ1024
# %X -> expected: 0000ʬ00
# %X -> actual:   0000ʬ00
# %X -> expected: 1314ʬ15
# %X -> actual:   1314ʬ15
# %y -> expected: 09
# %y -> actual:   09
# %Y -> expected: 2009
# %Y -> actual:   2009
# %% -> expected: %
# %% -> actual:   %
# % -> expected: 
# % -> actual:   
# %9 -> expected: (null)
# %9 -> actual:   (null)
# %Ec -> expected: ʿ21ǯ1024 0000ʬ00
# %Ec -> actual:   ʿ21ǯ1024 0000ʬ00
# %EC -> expected: ʿ
# %EC -> actual:   ʿ
# %Ex -> expected: ʿ21ǯ1024
# %Ex -> actual:   ʿ21ǯ1024
# %EX -> expected: 0000ʬ00
# %EX -> actual:   0000ʬ00
# %Ey -> expected: 21
# %Ey -> actual:   21
# %EY -> expected: ʿ21ǯ
# %EY -> actual:   ʿ21ǯ
ok 33 /GDateTime/non_utf8_printf
# ???? -> expected: ????
# ???? -> actual:   ????
# %H?%M -> expected: 23?15
# %H?%M -> actual:   23?15
GLib: Cannot convert message: Konwersja z zestawu znaków „UTF-8” na zestaw „ISO-8859-2” nie jest obsługiwana
# %H∶%M -> expected: 23∶15
# %H∶%M -> actual:   23∶15
ok 34 /GDateTime/format_unrepresentable
ok 35 /GDateTime/format_iso8601
ok 36 /GDateTime/strftime
# slow test /GDateTime/strftime executed in 1.77 secs
# %d -> expected: 01
# %d -> actual:   01
# %_d -> expected:  1
# %_d -> actual:    1
# %-d -> expected: 1
# %-d -> actual:   1
# %0d -> expected: 01
# %0d -> actual:   01
# %d -> expected: 21
# %d -> actual:   21
# %_d -> expected: 21
# %_d -> actual:   21
# %-d -> expected: 21
# %-d -> actual:   21
# %0d -> expected: 21
# %0d -> actual:   21
# %e -> expected:  1
# %e -> actual:    1
# %_e -> expected:  1
# %_e -> actual:    1
# %-e -> expected: 1
# %-e -> actual:   1
# %0e -> expected: 01
# %0e -> actual:   01
# %e -> expected: 21
# %e -> actual:   21
# %_e -> expected: 21
# %_e -> actual:   21
# %-e -> expected: 21
# %-e -> actual:   21
# %0e -> expected: 21
# %0e -> actual:   21
# %a -> expected: Thu
# %a -> actual:   Thu
# %^a -> expected: THU
# %^a -> actual:   THU
# %#a -> expected: THU
# %#a -> actual:   THU
# %A -> expected: Thursday
# %A -> actual:   Thursday
# %^A -> expected: THURSDAY
# %^A -> actual:   THURSDAY
# %#A -> expected: THURSDAY
# %#A -> actual:   THURSDAY
# %b -> expected: Jan
# %b -> actual:   Jan
# %^b -> expected: JAN
# %^b -> actual:   JAN
# %#b -> expected: JAN
# %#b -> actual:   JAN
# %B -> expected: January
# %B -> actual:   January
# %^B -> expected: JANUARY
# %^B -> actual:   JANUARY
# %#B -> expected: JANUARY
# %#B -> actual:   JANUARY
# %h -> expected: Jan
# %h -> actual:   Jan
# %^h -> expected: JAN
# %^h -> actual:   JAN
# %#h -> expected: JAN
# %#h -> actual:   JAN
# %Z -> expected: UTC
# %Z -> actual:   UTC
# %^Z -> expected: UTC
# %^Z -> actual:   UTC
# %#Z -> expected: utc
# %#Z -> actual:   utc
# %H -> expected: 01
# %H -> actual:   01
# %_H -> expected:  1
# %_H -> actual:    1
# %-H -> expected: 1
# %-H -> actual:   1
# %0H -> expected: 01
# %0H -> actual:   01
# %H -> expected: 21
# %H -> actual:   21
# %_H -> expected: 21
# %_H -> actual:   21
# %-H -> expected: 21
# %-H -> actual:   21
# %0H -> expected: 21
# %0H -> actual:   21
# %I -> expected: 01
# %I -> actual:   01
# %_I -> expected:  1
# %_I -> actual:    1
# %-I -> expected: 1
# %-I -> actual:   1
# %0I -> expected: 01
# %0I -> actual:   01
# %I -> expected: 11
# %I -> actual:   11
# %_I -> expected: 11
# %_I -> actual:   11
# %-I -> expected: 11
# %-I -> actual:   11
# %0I -> expected: 11
# %0I -> actual:   11
# %k -> expected:  1
# %k -> actual:    1
# %_k -> expected:  1
# %_k -> actual:    1
# %-k -> expected: 1
# %-k -> actual:   1
# %0k -> expected: 01
# %0k -> actual:   01
# %l -> expected:  1
# %l -> actual:    1
# %_l -> expected:  1
# %_l -> actual:    1
# %-l -> expected: 1
# %-l -> actual:   1
# %0l -> expected: 01
# %0l -> actual:   01
# %l -> expected: 11
# %l -> actual:   11
# %_l -> expected: 11
# %_l -> actual:   11
# %-l -> expected: 11
# %-l -> actual:   11
# %0l -> expected: 11
# %0l -> actual:   11
# %p -> expected: AM
# %p -> actual:   AM
# %^p -> expected: AM
# %^p -> actual:   AM
# %#p -> expected: am
# %#p -> actual:   am
# %P -> expected: am
# %P -> actual:   am
# %^P -> expected: AM
# %^P -> actual:   AM
# %#P -> expected: am
# %#P -> actual:   am
# %OH -> expected: ۲۳
# %OH -> actual:   ۲۳
# %OI -> expected: ۱۱
# %OI -> actual:   ۱۱
# %OM -> expected: ۰۰
# %OM -> actual:   ۰۰
# %Om -> expected: ۰۷
# %Om -> actual:   ۰۷
# %0Om -> expected: ۰۷
# %0Om -> actual:   ۰۷
# %-Om -> expected: ۷
# %-Om -> actual:   ۷
# %_Om -> expected:  ۷
# %_Om -> actual:    ۷
# %c -> expected: thu 01 jan 2009 00:00:00 utc
# %c -> actual:   Thu 01 Jan 2009 00:00:00 UTC
# %Ec -> expected: thu 01 jan 2009 00:00:00 utc
# %Ec -> actual:   Thu 01 Jan 2009 00:00:00 UTC
# %C -> expected: 20
# %C -> actual:   20
# %EC -> expected: 20
# %EC -> actual:   20
# %x -> expected: 02/01/09
# %x -> actual:   02/01/09
# %Ex -> expected: 02/01/09
# %Ex -> actual:   02/01/09
# %X -> expected: 01:02:03
# %X -> actual:   01:02:03
# %EX -> expected: 01:02:03
# %EX -> actual:   01:02:03
# %y -> expected: 09
# %y -> actual:   09
# %Ey -> expected: 09
# %Ey -> actual:   09
# %Y -> expected: 2009
# %Y -> actual:   2009
# %EY -> expected: 2009
# %EY -> actual:   2009
ok 37 /GDateTime/modifiers # SKIP locale gu_IN not available, skipping O modifier tests
# Bug Reference: http://bugzilla.gnome.org/749206
# %B -> expected: January
# %B -> actual:   January
# %OB -> expected: February
# %OB -> actual:   February
# %b -> expected: Mar
# %b -> actual:   Mar
# %Ob -> expected: Apr
# %Ob -> actual:   Apr
# %h -> expected: May
# %h -> actual:   May
# %Oh -> expected: Jun
# %Oh -> actual:   Jun
# %B -> expected: Juli
# %B -> actual:   Juli
# %OB -> expected: August
# %OB -> actual:   August
# %b -> expected: Sep
# %b -> actual:   Sep
# %Ob -> expected: Okt
# %Ob -> actual:   Okt
# %h -> expected: Nov
# %h -> actual:   Nov
# %Oh -> expected: Dez
# %Oh -> actual:   Dez
# %B -> expected: enero
# %B -> actual:   enero
# %OB -> expected: febrero
# %OB -> actual:   febrero
# %b -> expected: mar
# %b -> actual:   mar
# %Ob -> expected: abr
# %Ob -> actual:   abr
# %h -> expected: may
# %h -> actual:   may
# %Oh -> expected: jun
# %Oh -> actual:   jun
# %B -> expected: juillet
# %B -> actual:   juillet
# %OB -> expected: août
# %OB -> actual:   août
# %b -> expected: sept.
# %b -> actual:   sept.
# %Ob -> expected: oct.
# %Ob -> actual:   oct.
# %h -> expected: nov.
# %h -> actual:   nov.
# %Oh -> expected: déc.
# %Oh -> actual:   déc.
# %B -> expected: Ιανουαρίου
# %B -> actual:   Ιανουαρίου
# %B -> expected: Φεβρουαρίου
# %B -> actual:   Φεβρουαρίου
# %B -> expected: Μαρτίου
# %B -> actual:   Μαρτίου
# %OB -> expected: Απρίλιος
# %OB -> actual:   Απρίλιος
# %OB -> expected: Μάιος
# %OB -> actual:   Μάιος
# %OB -> expected: Ιούνιος
# %OB -> actual:   Ιούνιος
# %b -> expected: Ιουλ
# %b -> actual:   Ιουλ
# %Ob -> expected: Αύγ
# %Ob -> actual:   Αύγ
# %B -> expected: svibnja
# %B -> actual:   svibnja
# %B -> expected: lipnja
# %B -> actual:   lipnja
# %B -> expected: srpnja
# %B -> actual:   srpnja
# %OB -> expected: Kolovoz
# %OB -> actual:   kolovoz
# %OB -> expected: Rujan
# %OB -> actual:   rujan
# %OB -> expected: Listopad
# %OB -> actual:   listopad
# %b -> expected: Stu
# %b -> actual:   stu
# %Ob -> expected: Pro
# %Ob -> actual:   pro
# %B -> expected: sausio
# %B -> actual:   sausio
# %B -> expected: vasario
# %B -> actual:   vasario
# %B -> expected: kovo
# %B -> actual:   kovo
# %OB -> expected: balandis
# %OB -> actual:   balandis
# %OB -> expected: gegužė
# %OB -> actual:   gegužė
# %OB -> expected: birželis
# %OB -> actual:   birželis
# %b -> expected: liep.
# %b -> actual:   liep.
# %Ob -> expected: rugp.
# %Ob -> actual:   rugp.
# %B -> expected: maja
# %B -> actual:   maja
# %B -> expected: czerwca
# %B -> actual:   czerwca
# %B -> expected: lipca
# %B -> actual:   lipca
# %OB -> expected: sierpień
# %OB -> actual:   sierpień
# %OB -> expected: wrzesień
# %OB -> actual:   wrzesień
# %OB -> expected: październik
# %OB -> actual:   październik
# %b -> expected: lis
# %b -> actual:   lis
# %Ob -> expected: gru
# %Ob -> actual:   gru
# %B -> expected: января
# %B -> actual:   января
# %B -> expected: февраля
# %B -> actual:   февраля
# %B -> expected: марта
# %B -> actual:   марта
# %OB -> expected: Апрель
# %OB -> actual:   Апрель
# %OB -> expected: Май
# %OB -> actual:   Май
# %OB -> expected: Июнь
# %OB -> actual:   Июнь
# %b -> expected: июл
# %b -> actual:   июл
# %Ob -> expected: авг
# %Ob -> actual:   авг
# %b -> expected: мая
# %b -> actual:   мая
# %Ob -> expected: май
# %Ob -> actual:   май
ok 38 /GDateTime/month_names
ok 39 /GDateTime/to_local
ok 40 /GDateTime/to_unix
ok 41 /GDateTime/to_timeval
ok 42 /GDateTime/to_utc
ok 43 /GDateTime/now_utc
ok 44 /GDateTime/dst
# Bug Reference: http://bugzilla.gnome.org/642935
ok 45 /GDateTime/test_z
Executing: glib/gdatetime.test
Executing: glib/gdatetime.test
ok 46 /GDateTime/test-all-dates
# slow test /GDateTime/test-all-dates executed in 10.38 secs
ok 47 /GDateTime/unix_usec
# Start of new_from_unix tests
# Bug Reference: http://bugzilla.gnome.org/782089
ok 48 /GDateTime/new_from_unix/overflow
# End of new_from_unix tests
# Start of new_from_timeval tests
# Bug Reference: http://bugzilla.gnome.org/782089
# Maximum supported GTimeVal.tv_sec = 253402300799
ok 49 /GDateTime/new_from_timeval/overflow
# End of new_from_timeval tests
# Start of new_from_iso8601 tests
# /GDateTime/new_from_iso8601/2 summary: Further parser tests for g_date_time_new_from_iso8601(), checking success and failure using test vectors.
# Vector 0: 1990-11-01T10:21:17Z
# Vector 1: 19901101T102117Z
# Vector 2: 1970-01-01T00:00:17.12Z
# Vector 3: 1970-01-01T00:00:17.1234Z
# Vector 4: 1970-01-01T00:00:17.123456Z
# Vector 5: 1980-02-22T12:36:00+02:00
# Vector 6: 1990-12-31T15:59:60-08:00
# Vector 7:    
# Vector 8: x
# Vector 9: 123x
# Vector 10: 2001-10+x
# Vector 11: 1980-02-22T
# Vector 12: 2001-10-08Tx
# Vector 13: 2001-10-08T10:11x
# Vector 14: Wed Dec 19 17:20:20 GMT 2007
# Vector 15: 1980-02-22T10:36:00Zulu
# Vector 16: 2T0+819855292164632335
# Vector 17: 2018-08-03T14:08:05.446178377+01:00
# Vector 18: 2147483648-08-03T14:08:05.446178377+01:00
# Vector 19: 2018-13-03T14:08:05.446178377+01:00
# Vector 20: 2018-00-03T14:08:05.446178377+01:00
# Vector 21: 2018-08-00T14:08:05.446178377+01:00
# Vector 22: 2018-08-32T14:08:05.446178377+01:00
# Vector 23: 2018-08-03T24:08:05.446178377+01:00
# Vector 24: 2018-08-03T14:60:05.446178377+01:00
# Vector 25: 2018-08-03T14:08:63.446178377+01:00
# Vector 26: 2018-08-03T14:08:05.446178377+100:00
# Vector 27: 20180803T140805.446178377+0100
# Vector 28: 21474836480803T140805.446178377+0100
# Vector 29: 20181303T140805.446178377+0100
# Vector 30: 20180003T140805.446178377+0100
# Vector 31: 20180800T140805.446178377+0100
# Vector 32: 20180832T140805.446178377+0100
# Vector 33: 20180803T240805.446178377+0100
# Vector 34: 20180803T146005.446178377+0100
# Vector 35: 20180803T140863.446178377+0100
# Vector 36: 20180803T140805.446178377+10000
# Vector 37: -0005-01-01T00:00:00Z
# Vector 38: 2018-08-06
# Vector 39: 20180803T140805,446178377+0100
# Vector 40: 2018-08-03T14:08:05.446178377-01:00
# Vector 41: 2018-08-03T14:08:05.446178377 01:00
# Vector 42: 1990-11-01T10:21:17
# Vector 43: 1719W462 407777-07
# Vector 44: 4011090 260528Z
# Vector 45: 0000W011 228214-22
ok 50 /GDateTime/new_from_iso8601/2
# End of new_from_iso8601 tests
# Start of format_mixed tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2055
# Unavailable 'de_DE.iso88591' locale
ok 51 /GDateTime/format_mixed/utf8_time_non_utf8_messages # SKIP required locale not available, skipping tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2055
# %b -> expected: mar
# %b -> actual:   Mar
# %B -> expected: march
# %B -> actual:   March
ok 52 /GDateTime/format_mixed/utf8_time_utf8_messages
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2055
# Unavailable 'de_DE.iso88591' locale
ok 53 /GDateTime/format_mixed/non_utf8_time_non_utf8_messages # SKIP required locale not available, skipping tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2055
# Unavailable 'de_DE.iso88591' locale
ok 54 /GDateTime/format_mixed/non_utf8_time_utf8_messages # SKIP required locale not available, skipping tests
# End of format_mixed tests
# Start of strftime tests
# %r -> expected: (null)
# %r -> actual:   (null)
ok 55 /GDateTime/strftime/error_handling
# End of strftime tests
# Start of eras tests
Executing: glib/gdatetime.test
ok 56 /GDateTime/eras/japan # SKIP locale ja_JP.utf-8 not available, skipping Japanese era tests
# %Ec -> expected: วันพฤหัสบดีที่  1 มิถุนายน พ.ศ. 2566, 00.00.00 น.
# %Ec -> actual:   วันพฤหัสบดีที่  1 มิถุนายน พ.ศ. 2566, 00.00.00 น.
# %EC -> expected: พ.ศ.
# %EC -> actual:   พ.ศ.
# %Ex -> expected:  1 มิ.ย. 2566
# %Ex -> actual:    1 มิ.ย. 2566
# %EX -> expected: 00.00.00 น.
# %EX -> actual:   00.00.00 น.
# %Ey -> expected: 2566
# %Ey -> actual:   2566
# %EY -> expected: พ.ศ. 2566
# %EY -> actual:   พ.ศ. 2566
# %Ex -> expected:  1 มิ.ย. 544
# %Ex -> actual:    1 มิ.ย. 544
ok 57 /GDateTime/eras/thailand
# Vector 0: 
# Vector 1: +:1:-543/01/01:+*:พ.ศ.:%EC %Ey
# Vector 2: +:2:2020/01/01:+*:令和:%EC%Ey年;+:1:2019/05/01:2019/12/31:令和:%EC元年;+:2:1990/01/01:2019/04/30:平成:%EC%Ey年;+:1:1989/01/08:1989/12/31:平成:%EC元年;+:2:1927/01/01:1989/01/07:昭和:%EC%Ey年;+:1:1926/12/25:1926/12/31:昭和:%EC元年;+:2:1913/01/01:1926/12/24:大正:%EC%Ey年;+:1:1912/07/30:1912/12/31:大正:%EC元年;+:6:1873/01/01:1912/07/29:明治:%EC%Ey年;+:1:0001/01/01:1872/12/31:西暦:%EC%Ey年;+:1:-0001/12/31:-*:紀元前:%EC%Ey年
# Vector 3: -:2:2020/01/01:-*:令和:%EC%Ey年
# Vector 4: +:2:2020/01/01:2020/01/01:令和:%EC%Ey年
# Vector 5: +:2:+2020/01/01:+*:令和:%EC%Ey年
# Vector 6: .:2:2020/01/01:+*:令和:%EC%Ey年
# Vector 7: +.2:2020/01/01:+*:令和:%EC%Ey年
# Vector 8: +
# Vector 9: +:
# Vector 10: +::
# Vector 11: +:200
# Vector 12: +:2nonsense
# Vector 13: +:2nonsense:
# Vector 14: +:2:
# Vector 15: +:2::
# Vector 16: +:2:2020-01/01:+*:令和:%EC%Ey年
# Vector 17: +:2:2020nonsense/01/01:+*:令和:%EC%Ey年
# Vector 18: +:2:2020:+*:令和:%EC%Ey年
# Vector 19: +:2:18446744073709551615/01/01:+*:令和:%EC%Ey年
# Vector 20: +:2:2020/01-01:+*:令和:%EC%Ey年
# Vector 21: +:2:2020/01nonsense/01:+*:令和:%EC%Ey年
# Vector 22: +:2:2020/01:+*:令和:%EC%Ey年
# Vector 23: +:2:2020/00/01:+*:令和:%EC%Ey年
# Vector 24: +:2:2020/13/01:+*:令和:%EC%Ey年
# Vector 25: +:2:2020/01/00:+*:令和:%EC%Ey年
# Vector 26: +:2:2020/01/32:+*:令和:%EC%Ey年
# Vector 27: +:2:2020/01/01nonsense:+*:令和:%EC%Ey年
# Vector 28: +:2:2020/01/01
# Vector 29: +:2:2020/01/01:
# Vector 30: +:2:2020/01/01::
# Vector 31: +:2:2020/01/01:2021-01-01:令和:%EC%Ey年
# Vector 32: +:2:2020/01/01:+*
# Vector 33: +:2:2020/01/01:+*:
# Vector 34: +:2:2020/01/01:+*::
# Vector 35: +:2:2020/01/01:+*:令和
# Vector 36: +:2:2020/01/01:+*:令和:
# Vector 37: +:2:2020/01/01:+*:令和:;
ok 58 /GDateTime/eras/parsing
# End of eras tests
# End of GDateTime tests
# Start of GTimeZone tests
ok 59 /GTimeZone/find-interval
ok 60 /GTimeZone/adjust-time
ok 61 /GTimeZone/no-header
ok 62 /GTimeZone/no-header-identifier
ok 63 /GTimeZone/posix-parse
# Bug Reference: http://bugzilla.gnome.org/697715
ok 64 /GTimeZone/floating-point
# System time zone identifier: Universal
ok 65 /GTimeZone/identifier
# Vector 0: -158400
# Vector 1: -10000
# Vector 2: -3600
# Vector 3: -61
# Vector 4: -60
# Vector 5: -59
# Vector 6: 0
# Vector 7: 59
# Vector 8: 60
# Vector 9: 61
# Vector 10: 3600
# Vector 11: 10000
# Vector 12: 158400
ok 66 /GTimeZone/new-offset
# /GTimeZone/parse-rfc8536 summary: Test parsing time zone files in RFC 8536 version 3 format
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2129
ok 67 /GTimeZone/parse-rfc8536
# /GTimeZone/caching summary: GTimeZone instances are cached
ok 68 /GTimeZone/caching
# End of GTimeZone tests
PASS: glib/gdatetime.test
Running test: glib/network-monitor-race.test
TAP version 14
# random seed: R02S92b0184045a82ea52164a004ba04a282
1..1
# Start of network-monitor tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=793727
ok 1 /network-monitor/create-in-thread
# slow test /network-monitor/create-in-thread executed in 3.27 secs
# End of network-monitor tests
PASS: glib/network-monitor-race.test
Running test: glib/signals-refcount4.test
TAP version 14
# random seed: R02Sa25f57c15c0b264e68e33ac3c1c0f331
1..1
# Start of gobject tests
# Start of refcount tests
# init 0x55557846d3f0
# 
# init 0x555578466600
# 
Executing: glib/signals-refcount4.test
# dispose 0x55557846d3f0!
# 
# dispose 0x555578466600!
# 
ok 1 /gobject/refcount/signals
# slow test /gobject/refcount/signals executed in 5.00 secs
# End of refcount tests
# End of gobject tests
PASS: glib/signals-refcount4.test
Running test: glib/credentials.test
TAP version 14
# random seed: R02S8e9e92a35694da8c325f1568ef081b88
1..1
# Start of credentials tests
# GCredentials:linux-ucred:pid=3922,uid=1000,gid=1000
# GCredentials:linux-ucred:pid=3922,uid=0,gid=1000
ok 1 /credentials/basic
# End of credentials tests
PASS: glib/credentials.test
Running test: glib/application-command-line.test
TAP version 14
# random seed: R02S09c7ddd520461ecaf4a2918f5f4c6ac8
1..1
# Start of application-command-line tests
ok 1 /application-command-line/basic-properties
# End of application-command-line tests
PASS: glib/application-command-line.test
Running test: glib/task.test
TAP version 14
# random seed: R02S26e7fe3574cf78cd7474fd9e02f0b3a4
1..36
# Start of gtask tests
ok 1 /gtask/basic
ok 2 /gtask/error
ok 3 /gtask/error-literal
ok 4 /gtask/error-literal-from-variable
ok 5 /gtask/return-from-same-iteration
ok 6 /gtask/return-from-toplevel
ok 7 /gtask/return-from-anon-thread
ok 8 /gtask/return-from-wrong-thread
ok 9 /gtask/no-callback
ok 10 /gtask/report-error
ok 11 /gtask/priority
ok 12 /gtask/name
ok 13 /gtask/static-name
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1608
ok 14 /gtask/asynchronous-cancellation
ok 15 /gtask/check-cancellable
ok 16 /gtask/return-if-cancelled
ok 17 /gtask/run-in-thread
ok 18 /gtask/run-in-thread-sync
ok 19 /gtask/run-in-thread-priority
ok 20 /gtask/run-in-thread-nested
ok 21 /gtask/run-in-thread-overflow
# slow test /gtask/run-in-thread-overflow executed in 0.57 secs
# GLib-GIO-DEBUG: GTask 0x5555820128b0 (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 22 /gtask/return-on-cancel
# GLib-GIO-DEBUG: GTask 0x555581f86d00 (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
# GLib-GIO-DEBUG: GTask 0x555581f86440 (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 23 /gtask/return-on-cancel-sync
# GLib-GIO-DEBUG: GTask 0x555581f85e30 (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 24 /gtask/return-on-cancel-atomic
ok 25 /gtask/return-pointer
ok 26 /gtask/return-value
ok 27 /gtask/return-prefixed-error
ok 28 /gtask/object-keepalive
ok 29 /gtask/legacy-error
ok 30 /gtask/finalize-without-return
# Start of name tests
ok 31 /gtask/name/macro-wrapper
# End of name tests
# Start of return tests
ok 32 /gtask/return/error-first
ok 33 /gtask/return/value-first
# Start of in-idle tests
ok 34 /gtask/return/in-idle/error-first
ok 35 /gtask/return/in-idle/value-first
# End of in-idle tests
# End of return tests
# Start of attach-source tests
# /gtask/attach-source/set-name summary: Test that attaching a source to a task will set the source?s name if unset
ok 36 /gtask/attach-source/set-name
# End of attach-source tests
# End of gtask tests
PASS: glib/task.test
Running test: glib/network-address.test
TAP version 14
# random seed: R02Sf7c84c613e47d341a46b53ab12d7bdc7
1..72
# Start of network-address tests
ok 1 /network-address/basic
ok 2 /network-address/scope-id
ok 3 /network-address/uri-scope-id
ok 4 /network-address/to-string
# Start of parse-host tests
ok 5 /network-address/parse-host/0
ok 6 /network-address/parse-host/1
ok 7 /network-address/parse-host/2
ok 8 /network-address/parse-host/3
ok 9 /network-address/parse-host/4
ok 10 /network-address/parse-host/5
ok 11 /network-address/parse-host/6
ok 12 /network-address/parse-host/7
ok 13 /network-address/parse-host/8
ok 14 /network-address/parse-host/9
ok 15 /network-address/parse-host/10
ok 16 /network-address/parse-host/11
ok 17 /network-address/parse-host/12
ok 18 /network-address/parse-host/13
# End of parse-host tests
# Start of parse-uri tests
ok 19 /network-address/parse-uri/0
ok 20 /network-address/parse-uri/1
ok 21 /network-address/parse-uri/2
ok 22 /network-address/parse-uri/3
ok 23 /network-address/parse-uri/4
ok 24 /network-address/parse-uri/5
ok 25 /network-address/parse-uri/6
ok 26 /network-address/parse-uri/7
ok 27 /network-address/parse-uri/8
ok 28 /network-address/parse-uri/9
# End of parse-uri tests
# Start of resolve-address tests
# Input: 192.168.1.2
ok 29 /network-address/resolve-address/0
# Input: fe80::42
ok 30 /network-address/resolve-address/1
# Input: 192.168.1.2:80
ok 31 /network-address/resolve-address/2
# Input: [fe80::42]
ok 32 /network-address/resolve-address/3
# Input: [fe80::42]:80
ok 33 /network-address/resolve-address/4
# Input: 192.168.258
ok 34 /network-address/resolve-address/5
# Input: 192.11010306
ok 35 /network-address/resolve-address/6
# Input: 3232235778
ok 36 /network-address/resolve-address/7
# Input: 0300.0250.0001.0001
ok 37 /network-address/resolve-address/8
# Input: 0xC0.0xA8.0x01.0x02
ok 38 /network-address/resolve-address/9
# Input: 0xc0.0xa8.0x01.0x02
ok 39 /network-address/resolve-address/10
# Input: 0xc0a80102
ok 40 /network-address/resolve-address/11
# End of resolve-address tests
# Start of loopback tests
ok 41 /network-address/loopback/basic
ok 42 /network-address/loopback/sync
ok 43 /network-address/loopback/async
# End of loopback tests
# Start of localhost tests
ok 44 /network-address/localhost/async
ok 45 /network-address/localhost/sync
# End of localhost tests
# Start of happy-eyeballs tests
Executing: glib/network-address.test
ok 46 /network-address/happy-eyeballs/basic
ok 47 /network-address/happy-eyeballs/parallel
ok 48 /network-address/happy-eyeballs/slow-ipv4
ok 49 /network-address/happy-eyeballs/slow-ipv6
ok 50 /network-address/happy-eyeballs/very-slow-ipv6
ok 51 /network-address/happy-eyeballs/slow-connection-and-ipv4
# slow test /network-address/happy-eyeballs/slow-connection-and-ipv4 executed in 0.80 secs
# GLib-GIO-DEBUG: IPv6 DNS error: IPv6 Broken
ok 52 /network-address/happy-eyeballs/ipv6-error-ipv4-first
# GLib-GIO-DEBUG: IPv6 DNS error: IPv6 Broken
ok 53 /network-address/happy-eyeballs/ipv6-error-ipv6-first
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/865
# /network-address/happy-eyeballs/ipv6-error-ipv4-very-slow summary: Ensure that we successfully return IPv4 results even when they come significantly later than an IPv6 failure.
# GLib-GIO-DEBUG: IPv6 DNS error: IPv6 Broken
ok 54 /network-address/happy-eyeballs/ipv6-error-ipv4-very-slow
# GLib-GIO-DEBUG: IPv4 DNS error: IPv4 Broken
ok 55 /network-address/happy-eyeballs/ipv4-error-ipv6-first
# GLib-GIO-DEBUG: IPv4 DNS error: IPv4 Broken
ok 56 /network-address/happy-eyeballs/ipv4-error-ipv4-first
# GLib-GIO-DEBUG: IPv6 DNS error: IPv6 Broken
# GLib-GIO-DEBUG: IPv4 DNS error: IPv4 Broken
ok 57 /network-address/happy-eyeballs/both-error
# GLib-GIO-DEBUG: IPv6 DNS error: IPv6 Broken
# GLib-GIO-DEBUG: IPv4 DNS error: IPv4 Broken
ok 58 /network-address/happy-eyeballs/both-error-delays-1
# GLib-GIO-DEBUG: IPv4 DNS error: IPv4 Broken
# GLib-GIO-DEBUG: IPv6 DNS error: IPv6 Broken
ok 59 /network-address/happy-eyeballs/both-error-delays-2
# GLib-GIO-DEBUG: IPv4 DNS error: IPv4 Broken
ok 60 /network-address/happy-eyeballs/both-error-delays-3
# End of happy-eyeballs tests
# End of network-address tests
# Start of gresolver tests
# Start of resolve-address tests
# Input: 192.168.1.2
ok 61 /gresolver/resolve-address/0
# Input: fe80::42
ok 62 /gresolver/resolve-address/1
# Input: 192.168.1.2:80
# Error: Error resolving ?192.168.1.2:80?: Name or service not known
ok 63 /gresolver/resolve-address/2
# Input: [fe80::42]
# Error: Error resolving ?[fe80::42]?: Name or service not known
ok 64 /gresolver/resolve-address/3
# Input: [fe80::42]:80
# Error: Error resolving ?[fe80::42]:80?: Name or service not known
ok 65 /gresolver/resolve-address/4
# Input: 192.168.258
# Error: Error resolving ?192.168.258?: Name or service not known
ok 66 /gresolver/resolve-address/5
# Input: 192.11010306
# Error: Error resolving ?192.11010306?: Name or service not known
ok 67 /gresolver/resolve-address/6
# Input: 3232235778
# Error: Error resolving ?3232235778?: Name or service not known
ok 68 /gresolver/resolve-address/7
# Input: 0300.0250.0001.0001
# Error: Error resolving ?0300.0250.0001.0001?: Name or service not known
ok 69 /gresolver/resolve-address/8
# Input: 0xC0.0xA8.0x01.0x02
# Error: Error resolving ?0xC0.0xA8.0x01.0x02?: Name or service not known
ok 70 /gresolver/resolve-address/9
# Input: 0xc0.0xa8.0x01.0x02
# Error: Error resolving ?0xc0.0xa8.0x01.0x02?: Name or service not known
ok 71 /gresolver/resolve-address/10
# Input: 0xc0a80102
# Error: Error resolving ?0xc0a80102?: Name or service not known
ok 72 /gresolver/resolve-address/11
# End of resolve-address tests
# End of gresolver tests
PASS: glib/network-address.test
Running test: glib/unicode-normalize.test
TAP version 14
# random seed: R02S779552fc9c4e6b507971d08f7ee54860
1..3
# Start of unicode tests
# Processing Part0 # Specific cases
# Processing Part1 # Character by character test
# Processing Part2 # Canonical Order Test
# Processing Part3 # PRI #29 Test
# Processing Part4 # Canonical closures (excluding Hangul)
# Processing Part5 # Chained primary composites
ok 1 /unicode/normalize
# slow test /unicode/normalize executed in 1.67 secs
# Invalid UTF-8 vector 0
# Invalid UTF-8 vector 1
# Invalid UTF-8 vector 2
# Invalid UTF-8 vector 3
# Invalid UTF-8 vector 4
# Invalid UTF-8 vector 5
# Invalid UTF-8 vector 6
# Invalid UTF-8 vector 7
# Invalid UTF-8 vector 8
# Invalid UTF-8 vector 9
# Invalid UTF-8 vector 10
# Invalid UTF-8 vector 11
# Invalid UTF-8 vector 12
ok 2 /unicode/normalize-invalid
# Start of normalize tests
ok 3 /unicode/normalize/bad-length
# End of normalize tests
# End of unicode tests
PASS: glib/unicode-normalize.test
Running test: glib/memory-settings-backend.test
TAP version 14
# random seed: R02S3d2c5f3312c9e1fe9472989c203eda66
1..1
# Start of memory-settings-backend tests
ok 1 /memory-settings-backend/extension-point-registered
# End of memory-settings-backend tests
PASS: glib/memory-settings-backend.test
Running test: glib/thumbnail-verification.test
TAP version 14
# random seed: R02S7bacf24a83631882779e973cb0519446
1..1
# Start of png-thumbs tests
ok 1 /png-thumbs/validity
# End of png-thumbs tests
PASS: glib/thumbnail-verification.test
Running test: glib/assert-msg-test.py.test
TAP version 13
ok 1 __main__.TestAssertMessage.test_gassert
# assert-msg-test: /usr/libexec/installed-tests/glib/assert-msg-test
# tmpdir: /tmp/tmp6gt7i0c1
# Running: ['/usr/libexec/installed-tests/glib/assert-msg-test']
# Return code: -6
# Output:
#  Bail out! GLib:ERROR:../glib-2.84.2/glib/tests/assert-msg-test.c:31:main: assertion failed: (42 < 0)
# Error:
#  **
# GLib:ERROR:../glib-2.84.2/glib/tests/assert-msg-test.c:31:main: assertion failed: (42 < 0)
ok 2 __main__.TestAssertMessage.test_gdb_gassert # SKIP GDB is not installed, skipping this test!
# assert-msg-test: /usr/libexec/installed-tests/glib/assert-msg-test
# tmpdir: /tmp/tmp0tu61l_z
1..2
PASS: glib/assert-msg-test.py.test
Running test: glib/overflow-fallback.test
TAP version 14
# random seed: R02Sc252a1e5b6b10b698030227c381a642b
1..6
# Start of glib tests
# Start of checked-math tests
ok 1 /glib/checked-math/guint-add
ok 2 /glib/checked-math/guint-mul
ok 3 /glib/checked-math/guint64-add
ok 4 /glib/checked-math/guint64-mul
ok 5 /glib/checked-math/gsize-add
ok 6 /glib/checked-math/gsize-mul
# End of checked-math tests
# End of glib tests
PASS: glib/overflow-fallback.test
Running test: glib/utils-isolated.test
TAP version 14
# random seed: R02S720c1edf675f6a32f8d377d674b06172
1..11
# Start of utils-isolated tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/system-config1:/var/volatile/tmp/utils-isolated/tmp-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/system-data1:/var/volatile/tmp/utils-isolated/tmp-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/tmp-dir/.dirs/runtime
ok 1 /utils-isolated/tmp-dir
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/home-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/home-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/home-dir/.dirs/system-config1:/var/volatile/tmp/utils-isolated/home-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/home-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/home-dir/.dirs/system-data1:/var/volatile/tmp/utils-isolated/home-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/home-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/home-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/home-dir/.dirs/runtime
ok 2 /utils-isolated/home-dir
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/system-config1:/var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/system-data1:/var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/user-cache-dir/.dirs/runtime
ok 3 /utils-isolated/user-cache-dir
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/system-config1:/var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/system-data1:/var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/system-config-dirs/.dirs/runtime
ok 4 /utils-isolated/system-config-dirs
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/system-config1:/var/volatile/tmp/utils-isolated/user-config-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/system-data1:/var/volatile/tmp/utils-isolated/user-config-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/user-config-dir/.dirs/runtime
ok 5 /utils-isolated/user-config-dir
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/system-config1:/var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/system-data1:/var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/system-data-dirs/.dirs/runtime
ok 6 /utils-isolated/system-data-dirs
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/system-config1:/var/volatile/tmp/utils-isolated/user-data-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/system-data1:/var/volatile/tmp/utils-isolated/user-data-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/user-data-dir/.dirs/runtime
ok 7 /utils-isolated/user-data-dir
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/system-config1:/var/volatile/tmp/utils-isolated/user-state-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/system-data1:/var/volatile/tmp/utils-isolated/user-state-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/user-state-dir/.dirs/runtime
ok 8 /utils-isolated/user-state-dir
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/system-config1:/var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/system-data1:/var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/user-runtime-dir/.dirs/runtime
ok 9 /utils-isolated/user-runtime-dir
# Start of cleanup tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/system-config1:/var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/system-data1:/var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/runtime
Unable to clean up temporary directory /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs/runtime: Directory not empty
Unable to clean up temporary directory /var/volatile/tmp/utils-isolated/cleanup/handles-errors/.dirs: Directory not empty
Unable to clean up temporary directory /var/volatile/tmp/utils-isolated/cleanup/handles-errors: Directory not empty
ok 10 /utils-isolated/cleanup/handles-errors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/system-config1:/var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/system-data1:/var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks/.dirs/runtime
Unable to clean up temporary directory /var/volatile/tmp/utils-isolated/cleanup/doesnt-follow-symlinks: No such file or directory
ok 11 /utils-isolated/cleanup/doesnt-follow-symlinks
# End of cleanup tests
# End of utils-isolated tests
PASS: glib/utils-isolated.test
Running test: glib/memory-output-stream.test
TAP version 14
# random seed: R02Sf2340adef1748d2790a2d61e02ea37a4
1..10
# Start of memory-output-stream tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=540423
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=720080
ok 1 /memory-output-stream/truncate
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=540459
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=540461
ok 2 /memory-output-stream/get-data-size
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=605733
ok 3 /memory-output-stream/properties
ok 4 /memory-output-stream/write-bytes
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2471
ok 5 /memory-output-stream/write-null
ok 6 /memory-output-stream/writev
ok 7 /memory-output-stream/writev_nonblocking
ok 8 /memory-output-stream/steal_as_bytes
# Start of seek tests
ok 9 /memory-output-stream/seek/fixed
ok 10 /memory-output-stream/seek/resizable
# End of seek tests
# End of memory-output-stream tests
PASS: glib/memory-output-stream.test
Running test: glib/win32-appinfo.test
TAP version 14
# random seed: R02Sbaf9cff40903add2af20edaa5ef7951c
1..5
# Start of appinfo tests
ok 1 /appinfo/utf16-strfuncs
ok 2 /appinfo/win32-extract-executable
ok 3 /appinfo/win32-rundll32-fixup
ok 4 /appinfo/win32-parse-filename
ok 5 /appinfo/win32-utf16-conversion-fail
# Start of subprocess tests
# End of subprocess tests
# End of appinfo tests
PASS: glib/win32-appinfo.test
Running test: glib/binding.test
TAP version 14
# random seed: R02S8542e81c9a8b2e92a36229df7406ac65
1..19
# Start of binding tests
ok 1 /binding/default
# /binding/canonicalisation summary: Test that bindings set up with non-canonical property names work
ok 2 /binding/canonicalisation
ok 3 /binding/bidirectional
ok 4 /binding/transform
ok 5 /binding/transform-default
ok 6 /binding/transform-closure
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=621782
ok 7 /binding/chain
ok 8 /binding/sync-create
ok 9 /binding/invert-boolean
ok 10 /binding/same-object
ok 11 /binding/unbind
ok 12 /binding/unbind-weak
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1373
ok 13 /binding/unbind-multiple
ok 14 /binding/fail
ok 15 /binding/interface
# /binding/concurrent-unbind summary: Test that unbinding from multiple threads concurrently works correctly
ok 16 /binding/concurrent-unbind
# /binding/concurrent-finalizing summary: Test that finalizing source/target from multiple threads concurrently works correctly
ok 17 /binding/concurrent-finalizing
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2676
ok 18 /binding/dispose-source
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2676
ok 19 /binding/dispose-target
# End of binding tests
PASS: glib/binding.test
Running test: glib/utils.test
TAP version 14
# random seed: R02S2e0daf6c98ae19f3a59e4a4427e7a725
1..41
# Start of utils tests
ok 1 /utils/language-names
# Testing locale ?en?
# Testing locale ?sr@latin?
# Testing locale ?fr_BE?
# Testing locale ?sr_SR@latin?
# Testing locale ?sr_SR@latin.UTF-8?
# Testing locale ?sr@latin_invalid?
# Testing locale ?sr.UTF-8@latin?
# Testing locale ?sr.UTF-8_latin?
# Testing locale ?sr.UTF-8@latin_invalid?
ok 2 /utils/locale-variants
ok 3 /utils/version
ok 4 /utils/appname
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/847
# /utils/prgname-thread-safety summary: Test that threads racing to get and set the program name always receive a valid program name.
ok 5 /utils/prgname-thread-safety
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=627969
# /utils/tmpdir summary: Test that g_get_tmp_dir() returns a correct default if TMPDIR is set to the empty string
ok 6 /utils/tmpdir
Executing: glib/utils.test
ok 7 /utils/basic_bits
ok 8 /utils/bits
ok 9 /utils/swap
ok 10 /utils/find-program
ok 11 /utils/find-program-for-path
ok 12 /utils/debug
ok 13 /utils/codeset
ok 14 /utils/codeset2
ok 15 /utils/console-charset
ok 16 /utils/gettext
ok 17 /utils/username
ok 18 /utils/realname
ok 19 /utils/hostname
ok 20 /utils/xdgdirs
ok 21 /utils/specialdir
# NAME: Linux
ok 22 /utils/os-info
ok 23 /utils/clear-pointer
ok 24 /utils/clear-pointer-cast
ok 25 /utils/take-pointer
ok 26 /utils/clear-source
ok 27 /utils/misc-mem
# /utils/aligned-mem summary: Aligned memory allocator
# Alignment must not be zero
# Alignment must be a power of two
# Alignment must be a multiple of sizeof(void*)
ok 28 /utils/aligned-mem
# /utils/free-sized summary: Check that g_free_sized() works
ok 29 /utils/free-sized
ok 30 /utils/nullify
ok 31 /utils/atexit
ok 32 /utils/check-setuid
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1663
ok 33 /utils/int-limits
ok 34 /utils/clear-list
ok 35 /utils/clear-slist
ok 36 /utils/steal-handle-id
# Start of specialdir tests
ok 37 /utils/specialdir/desktop
# End of specialdir tests
# Start of clear-pointer tests
ok 38 /utils/clear-pointer/side-effects
# End of clear-pointer tests
# Start of aligned-mem tests
# /utils/aligned-mem/alignment summary: Check that g_aligned_alloc() returns a correctly aligned pointer
ok 39 /utils/aligned-mem/alignment
# /utils/aligned-mem/zeroed summary: Check that g_aligned_alloc0() zeroes out its allocation
ok 40 /utils/aligned-mem/zeroed
# /utils/aligned-mem/free-sized summary: Check that g_aligned_free_sized() works
ok 41 /utils/aligned-mem/free-sized
# Start of subprocess tests
# End of subprocess tests
# End of aligned-mem tests
# End of utils tests
PASS: glib/utils.test
Running test: glib/data-output-stream.test
TAP version 14
# random seed: R02Se5cbe3d631893dab385233697c6b8624
1..7
# Start of data-output-stream tests
ok 1 /data-output-stream/basic
ok 2 /data-output-stream/write-lines-LF
ok 3 /data-output-stream/write-lines-CR
ok 4 /data-output-stream/write-lines-CR-LF
ok 5 /data-output-stream/write-int
ok 6 /data-output-stream/seek
ok 7 /data-output-stream/truncate
# End of data-output-stream tests
PASS: glib/data-output-stream.test
Running test: glib/codegen.py.test
TAP version 13
ok 1 __main__.TestCodegen.test_call_flags_and_timeout_method_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmplekz9unn
# /tmp/tmplekz9unn/tmpwe5x7ov1.xml: 
#             <node>
#               <interface name="org.project.UsefulInterface">
#                 <method name="UsefulMethod"/>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmplekz9unn/tmpwe5x7ov1.xml', '--output', '-', '--header']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for org.project.UsefulInterface */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE (org_project_useful_interface_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE, OrgProjectUsefulInterface))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE))
# #define ORG_PROJECT_USEFUL_INTERFACE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE, OrgProjectUsefulInterfaceIface))
# 
# struct _OrgProjectUsefulInterface;
# typedef struct _OrgProjectUsefulInterface OrgProjectUsefulInterface;
# typedef struct _OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceIface;
# 
# struct _OrgProjectUsefulInterfaceIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_useful_method) (
#     OrgProjectUsefulInterface *object,
#     GDBusMethodInvocation *invocation);
# 
# };
# 
# GType org_project_useful_interface_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *org_project_useful_interface_interface_info (void);
# guint org_project_useful_interface_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void org_project_useful_interface_complete_useful_method (
#     OrgProjectUsefulInterface *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus method calls: */
# void org_project_useful_interface_call_useful_method (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean org_project_useful_interface_call_useful_method_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean org_project_useful_interface_call_useful_method_sync (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY (org_project_useful_interface_proxy_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxy))
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyClass))
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyClass))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY))
# 
# typedef struct _OrgProjectUsefulInterfaceProxy OrgProjectUsefulInterfaceProxy;
# typedef struct _OrgProjectUsefulInterfaceProxyClass OrgProjectUsefulInterfaceProxyClass;
# typedef struct _OrgProjectUsefulInterfaceProxyPrivate OrgProjectUsefulInterfaceProxyPrivate;
# 
# struct _OrgProjectUsefulInterfaceProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   OrgProjectUsefulInterfaceProxyPrivate *priv;
# };
# 
# struct _OrgProjectUsefulInterfaceProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType org_project_useful_interface_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectUsefulInterfaceProxy, g_object_unref)
# #endif
# 
# void org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON (org_project_useful_interface_skeleton_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeleton))
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonClass))
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonClass))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON))
# 
# typedef struct _OrgProjectUsefulInterfaceSkeleton OrgProjectUsefulInterfaceSkeleton;
# typedef struct _OrgProjectUsefulInterfaceSkeletonClass OrgProjectUsefulInterfaceSkeletonClass;
# typedef struct _OrgProjectUsefulInterfaceSkeletonPrivate OrgProjectUsefulInterfaceSkeletonPrivate;
# 
# struct _OrgProjectUsefulInterfaceSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   OrgProjectUsefulInterfaceSkeletonPrivate *priv;
# };
# 
# struct _OrgProjectUsefulInterfaceSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType org_project_useful_interface_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectUsefulInterfaceSkeleton, g_object_unref)
# #endif
# 
# OrgProjectUsefulInterface *org_project_useful_interface_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
#  
# /tmp/tmplekz9unn/tmpfnnbr_a6.xml: 
#             <node>
#               <interface name="org.project.UsefulInterface">
#                 <method name="UsefulMethod"/>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmplekz9unn/tmpfnnbr_a6.xml', '--output', '-', '--header', '--glib-min-required', '2.32']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for org.project.UsefulInterface */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE (org_project_useful_interface_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE, OrgProjectUsefulInterface))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE))
# #define ORG_PROJECT_USEFUL_INTERFACE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE, OrgProjectUsefulInterfaceIface))
# 
# struct _OrgProjectUsefulInterface;
# typedef struct _OrgProjectUsefulInterface OrgProjectUsefulInterface;
# typedef struct _OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceIface;
# 
# struct _OrgProjectUsefulInterfaceIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_useful_method) (
#     OrgProjectUsefulInterface *object,
#     GDBusMethodInvocation *invocation);
# 
# };
# 
# GType org_project_useful_interface_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *org_project_useful_interface_interface_info (void);
# guint org_project_useful_interface_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void org_project_useful_interface_complete_useful_method (
#     OrgProjectUsefulInterface *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus method calls: */
# void org_project_useful_interface_call_useful_method (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean org_project_useful_interface_call_useful_method_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean org_project_useful_interface_call_useful_method_sync (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY (org_project_useful_interface_proxy_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxy))
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyClass))
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyClass))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY))
# 
# typedef struct _OrgProjectUsefulInterfaceProxy OrgProjectUsefulInterfaceProxy;
# typedef struct _OrgProjectUsefulInterfaceProxyClass OrgProjectUsefulInterfaceProxyClass;
# typedef struct _OrgProjectUsefulInterfaceProxyPrivate OrgProjectUsefulInterfaceProxyPrivate;
# 
# struct _OrgProjectUsefulInterfaceProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   OrgProjectUsefulInterfaceProxyPrivate *priv;
# };
# 
# struct _OrgProjectUsefulInterfaceProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType org_project_useful_interface_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectUsefulInterfaceProxy, g_object_unref)
# #endif
# 
# void org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON (org_project_useful_interface_skeleton_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeleton))
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonClass))
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonClass))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON))
# 
# typedef struct _OrgProjectUsefulInterfaceSkeleton OrgProjectUsefulInterfaceSkeleton;
# typedef struct _OrgProjectUsefulInterfaceSkeletonClass OrgProjectUsefulInterfaceSkeletonClass;
# typedef struct _OrgProjectUsefulInterfaceSkeletonPrivate OrgProjectUsefulInterfaceSkeletonPrivate;
# 
# struct _OrgProjectUsefulInterfaceSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   OrgProjectUsefulInterfaceSkeletonPrivate *priv;
# };
# 
# struct _OrgProjectUsefulInterfaceSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType org_project_useful_interface_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectUsefulInterfaceSkeleton, g_object_unref)
# #endif
# 
# OrgProjectUsefulInterface *org_project_useful_interface_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
#  
# /tmp/tmplekz9unn/tmpeinz_ou4.xml: 
#             <node>
#               <interface name="org.project.UsefulInterface">
#                 <method name="UsefulMethod"/>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmplekz9unn/tmpeinz_ou4.xml', '--output', '-', '--header', '--glib-min-required', '2.64']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for org.project.UsefulInterface */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE (org_project_useful_interface_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE, OrgProjectUsefulInterface))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE))
# #define ORG_PROJECT_USEFUL_INTERFACE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE, OrgProjectUsefulInterfaceIface))
# 
# struct _OrgProjectUsefulInterface;
# typedef struct _OrgProjectUsefulInterface OrgProjectUsefulInterface;
# typedef struct _OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceIface;
# 
# struct _OrgProjectUsefulInterfaceIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_useful_method) (
#     OrgProjectUsefulInterface *object,
#     GDBusMethodInvocation *invocation);
# 
# };
# 
# GType org_project_useful_interface_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *org_project_useful_interface_interface_info (void);
# guint org_project_useful_interface_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void org_project_useful_interface_complete_useful_method (
#     OrgProjectUsefulInterface *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus method calls: */
# void org_project_useful_interface_call_useful_method (
#     OrgProjectUsefulInterface *proxy,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean org_project_useful_interface_call_useful_method_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean org_project_useful_interface_call_useful_method_sync (
#     OrgProjectUsefulInterface *proxy,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY (org_project_useful_interface_proxy_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxy))
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyClass))
# #define ORG_PROJECT_USEFUL_INTERFACE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyClass))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY))
# 
# typedef struct _OrgProjectUsefulInterfaceProxy OrgProjectUsefulInterfaceProxy;
# typedef struct _OrgProjectUsefulInterfaceProxyClass OrgProjectUsefulInterfaceProxyClass;
# typedef struct _OrgProjectUsefulInterfaceProxyPrivate OrgProjectUsefulInterfaceProxyPrivate;
# 
# struct _OrgProjectUsefulInterfaceProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   OrgProjectUsefulInterfaceProxyPrivate *priv;
# };
# 
# struct _OrgProjectUsefulInterfaceProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType org_project_useful_interface_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectUsefulInterfaceProxy, g_object_unref)
# #endif
# 
# void org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectUsefulInterface *org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON (org_project_useful_interface_skeleton_get_type ())
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeleton))
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonClass))
# #define ORG_PROJECT_USEFUL_INTERFACE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonClass))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON))
# #define IS_ORG_PROJECT_USEFUL_INTERFACE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON))
# 
# typedef struct _OrgProjectUsefulInterfaceSkeleton OrgProjectUsefulInterfaceSkeleton;
# typedef struct _OrgProjectUsefulInterfaceSkeletonClass OrgProjectUsefulInterfaceSkeletonClass;
# typedef struct _OrgProjectUsefulInterfaceSkeletonPrivate OrgProjectUsefulInterfaceSkeletonPrivate;
# 
# struct _OrgProjectUsefulInterfaceSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   OrgProjectUsefulInterfaceSkeletonPrivate *priv;
# };
# 
# struct _OrgProjectUsefulInterfaceSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType org_project_useful_interface_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectUsefulInterfaceSkeleton, g_object_unref)
# #endif
# 
# OrgProjectUsefulInterface *org_project_useful_interface_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
ok 2 __main__.TestCodegen.test_dbus_types
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpw_ox0zpc
# /tmp/tmpw_ox0zpc/tmp6bkjsnpl.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="{vs}" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmp6bkjsnpl.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "{vs}". "v" is not a valid type for dictionary keys at position 1.
# /tmp/tmpw_ox0zpc/tmp8gxxvg3h.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="(ss(s{{sv}s}))" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmp8gxxvg3h.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "(ss(s{{sv}s}))". "{" is not a valid type for dictionary keys at position 6.
# /tmp/tmpw_ox0zpc/tmp1tqkepna.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="{s" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmp1tqkepna.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "{s". Error parsing string or brackets not closed.
# /tmp/tmpw_ox0zpc/tmpp3b3hafa.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="(s{sss})" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpp3b3hafa.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "(s{sss})". Dict must end with "}" at position 5.
# /tmp/tmpw_ox0zpc/tmp6_qa0bd4.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="z" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmp6_qa0bd4.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "z". "z" is not a valid D-Bus type.
# /tmp/tmpw_ox0zpc/tmpzsd40e54.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="(ssms)" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpzsd40e54.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "(ssms)". "m" is not a valid D-Bus type.
# /tmp/tmpw_ox0zpc/tmpjft3mo0n.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="(" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpjft3mo0n.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "(". Error parsing string or brackets not closed.
# /tmp/tmpw_ox0zpc/tmppb61dyhy.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="(((ss))" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmppb61dyhy.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "(((ss))". Error parsing string or brackets not closed.
# /tmp/tmpw_ox0zpc/tmpqoysqmkb.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpqoysqmkb.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas". Too much recursion beginning at 129.
# /tmp/tmpw_ox0zpc/tmpntid1b_y.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((s))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpntid1b_y.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: D-Bus maximum signature length of 255 exceeded.
# /tmp/tmpw_ox0zpc/tmp5suq23la.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{sv}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmp5suq23la.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: D-Bus maximum signature length of 255 exceeded.
# /tmp/tmpw_ox0zpc/tmpsdcwsoi7.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaa{sv})" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpsdcwsoi7.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Bad signature "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaa{sv})". Too much recursion beginning at 129.
# /tmp/tmpw_ox0zpc/tmpx05pxk4f.xml: 
#                 <node>
#                   <interface name="BadTypes">
#                     <property type="(ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss)" name="BadPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpx05pxk4f.xml', '--output', '-', '--body']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: D-Bus maximum signature length of 255 exceeded.
# /tmp/tmpw_ox0zpc/tmpcwrp6sv0.xml: 
#                 <node>
#                   <interface name="GoodTypes">
#                     <property type="si{s{b(ybnqiuxtdh)}}{yv}{nv}{dv}" name="GoodPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmpcwrp6sv0.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface GoodTypes
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:GoodTypes
#  * @title: GoodTypes
#  * @short_description: Generated C code for the GoodTypes D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for GoodTypes ---- */
# 
# static const _ExtendedGDBusPropertyInfo _good_types_property_info_good_property_type =
# {
#   {
#     -1,
#     (gchar *) "GoodPropertyType",
#     (gchar *) "si{s{b(ybnqiuxtdh)}}{yv}{nv}{dv}",
#     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
#     NULL
#   },
#   "good-property-type",
#   FALSE,
#   TRUE
# };
# 
# static const GDBusPropertyInfo * const _good_types_property_info_pointers[] =
# {
#   &_good_types_property_info_good_property_type.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _good_types_interface_info =
# {
#   {
#     -1,
#     (gchar *) "GoodTypes",
#     NULL,
#     NULL,
#     (GDBusPropertyInfo **) &_good_types_property_info_pointers,
#     NULL
#   },
#   "good-types",
# };
# 
# 
# /**
#  * good_types_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# good_types_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct;
# }
# 
# /**
#  * good_types_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# good_types_override_properties (GObjectClass *klass, guint property_id_begin)
# {
#   g_object_class_override_property (klass, property_id_begin++, "good-property-type");
#   return property_id_begin - 1;
# }
# 
# 
# 
# /**
#  * GoodTypes:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  */
# 
# /**
#  * GoodTypesIface:
#  * @parent_iface: The parent interface.
#  * @get_good_property_type: Getter for the #GoodTypes:good-property-type property.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  */
# 
# typedef GoodTypesIface GoodTypesInterface;
# G_DEFINE_INTERFACE (GoodTypes, good_types, G_TYPE_OBJECT)
# 
# static void
# good_types_default_init (GoodTypesIface *iface)
# {
#   /* GObject properties for D-Bus properties: */
#   /**
#    * GoodTypes:good-property-type:
#    *
#    * Represents the D-Bus property <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link>.
#    *
#    * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
#    */
#   g_object_interface_install_property (iface,
#     g_param_spec_variant ("good-property-type", "GoodPropertyType", "GoodPropertyType", G_VARIANT_TYPE ("si{s{b(ybnqiuxtdh)}}{yv}{nv}{dv}"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
# }
# 
# /**
#  * good_types_get_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Gets the value of the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use good_types_dup_good_property_type() if on another thread.
#  *
#  * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
#  */
# GVariant *
# good_types_get_good_property_type (GoodTypes *object)
# {
#   g_return_val_if_fail (IS_GOOD_TYPES (object), NULL);
# 
#   return GOOD_TYPES_GET_IFACE (object)->get_good_property_type (object);
# }
# 
# /**
#  * good_types_dup_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Gets a copy of the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
#  */
# GVariant *
# good_types_dup_good_property_type (GoodTypes *object)
# {
#   GVariant *value;
#   g_object_get (G_OBJECT (object), "good-property-type", &value, NULL);
#   return value;
# }
# 
# /**
#  * good_types_set_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  * @value: The value to set.
#  *
#  * Sets the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property to @value.
#  *
#  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
#  */
# void
# good_types_set_good_property_type (GoodTypes *object, GVariant *value)
# {
#   g_object_set (G_OBJECT (object), "good-property-type", value, NULL);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * GoodTypesProxy:
#  *
#  * The <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Proxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * GoodTypesProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Proxy.
#  */
# 
# struct _GoodTypesProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void good_types_proxy_iface_init (GoodTypesIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (GoodTypesProxy, good_types_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (GoodTypesProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (GoodTypesProxy, good_types_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_proxy_iface_init))
# 
# #endif
# static void
# good_types_proxy_finalize (GObject *object)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (good_types_proxy_parent_class)->finalize (object);
# }
# 
# static void
# good_types_proxy_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
#   if (info->use_gvariant)
#     {
#       g_value_set_variant (value, variant);
#     }
#   else
#     {
#       if (variant != NULL)
#         g_dbus_gvariant_to_gvalue (variant, value);
#     }
#   if (variant != NULL)
#     g_variant_unref (variant);
# }
# 
# static void
# good_types_proxy_set_property_cb (GDBusProxy *proxy,
#   GAsyncResult *res,
#   gpointer      user_data)
# {
#   const _ExtendedGDBusPropertyInfo *info = user_data;
#   GError *error;
#   GVariant *_ret;
#   error = NULL;
#   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
#   if (!_ret)
#     {
#       g_warning ("Error setting property '%s' on interface GoodTypes: %s (%s, %d)",
#                  info->parent_struct.name, 
#                  error->message, g_quark_to_string (error->domain), error->code);
#       g_error_free (error);
#     }
#   else
#     {
#       g_variant_unref (_ret);
#     }
# }
# 
# static void
# good_types_proxy_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
#   g_dbus_proxy_call (G_DBUS_PROXY (object),
#     "org.freedesktop.DBus.Properties.Set",
#     g_variant_new ("(ssv)", "GoodTypes", info->parent_struct.name, variant),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     NULL, (GAsyncReadyCallback) good_types_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
#   g_variant_unref (variant);
# }
# 
# static void
# good_types_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_GOOD_TYPES);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_GOOD_TYPES);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# good_types_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static GVariant *
# good_types_proxy_get_good_property_type (GoodTypes *object)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (object);
#   GVariant *variant;
#   GVariant *value = NULL;
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "GoodPropertyType");
#   value = variant;
#   if (variant != NULL)
#     g_variant_unref (variant);
#   return value;
# }
# 
# static void
# good_types_proxy_init (GoodTypesProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = good_types_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_GOOD_TYPES_PROXY, GoodTypesProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), good_types_interface_info ());
# }
# 
# static void
# good_types_proxy_class_init (GoodTypesProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = good_types_proxy_finalize;
#   gobject_class->get_property = good_types_proxy_get_property;
#   gobject_class->set_property = good_types_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = good_types_proxy_g_signal;
#   proxy_class->g_properties_changed = good_types_proxy_g_properties_changed;
# 
#   good_types_override_properties (gobject_class, 1);
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (GoodTypesProxyPrivate));
# #endif
# }
# 
# static void
# good_types_proxy_iface_init (GoodTypesIface *iface)
# {
#   iface->get_good_property_type = good_types_proxy_get_good_property_type;
# }
# 
# /**
#  * good_types_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call good_types_proxy_new_finish() to get the result of the operation.
#  *
#  * See good_types_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# good_types_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_GOOD_TYPES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
# }
# 
# /**
#  * good_types_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to good_types_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with good_types_proxy_new().
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * good_types_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See good_types_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_GOOD_TYPES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * good_types_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like good_types_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call good_types_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See good_types_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# good_types_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_GOOD_TYPES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
# }
# 
# /**
#  * good_types_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to good_types_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with good_types_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * good_types_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like good_types_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See good_types_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_GOOD_TYPES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * GoodTypesSkeleton:
#  *
#  * The <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Skeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * GoodTypesSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Skeleton.
#  */
# 
# struct _GoodTypesSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _good_types_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_GOOD_TYPES);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_GOOD_TYPES);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _good_types_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _good_types_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _good_types_skeleton_vtable =
# {
#   _good_types_skeleton_handle_method_call,
#   _good_types_skeleton_handle_get_property,
#   _good_types_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# good_types_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return good_types_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# good_types_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_good_types_skeleton_vtable;
# }
# 
# static GVariant *
# good_types_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_good_types_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _good_types_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _good_types_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _good_types_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "GoodTypes", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static gboolean _good_types_emit_changed (gpointer user_data);
# 
# static void
# good_types_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (_skeleton);
#   gboolean emit_changed = FALSE;
# 
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     {
#       g_source_destroy (skeleton->priv->changed_properties_idle_source);
#       skeleton->priv->changed_properties_idle_source = NULL;
#       emit_changed = TRUE;
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# 
#   if (emit_changed)
#     _good_types_emit_changed (skeleton);
# }
# 
# static void good_types_skeleton_iface_init (GoodTypesIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (GoodTypesSkeleton, good_types_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (GoodTypesSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (GoodTypesSkeleton, good_types_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_skeleton_iface_init))
# 
# #endif
# static void
# good_types_skeleton_finalize (GObject *object)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   guint n;
#   for (n = 0; n < 1; n++)
#     g_value_unset (&skeleton->priv->properties[n]);
#   g_free (skeleton->priv->properties);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (good_types_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# good_types_skeleton_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   g_mutex_lock (&skeleton->priv->lock);
#   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static gboolean
# _good_types_emit_changed (gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GList *l;
#   GVariantBuilder builder;
#   GVariantBuilder invalidated_builder;
#   guint num_changes;
# 
#   g_mutex_lock (&skeleton->priv->lock);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init_static (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #else
#   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #endif
#   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
#     {
#       ChangedProperty *cp = l->data;
#       GVariant *variant;
#       const GValue *cur_value;
# 
#       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
#       if (!_g_value_equal (cur_value, &cp->orig_value))
#         {
#           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
#           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
#           g_variant_unref (variant);
#           num_changes++;
#         }
#     }
#   if (num_changes > 0)
#     {
#       GList *connections, *ll;
#       GVariant *signal_variant;
#       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "GoodTypes",
#                                            &builder, &invalidated_builder));
#       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
#       for (ll = connections; ll != NULL; ll = ll->next)
#         {
#           GDBusConnection *connection = ll->data;
# 
#           g_dbus_connection_emit_signal (connection,
#                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
#                                          "org.freedesktop.DBus.Properties",
#                                          "PropertiesChanged",
#                                          signal_variant,
#                                          NULL);
#         }
#       g_variant_unref (signal_variant);
#       g_list_free_full (connections, g_object_unref);
#     }
#   else
#     {
#       g_variant_builder_clear (&builder);
#       g_variant_builder_clear (&invalidated_builder);
#     }
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   skeleton->priv->changed_properties = NULL;
#   skeleton->priv->changed_properties_idle_source = NULL;
#   g_mutex_unlock (&skeleton->priv->lock);
#   return FALSE;
# }
# 
# static void
# _good_types_schedule_emit_changed (GoodTypesSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
# {
#   ChangedProperty *cp;
#   GList *l;
#   cp = NULL;
#   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
#     {
#       ChangedProperty *i_cp = l->data;
#       if (i_cp->info == info)
#         {
#           cp = i_cp;
#           break;
#         }
#     }
#   if (cp == NULL)
#     {
#       cp = g_new0 (ChangedProperty, 1);
#       cp->prop_id = prop_id;
#       cp->info = info;
#       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
#       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
#       g_value_copy (orig_value, &cp->orig_value);
#     }
# }
# 
# static void
# good_types_skeleton_notify (GObject      *object,
#   GParamSpec *pspec G_GNUC_UNUSED)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties != NULL &&
#       skeleton->priv->changed_properties_idle_source == NULL)
#     {
#       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
#       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
#       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _good_types_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
#       g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _good_types_emit_changed");
#       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
#       g_source_unref (skeleton->priv->changed_properties_idle_source);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static void
# good_types_skeleton_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   g_mutex_lock (&skeleton->priv->lock);
#   g_object_freeze_notify (object);
#   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
#     {
#       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL &&
#           info->emits_changed_signal)
#         _good_types_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]);
#       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
#       g_object_notify_by_pspec (object, pspec);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
#   g_object_thaw_notify (object);
# }
# 
# static void
# good_types_skeleton_init (GoodTypesSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = good_types_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_GOOD_TYPES_SKELETON, GoodTypesSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
#   skeleton->priv->properties = g_new0 (GValue, 1);
#   g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT);
# }
# 
# static GVariant *
# good_types_skeleton_get_good_property_type (GoodTypes *object)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   GVariant *value;
#   g_mutex_lock (&skeleton->priv->lock);
#   value = g_marshal_value_peek_variant (&(skeleton->priv->properties[0]));
#   g_mutex_unlock (&skeleton->priv->lock);
#   return value;
# }
# 
# static void
# good_types_skeleton_class_init (GoodTypesSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = good_types_skeleton_finalize;
#   gobject_class->get_property = good_types_skeleton_get_property;
#   gobject_class->set_property = good_types_skeleton_set_property;
#   gobject_class->notify       = good_types_skeleton_notify;
# 
# 
#   good_types_override_properties (gobject_class, 1);
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = good_types_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = good_types_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = good_types_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = good_types_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (GoodTypesSkeletonPrivate));
# #endif
# }
# 
# static void
# good_types_skeleton_iface_init (GoodTypesIface *iface)
# {
#   iface->get_good_property_type = good_types_skeleton_get_good_property_type;
# }
# 
# /**
#  * good_types_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Returns: (transfer full) (type GoodTypesSkeleton): The skeleton object.
#  */
# GoodTypes *
# good_types_skeleton_new (void)
# {
#   return GOOD_TYPES (g_object_new (TYPE_GOOD_TYPES_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpw_ox0zpc/tmplu7y1gz2.xml: 
#                 <node>
#                   <interface name="GoodTypes">
#                     <property type="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas" name="GoodPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmplu7y1gz2.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface GoodTypes
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:GoodTypes
#  * @title: GoodTypes
#  * @short_description: Generated C code for the GoodTypes D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for GoodTypes ---- */
# 
# static const _ExtendedGDBusPropertyInfo _good_types_property_info_good_property_type =
# {
#   {
#     -1,
#     (gchar *) "GoodPropertyType",
#     (gchar *) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas",
#     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
#     NULL
#   },
#   "good-property-type",
#   FALSE,
#   TRUE
# };
# 
# static const GDBusPropertyInfo * const _good_types_property_info_pointers[] =
# {
#   &_good_types_property_info_good_property_type.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _good_types_interface_info =
# {
#   {
#     -1,
#     (gchar *) "GoodTypes",
#     NULL,
#     NULL,
#     (GDBusPropertyInfo **) &_good_types_property_info_pointers,
#     NULL
#   },
#   "good-types",
# };
# 
# 
# /**
#  * good_types_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# good_types_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct;
# }
# 
# /**
#  * good_types_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# good_types_override_properties (GObjectClass *klass, guint property_id_begin)
# {
#   g_object_class_override_property (klass, property_id_begin++, "good-property-type");
#   return property_id_begin - 1;
# }
# 
# 
# 
# /**
#  * GoodTypes:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  */
# 
# /**
#  * GoodTypesIface:
#  * @parent_iface: The parent interface.
#  * @get_good_property_type: Getter for the #GoodTypes:good-property-type property.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  */
# 
# typedef GoodTypesIface GoodTypesInterface;
# G_DEFINE_INTERFACE (GoodTypes, good_types, G_TYPE_OBJECT)
# 
# static void
# good_types_default_init (GoodTypesIface *iface)
# {
#   /* GObject properties for D-Bus properties: */
#   /**
#    * GoodTypes:good-property-type:
#    *
#    * Represents the D-Bus property <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link>.
#    *
#    * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
#    */
#   g_object_interface_install_property (iface,
#     g_param_spec_variant ("good-property-type", "GoodPropertyType", "GoodPropertyType", G_VARIANT_TYPE ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
# }
# 
# /**
#  * good_types_get_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Gets the value of the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use good_types_dup_good_property_type() if on another thread.
#  *
#  * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
#  */
# GVariant *
# good_types_get_good_property_type (GoodTypes *object)
# {
#   g_return_val_if_fail (IS_GOOD_TYPES (object), NULL);
# 
#   return GOOD_TYPES_GET_IFACE (object)->get_good_property_type (object);
# }
# 
# /**
#  * good_types_dup_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Gets a copy of the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
#  */
# GVariant *
# good_types_dup_good_property_type (GoodTypes *object)
# {
#   GVariant *value;
#   g_object_get (G_OBJECT (object), "good-property-type", &value, NULL);
#   return value;
# }
# 
# /**
#  * good_types_set_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  * @value: The value to set.
#  *
#  * Sets the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property to @value.
#  *
#  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
#  */
# void
# good_types_set_good_property_type (GoodTypes *object, GVariant *value)
# {
#   g_object_set (G_OBJECT (object), "good-property-type", value, NULL);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * GoodTypesProxy:
#  *
#  * The <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Proxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * GoodTypesProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Proxy.
#  */
# 
# struct _GoodTypesProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void good_types_proxy_iface_init (GoodTypesIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (GoodTypesProxy, good_types_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (GoodTypesProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (GoodTypesProxy, good_types_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_proxy_iface_init))
# 
# #endif
# static void
# good_types_proxy_finalize (GObject *object)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (good_types_proxy_parent_class)->finalize (object);
# }
# 
# static void
# good_types_proxy_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
#   if (info->use_gvariant)
#     {
#       g_value_set_variant (value, variant);
#     }
#   else
#     {
#       if (variant != NULL)
#         g_dbus_gvariant_to_gvalue (variant, value);
#     }
#   if (variant != NULL)
#     g_variant_unref (variant);
# }
# 
# static void
# good_types_proxy_set_property_cb (GDBusProxy *proxy,
#   GAsyncResult *res,
#   gpointer      user_data)
# {
#   const _ExtendedGDBusPropertyInfo *info = user_data;
#   GError *error;
#   GVariant *_ret;
#   error = NULL;
#   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
#   if (!_ret)
#     {
#       g_warning ("Error setting property '%s' on interface GoodTypes: %s (%s, %d)",
#                  info->parent_struct.name, 
#                  error->message, g_quark_to_string (error->domain), error->code);
#       g_error_free (error);
#     }
#   else
#     {
#       g_variant_unref (_ret);
#     }
# }
# 
# static void
# good_types_proxy_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
#   g_dbus_proxy_call (G_DBUS_PROXY (object),
#     "org.freedesktop.DBus.Properties.Set",
#     g_variant_new ("(ssv)", "GoodTypes", info->parent_struct.name, variant),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     NULL, (GAsyncReadyCallback) good_types_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
#   g_variant_unref (variant);
# }
# 
# static void
# good_types_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_GOOD_TYPES);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_GOOD_TYPES);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# good_types_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static GVariant *
# good_types_proxy_get_good_property_type (GoodTypes *object)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (object);
#   GVariant *variant;
#   GVariant *value = NULL;
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "GoodPropertyType");
#   value = variant;
#   if (variant != NULL)
#     g_variant_unref (variant);
#   return value;
# }
# 
# static void
# good_types_proxy_init (GoodTypesProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = good_types_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_GOOD_TYPES_PROXY, GoodTypesProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), good_types_interface_info ());
# }
# 
# static void
# good_types_proxy_class_init (GoodTypesProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = good_types_proxy_finalize;
#   gobject_class->get_property = good_types_proxy_get_property;
#   gobject_class->set_property = good_types_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = good_types_proxy_g_signal;
#   proxy_class->g_properties_changed = good_types_proxy_g_properties_changed;
# 
#   good_types_override_properties (gobject_class, 1);
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (GoodTypesProxyPrivate));
# #endif
# }
# 
# static void
# good_types_proxy_iface_init (GoodTypesIface *iface)
# {
#   iface->get_good_property_type = good_types_proxy_get_good_property_type;
# }
# 
# /**
#  * good_types_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call good_types_proxy_new_finish() to get the result of the operation.
#  *
#  * See good_types_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# good_types_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_GOOD_TYPES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
# }
# 
# /**
#  * good_types_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to good_types_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with good_types_proxy_new().
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * good_types_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See good_types_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_GOOD_TYPES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * good_types_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like good_types_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call good_types_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See good_types_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# good_types_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_GOOD_TYPES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
# }
# 
# /**
#  * good_types_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to good_types_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with good_types_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * good_types_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like good_types_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See good_types_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_GOOD_TYPES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * GoodTypesSkeleton:
#  *
#  * The <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Skeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * GoodTypesSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Skeleton.
#  */
# 
# struct _GoodTypesSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _good_types_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_GOOD_TYPES);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_GOOD_TYPES);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _good_types_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _good_types_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _good_types_skeleton_vtable =
# {
#   _good_types_skeleton_handle_method_call,
#   _good_types_skeleton_handle_get_property,
#   _good_types_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# good_types_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return good_types_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# good_types_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_good_types_skeleton_vtable;
# }
# 
# static GVariant *
# good_types_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_good_types_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _good_types_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _good_types_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _good_types_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "GoodTypes", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static gboolean _good_types_emit_changed (gpointer user_data);
# 
# static void
# good_types_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (_skeleton);
#   gboolean emit_changed = FALSE;
# 
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     {
#       g_source_destroy (skeleton->priv->changed_properties_idle_source);
#       skeleton->priv->changed_properties_idle_source = NULL;
#       emit_changed = TRUE;
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# 
#   if (emit_changed)
#     _good_types_emit_changed (skeleton);
# }
# 
# static void good_types_skeleton_iface_init (GoodTypesIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (GoodTypesSkeleton, good_types_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (GoodTypesSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (GoodTypesSkeleton, good_types_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_skeleton_iface_init))
# 
# #endif
# static void
# good_types_skeleton_finalize (GObject *object)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   guint n;
#   for (n = 0; n < 1; n++)
#     g_value_unset (&skeleton->priv->properties[n]);
#   g_free (skeleton->priv->properties);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (good_types_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# good_types_skeleton_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   g_mutex_lock (&skeleton->priv->lock);
#   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static gboolean
# _good_types_emit_changed (gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GList *l;
#   GVariantBuilder builder;
#   GVariantBuilder invalidated_builder;
#   guint num_changes;
# 
#   g_mutex_lock (&skeleton->priv->lock);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init_static (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #else
#   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #endif
#   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
#     {
#       ChangedProperty *cp = l->data;
#       GVariant *variant;
#       const GValue *cur_value;
# 
#       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
#       if (!_g_value_equal (cur_value, &cp->orig_value))
#         {
#           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
#           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
#           g_variant_unref (variant);
#           num_changes++;
#         }
#     }
#   if (num_changes > 0)
#     {
#       GList *connections, *ll;
#       GVariant *signal_variant;
#       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "GoodTypes",
#                                            &builder, &invalidated_builder));
#       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
#       for (ll = connections; ll != NULL; ll = ll->next)
#         {
#           GDBusConnection *connection = ll->data;
# 
#           g_dbus_connection_emit_signal (connection,
#                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
#                                          "org.freedesktop.DBus.Properties",
#                                          "PropertiesChanged",
#                                          signal_variant,
#                                          NULL);
#         }
#       g_variant_unref (signal_variant);
#       g_list_free_full (connections, g_object_unref);
#     }
#   else
#     {
#       g_variant_builder_clear (&builder);
#       g_variant_builder_clear (&invalidated_builder);
#     }
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   skeleton->priv->changed_properties = NULL;
#   skeleton->priv->changed_properties_idle_source = NULL;
#   g_mutex_unlock (&skeleton->priv->lock);
#   return FALSE;
# }
# 
# static void
# _good_types_schedule_emit_changed (GoodTypesSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
# {
#   ChangedProperty *cp;
#   GList *l;
#   cp = NULL;
#   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
#     {
#       ChangedProperty *i_cp = l->data;
#       if (i_cp->info == info)
#         {
#           cp = i_cp;
#           break;
#         }
#     }
#   if (cp == NULL)
#     {
#       cp = g_new0 (ChangedProperty, 1);
#       cp->prop_id = prop_id;
#       cp->info = info;
#       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
#       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
#       g_value_copy (orig_value, &cp->orig_value);
#     }
# }
# 
# static void
# good_types_skeleton_notify (GObject      *object,
#   GParamSpec *pspec G_GNUC_UNUSED)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties != NULL &&
#       skeleton->priv->changed_properties_idle_source == NULL)
#     {
#       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
#       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
#       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _good_types_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
#       g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _good_types_emit_changed");
#       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
#       g_source_unref (skeleton->priv->changed_properties_idle_source);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static void
# good_types_skeleton_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   g_mutex_lock (&skeleton->priv->lock);
#   g_object_freeze_notify (object);
#   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
#     {
#       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL &&
#           info->emits_changed_signal)
#         _good_types_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]);
#       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
#       g_object_notify_by_pspec (object, pspec);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
#   g_object_thaw_notify (object);
# }
# 
# static void
# good_types_skeleton_init (GoodTypesSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = good_types_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_GOOD_TYPES_SKELETON, GoodTypesSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
#   skeleton->priv->properties = g_new0 (GValue, 1);
#   g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT);
# }
# 
# static GVariant *
# good_types_skeleton_get_good_property_type (GoodTypes *object)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   GVariant *value;
#   g_mutex_lock (&skeleton->priv->lock);
#   value = g_marshal_value_peek_variant (&(skeleton->priv->properties[0]));
#   g_mutex_unlock (&skeleton->priv->lock);
#   return value;
# }
# 
# static void
# good_types_skeleton_class_init (GoodTypesSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = good_types_skeleton_finalize;
#   gobject_class->get_property = good_types_skeleton_get_property;
#   gobject_class->set_property = good_types_skeleton_set_property;
#   gobject_class->notify       = good_types_skeleton_notify;
# 
# 
#   good_types_override_properties (gobject_class, 1);
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = good_types_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = good_types_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = good_types_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = good_types_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (GoodTypesSkeletonPrivate));
# #endif
# }
# 
# static void
# good_types_skeleton_iface_init (GoodTypesIface *iface)
# {
#   iface->get_good_property_type = good_types_skeleton_get_good_property_type;
# }
# 
# /**
#  * good_types_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Returns: (transfer full) (type GoodTypesSkeleton): The skeleton object.
#  */
# GoodTypes *
# good_types_skeleton_new (void)
# {
#   return GOOD_TYPES (g_object_new (TYPE_GOOD_TYPES_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpw_ox0zpc/tmp3t_ferx4.xml: 
#                 <node>
#                   <interface name="GoodTypes">
#                     <property type="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa{sv})" name="GoodPropertyType" access="read" />
#                   </interface>
#                 </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpw_ox0zpc/tmp3t_ferx4.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface GoodTypes
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:GoodTypes
#  * @title: GoodTypes
#  * @short_description: Generated C code for the GoodTypes D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for GoodTypes ---- */
# 
# static const _ExtendedGDBusPropertyInfo _good_types_property_info_good_property_type =
# {
#   {
#     -1,
#     (gchar *) "GoodPropertyType",
#     (gchar *) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa{sv})",
#     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
#     NULL
#   },
#   "good-property-type",
#   FALSE,
#   TRUE
# };
# 
# static const GDBusPropertyInfo * const _good_types_property_info_pointers[] =
# {
#   &_good_types_property_info_good_property_type.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _good_types_interface_info =
# {
#   {
#     -1,
#     (gchar *) "GoodTypes",
#     NULL,
#     NULL,
#     (GDBusPropertyInfo **) &_good_types_property_info_pointers,
#     NULL
#   },
#   "good-types",
# };
# 
# 
# /**
#  * good_types_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# good_types_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct;
# }
# 
# /**
#  * good_types_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link> interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# good_types_override_properties (GObjectClass *klass, guint property_id_begin)
# {
#   g_object_class_override_property (klass, property_id_begin++, "good-property-type");
#   return property_id_begin - 1;
# }
# 
# 
# 
# /**
#  * GoodTypes:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  */
# 
# /**
#  * GoodTypesIface:
#  * @parent_iface: The parent interface.
#  * @get_good_property_type: Getter for the #GoodTypes:good-property-type property.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  */
# 
# typedef GoodTypesIface GoodTypesInterface;
# G_DEFINE_INTERFACE (GoodTypes, good_types, G_TYPE_OBJECT)
# 
# static void
# good_types_default_init (GoodTypesIface *iface)
# {
#   /* GObject properties for D-Bus properties: */
#   /**
#    * GoodTypes:good-property-type:
#    *
#    * Represents the D-Bus property <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link>.
#    *
#    * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
#    */
#   g_object_interface_install_property (iface,
#     g_param_spec_variant ("good-property-type", "GoodPropertyType", "GoodPropertyType", G_VARIANT_TYPE ("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa(aaaaaaaaaaaaaaaaa{sv})"), NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
# }
# 
# /**
#  * good_types_get_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Gets the value of the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use good_types_dup_good_property_type() if on another thread.
#  *
#  * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
#  */
# GVariant *
# good_types_get_good_property_type (GoodTypes *object)
# {
#   g_return_val_if_fail (IS_GOOD_TYPES (object), NULL);
# 
#   return GOOD_TYPES_GET_IFACE (object)->get_good_property_type (object);
# }
# 
# /**
#  * good_types_dup_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Gets a copy of the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_variant_unref().
#  */
# GVariant *
# good_types_dup_good_property_type (GoodTypes *object)
# {
#   GVariant *value;
#   g_object_get (G_OBJECT (object), "good-property-type", &value, NULL);
#   return value;
# }
# 
# /**
#  * good_types_set_good_property_type: (skip)
#  * @object: A <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  * @value: The value to set.
#  *
#  * Sets the <link linkend="gdbus-property-GoodTypes.GoodPropertyType">"GoodPropertyType"</link> D-Bus property to @value.
#  *
#  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
#  */
# void
# good_types_set_good_property_type (GoodTypes *object, GVariant *value)
# {
#   g_object_set (G_OBJECT (object), "good-property-type", value, NULL);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * GoodTypesProxy:
#  *
#  * The <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Proxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * GoodTypesProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Proxy.
#  */
# 
# struct _GoodTypesProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void good_types_proxy_iface_init (GoodTypesIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (GoodTypesProxy, good_types_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (GoodTypesProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (GoodTypesProxy, good_types_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_proxy_iface_init))
# 
# #endif
# static void
# good_types_proxy_finalize (GObject *object)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (good_types_proxy_parent_class)->finalize (object);
# }
# 
# static void
# good_types_proxy_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
#   if (info->use_gvariant)
#     {
#       g_value_set_variant (value, variant);
#     }
#   else
#     {
#       if (variant != NULL)
#         g_dbus_gvariant_to_gvalue (variant, value);
#     }
#   if (variant != NULL)
#     g_variant_unref (variant);
# }
# 
# static void
# good_types_proxy_set_property_cb (GDBusProxy *proxy,
#   GAsyncResult *res,
#   gpointer      user_data)
# {
#   const _ExtendedGDBusPropertyInfo *info = user_data;
#   GError *error;
#   GVariant *_ret;
#   error = NULL;
#   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
#   if (!_ret)
#     {
#       g_warning ("Error setting property '%s' on interface GoodTypes: %s (%s, %d)",
#                  info->parent_struct.name, 
#                  error->message, g_quark_to_string (error->domain), error->code);
#       g_error_free (error);
#     }
#   else
#     {
#       g_variant_unref (_ret);
#     }
# }
# 
# static void
# good_types_proxy_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
#   g_dbus_proxy_call (G_DBUS_PROXY (object),
#     "org.freedesktop.DBus.Properties.Set",
#     g_variant_new ("(ssv)", "GoodTypes", info->parent_struct.name, variant),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     NULL, (GAsyncReadyCallback) good_types_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
#   g_variant_unref (variant);
# }
# 
# static void
# good_types_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_GOOD_TYPES);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_GOOD_TYPES);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# good_types_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static GVariant *
# good_types_proxy_get_good_property_type (GoodTypes *object)
# {
#   GoodTypesProxy *proxy = GOOD_TYPES_PROXY (object);
#   GVariant *variant;
#   GVariant *value = NULL;
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "GoodPropertyType");
#   value = variant;
#   if (variant != NULL)
#     g_variant_unref (variant);
#   return value;
# }
# 
# static void
# good_types_proxy_init (GoodTypesProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = good_types_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_GOOD_TYPES_PROXY, GoodTypesProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), good_types_interface_info ());
# }
# 
# static void
# good_types_proxy_class_init (GoodTypesProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = good_types_proxy_finalize;
#   gobject_class->get_property = good_types_proxy_get_property;
#   gobject_class->set_property = good_types_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = good_types_proxy_g_signal;
#   proxy_class->g_properties_changed = good_types_proxy_g_properties_changed;
# 
#   good_types_override_properties (gobject_class, 1);
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (GoodTypesProxyPrivate));
# #endif
# }
# 
# static void
# good_types_proxy_iface_init (GoodTypesIface *iface)
# {
#   iface->get_good_property_type = good_types_proxy_get_good_property_type;
# }
# 
# /**
#  * good_types_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call good_types_proxy_new_finish() to get the result of the operation.
#  *
#  * See good_types_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# good_types_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_GOOD_TYPES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
# }
# 
# /**
#  * good_types_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to good_types_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with good_types_proxy_new().
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * good_types_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See good_types_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_GOOD_TYPES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * good_types_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like good_types_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call good_types_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See good_types_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# good_types_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_GOOD_TYPES_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
# }
# 
# /**
#  * good_types_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to good_types_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with good_types_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * good_types_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like good_types_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See good_types_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type GoodTypesProxy): The constructed proxy object or %NULL if @error is set.
#  */
# GoodTypes *
# good_types_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_GOOD_TYPES_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "GoodTypes", NULL);
#   if (ret != NULL)
#     return GOOD_TYPES (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * GoodTypesSkeleton:
#  *
#  * The <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Skeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * GoodTypesSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>Skeleton.
#  */
# 
# struct _GoodTypesSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _good_types_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_GOOD_TYPES);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_GOOD_TYPES);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _good_types_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _good_types_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_good_types_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _good_types_skeleton_vtable =
# {
#   _good_types_skeleton_handle_method_call,
#   _good_types_skeleton_handle_get_property,
#   _good_types_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# good_types_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return good_types_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# good_types_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_good_types_skeleton_vtable;
# }
# 
# static GVariant *
# good_types_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_good_types_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _good_types_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _good_types_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _good_types_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "GoodTypes", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static gboolean _good_types_emit_changed (gpointer user_data);
# 
# static void
# good_types_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (_skeleton);
#   gboolean emit_changed = FALSE;
# 
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     {
#       g_source_destroy (skeleton->priv->changed_properties_idle_source);
#       skeleton->priv->changed_properties_idle_source = NULL;
#       emit_changed = TRUE;
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# 
#   if (emit_changed)
#     _good_types_emit_changed (skeleton);
# }
# 
# static void good_types_skeleton_iface_init (GoodTypesIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (GoodTypesSkeleton, good_types_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (GoodTypesSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (GoodTypesSkeleton, good_types_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_GOOD_TYPES, good_types_skeleton_iface_init))
# 
# #endif
# static void
# good_types_skeleton_finalize (GObject *object)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   guint n;
#   for (n = 0; n < 1; n++)
#     g_value_unset (&skeleton->priv->properties[n]);
#   g_free (skeleton->priv->properties);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (good_types_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# good_types_skeleton_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   g_mutex_lock (&skeleton->priv->lock);
#   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static gboolean
# _good_types_emit_changed (gpointer user_data)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (user_data);
#   GList *l;
#   GVariantBuilder builder;
#   GVariantBuilder invalidated_builder;
#   guint num_changes;
# 
#   g_mutex_lock (&skeleton->priv->lock);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init_static (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #else
#   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #endif
#   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
#     {
#       ChangedProperty *cp = l->data;
#       GVariant *variant;
#       const GValue *cur_value;
# 
#       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
#       if (!_g_value_equal (cur_value, &cp->orig_value))
#         {
#           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
#           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
#           g_variant_unref (variant);
#           num_changes++;
#         }
#     }
#   if (num_changes > 0)
#     {
#       GList *connections, *ll;
#       GVariant *signal_variant;
#       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "GoodTypes",
#                                            &builder, &invalidated_builder));
#       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
#       for (ll = connections; ll != NULL; ll = ll->next)
#         {
#           GDBusConnection *connection = ll->data;
# 
#           g_dbus_connection_emit_signal (connection,
#                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
#                                          "org.freedesktop.DBus.Properties",
#                                          "PropertiesChanged",
#                                          signal_variant,
#                                          NULL);
#         }
#       g_variant_unref (signal_variant);
#       g_list_free_full (connections, g_object_unref);
#     }
#   else
#     {
#       g_variant_builder_clear (&builder);
#       g_variant_builder_clear (&invalidated_builder);
#     }
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   skeleton->priv->changed_properties = NULL;
#   skeleton->priv->changed_properties_idle_source = NULL;
#   g_mutex_unlock (&skeleton->priv->lock);
#   return FALSE;
# }
# 
# static void
# _good_types_schedule_emit_changed (GoodTypesSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
# {
#   ChangedProperty *cp;
#   GList *l;
#   cp = NULL;
#   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
#     {
#       ChangedProperty *i_cp = l->data;
#       if (i_cp->info == info)
#         {
#           cp = i_cp;
#           break;
#         }
#     }
#   if (cp == NULL)
#     {
#       cp = g_new0 (ChangedProperty, 1);
#       cp->prop_id = prop_id;
#       cp->info = info;
#       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
#       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
#       g_value_copy (orig_value, &cp->orig_value);
#     }
# }
# 
# static void
# good_types_skeleton_notify (GObject      *object,
#   GParamSpec *pspec G_GNUC_UNUSED)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties != NULL &&
#       skeleton->priv->changed_properties_idle_source == NULL)
#     {
#       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
#       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
#       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _good_types_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
#       g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _good_types_emit_changed");
#       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
#       g_source_unref (skeleton->priv->changed_properties_idle_source);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static void
# good_types_skeleton_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _good_types_property_info_pointers[prop_id - 1];
#   g_mutex_lock (&skeleton->priv->lock);
#   g_object_freeze_notify (object);
#   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
#     {
#       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL &&
#           info->emits_changed_signal)
#         _good_types_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]);
#       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
#       g_object_notify_by_pspec (object, pspec);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
#   g_object_thaw_notify (object);
# }
# 
# static void
# good_types_skeleton_init (GoodTypesSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = good_types_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_GOOD_TYPES_SKELETON, GoodTypesSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
#   skeleton->priv->properties = g_new0 (GValue, 1);
#   g_value_init (&skeleton->priv->properties[0], G_TYPE_VARIANT);
# }
# 
# static GVariant *
# good_types_skeleton_get_good_property_type (GoodTypes *object)
# {
#   GoodTypesSkeleton *skeleton = GOOD_TYPES_SKELETON (object);
#   GVariant *value;
#   g_mutex_lock (&skeleton->priv->lock);
#   value = g_marshal_value_peek_variant (&(skeleton->priv->properties[0]));
#   g_mutex_unlock (&skeleton->priv->lock);
#   return value;
# }
# 
# static void
# good_types_skeleton_class_init (GoodTypesSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = good_types_skeleton_finalize;
#   gobject_class->get_property = good_types_skeleton_get_property;
#   gobject_class->set_property = good_types_skeleton_set_property;
#   gobject_class->notify       = good_types_skeleton_notify;
# 
# 
#   good_types_override_properties (gobject_class, 1);
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = good_types_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = good_types_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = good_types_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = good_types_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (GoodTypesSkeletonPrivate));
# #endif
# }
# 
# static void
# good_types_skeleton_iface_init (GoodTypesIface *iface)
# {
#   iface->get_good_property_type = good_types_skeleton_get_good_property_type;
# }
# 
# /**
#  * good_types_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-GoodTypes.top_of_page">GoodTypes</link>.
#  *
#  * Returns: (transfer full) (type GoodTypesSkeleton): The skeleton object.
#  */
# GoodTypes *
# good_types_skeleton_new (void)
# {
#   return GOOD_TYPES (g_object_new (TYPE_GOOD_TYPES_SKELETON, NULL));
# }
# Error:
ok 3 __main__.TestCodegen.test_empty_interface_body
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp_w127bat
# /tmp/tmp_w127bat/tmpizgq01yp.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp_w127bat/tmpizgq01yp.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# Error:
Executing: glib/codegen.py.test
ok 4 __main__.TestCodegen.test_empty_interface_header
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpdkz8lyg4
# /tmp/tmpdkz8lyg4/tmpihid9wzk.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpdkz8lyg4/tmpihid9wzk.xml', '--output', '-', '--header']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
ok 5 __main__.TestCodegen.test_empty_interface_info_body
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp_bcg72hg
# /tmp/tmp_bcg72hg/tmp1ggeucnz.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp_bcg72hg/tmp1ggeucnz.xml', '--output', '-', '--interface-info-body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# Error:
ok 6 __main__.TestCodegen.test_empty_interface_info_header
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpwvvy3e32
# /tmp/tmpwvvy3e32/tmp3i81c3zt.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwvvy3e32/tmp3i81c3zt.xml', '--output', '-', '--interface-info-header']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
ok 7 __main__.TestCodegen.test_generate_docbook
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp6ick6r6u
# /tmp/tmp6ick6r6u/tmpaz0_a834.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <method name="RandomMethod"/>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp6ick6r6u/tmpaz0_a834.xml', '--generate-docbook', 'test']
# Return code: 0
# Output:
#  
# Error:
Executing: glib/codegen.py.test
ok 8 __main__.TestCodegen.test_generate_md
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpst_wf7n6
# /tmp/tmpst_wf7n6/tmpl4b1ck87.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <method name="RandomMethod"/>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpst_wf7n6/tmpl4b1ck87.xml', '--generate-md', 'test']
# Return code: 0
# Output:
#  
# Error:
ok 9 __main__.TestCodegen.test_generate_methods_marshaller_simple_method
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpkwc21pri
# /tmp/tmpkwc21pri/tmp5xw1xptq.xml: 
#             <node>
#               <interface name="org.project.CallableIface">
#                 <method name="SimpleMethod"/>
#               </interface>
#               <interface name="org.project.OtherCallableIface">
#                 <method name="SimpleMethod"/>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpkwc21pri/tmp5xw1xptq.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.CallableIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectCallableIface
#  * @title: OrgProjectCallableIface
#  * @short_description: Generated C code for the org.project.CallableIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.CallableIface ---- */
# 
# static const _ExtendedGDBusMethodInfo _org_project_callable_iface_method_info_simple_method =
# {
#   {
#     -1,
#     (gchar *) "SimpleMethod",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-simple-method",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_callable_iface_method_info_pointers[] =
# {
#   &_org_project_callable_iface_method_info_simple_method.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_callable_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.CallableIface",
#     (GDBusMethodInfo **) &_org_project_callable_iface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-callable-iface",
# };
# 
# 
# /**
#  * org_project_callable_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_callable_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_callable_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectCallableIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_callable_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_callable_iface_method_marshal_simple_method (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectCallableIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  */
# 
# /**
#  * OrgProjectCallableIfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_simple_method: Handler for the #OrgProjectCallableIface::handle-simple-method signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  */
# 
# typedef OrgProjectCallableIfaceIface OrgProjectCallableIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectCallableIface, org_project_callable_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_callable_iface_default_init (OrgProjectCallableIfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectCallableIface::handle-simple-method:
#    * @object: A #OrgProjectCallableIface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-CallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_callable_iface_complete_simple_method() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-simple-method",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectCallableIfaceIface, handle_simple_method),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_callable_iface_method_marshal_simple_method,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_callable_iface_call_simple_method:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_call_simple_method_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_call_simple_method_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_callable_iface_call_simple_method (
#     OrgProjectCallableIface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SimpleMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_callable_iface_call_simple_method_finish:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_call_simple_method().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_callable_iface_call_simple_method().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_simple_method_finish (
#     OrgProjectCallableIface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_call_simple_method_sync:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_call_simple_method() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_simple_method_sync (
#     OrgProjectCallableIface *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SimpleMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_complete_simple_method:
#  * @object: A #OrgProjectCallableIface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-CallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_callable_iface_complete_simple_method (
#     OrgProjectCallableIface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectCallableIfaceProxy:
#  *
#  * The #OrgProjectCallableIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectCallableIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectCallableIfaceProxy.
#  */
# 
# struct _OrgProjectCallableIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_callable_iface_proxy_iface_init (OrgProjectCallableIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceProxy, org_project_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectCallableIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceProxy, org_project_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_callable_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectCallableIfaceProxy *proxy = ORG_PROJECT_CALLABLE_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_callable_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_callable_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_callable_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_callable_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_callable_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectCallableIfaceProxy *proxy = ORG_PROJECT_CALLABLE_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_callable_iface_proxy_init (OrgProjectCallableIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_callable_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, OrgProjectCallableIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_callable_iface_interface_info ());
# }
# 
# static void
# org_project_callable_iface_proxy_class_init (OrgProjectCallableIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_callable_iface_proxy_finalize;
#   gobject_class->get_property = org_project_callable_iface_proxy_get_property;
#   gobject_class->set_property = org_project_callable_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_callable_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_callable_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectCallableIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_callable_iface_proxy_iface_init (OrgProjectCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_callable_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_callable_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_callable_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_callable_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_callable_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_callable_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_callable_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectCallableIfaceSkeleton:
#  *
#  * The #OrgProjectCallableIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectCallableIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectCallableIfaceSkeleton.
#  */
# 
# struct _OrgProjectCallableIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_callable_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_callable_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_callable_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_callable_iface_skeleton_vtable =
# {
#   _org_project_callable_iface_skeleton_handle_method_call,
#   _org_project_callable_iface_skeleton_handle_get_property,
#   _org_project_callable_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_callable_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_callable_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_callable_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_callable_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_callable_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_callable_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_callable_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_callable_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_callable_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.CallableIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_callable_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_callable_iface_skeleton_iface_init (OrgProjectCallableIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceSkeleton, org_project_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectCallableIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceSkeleton, org_project_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_callable_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_callable_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_callable_iface_skeleton_init (OrgProjectCallableIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_callable_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_CALLABLE_IFACE_SKELETON, OrgProjectCallableIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_callable_iface_skeleton_class_init (OrgProjectCallableIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_callable_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_callable_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_callable_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_callable_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_callable_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectCallableIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_callable_iface_skeleton_iface_init (OrgProjectCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_callable_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceSkeleton): The skeleton object.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_CALLABLE_IFACE (g_object_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_SKELETON, NULL));
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.OtherCallableIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectOtherCallableIface
#  * @title: OrgProjectOtherCallableIface
#  * @short_description: Generated C code for the org.project.OtherCallableIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.OtherCallableIface ---- */
# 
# static const _ExtendedGDBusMethodInfo _org_project_other_callable_iface_method_info_simple_method =
# {
#   {
#     -1,
#     (gchar *) "SimpleMethod",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-simple-method",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_other_callable_iface_method_info_pointers[] =
# {
#   &_org_project_other_callable_iface_method_info_simple_method.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_other_callable_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.OtherCallableIface",
#     (GDBusMethodInfo **) &_org_project_other_callable_iface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-other-callable-iface",
# };
# 
# 
# /**
#  * org_project_other_callable_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_other_callable_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_other_callable_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectOtherCallableIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_other_callable_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_other_callable_iface_method_marshal_simple_method (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectOtherCallableIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>.
#  */
# 
# /**
#  * OrgProjectOtherCallableIfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_simple_method: Handler for the #OrgProjectOtherCallableIface::handle-simple-method signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>.
#  */
# 
# typedef OrgProjectOtherCallableIfaceIface OrgProjectOtherCallableIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectOtherCallableIface, org_project_other_callable_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_other_callable_iface_default_init (OrgProjectOtherCallableIfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectOtherCallableIface::handle-simple-method:
#    * @object: A #OrgProjectOtherCallableIface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-OtherCallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_other_callable_iface_complete_simple_method() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-simple-method",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectOtherCallableIfaceIface, handle_simple_method),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_other_callable_iface_method_marshal_simple_method,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_other_callable_iface_call_simple_method:
#  * @proxy: A #OrgProjectOtherCallableIfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-OtherCallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_callable_iface_call_simple_method_finish() to get the result of the operation.
#  *
#  * See org_project_other_callable_iface_call_simple_method_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_other_callable_iface_call_simple_method (
#     OrgProjectOtherCallableIface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SimpleMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_other_callable_iface_call_simple_method_finish:
#  * @proxy: A #OrgProjectOtherCallableIfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_callable_iface_call_simple_method().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_other_callable_iface_call_simple_method().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_other_callable_iface_call_simple_method_finish (
#     OrgProjectOtherCallableIface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_call_simple_method_sync:
#  * @proxy: A #OrgProjectOtherCallableIfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-OtherCallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_callable_iface_call_simple_method() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_other_callable_iface_call_simple_method_sync (
#     OrgProjectOtherCallableIface *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SimpleMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_complete_simple_method:
#  * @object: A #OrgProjectOtherCallableIface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-OtherCallableIface.SimpleMethod">SimpleMethod()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_other_callable_iface_complete_simple_method (
#     OrgProjectOtherCallableIface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherCallableIfaceProxy:
#  *
#  * The #OrgProjectOtherCallableIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherCallableIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherCallableIfaceProxy.
#  */
# 
# struct _OrgProjectOtherCallableIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_other_callable_iface_proxy_iface_init (OrgProjectOtherCallableIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceProxy, org_project_other_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectOtherCallableIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceProxy, org_project_other_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_other_callable_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectOtherCallableIfaceProxy *proxy = ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_other_callable_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_callable_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_callable_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_callable_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_other_callable_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectOtherCallableIfaceProxy *proxy = ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_other_callable_iface_proxy_init (OrgProjectOtherCallableIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_other_callable_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, OrgProjectOtherCallableIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_other_callable_iface_interface_info ());
# }
# 
# static void
# org_project_other_callable_iface_proxy_class_init (OrgProjectOtherCallableIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_other_callable_iface_proxy_finalize;
#   gobject_class->get_property = org_project_other_callable_iface_proxy_get_property;
#   gobject_class->set_property = org_project_other_callable_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_other_callable_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_other_callable_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherCallableIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_other_callable_iface_proxy_iface_init (OrgProjectOtherCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_callable_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_other_callable_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_callable_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_callable_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_callable_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_callable_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_other_callable_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_other_callable_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_callable_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_other_callable_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_callable_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_callable_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_callable_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_other_callable_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_callable_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherCallableIfaceSkeleton:
#  *
#  * The #OrgProjectOtherCallableIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherCallableIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherCallableIfaceSkeleton.
#  */
# 
# struct _OrgProjectOtherCallableIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_other_callable_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_other_callable_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_other_callable_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_other_callable_iface_skeleton_vtable =
# {
#   _org_project_other_callable_iface_skeleton_handle_method_call,
#   _org_project_other_callable_iface_skeleton_handle_get_property,
#   _org_project_other_callable_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_other_callable_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_other_callable_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_other_callable_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_other_callable_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_other_callable_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_other_callable_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_other_callable_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_other_callable_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_other_callable_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.OtherCallableIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_other_callable_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_other_callable_iface_skeleton_iface_init (OrgProjectOtherCallableIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceSkeleton, org_project_other_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectOtherCallableIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceSkeleton, org_project_other_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_other_callable_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_other_callable_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_callable_iface_skeleton_init (OrgProjectOtherCallableIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_other_callable_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON, OrgProjectOtherCallableIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_other_callable_iface_skeleton_class_init (OrgProjectOtherCallableIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_other_callable_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_other_callable_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_other_callable_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_other_callable_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_other_callable_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherCallableIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_other_callable_iface_skeleton_iface_init (OrgProjectOtherCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_other_callable_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceSkeleton): The skeleton object.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_OTHER_CALLABLE_IFACE (g_object_new (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON, NULL));
# }
# Error:
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
ok 10 __main__.TestCodegen.test_generate_methods_marshaller_single_typed_in_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpuc_tvjn7
# /tmp/tmpuc_tvjn7/tmp94txlfce.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodB">
#                     <arg name="arg_b" type="b"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmp94txlfce.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOOLEAN (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectBooleanFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         gboolean arg_arg_b,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectBooleanFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectBooleanFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_boolean (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_b_IN_ARG_arg_b =
# {
#   {
#     -1,
#     (gchar *) "arg_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_b_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_b_IN_ARG_arg_b.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_b =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodB",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_b_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-b",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_b.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_b (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOOLEAN (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_b: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-b signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-b:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_b: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_b() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-b",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_b),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_b,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_BOOLEAN);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_b:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_b: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_b_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_b_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_b (
#     OrgProjectUsefulInterface *proxy,
#     gboolean arg_arg_b,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodB",
#     g_variant_new ("(b)",
#                    arg_arg_b),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_b_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_b().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_b().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_b_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_b_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_b: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_b() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_b_sync (
#     OrgProjectUsefulInterface *proxy,
#     gboolean arg_arg_b,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodB",
#     g_variant_new ("(b)",
#                    arg_arg_b),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_b:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_b (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpl10bq9_8.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodY">
#                     <arg name="arg_y" type="y"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpl10bq9_8.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UCHAR (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectUcharFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         guchar arg_arg_y,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectUcharFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectUcharFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_uchar (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_y_IN_ARG_arg_y =
# {
#   {
#     -1,
#     (gchar *) "arg_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_y_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_y_IN_ARG_arg_y.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_y =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodY",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_y_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-y",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_y.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_y (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UCHAR (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_y: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-y signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-y:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_y: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_y() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-y",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_y),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_y,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UCHAR);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_y:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_y: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_y_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_y_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_y (
#     OrgProjectUsefulInterface *proxy,
#     guchar arg_arg_y,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodY",
#     g_variant_new ("(y)",
#                    arg_arg_y),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_y_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_y().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_y().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_y_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_y_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_y: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_y() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_y_sync (
#     OrgProjectUsefulInterface *proxy,
#     guchar arg_arg_y,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodY",
#     g_variant_new ("(y)",
#                    arg_arg_y),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_y:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_y (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmp7sfo2pdw.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodN">
#                     <arg name="arg_n" type="n"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmp7sfo2pdw.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_INT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectIntFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         gint16 arg_arg_n,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectIntFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectIntFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_int (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_n_IN_ARG_arg_n =
# {
#   {
#     -1,
#     (gchar *) "arg_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_n_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_n_IN_ARG_arg_n.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_n =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodN",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_n_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-n",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_n.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_n (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_INT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_n: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-n signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-n:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_n: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_n() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-n",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_n),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_n,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_n:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_n: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_n_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_n_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_n (
#     OrgProjectUsefulInterface *proxy,
#     gint16 arg_arg_n,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodN",
#     g_variant_new ("(n)",
#                    arg_arg_n),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_n_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_n().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_n().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_n_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_n_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_n: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_n() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_n_sync (
#     OrgProjectUsefulInterface *proxy,
#     gint16 arg_arg_n,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodN",
#     g_variant_new ("(n)",
#                    arg_arg_n),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_n:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_n (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmp9lxg1tf9.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodQ">
#                     <arg name="arg_q" type="q"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmp9lxg1tf9.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UINT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectUintFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         guint16 arg_arg_q,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectUintFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectUintFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_uint (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_q_IN_ARG_arg_q =
# {
#   {
#     -1,
#     (gchar *) "arg_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_q_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_q_IN_ARG_arg_q.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_q =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodQ",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_q_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-q",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_q.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_q (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UINT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_q: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-q signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-q:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_q: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_q() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-q",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_q),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_q,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UINT);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_q:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_q: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_q_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_q_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_q (
#     OrgProjectUsefulInterface *proxy,
#     guint16 arg_arg_q,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodQ",
#     g_variant_new ("(q)",
#                    arg_arg_q),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_q_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_q().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_q().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_q_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_q_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_q: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_q() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_q_sync (
#     OrgProjectUsefulInterface *proxy,
#     guint16 arg_arg_q,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodQ",
#     g_variant_new ("(q)",
#                    arg_arg_q),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_q:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_q (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpdcjgtyru.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodI">
#                     <arg name="arg_i" type="i"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpdcjgtyru.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_INT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectIntFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         gint arg_arg_i,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectIntFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectIntFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_int (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_i_IN_ARG_arg_i =
# {
#   {
#     -1,
#     (gchar *) "arg_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_i_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_i_IN_ARG_arg_i.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_i =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodI",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_i_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-i",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_i.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_i (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_INT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_i: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-i signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-i:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_i: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_i() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-i",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_i),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_i,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_i:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_i: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_i_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_i_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_i (
#     OrgProjectUsefulInterface *proxy,
#     gint arg_arg_i,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodI",
#     g_variant_new ("(i)",
#                    arg_arg_i),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_i_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_i().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_i().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_i_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_i_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_i: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_i() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_i_sync (
#     OrgProjectUsefulInterface *proxy,
#     gint arg_arg_i,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodI",
#     g_variant_new ("(i)",
#                    arg_arg_i),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_i:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_i (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpthoozw4p.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodU">
#                     <arg name="arg_u" type="u"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpthoozw4p.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UINT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectUintFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         guint arg_arg_u,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectUintFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectUintFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_uint (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_u_IN_ARG_arg_u =
# {
#   {
#     -1,
#     (gchar *) "arg_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_u_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_u_IN_ARG_arg_u.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_u =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodU",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_u_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-u",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_u.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_u (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UINT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_u: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-u signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-u:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_u: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_u() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-u",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_u),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_u,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UINT);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_u:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_u: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_u_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_u_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_u (
#     OrgProjectUsefulInterface *proxy,
#     guint arg_arg_u,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodU",
#     g_variant_new ("(u)",
#                    arg_arg_u),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_u_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_u().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_u().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_u_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_u_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_u: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_u() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_u_sync (
#     OrgProjectUsefulInterface *proxy,
#     guint arg_arg_u,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodU",
#     g_variant_new ("(u)",
#                    arg_arg_u),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_u:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_u (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpo50r0ctq.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodX">
#                     <arg name="arg_x" type="x"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpo50r0ctq.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_INT64 (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectInt64Func)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         gint64 arg_arg_x,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectInt64Func callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectInt64Func)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_int64 (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_x_IN_ARG_arg_x =
# {
#   {
#     -1,
#     (gchar *) "arg_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_x_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_x_IN_ARG_arg_x.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_x =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodX",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_x_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-x",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_x.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_x (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_INT64 (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_x: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-x signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-x:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_x: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_x() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-x",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_x),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_x,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_INT64);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_x:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_x: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_x_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_x_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_x (
#     OrgProjectUsefulInterface *proxy,
#     gint64 arg_arg_x,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodX",
#     g_variant_new ("(x)",
#                    arg_arg_x),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_x_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_x().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_x().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_x_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_x_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_x: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_x() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_x_sync (
#     OrgProjectUsefulInterface *proxy,
#     gint64 arg_arg_x,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodX",
#     g_variant_new ("(x)",
#                    arg_arg_x),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_x:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_x (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpk1fpjyop.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodT">
#                     <arg name="arg_t" type="t"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpk1fpjyop.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UINT64 (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectUint64Func)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         guint64 arg_arg_t,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectUint64Func callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectUint64Func)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_uint64 (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_t_IN_ARG_arg_t =
# {
#   {
#     -1,
#     (gchar *) "arg_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_t_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_t_IN_ARG_arg_t.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_t =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodT",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_t_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-t",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_t.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_t (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_UINT64 (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_t: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-t signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-t:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_t: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_t() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-t",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_t),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_t,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UINT64);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_t:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_t: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_t_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_t_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_t (
#     OrgProjectUsefulInterface *proxy,
#     guint64 arg_arg_t,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodT",
#     g_variant_new ("(t)",
#                    arg_arg_t),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_t_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_t().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_t().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_t_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_t_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_t: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_t() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_t_sync (
#     OrgProjectUsefulInterface *proxy,
#     guint64 arg_arg_t,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodT",
#     g_variant_new ("(t)",
#                    arg_arg_t),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_t:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_t (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmph_9sx0ew.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodD">
#                     <arg name="arg_d" type="d"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmph_9sx0ew.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_DOUBLE (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectDoubleFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         gdouble arg_arg_d,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectDoubleFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectDoubleFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_double (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_d_IN_ARG_arg_d =
# {
#   {
#     -1,
#     (gchar *) "arg_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_d_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_d_IN_ARG_arg_d.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_d =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodD",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_d_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-d",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_d.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_d (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_DOUBLE (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_d: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-d signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-d:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_d: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_d() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-d",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_d),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_d,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_DOUBLE);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_d:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_d: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_d_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_d_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_d (
#     OrgProjectUsefulInterface *proxy,
#     gdouble arg_arg_d,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodD",
#     g_variant_new ("(d)",
#                    arg_arg_d),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_d_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_d().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_d().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_d_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_d_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_d: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_d() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_d_sync (
#     OrgProjectUsefulInterface *proxy,
#     gdouble arg_arg_d,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodD",
#     g_variant_new ("(d)",
#                    arg_arg_d),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_d:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_d (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpviry47so.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodS">
#                     <arg name="arg_s" type="s"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpviry47so.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         const gchar *arg_arg_s,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectStringFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_string (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_s_IN_ARG_arg_s =
# {
#   {
#     -1,
#     (gchar *) "arg_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_s_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_s_IN_ARG_arg_s.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_s =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodS",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_s_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-s",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_s.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_s (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_s: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-s signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-s:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_s: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_s() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-s",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_s),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_s,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_s:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_s: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_s_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_s_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_s (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_s,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodS",
#     g_variant_new ("(s)",
#                    arg_arg_s),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_s_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_s().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_s().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_s_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_s_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_s: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_s() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_s_sync (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_s,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodS",
#     g_variant_new ("(s)",
#                    arg_arg_s),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_s:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_s (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpvdg3f3hw.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodO">
#                     <arg name="arg_o" type="o"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpvdg3f3hw.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         const gchar *arg_arg_o,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectStringFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_string (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_o_IN_ARG_arg_o =
# {
#   {
#     -1,
#     (gchar *) "arg_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_o_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_o_IN_ARG_arg_o.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_o =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodO",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_o_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-o",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_o.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_o (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_o: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-o signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-o:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_o: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_o() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-o",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_o),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_o,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_o:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_o: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_o_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_o_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_o (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_o,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodO",
#     g_variant_new ("(o)",
#                    arg_arg_o),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_o_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_o().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_o().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_o_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_o_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_o: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_o() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_o_sync (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_o,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodO",
#     g_variant_new ("(o)",
#                    arg_arg_o),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_o:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_o (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpn5gc1i_v.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodG">
#                     <arg name="arg_g" type="g"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpn5gc1i_v.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         const gchar *arg_arg_g,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectStringFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_string (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_g_IN_ARG_arg_g =
# {
#   {
#     -1,
#     (gchar *) "arg_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_g_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_g_IN_ARG_arg_g.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_g =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodG",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_g_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-g",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_g.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_g (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_g: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-g signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-g:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_g: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_g() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-g",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_g),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_g,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_g:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_g: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_g_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_g_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_g (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_g,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodG",
#     g_variant_new ("(g)",
#                    arg_arg_g),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_g_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_g().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_g().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_g_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_g_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_g: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_g() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_g_sync (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_g,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodG",
#     g_variant_new ("(g)",
#                    arg_arg_g),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_g:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_g (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmp4v2c637i.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodH">
#                     <arg name="arg_h" type="h"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmp4v2c637i.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_VARIANT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectVariantFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         GVariant *arg_arg_h,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectVariantFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectVariantFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_variant (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_h_IN_ARG_arg_h =
# {
#   {
#     -1,
#     (gchar *) "arg_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_h_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_h_IN_ARG_arg_h.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_h =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodH",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_h_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-h",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_h.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_h (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_h: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-h signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-h:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_h: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_h() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-h",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_h),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_h,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_h:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_h: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_h_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_h_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_h (
#     OrgProjectUsefulInterface *proxy,
#     GVariant *arg_arg_h,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodH",
#     g_variant_new ("(@h)",
#                    arg_arg_h),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_h_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_h().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_h().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_h_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_h_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_h: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_h() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_h_sync (
#     OrgProjectUsefulInterface *proxy,
#     GVariant *arg_arg_h,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodH",
#     g_variant_new ("(@h)",
#                    arg_arg_h),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_h:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_h (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpg1_nef1w.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAy">
#                     <arg name="arg_ay" type="ay"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpg1_nef1w.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         const gchar *arg_arg_ay,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectStringFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectStringFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_string (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_ay_IN_ARG_arg_ay =
# {
#   {
#     -1,
#     (gchar *) "arg_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_ay_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ay_IN_ARG_arg_ay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_ay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAy",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_ay_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-ay",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_ay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_ay: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-ay signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-ay:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_ay: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_ay() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-ay",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_ay),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_ay,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ay:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_ay: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_ay_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ay_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_ay (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_ay,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAy",
#     g_variant_new ("(^ay)",
#                    arg_arg_ay),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ay_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_ay().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_ay().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ay_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ay_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_ay: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ay() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ay_sync (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *arg_arg_ay,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAy",
#     g_variant_new ("(^ay)",
#                    arg_arg_ay),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_ay:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_ay (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmprs6vbtd5.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAs">
#                     <arg name="arg_as" type="as"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmprs6vbtd5.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOXED (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectBoxedFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         const gchar *const *arg_arg_as,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectBoxedFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectBoxedFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_boxed (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_as_IN_ARG_arg_as =
# {
#   {
#     -1,
#     (gchar *) "arg_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_as_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_as_IN_ARG_arg_as.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_as =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAs",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_as_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-as",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_as.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_as (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_as: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-as signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-as:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_as: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_as() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-as",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_as),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_as,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRV);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_as:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_as: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_as_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_as_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_as (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *const *arg_arg_as,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAs",
#     g_variant_new ("(^as)",
#                    arg_arg_as),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_as_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_as().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_as().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_as_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_as_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_as: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_as() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_as_sync (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *const *arg_arg_as,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAs",
#     g_variant_new ("(^as)",
#                    arg_arg_as),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_as:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_as (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmphj7tnfaz.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAo">
#                     <arg name="arg_ao" type="ao"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmphj7tnfaz.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOXED (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectBoxedFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         const gchar *const *arg_arg_ao,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectBoxedFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectBoxedFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_boxed (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_ao_IN_ARG_arg_ao =
# {
#   {
#     -1,
#     (gchar *) "arg_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_ao_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ao_IN_ARG_arg_ao.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_ao =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAo",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_ao_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-ao",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ao.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_ao (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_ao: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-ao signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-ao:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_ao: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_ao() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-ao",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_ao),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_ao,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRV);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ao:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_ao: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_ao_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ao_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_ao (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *const *arg_arg_ao,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAo",
#     g_variant_new ("(^ao)",
#                    arg_arg_ao),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ao_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_ao().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_ao().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ao_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ao_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_ao: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ao() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ao_sync (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *const *arg_arg_ao,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAo",
#     g_variant_new ("(^ao)",
#                    arg_arg_ao),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_ao:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_ao (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmp3p3o5gtu.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAay">
#                     <arg name="arg_aay" type="aay"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmp3p3o5gtu.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOXED (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectBoxedFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         const gchar *const *arg_arg_aay,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectBoxedFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectBoxedFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_boxed (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_aay_IN_ARG_arg_aay =
# {
#   {
#     -1,
#     (gchar *) "arg_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_aay_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_aay_IN_ARG_arg_aay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_aay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAay",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_aay_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-aay",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_aay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_aay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_aay: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-aay signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-aay:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_aay: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_aay() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-aay",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_aay),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_aay,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRV);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_aay:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_aay: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_aay_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_aay_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_aay (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *const *arg_arg_aay,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAay",
#     g_variant_new ("(^aay)",
#                    arg_arg_aay),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_aay_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_aay().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_aay().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_aay_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_aay_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_aay: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_aay() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_aay_sync (
#     OrgProjectUsefulInterface *proxy,
#     const gchar *const *arg_arg_aay,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAay",
#     g_variant_new ("(^aay)",
#                    arg_arg_aay),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_aay:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_aay (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpuc_tvjn7/tmpy6pzn66z.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAsv">
#                     <arg name="arg_asv" type="a{sv}"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuc_tvjn7/tmpy6pzn66z.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_VARIANT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectVariantFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         GVariant *arg_arg_asv,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectVariantFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectVariantFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_variant (param_values + 2),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_asv_IN_ARG_arg_asv =
# {
#   {
#     -1,
#     (gchar *) "arg_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_asv_IN_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_asv_IN_ARG_arg_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_asv =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAsv",
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_asv_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-single-arg-method-asv",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_asv (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_asv: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-asv signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-asv:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_arg_asv: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_asv() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-asv",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_asv),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_asv,
#     G_TYPE_BOOLEAN,
#     2,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_asv:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_asv_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_asv_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_asv (
#     OrgProjectUsefulInterface *proxy,
#     GVariant *arg_arg_asv,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAsv",
#     g_variant_new ("(@a{sv})",
#                    arg_arg_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_asv_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_asv().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_asv().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_asv_finish (
#     OrgProjectUsefulInterface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_asv_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @arg_arg_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_asv() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_asv_sync (
#     OrgProjectUsefulInterface *proxy,
#     GVariant *arg_arg_asv,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAsv",
#     g_variant_new ("(@a{sv})",
#                    arg_arg_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_asv:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_asv (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
ok 11 __main__.TestCodegen.test_generate_methods_marshaller_single_typed_out_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp23j3tgun
# /tmp/tmp23j3tgun/tmpqm38itvn.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodB">
#                     <arg name="arg_b" type="b" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpqm38itvn.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_b_OUT_ARG_arg_b =
# {
#   {
#     -1,
#     (gchar *) "arg_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_b_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_b_OUT_ARG_arg_b.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_b =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodB",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_b_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-b",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_b.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_b (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_b: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-b signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-b:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_b() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-b",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_b),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_b,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_b:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_b_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_b_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_b (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodB",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_b_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_b: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_b().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_b().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_b_finish (
#     OrgProjectUsefulInterface *proxy,
#     gboolean *out_arg_b,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(b)",
#                  out_arg_b);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_b_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_b: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_b() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_b_sync (
#     OrgProjectUsefulInterface *proxy,
#     gboolean *out_arg_b,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodB",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(b)",
#                  out_arg_b);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_b:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_b: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodB">SingleArgMethodB()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_b (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     gboolean arg_b)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(b)",
#                    arg_b));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmp0tv11j8z.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodY">
#                     <arg name="arg_y" type="y" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmp0tv11j8z.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_y_OUT_ARG_arg_y =
# {
#   {
#     -1,
#     (gchar *) "arg_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_y_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_y_OUT_ARG_arg_y.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_y =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodY",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_y_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-y",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_y.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_y (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_y: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-y signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-y:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_y() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-y",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_y),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_y,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_y:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_y_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_y_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_y (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodY",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_y_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_y: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_y().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_y().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_y_finish (
#     OrgProjectUsefulInterface *proxy,
#     guchar *out_arg_y,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(y)",
#                  out_arg_y);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_y_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_y: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_y() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_y_sync (
#     OrgProjectUsefulInterface *proxy,
#     guchar *out_arg_y,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodY",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(y)",
#                  out_arg_y);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_y:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_y: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodY">SingleArgMethodY()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_y (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     guchar arg_y)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(y)",
#                    arg_y));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpxstgzq5d.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodN">
#                     <arg name="arg_n" type="n" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpxstgzq5d.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_n_OUT_ARG_arg_n =
# {
#   {
#     -1,
#     (gchar *) "arg_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_n_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_n_OUT_ARG_arg_n.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_n =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodN",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_n_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-n",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_n.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_n (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_n: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-n signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-n:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_n() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-n",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_n),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_n,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_n:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_n_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_n_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_n (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodN",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_n_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_n: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_n().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_n().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_n_finish (
#     OrgProjectUsefulInterface *proxy,
#     gint16 *out_arg_n,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(n)",
#                  out_arg_n);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_n_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_n: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_n() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_n_sync (
#     OrgProjectUsefulInterface *proxy,
#     gint16 *out_arg_n,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodN",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(n)",
#                  out_arg_n);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_n:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_n: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodN">SingleArgMethodN()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_n (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     gint16 arg_n)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(n)",
#                    arg_n));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpd3lrwmsx.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodQ">
#                     <arg name="arg_q" type="q" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpd3lrwmsx.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_q_OUT_ARG_arg_q =
# {
#   {
#     -1,
#     (gchar *) "arg_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_q_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_q_OUT_ARG_arg_q.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_q =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodQ",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_q_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-q",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_q.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_q (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_q: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-q signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-q:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_q() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-q",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_q),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_q,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_q:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_q_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_q_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_q (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodQ",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_q_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_q: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_q().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_q().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_q_finish (
#     OrgProjectUsefulInterface *proxy,
#     guint16 *out_arg_q,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(q)",
#                  out_arg_q);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_q_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_q: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_q() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_q_sync (
#     OrgProjectUsefulInterface *proxy,
#     guint16 *out_arg_q,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodQ",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(q)",
#                  out_arg_q);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_q:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_q: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodQ">SingleArgMethodQ()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_q (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     guint16 arg_q)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(q)",
#                    arg_q));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpsy9il0nw.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodI">
#                     <arg name="arg_i" type="i" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpsy9il0nw.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_i_OUT_ARG_arg_i =
# {
#   {
#     -1,
#     (gchar *) "arg_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_i_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_i_OUT_ARG_arg_i.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_i =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodI",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_i_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-i",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_i.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_i (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_i: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-i signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-i:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_i() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-i",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_i),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_i,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_i:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_i_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_i_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_i (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodI",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_i_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_i: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_i().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_i().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_i_finish (
#     OrgProjectUsefulInterface *proxy,
#     gint *out_arg_i,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(i)",
#                  out_arg_i);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_i_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_i: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_i() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_i_sync (
#     OrgProjectUsefulInterface *proxy,
#     gint *out_arg_i,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodI",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(i)",
#                  out_arg_i);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_i:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_i: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodI">SingleArgMethodI()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_i (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     gint arg_i)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(i)",
#                    arg_i));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpvky5uczs.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodU">
#                     <arg name="arg_u" type="u" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpvky5uczs.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_u_OUT_ARG_arg_u =
# {
#   {
#     -1,
#     (gchar *) "arg_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_u_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_u_OUT_ARG_arg_u.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_u =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodU",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_u_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-u",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_u.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_u (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_u: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-u signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-u:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_u() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-u",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_u),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_u,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_u:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_u_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_u_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_u (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodU",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_u_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_u: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_u().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_u().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_u_finish (
#     OrgProjectUsefulInterface *proxy,
#     guint *out_arg_u,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(u)",
#                  out_arg_u);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_u_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_u: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_u() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_u_sync (
#     OrgProjectUsefulInterface *proxy,
#     guint *out_arg_u,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodU",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(u)",
#                  out_arg_u);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_u:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_u: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodU">SingleArgMethodU()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_u (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     guint arg_u)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(u)",
#                    arg_u));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpc2kafbrm.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodX">
#                     <arg name="arg_x" type="x" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpc2kafbrm.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_x_OUT_ARG_arg_x =
# {
#   {
#     -1,
#     (gchar *) "arg_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_x_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_x_OUT_ARG_arg_x.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_x =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodX",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_x_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-x",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_x.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_x (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_x: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-x signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-x:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_x() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-x",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_x),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_x,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_x:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_x_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_x_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_x (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodX",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_x_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_x: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_x().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_x().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_x_finish (
#     OrgProjectUsefulInterface *proxy,
#     gint64 *out_arg_x,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(x)",
#                  out_arg_x);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_x_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_x: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_x() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_x_sync (
#     OrgProjectUsefulInterface *proxy,
#     gint64 *out_arg_x,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodX",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(x)",
#                  out_arg_x);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_x:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_x: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodX">SingleArgMethodX()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_x (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     gint64 arg_x)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(x)",
#                    arg_x));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpr41ievx8.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodT">
#                     <arg name="arg_t" type="t" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpr41ievx8.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_t_OUT_ARG_arg_t =
# {
#   {
#     -1,
#     (gchar *) "arg_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_t_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_t_OUT_ARG_arg_t.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_t =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodT",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_t_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-t",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_t.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_t (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_t: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-t signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-t:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_t() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-t",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_t),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_t,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_t:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_t_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_t_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_t (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodT",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_t_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_t: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_t().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_t().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_t_finish (
#     OrgProjectUsefulInterface *proxy,
#     guint64 *out_arg_t,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(t)",
#                  out_arg_t);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_t_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_t: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_t() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_t_sync (
#     OrgProjectUsefulInterface *proxy,
#     guint64 *out_arg_t,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodT",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(t)",
#                  out_arg_t);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_t:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_t: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodT">SingleArgMethodT()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_t (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     guint64 arg_t)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(t)",
#                    arg_t));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpozkrqahe.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodD">
#                     <arg name="arg_d" type="d" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpozkrqahe.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_d_OUT_ARG_arg_d =
# {
#   {
#     -1,
#     (gchar *) "arg_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_d_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_d_OUT_ARG_arg_d.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_d =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodD",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_d_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-d",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_d.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_d (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_d: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-d signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-d:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_d() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-d",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_d),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_d,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_d:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_d_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_d_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_d (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodD",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_d_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_d: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_d().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_d().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_d_finish (
#     OrgProjectUsefulInterface *proxy,
#     gdouble *out_arg_d,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(d)",
#                  out_arg_d);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_d_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_d: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_d() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_d_sync (
#     OrgProjectUsefulInterface *proxy,
#     gdouble *out_arg_d,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodD",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(d)",
#                  out_arg_d);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_d:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_d: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodD">SingleArgMethodD()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_d (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     gdouble arg_d)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(d)",
#                    arg_d));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpcmmle8z0.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodS">
#                     <arg name="arg_s" type="s" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpcmmle8z0.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_s_OUT_ARG_arg_s =
# {
#   {
#     -1,
#     (gchar *) "arg_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_s_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_s_OUT_ARG_arg_s.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_s =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodS",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_s_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-s",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_s.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline statExecuting: glib/codegen.py.test
ic void
# org_project_useful_interface_method_marshal_single_arg_method_s (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_s: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-s signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-s:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_s() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-s",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_s),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_s,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_s:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_s_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_s_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_s (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodS",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_s_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_s: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_s().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_s().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_s_finish (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_s,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(s)",
#                  out_arg_s);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_s_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_s: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_s() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_s_sync (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_s,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodS",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(s)",
#                  out_arg_s);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_s:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_s: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodS">SingleArgMethodS()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_s (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     const gchar *arg_s)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(s)",
#                    arg_s));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpv_p8lwyn.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodO">
#                     <arg name="arg_o" type="o" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpv_p8lwyn.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_o_OUT_ARG_arg_o =
# {
#   {
#     -1,
#     (gchar *) "arg_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_o_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_o_OUT_ARG_arg_o.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_o =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodO",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_o_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-o",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_o.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_o (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_o: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-o signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-o:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_o() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-o",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_o),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_o,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_o:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_o_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_o_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_o (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodO",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_o_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_o: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_o().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_o().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_o_finish (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_o,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(o)",
#                  out_arg_o);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_o_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_o: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_o() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_o_sync (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_o,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodO",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(o)",
#                  out_arg_o);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_o:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_o: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodO">SingleArgMethodO()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_o (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     const gchar *arg_o)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(o)",
#                    arg_o));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpwljy4i7f.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodG">
#                     <arg name="arg_g" type="g" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpwljy4i7f.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_g_OUT_ARG_arg_g =
# {
#   {
#     -1,
#     (gchar *) "arg_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_g_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_g_OUT_ARG_arg_g.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_g =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodG",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_g_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-g",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_g.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_g (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_g: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-g signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-g:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_g() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-g",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_g),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_g,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_g:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_g_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_g_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_g (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodG",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_g_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_g: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_g().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_g().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_g_finish (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_g,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(g)",
#                  out_arg_g);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_g_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_g: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_g() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_g_sync (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_g,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodG",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(g)",
#                  out_arg_g);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_g:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_g: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodG">SingleArgMethodG()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_g (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     const gchar *arg_g)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(g)",
#                    arg_g));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmp5_9oa47x.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodH">
#                     <arg name="arg_h" type="h" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmp5_9oa47x.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_h_OUT_ARG_arg_h =
# {
#   {
#     -1,
#     (gchar *) "arg_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_h_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_h_OUT_ARG_arg_h.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_h =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodH",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_h_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-h",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_h.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_h (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_h: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-h signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-h:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_h() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-h",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_h),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_h,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_h:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_h_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_h_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_h (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodH",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_h_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_h: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_h().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_h().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_h_finish (
#     OrgProjectUsefulInterface *proxy,
#     GVariant **out_arg_h,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(@h)",
#                  out_arg_h);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_h_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_h: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_h() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_h_sync (
#     OrgProjectUsefulInterface *proxy,
#     GVariant **out_arg_h,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodH",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(@h)",
#                  out_arg_h);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_h:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_h: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodH">SingleArgMethodH()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_h (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     GVariant *arg_h)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(@h)",
#                    arg_h));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpz57q1pqn.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAy">
#                     <arg name="arg_ay" type="ay" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpz57q1pqn.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_ay_OUT_ARG_arg_ay =
# {
#   {
#     -1,
#     (gchar *) "arg_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_ay_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ay_OUT_ARG_arg_ay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_ay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAy",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_ay_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-ay",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_ay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_ay: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-ay signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-ay:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_ay() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-ay",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_ay),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_ay,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ay:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_ay_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ay_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_ay (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAy",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ay_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_ay: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_ay().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_ay().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ay_finish (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_ay,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^ay)",
#                  out_arg_ay);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ay_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_ay: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ay() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ay_sync (
#     OrgProjectUsefulInterface *proxy,
#     gchar **out_arg_ay,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAy",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^ay)",
#                  out_arg_ay);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_ay:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_ay: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAy">SingleArgMethodAy()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_ay (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     const gchar *arg_ay)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(^ay)",
#                    arg_ay));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpkd2c6yhv.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAs">
#                     <arg name="arg_as" type="as" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpkd2c6yhv.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_as_OUT_ARG_arg_as =
# {
#   {
#     -1,
#     (gchar *) "arg_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_as_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_as_OUT_ARG_arg_as.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_as =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAs",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_as_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-as",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_as.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_as (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_as: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-as signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-as:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_as() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-as",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_as),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_as,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_as:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_as_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_as_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_as (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAs",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_as_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_as: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_as().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_as().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_as_finish (
#     OrgProjectUsefulInterface *proxy,
#     gchar ***out_arg_as,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^as)",
#                  out_arg_as);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_as_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_as: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_as() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_as_sync (
#     OrgProjectUsefulInterface *proxy,
#     gchar ***out_arg_as,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAs",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^as)",
#                  out_arg_as);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_as:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_as: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAs">SingleArgMethodAs()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_as (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     const gchar *const *arg_as)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(^as)",
#                    arg_as));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmp_ahu541w.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAo">
#                     <arg name="arg_ao" type="ao" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmp_ahu541w.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_ao_OUT_ARG_arg_ao =
# {
#   {
#     -1,
#     (gchar *) "arg_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_ao_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ao_OUT_ARG_arg_ao.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_ao =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAo",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_ao_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-ao",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_ao.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_ao (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_ao: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-ao signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-ao:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_ao() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-ao",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_ao),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_ao,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ao:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_ao_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ao_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_ao (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAo",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ao_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_ao: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_ao().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_ao().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ao_finish (
#     OrgProjectUsefulInterface *proxy,
#     gchar ***out_arg_ao,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^ao)",
#                  out_arg_ao);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_ao_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_ao: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_ao() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_ao_sync (
#     OrgProjectUsefulInterface *proxy,
#     gchar ***out_arg_ao,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAo",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^ao)",
#                  out_arg_ao);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_ao:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_ao: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAo">SingleArgMethodAo()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_ao (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     const gchar *const *arg_ao)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(^ao)",
#                    arg_ao));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpf7xee5_o.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAay">
#                     <arg name="arg_aay" type="aay" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpf7xee5_o.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_aay_OUT_ARG_arg_aay =
# {
#   {
#     -1,
#     (gchar *) "arg_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_aay_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_aay_OUT_ARG_arg_aay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_aay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAay",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_aay_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-aay",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_aay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_aay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_aay: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-aay signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-aay:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_aay() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-aay",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_aay),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_aay,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_aay:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_aay_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_aay_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_aay (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAay",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_aay_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_aay: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_aay().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_aay().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_aay_finish (
#     OrgProjectUsefulInterface *proxy,
#     gchar ***out_arg_aay,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^aay)",
#                  out_arg_aay);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_aay_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_aay: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_aay() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_aay_sync (
#     OrgProjectUsefulInterface *proxy,
#     gchar ***out_arg_aay,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAay",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(^aay)",
#                  out_arg_aay);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_aay:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_aay: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAay">SingleArgMethodAay()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_aay (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     const gchar *const *arg_aay)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(^aay)",
#                    arg_aay));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmp23j3tgun/tmpmvzpz20p.xml: 
#             <node>
#             <interface name="org.project.UsefulInterface">
#                 <method name="SingleArgMethodAsv">
#                     <arg name="arg_asv" type="a{sv}" direction="out"/>
#                 </method>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp23j3tgun/tmpmvzpz20p.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_useful_interface_method_info_single_arg_method_asv_OUT_ARG_arg_asv =
# {
#   {
#     -1,
#     (gchar *) "arg_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_useful_interface_method_info_single_arg_method_asv_OUT_ARG_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_asv_OUT_ARG_arg_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_useful_interface_method_info_single_arg_method_asv =
# {
#   {
#     -1,
#     (gchar *) "SingleArgMethodAsv",
#     NULL,
#     (GDBusArgInfo **) &_org_project_useful_interface_method_info_single_arg_method_asv_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-single-arg-method-asv",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_useful_interface_method_info_pointers[] =
# {
#   &_org_project_useful_interface_method_info_single_arg_method_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     (GDBusMethodInfo **) &_org_project_useful_interface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_method_marshal_single_arg_method_asv (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_single_arg_method_asv: Handler for the #OrgProjectUsefulInterface::handle-single-arg-method-asv signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectUsefulInterface::handle-single-arg-method-asv:
#    * @object: A #OrgProjectUsefulInterface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_useful_interface_complete_single_arg_method_asv() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-single-arg-method-asv",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, handle_single_arg_method_asv),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_useful_interface_method_marshal_single_arg_method_asv,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_asv:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_call_single_arg_method_asv_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_call_single_arg_method_asv_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_useful_interface_call_single_arg_method_asv (
#     OrgProjectUsefulInterface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAsv",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_asv_finish:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_asv: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_call_single_arg_method_asv().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_useful_interface_call_single_arg_method_asv().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_asv_finish (
#     OrgProjectUsefulInterface *proxy,
#     GVariant **out_arg_asv,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(@a{sv})",
#                  out_arg_asv);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_call_single_arg_method_asv_sync:
#  * @proxy: A #OrgProjectUsefulInterfaceProxy.
#  * @out_arg_asv: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_call_single_arg_method_asv() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_useful_interface_call_single_arg_method_asv_sync (
#     OrgProjectUsefulInterface *proxy,
#     GVariant **out_arg_asv,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SingleArgMethodAsv",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(@a{sv})",
#                  out_arg_asv);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_useful_interface_complete_single_arg_method_asv:
#  * @object: A #OrgProjectUsefulInterface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @arg_asv: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-UsefulInterface.SingleArgMethodAsv">SingleArgMethodAsv()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_useful_interface_complete_single_arg_method_asv (
#     OrgProjectUsefulInterface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     GVariant *arg_asv)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(@a{sv})",
#                    arg_asv));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# Error:
ok 12 __main__.TestCodegen.test_generate_methods_marshallers_multiple_in_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpegz90d69
# /tmp/tmpegz90d69/tmp3egk7fky.xml: 
#             <node>
#               <interface name="org.project.CallableIface">
#                 <method name="MethodWithManyArgs">
#                     <arg name='an_b' type='b'/>
# <arg name='an_y' type='y'/>
# <arg name='an_n' type='n'/>
# <arg name='an_q' type='q'/>
# <arg name='an_i' type='i'/>
# <arg name='an_u' type='u'/>
# <arg name='an_x' type='x'/>
# <arg name='an_t' type='t'/>
# <arg name='an_d' type='d'/>
# <arg name='an_s' type='s'/>
# <arg name='an_o' type='o'/>
# <arg name='an_g' type='g'/>
# <arg name='an_h' type='h'/>
# <arg name='an_ay' type='ay'/>
# <arg name='an_as' type='as'/>
# <arg name='an_ao' type='ao'/>
# <arg name='an_aay' type='aay'/>
# <arg name='an_asv' type='a{sv}'/>
# 
#                 </method>
#                 <method name="SameMethodWithManyArgs">
#                     <arg name='an_b' type='b'/>
# <arg name='an_y' type='y'/>
# <arg name='an_n' type='n'/>
# <arg name='an_q' type='q'/>
# <arg name='an_i' type='i'/>
# <arg name='an_u' type='u'/>
# <arg name='an_x' type='x'/>
# <arg name='an_t' type='t'/>
# <arg name='an_d' type='d'/>
# <arg name='an_s' type='s'/>
# <arg name='an_o' type='o'/>
# <arg name='an_g' type='g'/>
# <arg name='an_h' type='h'/>
# <arg name='an_ay' type='ay'/>
# <arg name='an_as' type='as'/>
# <arg name='an_ao' type='ao'/>
# <arg name='an_aay' type='aay'/>
# <arg name='an_asv' type='a{sv}'/>
# 
#                 </method>
#               </interface>
#               <interface name="org.project.OtherCallableIface">
#                 <method name="MethodWithManyArgs">
#                     <arg name='an_b' type='b'/>
# <arg name='an_y' type='y'/>
# <arg name='an_n' type='n'/>
# <arg name='an_q' type='q'/>
# <arg name='an_i' type='i'/>
# <arg name='an_u' type='u'/>
# <arg name='an_x' type='x'/>
# <arg name='an_t' type='t'/>
# <arg name='an_d' type='d'/>
# <arg name='an_s' type='s'/>
# <arg name='an_o' type='o'/>
# <arg name='an_g' type='g'/>
# <arg name='an_h' type='h'/>
# <arg name='an_ay' type='ay'/>
# <arg name='an_as' type='as'/>
# <arg name='an_ao' type='ao'/>
# <arg name='an_aay' type='aay'/>
# <arg name='an_asv' type='a{sv}'/>
# 
#                 </method>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpegz90d69/tmp3egk7fky.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectBooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         gboolean arg_an_b,
#         guchar arg_an_y,
#         gint16 arg_an_n,
#         guint16 arg_an_q,
#         gint arg_an_i,
#         guint arg_an_u,
#         gint64 arg_an_x,
#         guint64 arg_an_t,
#         gdouble arg_an_d,
#         const gchar *arg_an_s,
#         const gchar *arg_an_o,
#         const gchar *arg_an_g,
#         GVariant *arg_an_h,
#         const gchar *arg_an_ay,
#         const gchar *const *arg_an_as,
#         const gchar *const *arg_an_ao,
#         const gchar *const *arg_an_aay,
#         GVariant *arg_an_asv,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectBooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 20);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectBooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_boolean (param_values + 2),
#               g_marshal_value_peek_uchar (param_values + 3),
#               g_marshal_value_peek_int (param_values + 4),
#               g_marshal_value_peek_uint (param_values + 5),
#               g_marshal_value_peek_int (param_values + 6),
#               g_marshal_value_peek_uint (param_values + 7),
#               g_marshal_value_peek_int64 (param_values + 8),
#               g_marshal_value_peek_uint64 (param_values + 9),
#               g_marshal_value_peek_double (param_values + 10),
#               g_marshal_value_peek_string (param_values + 11),
#               g_marshal_value_peek_string (param_values + 12),
#               g_marshal_value_peek_string (param_values + 13),
#               g_marshal_value_peek_variant (param_values + 14),
#               g_marshal_value_peek_string (param_values + 15),
#               g_marshal_value_peek_boxed (param_values + 16),
#               g_marshal_value_peek_boxed (param_values + 17),
#               g_marshal_value_peek_boxed (param_values + 18),
#               g_marshal_value_peek_variant (param_values + 19),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.CallableIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectCallableIface
#  * @title: OrgProjectCallableIface
#  * @short_description: Generated C code for the org.project.CallableIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.CallableIface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_b =
# {
#   {
#     -1,
#     (gchar *) "an_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_y =
# {
#   {
#     -1,
#     (gchar *) "an_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_n =
# {
#   {
#     -1,
#     (gchar *) "an_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_q =
# {
#   {
#     -1,
#     (gchar *) "an_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_i =
# {
#   {
#     -1,
#     (gchar *) "an_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_u =
# {
#   {
#     -1,
#     (gchar *) "an_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_x =
# {
#   {
#     -1,
#     (gchar *) "an_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_t =
# {
#   {
#     -1,
#     (gchar *) "an_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_d =
# {
#   {
#     -1,
#     (gchar *) "an_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_s =
# {
#   {
#     -1,
#     (gchar *) "an_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_o =
# {
#   {
#     -1,
#     (gchar *) "an_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_g =
# {
#   {
#     -1,
#     (gchar *) "an_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_h =
# {
#   {
#     -1,
#     (gchar *) "an_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_ay =
# {
#   {
#     -1,
#     (gchar *) "an_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_as =
# {
#   {
#     -1,
#     (gchar *) "an_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_ao =
# {
#   {
#     -1,
#     (gchar *) "an_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_aay =
# {
#   {
#     -1,
#     (gchar *) "an_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_asv =
# {
#   {
#     -1,
#     (gchar *) "an_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_callable_iface_method_info_method_with_many_args_IN_ARG_pointers[] =
# {
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_b.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_y.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_n.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_q.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_i.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_u.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_x.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_t.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_d.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_s.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_o.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_g.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_h.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_ay.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_as.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_ao.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_aay.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_an_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_callable_iface_method_info_method_with_many_args =
# {
#   {
#     -1,
#     (gchar *) "MethodWithManyArgs",
#     (GDBusArgInfo **) &_org_project_callable_iface_method_info_method_with_many_args_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-method-with-many-args",
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_b =
# {
#   {
#     -1,
#     (gchar *) "an_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_y =
# {
#   {
#     -1,
#     (gchar *) "an_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_n =
# {
#   {
#     -1,
#     (gchar *) "an_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_q =
# {
#   {
#     -1,
#     (gchar *) "an_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_i =
# {
#   {
#     -1,
#     (gchar *) "an_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_u =
# {
#   {
#     -1,
#     (gchar *) "an_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_x =
# {
#   {
#     -1,
#     (gchar *) "an_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_t =
# {
#   {
#     -1,
#     (gchar *) "an_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_d =
# {
#   {
#     -1,
#     (gchar *) "an_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_s =
# {
#   {
#     -1,
#     (gchar *) "an_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_o =
# {
#   {
#     -1,
#     (gchar *) "an_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_g =
# {
#   {
#     -1,
#     (gchar *) "an_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_h =
# {
#   {
#     -1,
#     (gchar *) "an_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_ay =
# {
#   {
#     -1,
#     (gchar *) "an_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_as =
# {
#   {
#     -1,
#     (gchar *) "an_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_ao =
# {
#   {
#     -1,
#     (gchar *) "an_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_aay =
# {
#   {
#     -1,
#     (gchar *) "an_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_asv =
# {
#   {
#     -1,
#     (gchar *) "an_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_pointers[] =
# {
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_b.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_y.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_n.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_q.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_i.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_u.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_x.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_t.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_d.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_s.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_o.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_g.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_h.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_ay.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_as.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_ao.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_aay.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_an_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_callable_iface_method_info_same_method_with_many_args =
# {
#   {
#     -1,
#     (gchar *) "SameMethodWithManyArgs",
#     (GDBusArgInfo **) &_org_project_callable_iface_method_info_same_method_with_many_args_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-same-method-with-many-args",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_callable_iface_method_info_pointers[] =
# {
#   &_org_project_callable_iface_method_info_method_with_many_args.parent_struct,
#   &_org_project_callable_iface_method_info_same_method_with_many_args.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_callable_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.CallableIface",
#     (GDBusMethodInfo **) &_org_project_callable_iface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-callable-iface",
# };
# 
# 
# /**
#  * org_project_callable_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_callable_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_callable_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectCallableIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_callable_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_callable_iface_method_marshal_method_with_many_args (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_callable_iface_method_marshal_same_method_with_many_args (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectCallableIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  */
# 
# /**
#  * OrgProjectCallableIfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_method_with_many_args: Handler for the #OrgProjectCallableIface::handle-method-with-many-args signal.
#  * @handle_same_method_with_many_args: Handler for the #OrgProjectCallableIface::handle-same-method-with-many-args signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  */
# 
# typedef OrgProjectCallableIfaceIface OrgProjectCallableIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectCallableIface, org_project_callable_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_callable_iface_default_init (OrgProjectCallableIfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectCallableIface::handle-method-with-many-args:
#    * @object: A #OrgProjectCallableIface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_an_b: Argument passed by remote caller.
#    * @arg_an_y: Argument passed by remote caller.
#    * @arg_an_n: Argument passed by remote caller.
#    * @arg_an_q: Argument passed by remote caller.
#    * @arg_an_i: Argument passed by remote caller.
#    * @arg_an_u: Argument passed by remote caller.
#    * @arg_an_x: Argument passed by remote caller.
#    * @arg_an_t: Argument passed by remote caller.
#    * @arg_an_d: Argument passed by remote caller.
#    * @arg_an_s: Argument passed by remote caller.
#    * @arg_an_o: Argument passed by remote caller.
#    * @arg_an_g: Argument passed by remote caller.
#    * @arg_an_h: Argument passed by remote caller.
#    * @arg_an_ay: Argument passed by remote caller.
#    * @arg_an_as: Argument passed by remote caller.
#    * @arg_an_ao: Argument passed by remote caller.
#    * @arg_an_aay: Argument passed by remote caller.
#    * @arg_an_asv: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_callable_iface_complete_method_with_many_args() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-method-with-many-args",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectCallableIfaceIface, handle_method_with_many_args),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_callable_iface_method_marshal_method_with_many_args,
#     G_TYPE_BOOLEAN,
#     19,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_BOOLEAN, G_TYPE_UCHAR, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT64, G_TYPE_UINT64, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRING, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_VARIANT);
# 
#   /**
#    * OrgProjectCallableIface::handle-same-method-with-many-args:
#    * @object: A #OrgProjectCallableIface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_an_b: Argument passed by remote caller.
#    * @arg_an_y: Argument passed by remote caller.
#    * @arg_an_n: Argument passed by remote caller.
#    * @arg_an_q: Argument passed by remote caller.
#    * @arg_an_i: Argument passed by remote caller.
#    * @arg_an_u: Argument passed by remote caller.
#    * @arg_an_x: Argument passed by remote caller.
#    * @arg_an_t: Argument passed by remote caller.
#    * @arg_an_d: Argument passed by remote caller.
#    * @arg_an_s: Argument passed by remote caller.
#    * @arg_an_o: Argument passed by remote caller.
#    * @arg_an_g: Argument passed by remote caller.
#    * @arg_an_h: Argument passed by remote caller.
#    * @arg_an_ay: Argument passed by remote caller.
#    * @arg_an_as: Argument passed by remote caller.
#    * @arg_an_ao: Argument passed by remote caller.
#    * @arg_an_aay: Argument passed by remote caller.
#    * @arg_an_asv: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-CallableIface.SameMethodWithManyArgs">SameMethodWithManyArgs()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_callable_iface_complete_same_method_with_many_args() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-same-method-with-many-args",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectCallableIfaceIface, handle_same_method_with_many_args),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_callable_iface_method_marshal_same_method_with_many_args,
#     G_TYPE_BOOLEAN,
#     19,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_BOOLEAN, G_TYPE_UCHAR, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT64, G_TYPE_UINT64, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRING, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_callable_iface_call_method_with_many_args:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @arg_an_b: Argument to pass with the method invocation.
#  * @arg_an_y: Argument to pass with the method invocation.
#  * @arg_an_n: Argument to pass with the method invocation.
#  * @arg_an_q: Argument to pass with the method invocation.
#  * @arg_an_i: Argument to pass with the method invocation.
#  * @arg_an_u: Argument to pass with the method invocation.
#  * @arg_an_x: Argument to pass with the method invocation.
#  * @arg_an_t: Argument to pass with the method invocation.
#  * @arg_an_d: Argument to pass with the method invocation.
#  * @arg_an_s: Argument to pass with the method invocation.
#  * @arg_an_o: Argument to pass with the method invocation.
#  * @arg_an_g: Argument to pass with the method invocation.
#  * @arg_an_h: Argument to pass with the method invocation.
#  * @arg_an_ay: Argument to pass with the method invocation.
#  * @arg_an_as: Argument to pass with the method invocation.
#  * @arg_an_ao: Argument to pass with the method invocation.
#  * @arg_an_aay: Argument to pass with the method invocation.
#  * @arg_an_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_call_method_with_many_args_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_call_method_with_many_args_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_callable_iface_call_method_with_many_args (
#     OrgProjectCallableIface *proxy,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "MethodWithManyArgs",
#     g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_callable_iface_call_method_with_many_args_finish:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_call_method_with_many_args().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_callable_iface_call_method_with_many_args().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_method_with_many_args_finish (
#     OrgProjectCallableIface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_call_method_with_many_args_sync:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @arg_an_b: Argument to pass with the method invocation.
#  * @arg_an_y: Argument to pass with the method invocation.
#  * @arg_an_n: Argument to pass with the method invocation.
#  * @arg_an_q: Argument to pass with the method invocation.
#  * @arg_an_i: Argument to pass with the method invocation.
#  * @arg_an_u: Argument to pass with the method invocation.
#  * @arg_an_x: Argument to pass with the method invocation.
#  * @arg_an_t: Argument to pass with the method invocation.
#  * @arg_an_d: Argument to pass with the method invocation.
#  * @arg_an_s: Argument to pass with the method invocation.
#  * @arg_an_o: Argument to pass with the method invocation.
#  * @arg_an_g: Argument to pass with the method invocation.
#  * @arg_an_h: Argument to pass with the method invocation.
#  * @arg_an_ay: Argument to pass with the method invocation.
#  * @arg_an_as: Argument to pass with the method invocation.
#  * @arg_an_ao: Argument to pass with the method invocation.
#  * @arg_an_aay: Argument to pass with the method invocation.
#  * @arg_an_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_call_method_with_many_args() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_method_with_many_args_sync (
#     OrgProjectCallableIface *proxy,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "MethodWithManyArgs",
#     g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_call_same_method_with_many_args:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @arg_an_b: Argument to pass with the method invocation.
#  * @arg_an_y: Argument to pass with the method invocation.
#  * @arg_an_n: Argument to pass with the method invocation.
#  * @arg_an_q: Argument to pass with the method invocation.
#  * @arg_an_i: Argument to pass with the method invocation.
#  * @arg_an_u: Argument to pass with the method invocation.
#  * @arg_an_x: Argument to pass with the method invocation.
#  * @arg_an_t: Argument to pass with the method invocation.
#  * @arg_an_d: Argument to pass with the method invocation.
#  * @arg_an_s: Argument to pass with the method invocation.
#  * @arg_an_o: Argument to pass with the method invocation.
#  * @arg_an_g: Argument to pass with the method invocation.
#  * @arg_an_h: Argument to pass with the method invocation.
#  * @arg_an_ay: Argument to pass with the method invocation.
#  * @arg_an_as: Argument to pass with the method invocation.
#  * @arg_an_ao: Argument to pass with the method invocation.
#  * @arg_an_aay: Argument to pass with the method invocation.
#  * @arg_an_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.SameMethodWithManyArgs">SameMethodWithManyArgs()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_call_same_method_with_many_args_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_call_same_method_with_many_args_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_callable_iface_call_same_method_with_many_args (
#     OrgProjectCallableIface *proxy,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "SameMethodWithManyArgs",
#     g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_callable_iface_call_same_method_with_many_args_finish:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_call_same_method_with_many_args().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_callable_iface_call_same_method_with_many_args().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_same_method_with_many_args_finish (
#     OrgProjectCallableIface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_call_same_method_with_many_args_sync:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @arg_an_b: Argument to pass with the method invocation.
#  * @arg_an_y: Argument to pass with the method invocation.
#  * @arg_an_n: Argument to pass with the method invocation.
#  * @arg_an_q: Argument to pass with the method invocation.
#  * @arg_an_i: Argument to pass with the method invocation.
#  * @arg_an_u: Argument to pass with the method invocation.
#  * @arg_an_x: Argument to pass with the method invocation.
#  * @arg_an_t: Argument to pass with the method invocation.
#  * @arg_an_d: Argument to pass with the method invocation.
#  * @arg_an_s: Argument to pass with the method invocation.
#  * @arg_an_o: Argument to pass with the method invocation.
#  * @arg_an_g: Argument to pass with the method invocation.
#  * @arg_an_h: Argument to pass with the method invocation.
#  * @arg_an_ay: Argument to pass with the method invocation.
#  * @arg_an_as: Argument to pass with the method invocation.
#  * @arg_an_ao: Argument to pass with the method invocation.
#  * @arg_an_aay: Argument to pass with the method invocation.
#  * @arg_an_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.SameMethodWithManyArgs">SameMethodWithManyArgs()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_call_same_method_with_many_args() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_same_method_with_many_args_sync (
#     OrgProjectCallableIface *proxy,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "SameMethodWithManyArgs",
#     g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_complete_method_with_many_args:
#  * @object: A #OrgProjectCallableIface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_callable_iface_complete_method_with_many_args (
#     OrgProjectCallableIface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /**
#  * org_project_callable_iface_complete_same_method_with_many_args:
#  * @object: A #OrgProjectCallableIface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-CallableIface.SameMethodWithManyArgs">SameMethodWithManyArgs()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_callable_iface_complete_same_method_with_many_args (
#     OrgProjectCallableIface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectCallableIfaceProxy:
#  *
#  * The #OrgProjectCallableIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectCallableIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectCallableIfaceProxy.
#  */
# 
# struct _OrgProjectCallableIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_callable_iface_proxy_iface_init (OrgProjectCallableIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceProxy, org_project_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectCallableIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceProxy, org_project_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_callable_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectCallableIfaceProxy *proxy = ORG_PROJECT_CALLABLE_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_callable_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_callable_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_callable_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_callable_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_callable_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectCallableIfaceProxy *proxy = ORG_PROJECT_CALLABLE_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_callable_iface_proxy_init (OrgProjectCallableIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_callable_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, OrgProjectCallableIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_callable_iface_interface_info ());
# }
# 
# static void
# org_project_callable_iface_proxy_class_init (OrgProjectCallableIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_callable_iface_proxy_finalize;
#   gobject_class->get_property = org_project_callable_iface_proxy_get_property;
#   gobject_class->set_property = org_project_callable_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_callable_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_callable_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectCallableIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_callable_iface_proxy_iface_init (OrgProjectCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_callable_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_callable_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_callable_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_callable_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_callable_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_callable_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_callable_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectCallableIfaceSkeleton:
#  *
#  * The #OrgProjectCallableIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectCallableIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectCallableIfaceSkeleton.
#  */
# 
# struct _OrgProjectCallableIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_callable_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_callable_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_callable_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_callable_iface_skeleton_vtable =
# {
#   _org_project_callable_iface_skeleton_handle_method_call,
#   _org_project_callable_iface_skeleton_handle_get_property,
#   _org_project_callable_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_callable_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_callable_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_callable_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_callable_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_callable_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_callable_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_callable_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_callable_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_callable_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.CallableIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_callable_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_callable_iface_skeleton_iface_init (OrgProjectCallableIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceSkeleton, org_project_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectCallableIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceSkeleton, org_project_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_callable_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_callable_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_callable_iface_skeleton_init (OrgProjectCallableIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_callable_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_CALLABLE_IFACE_SKELETON, OrgProjectCallableIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_callable_iface_skeleton_class_init (OrgProjectCallableIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_callable_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_callable_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_callable_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_callable_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_callable_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectCallableIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_callable_iface_skeleton_iface_init (OrgProjectCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_callable_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceSkeleton): The skeleton object.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_CALLABLE_IFACE (g_object_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_SKELETON, NULL));
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.OtherCallableIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectOtherCallableIface
#  * @title: OrgProjectOtherCallableIface
#  * @short_description: Generated C code for the org.project.OtherCallableIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.OtherCallableIface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_b =
# {
#   {
#     -1,
#     (gchar *) "an_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_y =
# {
#   {
#     -1,
#     (gchar *) "an_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_n =
# {
#   {
#     -1,
#     (gchar *) "an_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_q =
# {
#   {
#     -1,
#     (gchar *) "an_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_i =
# {
#   {
#     -1,
#     (gchar *) "an_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_u =
# {
#   {
#     -1,
#     (gchar *) "an_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_x =
# {
#   {
#     -1,
#     (gchar *) "an_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_t =
# {
#   {
#     -1,
#     (gchar *) "an_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_d =
# {
#   {
#     -1,
#     (gchar *) "an_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_s =
# {
#   {
#     -1,
#     (gchar *) "an_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_o =
# {
#   {
#     -1,
#     (gchar *) "an_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_g =
# {
#   {
#     -1,
#     (gchar *) "an_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_h =
# {
#   {
#     -1,
#     (gchar *) "an_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_ay =
# {
#   {
#     -1,
#     (gchar *) "an_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_as =
# {
#   {
#     -1,
#     (gchar *) "an_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_ao =
# {
#   {
#     -1,
#     (gchar *) "an_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_aay =
# {
#   {
#     -1,
#     (gchar *) "an_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_asv =
# {
#   {
#     -1,
#     (gchar *) "an_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_pointers[] =
# {
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_b.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_y.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_n.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_q.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_i.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_u.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_x.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_t.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_d.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_s.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_o.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_g.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_h.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_ay.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_as.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_ao.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_aay.parent_struct,
#   &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_an_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_other_callable_iface_method_info_method_with_many_args =
# {
#   {
#     -1,
#     (gchar *) "MethodWithManyArgs",
#     (GDBusArgInfo **) &_org_project_other_callable_iface_method_info_method_with_many_args_IN_ARG_pointers,
#     NULL,
#     NULL
#   },
#   "handle-method-with-many-args",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_other_callable_iface_method_info_pointers[] =
# {
#   &_org_project_other_callable_iface_method_info_method_with_many_args.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_other_callable_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.OtherCallableIface",
#     (GDBusMethodInfo **) &_org_project_other_callable_iface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-other-callable-iface",
# };
# 
# 
# /**
#  * org_project_other_callable_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_other_callable_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_other_callable_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectOtherCallableIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_other_callable_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_other_callable_iface_method_marshal_method_with_many_args (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectOtherCallableIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>.
#  */
# 
# /**
#  * OrgProjectOtherCallableIfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_method_with_many_args: Handler for the #OrgProjectOtherCallableIface::handle-method-with-many-args signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>.
#  */
# 
# typedef OrgProjectOtherCallableIfaceIface OrgProjectOtherCallableIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectOtherCallableIface, org_project_other_callable_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_other_callable_iface_default_init (OrgProjectOtherCallableIfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectOtherCallableIface::handle-method-with-many-args:
#    * @object: A #OrgProjectOtherCallableIface.
#    * @invocation: A #GDBusMethodInvocation.
#    * @arg_an_b: Argument passed by remote caller.
#    * @arg_an_y: Argument passed by remote caller.
#    * @arg_an_n: Argument passed by remote caller.
#    * @arg_an_q: Argument passed by remote caller.
#    * @arg_an_i: Argument passed by remote caller.
#    * @arg_an_u: Argument passed by remote caller.
#    * @arg_an_x: Argument passed by remote caller.
#    * @arg_an_t: Argument passed by remote caller.
#    * @arg_an_d: Argument passed by remote caller.
#    * @arg_an_s: Argument passed by remote caller.
#    * @arg_an_o: Argument passed by remote caller.
#    * @arg_an_g: Argument passed by remote caller.
#    * @arg_an_h: Argument passed by remote caller.
#    * @arg_an_ay: Argument passed by remote caller.
#    * @arg_an_as: Argument passed by remote caller.
#    * @arg_an_ao: Argument passed by remote caller.
#    * @arg_an_aay: Argument passed by remote caller.
#    * @arg_an_asv: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-OtherCallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_other_callable_iface_complete_method_with_many_args() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-method-with-many-args",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectOtherCallableIfaceIface, handle_method_with_many_args),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_other_callable_iface_method_marshal_method_with_many_args,
#     G_TYPE_BOOLEAN,
#     19,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_BOOLEAN, G_TYPE_UCHAR, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT64, G_TYPE_UINT64, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRING, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_other_callable_iface_call_method_with_many_args:
#  * @proxy: A #OrgProjectOtherCallableIfaceProxy.
#  * @arg_an_b: Argument to pass with the method invocation.
#  * @arg_an_y: Argument to pass with the method invocation.
#  * @arg_an_n: Argument to pass with the method invocation.
#  * @arg_an_q: Argument to pass with the method invocation.
#  * @arg_an_i: Argument to pass with the method invocation.
#  * @arg_an_u: Argument to pass with the method invocation.
#  * @arg_an_x: Argument to pass with the method invocation.
#  * @arg_an_t: Argument to pass with the method invocation.
#  * @arg_an_d: Argument to pass with the method invocation.
#  * @arg_an_s: Argument to pass with the method invocation.
#  * @arg_an_o: Argument to pass with the method invocation.
#  * @arg_an_g: Argument to pass with the method invocation.
#  * @arg_an_h: Argument to pass with the method invocation.
#  * @arg_an_ay: Argument to pass with the method invocation.
#  * @arg_an_as: Argument to pass with the method invocation.
#  * @arg_an_ao: Argument to pass with the method invocation.
#  * @arg_an_aay: Argument to pass with the method invocation.
#  * @arg_an_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-OtherCallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_callable_iface_call_method_with_many_args_finish() to get the result of the operation.
#  *
#  * See org_project_other_callable_iface_call_method_with_many_args_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_other_callable_iface_call_method_with_many_args (
#     OrgProjectOtherCallableIface *proxy,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "MethodWithManyArgs",
#     g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_other_callable_iface_call_method_with_many_args_finish:
#  * @proxy: A #OrgProjectOtherCallableIfaceProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_callable_iface_call_method_with_many_args().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_other_callable_iface_call_method_with_many_args().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_other_callable_iface_call_method_with_many_args_finish (
#     OrgProjectOtherCallableIface *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_call_method_with_many_args_sync:
#  * @proxy: A #OrgProjectOtherCallableIfaceProxy.
#  * @arg_an_b: Argument to pass with the method invocation.
#  * @arg_an_y: Argument to pass with the method invocation.
#  * @arg_an_n: Argument to pass with the method invocation.
#  * @arg_an_q: Argument to pass with the method invocation.
#  * @arg_an_i: Argument to pass with the method invocation.
#  * @arg_an_u: Argument to pass with the method invocation.
#  * @arg_an_x: Argument to pass with the method invocation.
#  * @arg_an_t: Argument to pass with the method invocation.
#  * @arg_an_d: Argument to pass with the method invocation.
#  * @arg_an_s: Argument to pass with the method invocation.
#  * @arg_an_o: Argument to pass with the method invocation.
#  * @arg_an_g: Argument to pass with the method invocation.
#  * @arg_an_h: Argument to pass with the method invocation.
#  * @arg_an_ay: Argument to pass with the method invocation.
#  * @arg_an_as: Argument to pass with the method invocation.
#  * @arg_an_ao: Argument to pass with the method invocation.
#  * @arg_an_aay: Argument to pass with the method invocation.
#  * @arg_an_asv: Argument to pass with the method invocation.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-OtherCallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_callable_iface_call_method_with_many_args() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_other_callable_iface_call_method_with_many_args_sync (
#     OrgProjectOtherCallableIface *proxy,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "MethodWithManyArgs",
#     g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_complete_method_with_many_args:
#  * @object: A #OrgProjectOtherCallableIface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-OtherCallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_other_callable_iface_complete_method_with_many_args (
#     OrgProjectOtherCallableIface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherCallableIfaceProxy:
#  *
#  * The #OrgProjectOtherCallableIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherCallableIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherCallableIfaceProxy.
#  */
# 
# struct _OrgProjectOtherCallableIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_other_callable_iface_proxy_iface_init (OrgProjectOtherCallableIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceProxy, org_project_other_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectOtherCallableIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceProxy, org_project_other_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_other_callable_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectOtherCallableIfaceProxy *proxy = ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_other_callable_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_callable_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_callable_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_callable_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_other_callable_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectOtherCallableIfaceProxy *proxy = ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_other_callable_iface_proxy_init (OrgProjectOtherCallableIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_other_callable_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, OrgProjectOtherCallableIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_other_callable_iface_interface_info ());
# }
# 
# static void
# org_project_other_callable_iface_proxy_class_init (OrgProjectOtherCallableIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_other_callable_iface_proxy_finalize;
#   gobject_class->get_property = org_project_other_callable_iface_proxy_get_property;
#   gobject_class->set_property = org_project_other_callable_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_other_callable_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_other_callable_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherCallableIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_other_callable_iface_proxy_iface_init (OrgProjectOtherCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_callable_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_other_callable_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_callable_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_callable_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_callable_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_callable_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_other_callable_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_other_callable_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_callable_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_other_callable_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_callable_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_callable_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_callable_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_callable_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_other_callable_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_callable_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherCallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherCallableIfaceSkeleton:
#  *
#  * The #OrgProjectOtherCallableIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherCallableIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherCallableIfaceSkeleton.
#  */
# 
# struct _OrgProjectOtherCallableIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_other_callable_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_other_callable_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_other_callable_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_other_callable_iface_skeleton_vtable =
# {
#   _org_project_other_callable_iface_skeleton_handle_method_call,
#   _org_project_other_callable_iface_skeleton_handle_get_property,
#   _org_project_other_callable_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_other_callable_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_other_callable_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_other_callable_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_other_callable_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_other_callable_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_other_callable_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_other_callable_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_other_callable_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_other_callable_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.OtherCallableIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_other_callable_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_other_callable_iface_skeleton_iface_init (OrgProjectOtherCallableIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceSkeleton, org_project_other_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectOtherCallableIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherCallableIfaceSkeleton, org_project_other_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE, org_project_other_callable_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_other_callable_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectOtherCallableIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_other_callable_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_callable_iface_skeleton_init (OrgProjectOtherCallableIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_other_callable_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON, OrgProjectOtherCallableIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_other_callable_iface_skeleton_class_init (OrgProjectOtherCallableIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_other_callable_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_other_callable_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_other_callable_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_other_callable_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_other_callable_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherCallableIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_other_callable_iface_skeleton_iface_init (OrgProjectOtherCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_other_callable_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherCallableIface.top_of_page">org.project.OtherCallableIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherCallableIfaceSkeleton): The skeleton object.
#  */
# OrgProjectOtherCallableIface *
# org_project_other_callable_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_OTHER_CALLABLE_IFACE (g_object_new (TYPE_ORG_PROJECT_OTHER_CALLABLE_IFACE_SKELETON, NULL));
# }
# Error:
ok 13 __main__.TestCodegen.test_generate_methods_marshallers_multiple_out_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmppi41j7oa
# /tmp/tmppi41j7oa/tmpwm1_y8kk.xml: 
#             <node>
#               <interface name="org.project.CallableIface">
#                 <method name="MethodWithManyArgs">
#                     <arg name='an_b' type='b' direction='out'/>
# <arg name='an_y' type='y' direction='out'/>
# <arg name='an_n' type='n' direction='out'/>
# <arg name='an_q' type='q' direction='out'/>
# <arg name='an_i' type='i' direction='out'/>
# <arg name='an_u' type='u' direction='out'/>
# <arg name='an_x' type='x' direction='out'/>
# <arg name='an_t' type='t' direction='out'/>
# <arg name='an_d' type='d' direction='out'/>
# <arg name='an_s' type='s' direction='out'/>
# <arg name='an_o' type='o' direction='out'/>
# <arg name='an_g' type='g' direction='out'/>
# <arg name='an_h' type='h' direction='out'/>
# <arg name='an_ay' type='ay' direction='out'/>
# <arg name='an_as' type='as' direction='out'/>
# <arg name='an_ao' type='ao' direction='out'/>
# <arg name='an_aay' type='aay' direction='out'/>
# <arg name='an_asv' type='a{sv}' direction='out'/>
# 
#                 </method>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmppi41j7oa/tmpwm1_y8kk.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.CallableIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectCallableIface
#  * @title: OrgProjectCallableIface
#  * @short_description: Generated C code for the org.project.CallableIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.CallableIface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_b =
# {
#   {
#     -1,
#     (gchar *) "an_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_y =
# {
#   {
#     -1,
#     (gchar *) "an_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_n =
# {
#   {
#     -1,
#     (gchar *) "an_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_q =
# {
#   {
#     -1,
#     (gchar *) "an_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_i =
# {
#   {
#     -1,
#     (gchar *) "an_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_u =
# {
#   {
#     -1,
#     (gchar *) "an_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_x =
# {
#   {
#     -1,
#     (gchar *) "an_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_t =
# {
#   {
#     -1,
#     (gchar *) "an_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_d =
# {
#   {
#     -1,
#     (gchar *) "an_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_s =
# {
#   {
#     -1,
#     (gchar *) "an_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_o =
# {
#   {
#     -1,
#     (gchar *) "an_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_g =
# {
#   {
#     -1,
#     (gchar *) "an_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_h =
# {
#   {
#     -1,
#     (gchar *) "an_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_ay =
# {
#   {
#     -1,
#     (gchar *) "an_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_as =
# {
#   {
#     -1,
#     (gchar *) "an_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_ao =
# {
#   {
#     -1,
#     (gchar *) "an_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_aay =
# {
#   {
#     -1,
#     (gchar *) "an_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_asv =
# {
#   {
#     -1,
#     (gchar *) "an_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_pointers[] =
# {
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_b.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_y.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_n.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_q.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_i.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_u.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_x.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_t.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_d.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_s.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_o.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_g.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_h.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_ay.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_as.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_ao.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_aay.parent_struct,
#   &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_an_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _org_project_callable_iface_method_info_method_with_many_args =
# {
#   {
#     -1,
#     (gchar *) "MethodWithManyArgs",
#     NULL,
#     (GDBusArgInfo **) &_org_project_callable_iface_method_info_method_with_many_args_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-method-with-many-args",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_callable_iface_method_info_pointers[] =
# {
#   &_org_project_callable_iface_method_info_method_with_many_args.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_callable_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.CallableIface",
#     (GDBusMethodInfo **) &_org_project_callable_iface_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-callable-iface",
# };
# 
# 
# /**
#  * org_project_callable_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_callable_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_callable_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectCallableIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_callable_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_callable_iface_method_marshal_method_with_many_args (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectCallableIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  */
# 
# /**
#  * OrgProjectCallableIfaceIface:
#  * @parent_iface: The parent interface.
#  * @handle_method_with_many_args: Handler for the #OrgProjectCallableIface::handle-method-with-many-args signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  */
# 
# typedef OrgProjectCallableIfaceIface OrgProjectCallableIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectCallableIface, org_project_callable_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_callable_iface_default_init (OrgProjectCallableIfaceIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectCallableIface::handle-method-with-many-args:
#    * @object: A #OrgProjectCallableIface.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_callable_iface_complete_method_with_many_args() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-method-with-many-args",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectCallableIfaceIface, handle_method_with_many_args),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_callable_iface_method_marshal_method_with_many_args,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_callable_iface_call_method_with_many_args:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_call_method_with_many_args_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_call_method_with_many_args_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_callable_iface_call_method_with_many_args (
#     OrgProjectCallableIface *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "MethodWithManyArgs",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_callable_iface_call_method_with_many_args_finish:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @out_an_b: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_y: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_n: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_q: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_i: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_u: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_x: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_t: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_d: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_s: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_o: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_g: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_h: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_ay: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_as: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @out_an_ao: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @out_an_aay: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @out_an_asv: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_call_method_with_many_args().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_callable_iface_call_method_with_many_args().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_method_with_many_args_finish (
#     OrgProjectCallableIface *proxy,
#     gboolean *out_an_b,
#     guchar *out_an_y,
#     gint16 *out_an_n,
#     guint16 *out_an_q,
#     gint *out_an_i,
#     guint *out_an_u,
#     gint64 *out_an_x,
#     guint64 *out_an_t,
#     gdouble *out_an_d,
#     gchar **out_an_s,
#     gchar **out_an_o,
#     gchar **out_an_g,
#     GVariant **out_an_h,
#     gchar **out_an_ay,
#     gchar ***out_an_as,
#     gchar ***out_an_ao,
#     gchar ***out_an_aay,
#     GVariant **out_an_asv,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                  out_an_b,
#                  out_an_y,
#                  out_an_n,
#                  out_an_q,
#                  out_an_i,
#                  out_an_u,
#                  out_an_x,
#                  out_an_t,
#                  out_an_d,
#                  out_an_s,
#                  out_an_o,
#                  out_an_g,
#                  out_an_h,
#                  out_an_ay,
#                  out_an_as,
#                  out_an_ao,
#                  out_an_aay,
#                  out_an_asv);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_call_method_with_many_args_sync:
#  * @proxy: A #OrgProjectCallableIfaceProxy.
#  * @out_an_b: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_y: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_n: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_q: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_i: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_u: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_x: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_t: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_d: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_s: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_o: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_g: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_h: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_ay: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_an_as: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @out_an_ao: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @out_an_aay: (out) (optional) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
#  * @out_an_asv: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_call_method_with_many_args() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_callable_iface_call_method_with_many_args_sync (
#     OrgProjectCallableIface *proxy,
#     gboolean *out_an_b,
#     guchar *out_an_y,
#     gint16 *out_an_n,
#     guint16 *out_an_q,
#     gint *out_an_i,
#     guint *out_an_u,
#     gint64 *out_an_x,
#     guint64 *out_an_t,
#     gdouble *out_an_d,
#     gchar **out_an_s,
#     gchar **out_an_o,
#     gchar **out_an_g,
#     GVariant **out_an_h,
#     gchar **out_an_ay,
#     gchar ***out_an_as,
#     gchar ***out_an_ao,
#     gchar ***out_an_aay,
#     GVariant **out_an_asv,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "MethodWithManyArgs",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                  out_an_b,
#                  out_an_y,
#                  out_an_n,
#                  out_an_q,
#                  out_an_i,
#                  out_an_u,
#                  out_an_x,
#                  out_an_t,
#                  out_an_d,
#                  out_an_s,
#                  out_an_o,
#                  out_an_g,
#                  out_an_h,
#                  out_an_ay,
#                  out_an_as,
#                  out_an_ao,
#                  out_an_aay,
#                  out_an_asv);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_callable_iface_complete_method_with_many_args:
#  * @object: A #OrgProjectCallableIface.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @an_b: Parameter to return.
#  * @an_y: Parameter to return.
#  * @an_n: Parameter to return.
#  * @an_q: Parameter to return.
#  * @an_i: Parameter to return.
#  * @an_u: Parameter to return.
#  * @an_x: Parameter to return.
#  * @an_t: Parameter to return.
#  * @an_d: Parameter to return.
#  * @an_s: Parameter to return.
#  * @an_o: Parameter to return.
#  * @an_g: Parameter to return.
#  * @an_h: Parameter to return.
#  * @an_ay: Parameter to return.
#  * @an_as: Parameter to return.
#  * @an_ao: Parameter to return.
#  * @an_aay: Parameter to return.
#  * @an_asv: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-CallableIface.MethodWithManyArgs">MethodWithManyArgs()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_callable_iface_complete_method_with_many_args (
#     OrgProjectCallableIface *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     gboolean an_b,
#     guchar an_y,
#     gint16 an_n,
#     guint16 an_q,
#     gint an_i,
#     guint an_u,
#     gint64 an_x,
#     guint64 an_t,
#     gdouble an_d,
#     const gchar *an_s,
#     const gchar *an_o,
#     const gchar *an_g,
#     GVariant *an_h,
#     const gchar *an_ay,
#     const gchar *const *an_as,
#     const gchar *const *an_ao,
#     const gchar *const *an_aay,
#     GVariant *an_asv)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    an_b,
#                    an_y,
#                    an_n,
#                    an_q,
#                    an_i,
#                    an_u,
#                    an_x,
#                    an_t,
#                    an_d,
#                    an_s,
#                    an_o,
#                    an_g,
#                    an_h,
#                    an_ay,
#                    an_as,
#                    an_ao,
#                    an_aay,
#                    an_asv));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectCallableIfaceProxy:
#  *
#  * The #OrgProjectCallableIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectCallableIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectCallableIfaceProxy.
#  */
# 
# struct _OrgProjectCallableIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_callable_iface_proxy_iface_init (OrgProjectCallableIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceProxy, org_project_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectCallableIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceProxy, org_project_callable_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_callable_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectCallableIfaceProxy *proxy = ORG_PROJECT_CALLABLE_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_callable_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_callable_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_callable_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_callable_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_callable_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectCallableIfaceProxy *proxy = ORG_PROJECT_CALLABLE_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_callable_iface_proxy_init (OrgProjectCallableIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_callable_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, OrgProjectCallableIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_callable_iface_interface_info ());
# }
# 
# static void
# org_project_callable_iface_proxy_class_init (OrgProjectCallableIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_callable_iface_proxy_finalize;
#   gobject_class->get_property = org_project_callable_iface_proxy_get_property;
#   gobject_class->set_property = org_project_callable_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_callable_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_callable_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectCallableIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_callable_iface_proxy_iface_init (OrgProjectCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_callable_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_callable_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_callable_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_callable_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_callable_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_callable_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_callable_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_callable_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_callable_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_callable_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_callable_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_callable_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.CallableIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_CALLABLE_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectCallableIfaceSkeleton:
#  *
#  * The #OrgProjectCallableIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectCallableIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectCallableIfaceSkeleton.
#  */
# 
# struct _OrgProjectCallableIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_callable_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_CALLABLE_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_callable_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_callable_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_callable_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_callable_iface_skeleton_vtable =
# {
#   _org_project_callable_iface_skeleton_handle_method_call,
#   _org_project_callable_iface_skeleton_handle_get_property,
#   _org_project_callable_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_callable_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_callable_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_callable_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_callable_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_callable_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_callable_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_callable_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_callable_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_callable_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.CallableIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_callable_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_callable_iface_skeleton_iface_init (OrgProjectCallableIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceSkeleton, org_project_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectCallableIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectCallableIfaceSkeleton, org_project_callable_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_CALLABLE_IFACE, org_project_callable_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_callable_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectCallableIfaceSkeleton *skeleton = ORG_PROJECT_CALLABLE_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_callable_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_callable_iface_skeleton_init (OrgProjectCallableIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_callable_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_CALLABLE_IFACE_SKELETON, OrgProjectCallableIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_callable_iface_skeleton_class_init (OrgProjectCallableIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_callable_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_callable_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_callable_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_callable_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_callable_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectCallableIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_callable_iface_skeleton_iface_init (OrgProjectCallableIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_callable_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-CallableIface.top_of_page">org.project.CallableIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectCallableIfaceSkeleton): The skeleton object.
#  */
# OrgProjectCallableIface *
# org_project_callable_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_CALLABLE_IFACE (g_object_new (TYPE_ORG_PROJECT_CALLABLE_IFACE_SKELETON, NULL));
# }
# Error:
ok 14 __main__.TestCodegen.test_generate_methods_marshallers_with_unix_fds
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpm19h5wsh
# /tmp/tmpm19h5wsh/tmpud_ft2dc.xml: 
#             <node>
#               <interface name="test.FDPassing">
#                 <method name="HelloFD">
#                   <annotation name="org.gtk.GDBus.C.UnixFD" value="1"/>
#                   <arg name="greeting" direction="in" type="s"/>
#                   <arg name="response" direction="out" type="s"/>
#                 </method>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpm19h5wsh/tmpud_ft2dc.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT_OBJECT_STRING (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectObjectStringFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         GUnixFDList *arg_fd_list,
#         const gchar *arg_greeting,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectObjectStringFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 4);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectObjectStringFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               g_marshal_value_peek_object (param_values + 2),
#               g_marshal_value_peek_string (param_values + 3),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface test.FDPassing
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:TestFDPassing
#  * @title: TestFDPassing
#  * @short_description: Generated C code for the test.FDPassing D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-test-FDPassing.top_of_page">test.FDPassing</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for test.FDPassing ---- */
# 
# static const _ExtendedGDBusArgInfo _test_fdpassing_method_info_hello_fd_IN_ARG_greeting =
# {
#   {
#     -1,
#     (gchar *) "greeting",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _test_fdpassing_method_info_hello_fd_IN_ARG_pointers[] =
# {
#   &_test_fdpassing_method_info_hello_fd_IN_ARG_greeting.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusArgInfo _test_fdpassing_method_info_hello_fd_OUT_ARG_response =
# {
#   {
#     -1,
#     (gchar *) "response",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _test_fdpassing_method_info_hello_fd_OUT_ARG_pointers[] =
# {
#   &_test_fdpassing_method_info_hello_fd_OUT_ARG_response.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusMethodInfo _test_fdpassing_method_info_hello_fd =
# {
#   {
#     -1,
#     (gchar *) "HelloFD",
#     (GDBusArgInfo **) &_test_fdpassing_method_info_hello_fd_IN_ARG_pointers,
#     (GDBusArgInfo **) &_test_fdpassing_method_info_hello_fd_OUT_ARG_pointers,
#     NULL
#   },
#   "handle-hello-fd",
#   TRUE
# };
# 
# static const GDBusMethodInfo * const _test_fdpassing_method_info_pointers[] =
# {
#   &_test_fdpassing_method_info_hello_fd.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _test_fdpassing_interface_info =
# {
#   {
#     -1,
#     (gchar *) "test.FDPassing",
#     (GDBusMethodInfo **) &_test_fdpassing_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "test-fdpassing",
# };
# 
# 
# /**
#  * test_fdpassing_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-test-FDPassing.top_of_page">test.FDPassing</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# test_fdpassing_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_test_fdpassing_interface_info.parent_struct;
# }
# 
# /**
#  * test_fdpassing_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #TestFDPassing interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# test_fdpassing_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# test_fdpassing_method_marshal_hello_fd (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT_OBJECT_STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * TestFDPassing:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-test-FDPassing.top_of_page">test.FDPassing</link>.
#  */
# 
# /**
#  * TestFDPassingIface:
#  * @parent_iface: The parent interface.
#  * @handle_hello_fd: Handler for the #TestFDPassing::handle-hello-fd signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-test-FDPassing.top_of_page">test.FDPassing</link>.
#  */
# 
# typedef TestFDPassingIface TestFDPassingInterface;
# G_DEFINE_INTERFACE (TestFDPassing, test_fdpassing, G_TYPE_OBJECT)
# 
# static void
# test_fdpassing_default_init (TestFDPassingIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * TestFDPassing::handle-hello-fd:
#    * @object: A #TestFDPassing.
#    * @invocation: A #GDBusMethodInvocation.
#    * @fd_list: (nullable): A #GUnixFDList or %NULL.
#    * @arg_greeting: Argument passed by remote caller.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-test-FDPassing.HelloFD">HelloFD()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call test_fdpassing_complete_hello_fd() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-hello-fd",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (TestFDPassingIface, handle_hello_fd),
#     g_signal_accumulator_true_handled,
#     NULL,
#       test_fdpassing_method_marshal_hello_fd,
#     G_TYPE_BOOLEAN,
#     3,
#     G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_UNIX_FD_LIST, G_TYPE_STRING);
# 
# }
# 
# /**
#  * test_fdpassing_call_hello_fd:
#  * @proxy: A #TestFDPassingProxy.
#  * @arg_greeting: Argument to pass with the method invocation.
#  * @fd_list: (nullable): A #GUnixFDList or %NULL.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-test-FDPassing.HelloFD">HelloFD()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call test_fdpassing_call_hello_fd_finish() to get the result of the operation.
#  *
#  * See test_fdpassing_call_hello_fd_sync() for the synchronous, blocking version of this method.
#  */
# void
# test_fdpassing_call_hello_fd (
#     TestFDPassing *proxy,
#     const gchar *arg_greeting,
#     GUnixFDList *fd_list,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call_with_unix_fd_list (G_DBUS_PROXY (proxy),
#     "HelloFD",
#     g_variant_new ("(s)",
#                    arg_greeting),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     fd_list,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * test_fdpassing_call_hello_fd_finish:
#  * @proxy: A #TestFDPassingProxy.
#  * @out_response: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_fd_list: (out) (optional) (nullable): Return location for a #GUnixFDList or %NULL to ignore.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to test_fdpassing_call_hello_fd().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with test_fdpassing_call_hello_fd().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# test_fdpassing_call_hello_fd_finish (
#     TestFDPassing *proxy,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_with_unix_fd_list_finish (G_DBUS_PROXY (proxy), out_fd_list, res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(s)",
#                  out_response);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * test_fdpassing_call_hello_fd_sync:
#  * @proxy: A #TestFDPassingProxy.
#  * @arg_greeting: Argument to pass with the method invocation.
#  * @fd_list: (nullable): A #GUnixFDList or %NULL.
#  * @out_response: (out) (optional): Return location for return parameter or %NULL to ignore.
#  * @out_fd_list: (out) (optional) (nullable): Return location for a #GUnixFDList or %NULL.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-test-FDPassing.HelloFD">HelloFD()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See test_fdpassing_call_hello_fd() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# test_fdpassing_call_hello_fd_sync (
#     TestFDPassing *proxy,
#     const gchar *arg_greeting,
#     GUnixFDList  *fd_list,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_with_unix_fd_list_sync (G_DBUS_PROXY (proxy),
#     "HelloFD",
#     g_variant_new ("(s)",
#                    arg_greeting),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     fd_list,
#     out_fd_list,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "(s)",
#                  out_response);
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * test_fdpassing_complete_hello_fd:
#  * @object: A #TestFDPassing.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  * @fd_list: (nullable): A #GUnixFDList or %NULL.
#  * @response: Parameter to return.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-test-FDPassing.HelloFD">HelloFD()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# test_fdpassing_complete_hello_fd (
#     TestFDPassing *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     const gchar *response)
# {
#   g_dbus_method_invocation_return_value_with_unix_fd_list (invocation,
#     g_variant_new ("(s)",
#                    response),
#     fd_list);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * TestFDPassingProxy:
#  *
#  * The #TestFDPassingProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * TestFDPassingProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #TestFDPassingProxy.
#  */
# 
# struct _TestFDPassingProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void test_fdpassing_proxy_iface_init (TestFDPassingIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (TestFDPassingProxy, test_fdpassing_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (TestFDPassingProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_TEST_FDPASSING, test_fdpassing_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (TestFDPassingProxy, test_fdpassing_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_TEST_FDPASSING, test_fdpassing_proxy_iface_init))
# 
# #endif
# static void
# test_fdpassing_proxy_finalize (GObject *object)
# {
#   TestFDPassingProxy *proxy = TEST_FDPASSING_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (test_fdpassing_proxy_parent_class)->finalize (object);
# }
# 
# static void
# test_fdpassing_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# test_fdpassing_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# test_fdpassing_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_test_fdpassing_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_TEST_FDPASSING);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_TEST_FDPASSING);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# test_fdpassing_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   TestFDPassingProxy *proxy = TEST_FDPASSING_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_test_fdpassing_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_test_fdpassing_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# test_fdpassing_proxy_init (TestFDPassingProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = test_fdpassing_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_TEST_FDPASSING_PROXY, TestFDPassingProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), test_fdpassing_interface_info ());
# }
# 
# static void
# test_fdpassing_proxy_class_init (TestFDPassingProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = test_fdpassing_proxy_finalize;
#   gobject_class->get_property = test_fdpassing_proxy_get_property;
#   gobject_class->set_property = test_fdpassing_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = test_fdpassing_proxy_g_signal;
#   proxy_class->g_properties_changed = test_fdpassing_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (TestFDPassingProxyPrivate));
# #endif
# }
# 
# static void
# test_fdpassing_proxy_iface_init (TestFDPassingIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * test_fdpassing_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-test-FDPassing.top_of_page">test.FDPassing</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call test_fdpassing_proxy_new_finish() to get the result of the operation.
#  *
#  * See test_fdpassing_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# test_fdpassing_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_TEST_FDPASSING_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "test.FDPassing", NULL);
# }
# 
# /**
#  * test_fdpassing_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to test_fdpassing_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with test_fdpassing_proxy_new().
#  *
#  * Returns: (transfer full) (type TestFDPassingProxy): The constructed proxy object or %NULL if @error is set.
#  */
# TestFDPassing *
# test_fdpassing_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return TEST_FDPASSING (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * test_fdpassing_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-test-FDPassing.top_of_page">test.FDPassing</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See test_fdpassing_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type TestFDPassingProxy): The constructed proxy object or %NULL if @error is set.
#  */
# TestFDPassing *
# test_fdpassing_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_TEST_FDPASSING_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "test.FDPassing", NULL);
#   if (ret != NULL)
#     return TEST_FDPASSING (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * test_fdpassing_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like test_fdpassing_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call test_fdpassing_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See test_fdpassing_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# test_fdpassing_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_TEST_FDPASSING_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "test.FDPassing", NULL);
# }
# 
# /**
#  * test_fdpassing_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to test_fdpassing_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with test_fdpassing_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type TestFDPassingProxy): The constructed proxy object or %NULL if @error is set.
#  */
# TestFDPassing *
# test_fdpassing_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return TEST_FDPASSING (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * test_fdpassing_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like test_fdpassing_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See test_fdpassing_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type TestFDPassingProxy): The constructed proxy object or %NULL if @error is set.
#  */
# TestFDPassing *
# test_fdpassing_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_TEST_FDPASSING_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "test.FDPassing", NULL);
#   if (ret != NULL)
#     return TEST_FDPASSING (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * TestFDPassingSkeleton:
#  *
#  * The #TestFDPassingSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * TestFDPassingSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #TestFDPassingSkeleton.
#  */
# 
# struct _TestFDPassingSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _test_fdpassing_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   TestFDPassingSkeleton *skeleton = TEST_FDPASSING_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_TEST_FDPASSING);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_TEST_FDPASSING);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _test_fdpassing_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   TestFDPassingSkeleton *skeleton = TEST_FDPASSING_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_test_fdpassing_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _test_fdpassing_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   TestFDPassingSkeleton *skeleton = TEST_FDPASSING_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_test_fdpassing_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _test_fdpassing_skeleton_vtable =
# {
#   _test_fdpassing_skeleton_handle_method_call,
#   _test_fdpassing_skeleton_handle_get_property,
#   _test_fdpassing_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# test_fdpassing_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return test_fdpassing_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# test_fdpassing_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_test_fdpassing_skeleton_vtable;
# }
# 
# static GVariant *
# test_fdpassing_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   TestFDPassingSkeleton *skeleton = TEST_FDPASSING_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_test_fdpassing_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _test_fdpassing_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _test_fdpassing_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _test_fdpassing_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "test.FDPassing", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# test_fdpassing_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void test_fdpassing_skeleton_iface_init (TestFDPassingIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (TestFDPassingSkeleton, test_fdpassing_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (TestFDPassingSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_TEST_FDPASSING, test_fdpassing_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (TestFDPassingSkeleton, test_fdpassing_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_TEST_FDPASSING, test_fdpassing_skeleton_iface_init))
# 
# #endif
# static void
# test_fdpassing_skeleton_finalize (GObject *object)
# {
#   TestFDPassingSkeleton *skeleton = TEST_FDPASSING_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (test_fdpassing_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# test_fdpassing_skeleton_init (TestFDPassingSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = test_fdpassing_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_TEST_FDPASSING_SKELETON, TestFDPassingSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# test_fdpassing_skeleton_class_init (TestFDPassingSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = test_fdpassing_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = test_fdpassing_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = test_fdpassing_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = test_fdpassing_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = test_fdpassing_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (TestFDPassingSkeletonPrivate));
# #endif
# }
# 
# static void
# test_fdpassing_skeleton_iface_init (TestFDPassingIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * test_fdpassing_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-test-FDPassing.top_of_page">test.FDPassing</link>.
#  *
#  * Returns: (transfer full) (type TestFDPassingSkeleton): The skeleton object.
#  */
# TestFDPassing *
# test_fdpassing_skeleton_new (void)
# {
#   return TEST_FDPASSING (g_object_new (TYPE_TEST_FDPASSING_SKELETON, NULL));
# }
# Error:
ok 15 __main__.TestCodegen.test_generate_rst
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpacn6c5ec
# /tmp/tmpacn6c5ec/tmp0zrz3a5c.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <method name="RandomMethod"/>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpacn6c5ec/tmp0zrz3a5c.xml', '--generate-rst', 'test']
# Return code: 0
# Output:
#  
# Error:
Executing: glib/codegen.py.test
ok 16 __main__.TestCodegen.test_generate_rst_method
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpjsj2rtf7
# /tmp/tmpjsj2rtf7/tmpj6iylers.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <!-- RandomMethod:
# 
#             A random test method.
#             -->
#             <method name="RandomMethod"/>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpjsj2rtf7/tmpj6iylers.xml', '--generate-rst', 'test']
# Return code: 0
# Output:
#  
# Error:
ok 17 __main__.TestCodegen.test_generate_rst_property
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpy10imvyv
# /tmp/tmpy10imvyv/tmp0b27c2y9.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <!-- RandomProperty:
# 
#             A random test property.
#             -->
#             <property type="s" name="RandomProperty" access="read"/>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpy10imvyv/tmp0b27c2y9.xml', '--generate-rst', 'test']
# Return code: 0
# Output:
#  
# Error:
ok 18 __main__.TestCodegen.test_generate_rst_signal
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp05apr5oz
# /tmp/tmp05apr5oz/tmp1bftiqn5.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <!-- RandomSignal:
# 
#             A random test signal.
#             -->
#             <signal name="RandomSignal"/>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp05apr5oz/tmp1bftiqn5.xml', '--generate-rst', 'test']
# Return code: 0
# Output:
#  
# Error:
ok 19 __main__.TestCodegen.test_generate_signal_id_multiple_signal_args_types
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpuud_5sev
# /tmp/tmpuud_5sev/tmp_314hqxq.xml: 
#             <node>
#               <interface name="org.project.SignalingIface">
#                 <signal name="SignalWithManyArgs">
#                     <arg name='an_b' type='b'/>
# <arg name='an_y' type='y'/>
# <arg name='an_n' type='n'/>
# <arg name='an_q' type='q'/>
# <arg name='an_i' type='i'/>
# <arg name='an_u' type='u'/>
# <arg name='an_x' type='x'/>
# <arg name='an_t' type='t'/>
# <arg name='an_d' type='d'/>
# <arg name='an_s' type='s'/>
# <arg name='an_o' type='o'/>
# <arg name='an_g' type='g'/>
# <arg name='an_h' type='h'/>
# <arg name='an_ay' type='ay'/>
# <arg name='an_as' type='as'/>
# <arg name='an_ao' type='ao'/>
# <arg name='an_aay' type='aay'/>
# <arg name='an_asv' type='a{sv}'/>
# 
#                 </signal>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpuud_5sev/tmp_314hqxq.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_VOID__BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (
#     GClosure     *closure,
#     GValue       *return_value G_GNUC_UNUSED,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef void (*_GDbusCodegenMarshalVoid_BooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc)
#        (void *data1,
#         gboolean arg_an_b,
#         guchar arg_an_y,
#         gint16 arg_an_n,
#         guint16 arg_an_q,
#         gint arg_an_i,
#         guint arg_an_u,
#         gint64 arg_an_x,
#         guint64 arg_an_t,
#         gdouble arg_an_d,
#         const gchar *arg_an_s,
#         const gchar *arg_an_o,
#         const gchar *arg_an_g,
#         GVariant *arg_an_h,
#         const gchar *arg_an_ay,
#         const gchar *const *arg_an_as,
#         const gchar *const *arg_an_ao,
#         const gchar *const *arg_an_aay,
#         GVariant *arg_an_asv,
#         void *data2);
#   _GDbusCodegenMarshalVoid_BooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
# 
#   g_return_if_fail (n_param_values == 19);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalVoid_BooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_boolean (param_values + 1),
#             g_marshal_value_peek_uchar (param_values + 2),
#             g_marshal_value_peek_int (param_values + 3),
#             g_marshal_value_peek_uint (param_values + 4),
#             g_marshal_value_peek_int (param_values + 5),
#             g_marshal_value_peek_uint (param_values + 6),
#             g_marshal_value_peek_int64 (param_values + 7),
#             g_marshal_value_peek_uint64 (param_values + 8),
#             g_marshal_value_peek_double (param_values + 9),
#             g_marshal_value_peek_string (param_values + 10),
#             g_marshal_value_peek_string (param_values + 11),
#             g_marshal_value_peek_string (param_values + 12),
#             g_marshal_value_peek_variant (param_values + 13),
#             g_marshal_value_peek_string (param_values + 14),
#             g_marshal_value_peek_boxed (param_values + 15),
#             g_marshal_value_peek_boxed (param_values + 16),
#             g_marshal_value_peek_boxed (param_values + 17),
#             g_marshal_value_peek_variant (param_values + 18),
#             data2);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNAL_WITH_MANY_ARGS,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[1] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_b =
# {
#   {
#     -1,
#     (gchar *) "an_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_y =
# {
#   {
#     -1,
#     (gchar *) "an_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_n =
# {
#   {
#     -1,
#     (gchar *) "an_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_q =
# {
#   {
#     -1,
#     (gchar *) "an_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_i =
# {
#   {
#     -1,
#     (gchar *) "an_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_u =
# {
#   {
#     -1,
#     (gchar *) "an_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_x =
# {
#   {
#     -1,
#     (gchar *) "an_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_t =
# {
#   {
#     -1,
#     (gchar *) "an_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_d =
# {
#   {
#     -1,
#     (gchar *) "an_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_s =
# {
#   {
#     -1,
#     (gchar *) "an_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_o =
# {
#   {
#     -1,
#     (gchar *) "an_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_g =
# {
#   {
#     -1,
#     (gchar *) "an_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_h =
# {
#   {
#     -1,
#     (gchar *) "an_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ay =
# {
#   {
#     -1,
#     (gchar *) "an_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_as =
# {
#   {
#     -1,
#     (gchar *) "an_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ao =
# {
#   {
#     -1,
#     (gchar *) "an_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_aay =
# {
#   {
#     -1,
#     (gchar *) "an_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_asv =
# {
#   {
#     -1,
#     (gchar *) "an_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_b.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_y.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_n.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_q.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_i.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_u.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_x.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_t.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_d.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_s.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_o.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_g.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_h.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ay.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_as.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ao.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_aay.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_signal_with_many_args =
# {
#   {
#     -1,
#     (gchar *) "SignalWithManyArgs",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_pointers,
#     NULL
#   },
#   "signal-with-many-args"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_signal_with_many_args.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_signal_with_many_args (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_VOID__BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @signal_with_many_args: Handler for the #OrgProjectSignalingIface::signal-with-many-args signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::signal-with-many-args:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_b: Argument.
#    * @arg_an_y: Argument.
#    * @arg_an_n: Argument.
#    * @arg_an_q: Argument.
#    * @arg_an_i: Argument.
#    * @arg_an_u: Argument.
#    * @arg_an_x: Argument.
#    * @arg_an_t: Argument.
#    * @arg_an_d: Argument.
#    * @arg_an_s: Argument.
#    * @arg_an_o: Argument.
#    * @arg_an_g: Argument.
#    * @arg_an_h: Argument.
#    * @arg_an_ay: Argument.
#    * @arg_an_as: Argument.
#    * @arg_an_ao: Argument.
#    * @arg_an_aay: Argument.
#    * @arg_an_asv: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SignalWithManyArgs">"SignalWithManyArgs"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIGNAL_WITH_MANY_ARGS] =
#     g_signal_new ("signal-with-many-args",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, signal_with_many_args),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_signal_with_many_args,
#       G_TYPE_NONE,
#       18, G_TYPE_BOOLEAN, G_TYPE_UCHAR, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT64, G_TYPE_UINT64, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRING, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_signal_with_many_args:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_b: Argument to pass with the signal.
#  * @arg_an_y: Argument to pass with the signal.
#  * @arg_an_n: Argument to pass with the signal.
#  * @arg_an_q: Argument to pass with the signal.
#  * @arg_an_i: Argument to pass with the signal.
#  * @arg_an_u: Argument to pass with the signal.
#  * @arg_an_x: Argument to pass with the signal.
#  * @arg_an_t: Argument to pass with the signal.
#  * @arg_an_d: Argument to pass with the signal.
#  * @arg_an_s: Argument to pass with the signal.
#  * @arg_an_o: Argument to pass with the signal.
#  * @arg_an_g: Argument to pass with the signal.
#  * @arg_an_h: Argument to pass with the signal.
#  * @arg_an_ay: Argument to pass with the signal.
#  * @arg_an_as: Argument to pass with the signal.
#  * @arg_an_ao: Argument to pass with the signal.
#  * @arg_an_aay: Argument to pass with the signal.
#  * @arg_an_asv: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SignalWithManyArgs">"SignalWithManyArgs"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_signal_with_many_args (
#     OrgProjectSignalingIface *object,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIGNAL_WITH_MANY_ARGS], 0, arg_an_b, arg_an_y, arg_an_n, arg_an_q, arg_an_i, arg_an_u, arg_an_x, arg_an_t, arg_an_d, arg_an_s, arg_an_o, arg_an_g, arg_an_h, arg_an_ay, arg_an_as, arg_an_ao, arg_an_aay, arg_an_asv);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_signal_with_many_args (
#     OrgProjectSignalingIface *object,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SignalWithManyArgs",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->signal_with_many_args = _org_project_signaling_iface_on_signal_signal_with_many_args;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
Executing: glib/codegen.py.test
ok 20 __main__.TestCodegen.test_generate_signal_id_multiple_signals_types
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpwaw7g_vn
# /tmp/tmpwaw7g_vn/tmpr_1uwj24.xml: 
#             <node>
#               <interface name="org.project.SignalingIface">
#                 <signal name="NoArgSignal" />
#                 <signal name='SingleArgSignalB'><arg name='an_b' type='b'/></signal><signal name='SingleArgSignalY'><arg name='an_y' type='y'/></signal><signal name='SingleArgSignalN'><arg name='an_n' type='n'/></signal><signal name='SingleArgSignalQ'><arg name='an_q' type='q'/></signal><signal name='SingleArgSignalI'><arg name='an_i' type='i'/></signal><signal name='SingleArgSignalU'><arg name='an_u' type='u'/></signal><signal name='SingleArgSignalX'><arg name='an_x' type='x'/></signal><signal name='SingleArgSignalT'><arg name='an_t' type='t'/></signal><signal name='SingleArgSignalD'><arg name='an_d' type='d'/></signal><signal name='SingleArgSignalS'><arg name='an_s' type='s'/></signal><signal name='SingleArgSignalO'><arg name='an_o' type='o'/></signal><signal name='SingleArgSignalG'><arg name='an_g' type='g'/></signal><signal name='SingleArgSignalH'><arg name='an_h' type='h'/></signal><signal name='SingleArgSignalAY'><arg name='an_ay' type='ay'/></signal><signal name='SingleArgSignalAS'><arg name='an_as' type='as'/></signal><signal name='SingleArgSignalAO'><arg name='an_ao' type='ao'/></signal><signal name='SingleArgSignalAAY'><arg name='an_aay' type='aay'/></signal><signal name='SingleArgSignalASV'><arg name='an_asv' type='a{sv}'/></signal>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwaw7g_vn/tmpr_1uwj24.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_VOID__INT64 (
#     GClosure     *closure,
#     GValue       *return_value G_GNUC_UNUSED,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef void (*_GDbusCodegenMarshalVoid_Int64Func)
#        (void *data1,
#         gint64 arg_an_x,
#         void *data2);
#   _GDbusCodegenMarshalVoid_Int64Func callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
# 
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalVoid_Int64Func)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_int64 (param_values + 1),
#             data2);
# }
# 
# static void
# _g_dbus_codegen_marshal_VOID__UINT64 (
#     GClosure     *closure,
#     GValue       *return_value G_GNUC_UNUSED,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef void (*_GDbusCodegenMarshalVoid_Uint64Func)
#        (void *data1,
#         guint64 arg_an_t,
#         void *data2);
#   _GDbusCodegenMarshalVoid_Uint64Func callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
# 
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalVoid_Uint64Func)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_uint64 (param_values + 1),
#             data2);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_NO_ARG_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_B,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Y,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_N,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Q,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_I,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_U,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_X,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_T,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_D,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_S,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_O,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_G,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_H,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AY,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AS,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AO,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AAY,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_ASV,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[19] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_no_arg_signal =
# {
#   {
#     -1,
#     (gchar *) "NoArgSignal",
#     NULL,
#     NULL
#   },
#   "no-arg-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_an_b =
# {
#   {
#     -1,
#     (gchar *) "an_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_an_b.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_b =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalB",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-b"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_an_y =
# {
#   {
#     -1,
#     (gchar *) "an_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_an_y.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_y =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalY",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-y"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_an_n =
# {
#   {
#     -1,
#     (gchar *) "an_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_an_n.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_n =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalN",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-n"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_an_q =
# {
#   {
#     -1,
#     (gchar *) "an_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_an_q.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_q =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalQ",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-q"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_an_i =
# {
#   {
#     -1,
#     (gchar *) "an_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_an_i.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_i =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalI",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-i"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_an_u =
# {
#   {
#     -1,
#     (gchar *) "an_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_an_u.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_u =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalU",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-u"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_an_x =
# {
#   {
#     -1,
#     (gchar *) "an_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_an_x.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_x =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalX",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-x"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_an_t =
# {
#   {
#     -1,
#     (gchar *) "an_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_an_t.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_t =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalT",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-t"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_an_d =
# {
#   {
#     -1,
#     (gchar *) "an_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_an_d.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_d =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalD",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-d"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_an_s =
# {
#   {
#     -1,
#     (gchar *) "an_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_an_s.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_s =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalS",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-s"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_an_o =
# {
#   {
#     -1,
#     (gchar *) "an_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_an_o.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_o =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalO",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-o"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_an_g =
# {
#   {
#     -1,
#     (gchar *) "an_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_an_g.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_g =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalG",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-g"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_an_h =
# {
#   {
#     -1,
#     (gchar *) "an_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_an_h.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_h =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalH",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-h"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_an_ay =
# {
#   {
#     -1,
#     (gchar *) "an_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_an_ay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_ay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAY",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-ay"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_an_as =
# {
#   {
#     -1,
#     (gchar *) "an_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_an_as.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_as =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAS",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-as"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_an_ao =
# {
#   {
#     -1,
#     (gchar *) "an_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_an_ao.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_ao =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAO",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-ao"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_an_aay =
# {
#   {
#     -1,
#     (gchar *) "an_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_an_aay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_aay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAAY",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-aay"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_an_asv =
# {
#   {
#     -1,
#     (gchar *) "an_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_an_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_asv =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalASV",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-asv"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_no_arg_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_b.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_y.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_n.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_q.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_i.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_u.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_x.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_t.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_d.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_s.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_o.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_g.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_h.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ay.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_as.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ao.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_aay.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_no_arg_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_b (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOOLEAN (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_y (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__UCHAR (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_n (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__INT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_q (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__UINT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_i (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__INT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_u (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__UINT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_x (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_VOID__INT64 (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_t (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_VOID__UINT64 (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_d (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__DOUBLE (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_s (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_o (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_g (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_h (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_ay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_as (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_ao (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_aay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_asv (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @no_arg_signal: Handler for the #OrgProjectSignalingIface::no-arg-signal signal.
#  * @single_arg_signal_aay: Handler for the #OrgProjectSignalingIface::single-arg-signal-aay signal.
#  * @single_arg_signal_ao: Handler for the #OrgProjectSignalingIface::single-arg-signal-ao signal.
#  * @single_arg_signal_as: Handler for the #OrgProjectSignalingIface::single-arg-signal-as signal.
#  * @single_arg_signal_asv: Handler for the #OrgProjectSignalingIface::single-arg-signal-asv signal.
#  * @single_arg_signal_ay: Handler for the #OrgProjectSignalingIface::single-arg-signal-ay signal.
#  * @single_arg_signal_b: Handler for the #OrgProjectSignalingIface::single-arg-signal-b signal.
#  * @single_arg_signal_d: Handler for the #OrgProjectSignalingIface::single-arg-signal-d signal.
#  * @single_arg_signal_g: Handler for the #OrgProjectSignalingIface::single-arg-signal-g signal.
#  * @single_arg_signal_h: Handler for the #OrgProjectSignalingIface::single-arg-signal-h signal.
#  * @single_arg_signal_i: Handler for the #OrgProjectSignalingIface::single-arg-signal-i signal.
#  * @single_arg_signal_n: Handler for the #OrgProjectSignalingIface::single-arg-signal-n signal.
#  * @single_arg_signal_o: Handler for the #OrgProjectSignalingIface::single-arg-signal-o signal.
#  * @single_arg_signal_q: Handler for the #OrgProjectSignalingIface::single-arg-signal-q signal.
#  * @single_arg_signal_s: Handler for the #OrgProjectSignalingIface::single-arg-signal-s signal.
#  * @single_arg_signal_t: Handler for the #OrgProjectSignalingIface::single-arg-signal-t signal.
#  * @single_arg_signal_u: Handler for the #OrgProjectSignalingIface::single-arg-signal-u signal.
#  * @single_arg_signal_x: Handler for the #OrgProjectSignalingIface::single-arg-signal-x signal.
#  * @single_arg_signal_y: Handler for the #OrgProjectSignalingIface::single-arg-signal-y signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::no-arg-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.NoArgSignal">"NoArgSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_NO_ARG_SIGNAL] =
#     g_signal_new ("no-arg-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, no_arg_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_no_arg_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-b:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_b: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalB">"SingleArgSignalB"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_B] =
#     g_signal_new ("single-arg-signal-b",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_b),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_b,
#       G_TYPE_NONE,
#       1, G_TYPE_BOOLEAN);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-y:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_y: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalY">"SingleArgSignalY"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Y] =
#     g_signal_new ("single-arg-signal-y",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_y),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_y,
#       G_TYPE_NONE,
#       1, G_TYPE_UCHAR);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-n:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_n: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalN">"SingleArgSignalN"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_N] =
#     g_signal_new ("single-arg-signal-n",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_n),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_n,
#       G_TYPE_NONE,
#       1, G_TYPE_INT);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-q:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_q: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalQ">"SingleArgSignalQ"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Q] =
#     g_signal_new ("single-arg-signal-q",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_q),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_q,
#       G_TYPE_NONE,
#       1, G_TYPE_UINT);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-i:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_i: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalI">"SingleArgSignalI"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_I] =
#     g_signal_new ("single-arg-signal-i",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_i),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_i,
#       G_TYPE_NONE,
#       1, G_TYPE_INT);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-u:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_u: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalU">"SingleArgSignalU"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_U] =
#     g_signal_new ("single-arg-signal-u",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_u),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_u,
#       G_TYPE_NONE,
#       1, G_TYPE_UINT);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-x:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_x: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalX">"SingleArgSignalX"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_X] =
#     g_signal_new ("single-arg-signal-x",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_x),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_x,
#       G_TYPE_NONE,
#       1, G_TYPE_INT64);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-t:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_t: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalT">"SingleArgSignalT"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_T] =
#     g_signal_new ("single-arg-signal-t",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_t),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_t,
#       G_TYPE_NONE,
#       1, G_TYPE_UINT64);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-d:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_d: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalD">"SingleArgSignalD"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_D] =
#     g_signal_new ("single-arg-signal-d",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_d),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_d,
#       G_TYPE_NONE,
#       1, G_TYPE_DOUBLE);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-s:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_s: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalS">"SingleArgSignalS"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_S] =
#     g_signal_new ("single-arg-signal-s",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_s),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_s,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-o:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_o: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalO">"SingleArgSignalO"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_O] =
#     g_signal_new ("single-arg-signal-o",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_o),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_o,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-g:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_g: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalG">"SingleArgSignalG"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_G] =
#     g_signal_new ("single-arg-signal-g",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_g),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_g,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-h:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_h: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalH">"SingleArgSignalH"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_H] =
#     g_signal_new ("single-arg-signal-h",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_h),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_h,
#       G_TYPE_NONE,
#       1, G_TYPE_VARIANT);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-ay:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_ay: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAY">"SingleArgSignalAY"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AY] =
#     g_signal_new ("single-arg-signal-ay",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_ay),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_ay,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-as:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_as: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAS">"SingleArgSignalAS"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AS] =
#     g_signal_new ("single-arg-signal-as",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_as),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_as,
#       G_TYPE_NONE,
#       1, G_TYPE_STRV);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-ao:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_ao: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAO">"SingleArgSignalAO"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AO] =
#     g_signal_new ("single-arg-signal-ao",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_ao),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_ao,
#       G_TYPE_NONE,
#       1, G_TYPE_STRV);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-aay:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_aay: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAAY">"SingleArgSignalAAY"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AAY] =
#     g_signal_new ("single-arg-signal-aay",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_aay),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_aay,
#       G_TYPE_NONE,
#       1, G_TYPE_STRV);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-asv:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_asv: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalASV">"SingleArgSignalASV"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_ASV] =
#     g_signal_new ("single-arg-signal-asv",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_asv),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_asv,
#       G_TYPE_NONE,
#       1, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_no_arg_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.NoArgSignal">"NoArgSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_no_arg_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_NO_ARG_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_b:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_b: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalB">"SingleArgSignalB"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_b (
#     OrgProjectSignalingIface *object,
#     gboolean arg_an_b)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_B], 0, arg_an_b);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_y:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_y: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalY">"SingleArgSignalY"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_y (
#     OrgProjectSignalingIface *object,
#     guchar arg_an_y)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Y], 0, arg_an_y);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_n:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_n: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalN">"SingleArgSignalN"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_n (
#     OrgProjectSignalingIface *object,
#     gint16 arg_an_n)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_N], 0, arg_an_n);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_q:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_q: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalQ">"SingleArgSignalQ"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_q (
#     OrgProjectSignalingIface *object,
#     guint16 arg_an_q)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Q], 0, arg_an_q);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_i:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_i: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalI">"SingleArgSignalI"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_i (
#     OrgProjectSignalingIface *object,
#     gint arg_an_i)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_I], 0, arg_an_i);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_u:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_u: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalU">"SingleArgSignalU"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_u (
#     OrgProjectSignalingIface *object,
#     guint arg_an_u)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_U], 0, arg_an_u);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_x:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_x: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalX">"SingleArgSignalX"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_x (
#     OrgProjectSignalingIface *object,
#     gint64 arg_an_x)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_X], 0, arg_an_x);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_t:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_t: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalT">"SingleArgSignalT"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_t (
#     OrgProjectSignalingIface *object,
#     guint64 arg_an_t)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_T], 0, arg_an_t);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_d:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_d: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalD">"SingleArgSignalD"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_d (
#     OrgProjectSignalingIface *object,
#     gdouble arg_an_d)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_D], 0, arg_an_d);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_s:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_s: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalS">"SingleArgSignalS"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_s (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_s)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_S], 0, arg_an_s);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_o:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_o: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalO">"SingleArgSignalO"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_o (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_o)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_O], 0, arg_an_o);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_g:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_g: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalG">"SingleArgSignalG"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_g (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_g)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_G], 0, arg_an_g);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_h:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_h: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalH">"SingleArgSignalH"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_h (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_an_h)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_H], 0, arg_an_h);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_ay:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_ay: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAY">"SingleArgSignalAY"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_ay (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_ay)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AY], 0, arg_an_ay);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_as:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_as: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAS">"SingleArgSignalAS"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_as (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_an_as)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AS], 0, arg_an_as);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_ao:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_ao: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAO">"SingleArgSignalAO"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_ao (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_an_ao)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AO], 0, arg_an_ao);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_aay:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_aay: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAAY">"SingleArgSignalAAY"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_aay (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_an_aay)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AAY], 0, arg_an_aay);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_asv:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_asv: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalASV">"SingleArgSignalASV"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_asv (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_an_asv)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_ASV], 0, arg_an_asv);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_no_arg_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "NoArgSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_b (
#     OrgProjectSignalingIface *object,
#     gboolean arg_an_b)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(b)",
#                    arg_an_b));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalB",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_y (
#     OrgProjectSignalingIface *object,
#     guchar arg_an_y)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(y)",
#                    arg_an_y));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalY",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_n (
#     OrgProjectSignalingIface *object,
#     gint16 arg_an_n)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(n)",
#                    arg_an_n));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalN",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_q (
#     OrgProjectSignalingIface *object,
#     guint16 arg_an_q)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(q)",
#                    arg_an_q));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalQ",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_i (
#     OrgProjectSignalingIface *object,
#     gint arg_an_i)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(i)",
#                    arg_an_i));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalI",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_u (
#     OrgProjectSignalingIface *object,
#     guint arg_an_u)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(u)",
#                    arg_an_u));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalU",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_x (
#     OrgProjectSignalingIface *object,
#     gint64 arg_an_x)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(x)",
#                    arg_an_x));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalX",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_t (
#     OrgProjectSignalingIface *object,
#     guint64 arg_an_t)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(t)",
#                    arg_an_t));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalT",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_d (
#     OrgProjectSignalingIface *object,
#     gdouble arg_an_d)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(d)",
#                    arg_an_d));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalD",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_s (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_s)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
#                    arg_an_s));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalS",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_o (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_o)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
#                    arg_an_o));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalO",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_g (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_g)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(g)",
#                    arg_an_g));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalG",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_h (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_an_h)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(@h)",
#                    arg_an_h));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalH",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_ay (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_an_ay)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^ay)",
#                    arg_an_ay));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAY",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_as (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_an_as)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^as)",
#                    arg_an_as));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAS",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_ao (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_an_ao)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^ao)",
#                    arg_an_ao));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAO",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_aay (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_an_aay)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^aay)",
#                    arg_an_aay));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAAY",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_asv (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_an_asv)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(@a{sv})",
#                    arg_an_asv));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalASV",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->no_arg_signal = _org_project_signaling_iface_on_signal_no_arg_signal;
#   iface->single_arg_signal_b = _org_project_signaling_iface_on_signal_single_arg_signal_b;
#   iface->single_arg_signal_y = _org_project_signaling_iface_on_signal_single_arg_signal_y;
#   iface->single_arg_signal_n = _org_project_signaling_iface_on_signal_single_arg_signal_n;
#   iface->single_arg_signal_q = _org_project_signaling_iface_on_signal_single_arg_signal_q;
#   iface->single_arg_signal_i = _org_project_signaling_iface_on_signal_single_arg_signal_i;
#   iface->single_arg_signal_u = _org_project_signaling_iface_on_signal_single_arg_signal_u;
#   iface->single_arg_signal_x = _org_project_signaling_iface_on_signal_single_arg_signal_x;
#   iface->single_arg_signal_t = _org_project_signaling_iface_on_signal_single_arg_signal_t;
#   iface->single_arg_signal_d = _org_project_signaling_iface_on_signal_single_arg_signal_d;
#   iface->single_arg_signal_s = _org_project_signaling_iface_on_signal_single_arg_signal_s;
#   iface->single_arg_signal_o = _org_project_signaling_iface_on_signal_single_arg_signal_o;
#   iface->single_arg_signal_g = _org_project_signaling_iface_on_signal_single_arg_signal_g;
#   iface->single_arg_signal_h = _org_project_signaling_iface_on_signal_single_arg_signal_h;
#   iface->single_arg_signal_ay = _org_project_signaling_iface_on_signal_single_arg_signal_ay;
#   iface->single_arg_signal_as = _org_project_signaling_iface_on_signal_single_arg_signal_as;
#   iface->single_arg_signal_ao = _org_project_signaling_iface_on_signal_single_arg_signal_ao;
#   iface->single_arg_signal_aay = _org_project_signaling_iface_on_signal_single_arg_signal_aay;
#   iface->single_arg_signal_asv = _org_project_signaling_iface_on_signal_single_arg_signal_asv;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
ok 21 __main__.TestCodegen.test_generate_signal_id_simple_signal
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp5_8lx4f4
# /tmp/tmp5_8lx4f4/tmpzhspsmoc.xml: 
#             <node>
#               <interface name="org.project.UsefulInterface">
#                 <signal name="SimpleSignal"/>
#               </interface>
#               <interface name="org.project.OtherIface">
#                 <signal name="SimpleSignal"/>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp5_8lx4f4/tmpzhspsmoc.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.UsefulInterface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectUsefulInterface
#  * @title: OrgProjectUsefulInterface
#  * @short_description: Generated C code for the org.project.UsefulInterface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_USEFUL_INTERFACE_SIMPLE_SIGNAL,
# };
# 
# static unsigned _ORG_PROJECT_USEFUL_INTERFACE_SIGNALS[1] = { 0 };
# 
# /* ---- Introspection data for org.project.UsefulInterface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_useful_interface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const GDBusSignalInfo * const _org_project_useful_interface_signal_info_pointers[] =
# {
#   &_org_project_useful_interface_signal_info_simple_signal.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_useful_interface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.UsefulInterface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_useful_interface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-useful-interface",
# };
# 
# 
# /**
#  * org_project_useful_interface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_useful_interface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_useful_interface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectUsefulInterface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_useful_interface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_useful_interface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectUsefulInterface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectUsefulInterface::simple-signal signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  */
# 
# typedef OrgProjectUsefulInterfaceIface OrgProjectUsefulInterfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectUsefulInterface, org_project_useful_interface, G_TYPE_OBJECT)
# 
# static void
# org_project_useful_interface_default_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectUsefulInterface::simple-signal:
#    * @object: A #OrgProjectUsefulInterface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-UsefulInterface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_USEFUL_INTERFACE_SIGNALS[_ORG_PROJECT_USEFUL_INTERFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectUsefulInterfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_useful_interface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
# }
# 
# /**
#  * org_project_useful_interface_emit_simple_signal:
#  * @object: A #OrgProjectUsefulInterface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-UsefulInterface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_useful_interface_emit_simple_signal (
#     OrgProjectUsefulInterface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_USEFUL_INTERFACE_SIGNALS[_ORG_PROJECT_USEFUL_INTERFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceProxy:
#  *
#  * The #OrgProjectUsefulInterfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceProxy.
#  */
# 
# struct _OrgProjectUsefulInterfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceProxy, org_project_useful_interface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_proxy_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_proxy_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_useful_interface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_useful_interface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_useful_interface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectUsefulInterfaceProxy *proxy = ORG_PROJECT_USEFUL_INTERFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_useful_interface_proxy_init (OrgProjectUsefulInterfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_useful_interface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, OrgProjectUsefulInterfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_useful_interface_interface_info ());
# }
# 
# static void
# org_project_useful_interface_proxy_class_init (OrgProjectUsefulInterfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_useful_interface_proxy_finalize;
#   gobject_class->get_property = org_project_useful_interface_proxy_get_property;
#   gobject_class->set_property = org_project_useful_interface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_useful_interface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_useful_interface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_proxy_iface_init (OrgProjectUsefulInterfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_useful_interface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_useful_interface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_useful_interface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_useful_interface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_useful_interface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_useful_interface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_useful_interface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_useful_interface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_useful_interface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.UsefulInterface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_USEFUL_INTERFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeleton:
#  *
#  * The #OrgProjectUsefulInterfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectUsefulInterfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectUsefulInterfaceSkeleton.
#  */
# 
# struct _OrgProjectUsefulInterfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_useful_interface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_USEFUL_INTERFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_useful_interface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_useful_interface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_useful_interface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_useful_interface_skeleton_vtable =
# {
#   _org_project_useful_interface_skeleton_handle_method_call,
#   _org_project_useful_interface_skeleton_handle_get_property,
#   _org_project_useful_interface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_useful_interface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_useful_interface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_useful_interface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_useful_interface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_useful_interface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_useful_interface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_useful_interface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_useful_interface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_useful_interface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_useful_interface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_useful_interface_on_signal_simple_signal (
#     OrgProjectUsefulInterface *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.UsefulInterface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectUsefulInterfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectUsefulInterfaceSkeleton, org_project_useful_interface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_USEFUL_INTERFACE, org_project_useful_interface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_useful_interface_skeleton_finalize (GObject *object)
# {
#   OrgProjectUsefulInterfaceSkeleton *skeleton = ORG_PROJECT_USEFUL_INTERFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_useful_interface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_useful_interface_skeleton_init (OrgProjectUsefulInterfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_useful_interface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, OrgProjectUsefulInterfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_useful_interface_skeleton_class_init (OrgProjectUsefulInterfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_useful_interface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_useful_interface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_useful_interface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_useful_interface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_useful_interface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectUsefulInterfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_useful_interface_skeleton_iface_init (OrgProjectUsefulInterfaceIface *iface)
# {
#   iface->simple_signal = _org_project_useful_interface_on_signal_simple_signal;
# }
# 
# /**
#  * org_project_useful_interface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-UsefulInterface.top_of_page">org.project.UsefulInterface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectUsefulInterfaceSkeleton): The skeleton object.
#  */
# OrgProjectUsefulInterface *
# org_project_useful_interface_skeleton_new (void)
# {
#   return ORG_PROJECT_USEFUL_INTERFACE (g_object_new (TYPE_ORG_PROJECT_USEFUL_INTERFACE_SKELETON, NULL));
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.OtherIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectOtherIface
#  * @title: OrgProjectOtherIface
#  * @short_description: Generated C code for the org.project.OtherIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-OtherIface.top_of_page">org.project.OtherIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_OTHER_IFACE_SIMPLE_SIGNAL,
# };
# 
# static unsigned _ORG_PROJECT_OTHER_IFACE_SIGNALS[1] = { 0 };
# 
# /* ---- Introspection data for org.project.OtherIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_other_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const GDBusSignalInfo * const _org_project_other_iface_signal_info_pointers[] =
# {
#   &_org_project_other_iface_signal_info_simple_signal.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_other_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.OtherIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_other_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-other-iface",
# };
# 
# 
# /**
#  * org_project_other_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-OtherIface.top_of_page">org.project.OtherIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_other_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_other_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_other_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectOtherIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_other_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_other_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectOtherIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherIface.top_of_page">org.project.OtherIface</link>.
#  */
# 
# /**
#  * OrgProjectOtherIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectOtherIface::simple-signal signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherIface.top_of_page">org.project.OtherIface</link>.
#  */
# 
# typedef OrgProjectOtherIfaceIface OrgProjectOtherIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectOtherIface, org_project_other_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_other_iface_default_init (OrgProjectOtherIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectOtherIface::simple-signal:
#    * @object: A #OrgProjectOtherIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-OtherIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_OTHER_IFACE_SIGNALS[_ORG_PROJECT_OTHER_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectOtherIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_other_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
# }
# 
# /**
#  * org_project_other_iface_emit_simple_signal:
#  * @object: A #OrgProjectOtherIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-OtherIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_other_iface_emit_simple_signal (
#     OrgProjectOtherIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_OTHER_IFACE_SIGNALS[_ORG_PROJECT_OTHER_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherIfaceProxy:
#  *
#  * The #OrgProjectOtherIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherIfaceProxy.
#  */
# 
# struct _OrgProjectOtherIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_other_iface_proxy_iface_init (OrgProjectOtherIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherIfaceProxy, org_project_other_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectOtherIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_IFACE, org_project_other_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherIfaceProxy, org_project_other_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_IFACE, org_project_other_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_other_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectOtherIfaceProxy *proxy = ORG_PROJECT_OTHER_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_other_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_other_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_OTHER_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_other_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectOtherIfaceProxy *proxy = ORG_PROJECT_OTHER_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_other_iface_proxy_init (OrgProjectOtherIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_other_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_OTHER_IFACE_PROXY, OrgProjectOtherIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_other_iface_interface_info ());
# }
# 
# static void
# org_project_other_iface_proxy_class_init (OrgProjectOtherIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_other_iface_proxy_finalize;
#   gobject_class->get_property = org_project_other_iface_proxy_get_property;
#   gobject_class->set_property = org_project_other_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_other_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_other_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_other_iface_proxy_iface_init (OrgProjectOtherIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_other_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherIface.top_of_page">org.project.OtherIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_other_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherIface", NULL);
# }
# 
# /**
#  * org_project_other_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherIface *
# org_project_other_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherIface.top_of_page">org.project.OtherIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherIface *
# org_project_other_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_other_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_other_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_other_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherIface", NULL);
# }
# 
# /**
#  * org_project_other_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherIface *
# org_project_other_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_other_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherIface *
# org_project_other_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherIfaceSkeleton:
#  *
#  * The #OrgProjectOtherIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherIfaceSkeleton.
#  */
# 
# struct _OrgProjectOtherIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_other_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectOtherIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_OTHER_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_other_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_other_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_other_iface_skeleton_vtable =
# {
#   _org_project_other_iface_skeleton_handle_method_call,
#   _org_project_other_iface_skeleton_handle_get_property,
#   _org_project_other_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_other_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_other_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_other_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_other_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_other_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectOtherIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_other_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_other_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_other_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_other_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.OtherIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_other_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_other_iface_on_signal_simple_signal (
#     OrgProjectOtherIface *object)
# {
#   OrgProjectOtherIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.OtherIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_other_iface_skeleton_iface_init (OrgProjectOtherIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherIfaceSkeleton, org_project_other_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectOtherIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_IFACE, org_project_other_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherIfaceSkeleton, org_project_other_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_IFACE, org_project_other_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_other_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectOtherIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_other_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_iface_skeleton_init (OrgProjectOtherIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_other_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_OTHER_IFACE_SKELETON, OrgProjectOtherIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_other_iface_skeleton_class_init (OrgProjectOtherIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_other_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_other_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_other_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_other_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_other_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_other_iface_skeleton_iface_init (OrgProjectOtherIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_other_iface_on_signal_simple_signal;
# }
# 
# /**
#  * org_project_other_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherIface.top_of_page">org.project.OtherIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherIfaceSkeleton): The skeleton object.
#  */
# OrgProjectOtherIface *
# org_project_other_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_OTHER_IFACE (g_object_new (TYPE_ORG_PROJECT_OTHER_IFACE_SKELETON, NULL));
# }
# Error:
ok 22 __main__.TestCodegen.test_generate_signals_marshaller_simple_signal
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpgndn_kxh
# /tmp/tmpgndn_kxh/tmph33fwxhy.xml: 
#             <node>
#               <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#               </interface>
#               <interface name="org.project.OtherSignalingIface">
#                 <signal name="SimpleSignal"/>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpgndn_kxh/tmph33fwxhy.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[1] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.OtherSignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectOtherSignalingIface
#  * @title: OrgProjectOtherSignalingIface
#  * @short_description: Generated C code for the org.project.OtherSignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-OtherSignalingIface.top_of_page">org.project.OtherSignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_OTHER_SIGNALING_IFACE_SIMPLE_SIGNAL,
# };
# 
# static unsigned _ORG_PROJECT_OTHER_SIGNALING_IFACE_SIGNALS[1] = { 0 };
# 
# /* ---- Introspection data for org.project.OtherSignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_other_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const GDBusSignalInfo * const _org_project_other_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_other_signaling_iface_signal_info_simple_signal.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_other_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.OtherSignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_other_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-other-signaling-iface",
# };
# 
# 
# /**
#  * org_project_other_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-OtherSignalingIface.top_of_page">org.project.OtherSignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_other_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_other_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_other_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectOtherSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_other_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_other_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectOtherSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherSignalingIface.top_of_page">org.project.OtherSignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectOtherSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectOtherSignalingIface::simple-signal signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherSignalingIface.top_of_page">org.project.OtherSignalingIface</link>.
#  */
# 
# typedef OrgProjectOtherSignalingIfaceIface OrgProjectOtherSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectOtherSignalingIface, org_project_other_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_other_signaling_iface_default_init (OrgProjectOtherSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectOtherSignalingIface::simple-signal:
#    * @object: A #OrgProjectOtherSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-OtherSignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_OTHER_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_OTHER_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectOtherSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_other_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
# }
# 
# /**
#  * org_project_other_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectOtherSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-OtherSignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_other_signaling_iface_emit_simple_signal (
#     OrgProjectOtherSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_OTHER_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_OTHER_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherSignalingIfaceProxy:
#  *
#  * The #OrgProjectOtherSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectOtherSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_other_signaling_iface_proxy_iface_init (OrgProjectOtherSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherSignalingIfaceProxy, org_project_other_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectOtherSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE, org_project_other_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherSignalingIfaceProxy, org_project_other_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE, org_project_other_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_other_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectOtherSignalingIfaceProxy *proxy = ORG_PROJECT_OTHER_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_other_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_other_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_other_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_other_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectOtherSignalingIfaceProxy *proxy = ORG_PROJECT_OTHER_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_other_signaling_iface_proxy_init (OrgProjectOtherSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_other_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE_PROXY, OrgProjectOtherSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_other_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_other_signaling_iface_proxy_class_init (OrgProjectOtherSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_other_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_other_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_other_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_other_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_other_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_other_signaling_iface_proxy_iface_init (OrgProjectOtherSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_other_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherSignalingIface.top_of_page">org.project.OtherSignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_other_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherSignalingIface", NULL);
# }
# 
# /**
#  * org_project_other_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherSignalingIface *
# org_project_other_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherSignalingIface.top_of_page">org.project.OtherSignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherSignalingIface *
# org_project_other_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.OtherSignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_other_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_other_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_other_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_other_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_other_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherSignalingIface", NULL);
# }
# 
# /**
#  * org_project_other_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_other_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_other_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectOtherSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherSignalingIface *
# org_project_other_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_other_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_other_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_other_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectOtherSignalingIface *
# org_project_other_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.OtherSignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_OTHER_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectOtherSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectOtherSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectOtherSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectOtherSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectOtherSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_other_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectOtherSignalingIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_other_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherSignalingIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_other_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectOtherSignalingIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_other_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_other_signaling_iface_skeleton_vtable =
# {
#   _org_project_other_signaling_iface_skeleton_handle_method_call,
#   _org_project_other_signaling_iface_skeleton_handle_get_property,
#   _org_project_other_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_other_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_other_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_other_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_other_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_other_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectOtherSignalingIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_other_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_other_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_other_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_other_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.OtherSignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_other_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_other_signaling_iface_on_signal_simple_signal (
#     OrgProjectOtherSignalingIface *object)
# {
#   OrgProjectOtherSignalingIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.OtherSignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_other_signaling_iface_skeleton_iface_init (OrgProjectOtherSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherSignalingIfaceSkeleton, org_project_other_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectOtherSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE, org_project_other_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectOtherSignalingIfaceSkeleton, org_project_other_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE, org_project_other_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_other_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectOtherSignalingIfaceSkeleton *skeleton = ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_other_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_other_signaling_iface_skeleton_init (OrgProjectOtherSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_other_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON, OrgProjectOtherSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_other_signaling_iface_skeleton_class_init (OrgProjectOtherSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_other_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_other_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_other_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_other_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_other_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectOtherSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_other_signaling_iface_skeleton_iface_init (OrgProjectOtherSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_other_signaling_iface_on_signal_simple_signal;
# }
# 
# /**
#  * org_project_other_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-OtherSignalingIface.top_of_page">org.project.OtherSignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectOtherSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectOtherSignalingIface *
# org_project_other_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_OTHER_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_OTHER_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
Executing: glib/codegen.py.test
ok 23 __main__.TestCodegen.test_generate_signals_marshaller_single_typed_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpwtqmano3
# /tmp/tmpwtqmano3/tmpi7x1f_vb.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalB">
#                     <arg name="arg_b" type="b"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmpi7x1f_vb.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_B,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_arg_b =
# {
#   {
#     -1,
#     (gchar *) "arg_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_arg_b.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_b =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalB",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_b_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-b"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_b.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_b (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOOLEAN (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_b: Handler for the #OrgProjectSignalingIface::single-arg-signal-b signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-b:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_b: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalB">"SingleArgSignalB"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_B] =
#     g_signal_new ("single-arg-signal-b",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_b),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_b,
#       G_TYPE_NONE,
#       1, G_TYPE_BOOLEAN);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_b:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_b: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalB">"SingleArgSignalB"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_b (
#     OrgProjectSignalingIface *object,
#     gboolean arg_arg_b)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_B], 0, arg_arg_b);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_b (
#     OrgProjectSignalingIface *object,
#     gboolean arg_arg_b)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(b)",
#                    arg_arg_b));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalB",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_b = _org_project_signaling_iface_on_signal_single_arg_signal_b;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp160z4n7r.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalY">
#                     <arg name="arg_y" type="y"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp160z4n7r.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Y,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_arg_y =
# {
#   {
#     -1,
#     (gchar *) "arg_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_arg_y.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_y =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalY",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_y_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-y"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_y.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_y (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__UCHAR (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_y: Handler for the #OrgProjectSignalingIface::single-arg-signal-y signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-y:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_y: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalY">"SingleArgSignalY"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Y] =
#     g_signal_new ("single-arg-signal-y",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_y),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_y,
#       G_TYPE_NONE,
#       1, G_TYPE_UCHAR);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_y:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_y: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalY">"SingleArgSignalY"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_y (
#     OrgProjectSignalingIface *object,
#     guchar arg_arg_y)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Y], 0, arg_arg_y);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_y (
#     OrgProjectSignalingIface *object,
#     guchar arg_arg_y)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(y)",
#                    arg_arg_y));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalY",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_y = _org_project_signaling_iface_on_signal_single_arg_signal_y;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmplafa2thj.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalN">
#                     <arg name="arg_n" type="n"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmplafa2thj.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_N,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_arg_n =
# {
#   {
#     -1,
#     (gchar *) "arg_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_arg_n.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_n =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalN",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_n_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-n"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_n.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_n (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__INT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_n: Handler for the #OrgProjectSignalingIface::single-arg-signal-n signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-n:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_n: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalN">"SingleArgSignalN"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_N] =
#     g_signal_new ("single-arg-signal-n",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_n),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_n,
#       G_TYPE_NONE,
#       1, G_TYPE_INT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_n:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_n: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalN">"SingleArgSignalN"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_n (
#     OrgProjectSignalingIface *object,
#     gint16 arg_arg_n)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_N], 0, arg_arg_n);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_n (
#     OrgProjectSignalingIface *object,
#     gint16 arg_arg_n)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(n)",
#                    arg_arg_n));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalN",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_n = _org_project_signaling_iface_on_signal_single_arg_signal_n;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmpg10c807e.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalQ">
#                     <arg name="arg_q" type="q"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmpg10c807e.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Q,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_arg_q =
# {
#   {
#     -1,
#     (gchar *) "arg_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_arg_q.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_q =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalQ",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_q_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-q"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_q.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_q (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__UINT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_q: Handler for the #OrgProjectSignalingIface::single-arg-signal-q signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-q:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_q: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalQ">"SingleArgSignalQ"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Q] =
#     g_signal_new ("single-arg-signal-q",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_q),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_q,
#       G_TYPE_NONE,
#       1, G_TYPE_UINT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_q:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_q: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalQ">"SingleArgSignalQ"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_q (
#     OrgProjectSignalingIface *object,
#     guint16 arg_arg_q)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_Q], 0, arg_arg_q);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_q (
#     OrgProjectSignalingIface *object,
#     guint16 arg_arg_q)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(q)",
#                    arg_arg_q));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalQ",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_q = _org_project_signaling_iface_on_signal_single_arg_signal_q;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp8hvki4la.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalI">
#                     <arg name="arg_i" type="i"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp8hvki4la.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_I,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_arg_i =
# {
#   {
#     -1,
#     (gchar *) "arg_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_arg_i.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_i =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalI",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_i_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-i"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_i.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_i (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__INT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_i: Handler for the #OrgProjectSignalingIface::single-arg-signal-i signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-i:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_i: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalI">"SingleArgSignalI"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_I] =
#     g_signal_new ("single-arg-signal-i",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_i),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_i,
#       G_TYPE_NONE,
#       1, G_TYPE_INT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_i:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_i: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalI">"SingleArgSignalI"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_i (
#     OrgProjectSignalingIface *object,
#     gint arg_arg_i)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_I], 0, arg_arg_i);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_i (
#     OrgProjectSignalingIface *object,
#     gint arg_arg_i)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(i)",
#                    arg_arg_i));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalI",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_i = _org_project_signaling_iface_on_signal_single_arg_signal_i;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmpje0bcpw2.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalU">
#                     <arg name="arg_u" type="u"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmpje0bcpw2.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_U,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_arg_u =
# {
#   {
#     -1,
#     (gchar *) "arg_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_arg_u.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_u =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalU",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_u_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-u"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_u.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_u (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__UINT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_u: Handler for the #OrgProjectSignalingIface::single-arg-signal-u signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-u:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_u: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalU">"SingleArgSignalU"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_U] =
#     g_signal_new ("single-arg-signal-u",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_u),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_u,
#       G_TYPE_NONE,
#       1, G_TYPE_UINT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_u:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_u: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalU">"SingleArgSignalU"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_u (
#     OrgProjectSignalingIface *object,
#     guint arg_arg_u)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_U], 0, arg_arg_u);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_u (
#     OrgProjectSignalingIface *object,
#     guint arg_arg_u)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(u)",
#                    arg_arg_u));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalU",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_u = _org_project_signaling_iface_on_signal_single_arg_signal_u;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmpuxi__y52.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalX">
#                     <arg name="arg_x" type="x"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmpuxi__y52.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_VOID__INT64 (
#     GClosure     *closure,
#     GValue       *return_value G_GNUC_UNUSED,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef void (*_GDbusCodegenMarshalVoid_Int64Func)
#        (void *data1,
#         gint64 arg_arg_x,
#         void *data2);
#   _GDbusCodegenMarshalVoid_Int64Func callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
# 
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalVoid_Int64Func)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_int64 (param_values + 1),
#             data2);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_X,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_arg_x =
# {
#   {
#     -1,
#     (gchar *) "arg_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_arg_x.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_x =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalX",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_x_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-x"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_x.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_x (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_VOID__INT64 (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_x: Handler for the #OrgProjectSignalingIface::single-arg-signal-x signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-x:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_x: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalX">"SingleArgSignalX"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_X] =
#     g_signal_new ("single-arg-signal-x",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_x),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_x,
#       G_TYPE_NONE,
#       1, G_TYPE_INT64);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_x:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_x: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalX">"SingleArgSignalX"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_x (
#     OrgProjectSignalingIface *object,
#     gint64 arg_arg_x)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_X], 0, arg_arg_x);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_x (
#     OrgProjectSignalingIface *object,
#     gint64 arg_arg_x)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(x)",
#                    arg_arg_x));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalX",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_x = _org_project_signaling_iface_on_signal_single_arg_signal_x;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp2jc94sdz.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalT">
#                     <arg name="arg_t" type="t"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp2jc94sdz.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_VOID__UINT64 (
#     GClosure     *closure,
#     GValue       *return_value G_GNUC_UNUSED,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef void (*_GDbusCodegenMarshalVoid_Uint64Func)
#        (void *data1,
#         guint64 arg_arg_t,
#         void *data2);
#   _GDbusCodegenMarshalVoid_Uint64Func callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
# 
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalVoid_Uint64Func)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_uint64 (param_values + 1),
#             data2);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_T,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_arg_t =
# {
#   {
#     -1,
#     (gchar *) "arg_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_arg_t.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_t =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalT",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_t_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-t"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_t.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_t (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_VOID__UINT64 (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_t: Handler for the #OrgProjectSignalingIface::single-arg-signal-t signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-t:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_t: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalT">"SingleArgSignalT"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_T] =
#     g_signal_new ("single-arg-signal-t",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_t),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_t,
#       G_TYPE_NONE,
#       1, G_TYPE_UINT64);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_t:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_t: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalT">"SingleArgSignalT"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_t (
#     OrgProjectSignalingIface *object,
#     guint64 arg_arg_t)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_T], 0, arg_arg_t);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_t (
#     OrgProjectSignalingIface *object,
#     guint64 arg_arg_t)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(t)",
#                    arg_arg_t));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalT",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_t = _org_project_signaling_iface_on_signal_single_arg_signal_t;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp66dpc67t.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalD">
#                     <arg name="arg_d" type="d"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp66dpc67t.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_D,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_arg_d =
# {
#   {
#     -1,
#     (gchar *) "arg_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_arg_d.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_d =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalD",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_d_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-d"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_d.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_d (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__DOUBLE (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_d: Handler for the #OrgProjectSignalingIface::single-arg-signal-d signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-d:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_d: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalD">"SingleArgSignalD"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_D] =
#     g_signal_new ("single-arg-signal-d",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_d),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_d,
#       G_TYPE_NONE,
#       1, G_TYPE_DOUBLE);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_d:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_d: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalD">"SingleArgSignalD"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_d (
#     OrgProjectSignalingIface *object,
#     gdouble arg_arg_d)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_D], 0, arg_arg_d);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_d (
#     OrgProjectSignalingIface *object,
#     gdouble arg_arg_d)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(d)",
#                    arg_arg_d));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalD",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_d = _org_project_signaling_iface_on_signal_single_arg_signal_d;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmpi4juavga.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalS">
#                     <arg name="arg_s" type="s"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmpi4juavga.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_S,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_arg_s =
# {
#   {
#     -1,
#     (gchar *) "arg_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_arg_s.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_s =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalS",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_s_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-s"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_s.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_s (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_s: Handler for the #OrgProjectSignalingIface::single-arg-signal-s signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-s:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_s: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalS">"SingleArgSignalS"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_S] =
#     g_signal_new ("single-arg-signal-s",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_s),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_s,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_s:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_s: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalS">"SingleArgSignalS"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_s (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_s)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_S], 0, arg_arg_s);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_s (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_s)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
#                    arg_arg_s));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalS",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_s = _org_project_signaling_iface_on_signal_single_arg_signal_s;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp0ynjhnoo.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalO">
#                     <arg name="arg_o" type="o"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp0ynjhnoo.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_O,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_arg_o =
# {
#   {
#     -1,
#     (gchar *) "arg_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_arg_o.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_o =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalO",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_o_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-o"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_o.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_o (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_o: Handler for the #OrgProjectSignalingIface::single-arg-signal-o signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-o:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_o: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalO">"SingleArgSignalO"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_O] =
#     g_signal_new ("single-arg-signal-o",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_o),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_o,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_o:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_o: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalO">"SingleArgSignalO"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_o (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_o)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_O], 0, arg_arg_o);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_o (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_o)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(o)",
#                    arg_arg_o));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalO",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_o = _org_project_signaling_iface_on_signal_single_arg_signal_o;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp69yfo7hs.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalG">
#                     <arg name="arg_g" type="g"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp69yfo7hs.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_G,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_arg_g =
# {
#   {
#     -1,
#     (gchar *) "arg_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_arg_g.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_g =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalG",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_g_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-g"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_g.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_g (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_g: Handler for the #OrgProjectSignalingIface::single-arg-signal-g signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-g:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_g: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalG">"SingleArgSignalG"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_G] =
#     g_signal_new ("single-arg-signal-g",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_g),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_g,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_g:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_g: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalG">"SingleArgSignalG"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_g (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_g)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_G], 0, arg_arg_g);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_g (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_g)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(g)",
#                    arg_arg_g));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalG",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_g = _org_project_signaling_iface_on_signal_single_arg_signal_g;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp2u92llgh.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalH">
#                     <arg name="arg_h" type="h"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp2u92llgh.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_H,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_arg_h =
# {
#   {
#     -1,
#     (gchar *) "arg_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_arg_h.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_h =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalH",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_h_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-h"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_h.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_h (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_h: Handler for the #OrgProjectSignalingIface::single-arg-signal-h signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-h:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_h: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalH">"SingleArgSignalH"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_H] =
#     g_signal_new ("single-arg-signal-h",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_h),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_h,
#       G_TYPE_NONE,
#       1, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_h:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_h: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalH">"SingleArgSignalH"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_h (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_arg_h)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_H], 0, arg_arg_h);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_h (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_arg_h)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(@h)",
#                    arg_arg_h));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalH",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_h = _org_project_signaling_iface_on_signal_single_arg_signal_h;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmpymr1gelq.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalAy">
#                     <arg name="arg_ay" type="ay"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmpymr1gelq.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AY,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_arg_ay =
# {
#   {
#     -1,
#     (gchar *) "arg_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_arg_ay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_ay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAy",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_ay_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-ay"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_ay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__STRING (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_ay: Handler for the #OrgProjectSignalingIface::single-arg-signal-ay signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-ay:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_ay: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAy">"SingleArgSignalAy"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AY] =
#     g_signal_new ("single-arg-signal-ay",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_ay),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_ay,
#       G_TYPE_NONE,
#       1, G_TYPE_STRING);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_ay:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_ay: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAy">"SingleArgSignalAy"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_ay (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_ay)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AY], 0, arg_arg_ay);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_ay (
#     OrgProjectSignalingIface *object,
#     const gchar *arg_arg_ay)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^ay)",
#                    arg_arg_ay));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAy",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_ay = _org_project_signaling_iface_on_signal_single_arg_signal_ay;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmp8s0ai4fo.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalAs">
#                     <arg name="arg_as" type="as"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmp8s0ai4fo.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AS,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_arg_as =
# {
#   {
#     -1,
#     (gchar *) "arg_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_arg_as.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_as =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAs",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_as_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-as"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_as.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_as (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_as: Handler for the #OrgProjectSignalingIface::single-arg-signal-as signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-as:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_as: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAs">"SingleArgSignalAs"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AS] =
#     g_signal_new ("single-arg-signal-as",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_as),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_as,
#       G_TYPE_NONE,
#       1, G_TYPE_STRV);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_as:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_as: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAs">"SingleArgSignalAs"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_as (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_arg_as)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AS], 0, arg_arg_as);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_as (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_arg_as)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^as)",
#                    arg_arg_as));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAs",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_as = _org_project_signaling_iface_on_signal_single_arg_signal_as;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmplww0rfly.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalAo">
#                     <arg name="arg_ao" type="ao"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmplww0rfly.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AO,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_arg_ao =
# {
#   {
#     -1,
#     (gchar *) "arg_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_arg_ao.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_ao =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAo",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_ao_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-ao"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_ao.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_ao (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_ao: Handler for the #OrgProjectSignalingIface::single-arg-signal-ao signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-ao:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_ao: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAo">"SingleArgSignalAo"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AO] =
#     g_signal_new ("single-arg-signal-ao",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_ao),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_ao,
#       G_TYPE_NONE,
#       1, G_TYPE_STRV);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_ao:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_ao: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAo">"SingleArgSignalAo"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_ao (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_arg_ao)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AO], 0, arg_arg_ao);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_ao (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_arg_ao)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^ao)",
#                    arg_arg_ao));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAo",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_ao = _org_project_signaling_iface_on_signal_single_arg_signal_ao;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmpw2jmrmnf.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalAay">
#                     <arg name="arg_aay" type="aay"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmpw2jmrmnf.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AAY,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_arg_aay =
# {
#   {
#     -1,
#     (gchar *) "arg_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_arg_aay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_aay =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAay",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_aay_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-aay"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_aay.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_aay (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__BOXED (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_aay: Handler for the #OrgProjectSignalingIface::single-arg-signal-aay signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-aay:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_aay: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAay">"SingleArgSignalAay"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AAY] =
#     g_signal_new ("single-arg-signal-aay",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_aay),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_aay,
#       G_TYPE_NONE,
#       1, G_TYPE_STRV);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_aay:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_aay: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAay">"SingleArgSignalAay"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_aay (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_arg_aay)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_AAY], 0, arg_arg_aay);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_aay (
#     OrgProjectSignalingIface *object,
#     const gchar *const *arg_arg_aay)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(^aay)",
#                    arg_arg_aay));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAay",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_aay = _org_project_signaling_iface_on_signal_single_arg_signal_aay;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
#  
# /tmp/tmpwtqmano3/tmppy8_q6ve.xml: 
#             <node>
#             <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SingleArgSignalAsv">
#                     <arg name="arg_asv" type="a{sv}"/>
#                 </signal>
#             </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpwtqmano3/tmppy8_q6ve.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_ASV,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_arg_asv =
# {
#   {
#     -1,
#     (gchar *) "arg_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_arg_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_single_arg_signal_asv =
# {
#   {
#     -1,
#     (gchar *) "SingleArgSignalAsv",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_single_arg_signal_asv_ARG_pointers,
#     NULL
#   },
#   "single-arg-signal-asv"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_single_arg_signal_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_single_arg_signal_asv (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  * @single_arg_signal_asv: Handler for the #OrgProjectSignalingIface::single-arg-signal-asv signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::single-arg-signal-asv:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_arg_asv: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAsv">"SingleArgSignalAsv"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_ASV] =
#     g_signal_new ("single-arg-signal-asv",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, single_arg_signal_asv),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_single_arg_signal_asv,
#       G_TYPE_NONE,
#       1, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_single_arg_signal_asv:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_arg_asv: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SingleArgSignalAsv">"SingleArgSignalAsv"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_single_arg_signal_asv (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_arg_asv)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SINGLE_ARG_SIGNAL_ASV], 0, arg_arg_asv);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_single_arg_signal_asv (
#     OrgProjectSignalingIface *object,
#     GVariant *arg_arg_asv)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(@a{sv})",
#                    arg_arg_asv));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SingleArgSignalAsv",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->single_arg_signal_asv = _org_project_signaling_iface_on_signal_single_arg_signal_asv;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
Executing: glib/codegen.py.test
ok 24 __main__.TestCodegen.test_generate_signals_marshallers_multiple_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp_mwpw0w1
# /tmp/tmp_mwpw0w1/tmpuc185jyu.xml: 
#             <node>
#               <interface name="org.project.SignalingIface">
#                 <signal name="SimpleSignal"/>
#                 <signal name="SignalWithManyArgs">
#                     <arg name='an_b' type='b'/>
# <arg name='an_y' type='y'/>
# <arg name='an_n' type='n'/>
# <arg name='an_q' type='q'/>
# <arg name='an_i' type='i'/>
# <arg name='an_u' type='u'/>
# <arg name='an_x' type='x'/>
# <arg name='an_t' type='t'/>
# <arg name='an_d' type='d'/>
# <arg name='an_s' type='s'/>
# <arg name='an_o' type='o'/>
# <arg name='an_g' type='g'/>
# <arg name='an_h' type='h'/>
# <arg name='an_ay' type='ay'/>
# <arg name='an_as' type='as'/>
# <arg name='an_ao' type='ao'/>
# <arg name='an_aay' type='aay'/>
# <arg name='an_asv' type='a{sv}'/>
# 
#                 </signal>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp_mwpw0w1/tmpuc185jyu.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_VOID__BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (
#     GClosure     *closure,
#     GValue       *return_value G_GNUC_UNUSED,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef void (*_GDbusCodegenMarshalVoid_BooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc)
#        (void *data1,
#         gboolean arg_an_b,
#         guchar arg_an_y,
#         gint16 arg_an_n,
#         guint16 arg_an_q,
#         gint arg_an_i,
#         guint arg_an_u,
#         gint64 arg_an_x,
#         guint64 arg_an_t,
#         gdouble arg_an_d,
#         const gchar *arg_an_s,
#         const gchar *arg_an_o,
#         const gchar *arg_an_g,
#         GVariant *arg_an_h,
#         const gchar *arg_an_ay,
#         const gchar *const *arg_an_as,
#         const gchar *const *arg_an_ao,
#         const gchar *const *arg_an_aay,
#         GVariant *arg_an_asv,
#         void *data2);
#   _GDbusCodegenMarshalVoid_BooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
# 
#   g_return_if_fail (n_param_values == 19);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalVoid_BooleanUcharIntUintIntUintInt64Uint64DoubleStringStringStringVariantStringBoxedBoxedBoxedVariantFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_boolean (param_values + 1),
#             g_marshal_value_peek_uchar (param_values + 2),
#             g_marshal_value_peek_int (param_values + 3),
#             g_marshal_value_peek_uint (param_values + 4),
#             g_marshal_value_peek_int (param_values + 5),
#             g_marshal_value_peek_uint (param_values + 6),
#             g_marshal_value_peek_int64 (param_values + 7),
#             g_marshal_value_peek_uint64 (param_values + 8),
#             g_marshal_value_peek_double (param_values + 9),
#             g_marshal_value_peek_string (param_values + 10),
#             g_marshal_value_peek_string (param_values + 11),
#             g_marshal_value_peek_string (param_values + 12),
#             g_marshal_value_peek_variant (param_values + 13),
#             g_marshal_value_peek_string (param_values + 14),
#             g_marshal_value_peek_boxed (param_values + 15),
#             g_marshal_value_peek_boxed (param_values + 16),
#             g_marshal_value_peek_boxed (param_values + 17),
#             g_marshal_value_peek_variant (param_values + 18),
#             data2);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.SignalingIface
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectSignalingIface
#  * @title: OrgProjectSignalingIface
#  * @short_description: Generated C code for the org.project.SignalingIface D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL,
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNAL_WITH_MANY_ARGS,
# };
# 
# static unsigned _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[2] = { 0 };
# 
# /* ---- Introspection data for org.project.SignalingIface ---- */
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_simple_signal =
# {
#   {
#     -1,
#     (gchar *) "SimpleSignal",
#     NULL,
#     NULL
#   },
#   "simple-signal"
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_b =
# {
#   {
#     -1,
#     (gchar *) "an_b",
#     (gchar *) "b",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_y =
# {
#   {
#     -1,
#     (gchar *) "an_y",
#     (gchar *) "y",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_n =
# {
#   {
#     -1,
#     (gchar *) "an_n",
#     (gchar *) "n",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_q =
# {
#   {
#     -1,
#     (gchar *) "an_q",
#     (gchar *) "q",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_i =
# {
#   {
#     -1,
#     (gchar *) "an_i",
#     (gchar *) "i",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_u =
# {
#   {
#     -1,
#     (gchar *) "an_u",
#     (gchar *) "u",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_x =
# {
#   {
#     -1,
#     (gchar *) "an_x",
#     (gchar *) "x",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_t =
# {
#   {
#     -1,
#     (gchar *) "an_t",
#     (gchar *) "t",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_d =
# {
#   {
#     -1,
#     (gchar *) "an_d",
#     (gchar *) "d",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_s =
# {
#   {
#     -1,
#     (gchar *) "an_s",
#     (gchar *) "s",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_o =
# {
#   {
#     -1,
#     (gchar *) "an_o",
#     (gchar *) "o",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_g =
# {
#   {
#     -1,
#     (gchar *) "an_g",
#     (gchar *) "g",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_h =
# {
#   {
#     -1,
#     (gchar *) "an_h",
#     (gchar *) "h",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ay =
# {
#   {
#     -1,
#     (gchar *) "an_ay",
#     (gchar *) "ay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_as =
# {
#   {
#     -1,
#     (gchar *) "an_as",
#     (gchar *) "as",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ao =
# {
#   {
#     -1,
#     (gchar *) "an_ao",
#     (gchar *) "ao",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_aay =
# {
#   {
#     -1,
#     (gchar *) "an_aay",
#     (gchar *) "aay",
#     NULL
#   },
#   FALSE
# };
# 
# static const _ExtendedGDBusArgInfo _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_asv =
# {
#   {
#     -1,
#     (gchar *) "an_asv",
#     (gchar *) "a{sv}",
#     NULL
#   },
#   FALSE
# };
# 
# static const GDBusArgInfo * const _org_project_signaling_iface_signal_info_signal_with_many_args_ARG_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_b.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_y.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_n.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_q.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_i.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_u.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_x.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_t.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_d.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_s.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_o.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_g.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_h.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ay.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_as.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_ao.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_aay.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_an_asv.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _org_project_signaling_iface_signal_info_signal_with_many_args =
# {
#   {
#     -1,
#     (gchar *) "SignalWithManyArgs",
#     (GDBusArgInfo **) &_org_project_signaling_iface_signal_info_signal_with_many_args_ARG_pointers,
#     NULL
#   },
#   "signal-with-many-args"
# };
# 
# static const GDBusSignalInfo * const _org_project_signaling_iface_signal_info_pointers[] =
# {
#   &_org_project_signaling_iface_signal_info_simple_signal.parent_struct,
#   &_org_project_signaling_iface_signal_info_signal_with_many_args.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_signaling_iface_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.SignalingIface",
#     NULL,
#     (GDBusSignalInfo **) &_org_project_signaling_iface_signal_info_pointers,
#     NULL,
#     NULL
#   },
#   "org-project-signaling-iface",
# };
# 
# 
# /**
#  * org_project_signaling_iface_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_signaling_iface_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_signaling_iface_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectSignalingIface interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_signaling_iface_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_signaling_iface_signal_marshal_simple_signal (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# org_project_signaling_iface_signal_marshal_signal_with_many_args (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_VOID__BOOLEAN_UCHAR_INT_UINT_INT_UINT_INT64_UINT64_DOUBLE_STRING_STRING_STRING_VARIANT_STRING_BOXED_BOXED_BOXED_VARIANT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectSignalingIface:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceIface:
#  * @parent_iface: The parent interface.
#  * @signal_with_many_args: Handler for the #OrgProjectSignalingIface::signal-with-many-args signal.
#  * @simple_signal: Handler for the #OrgProjectSignalingIface::simple-signal signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  */
# 
# typedef OrgProjectSignalingIfaceIface OrgProjectSignalingIfaceInterface;
# G_DEFINE_INTERFACE (OrgProjectSignalingIface, org_project_signaling_iface, G_TYPE_OBJECT)
# 
# static void
# org_project_signaling_iface_default_init (OrgProjectSignalingIfaceIface *iface)
# {
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * OrgProjectSignalingIface::simple-signal:
#    * @object: A #OrgProjectSignalingIface.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL] =
#     g_signal_new ("simple-signal",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, simple_signal),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_simple_signal,
#       G_TYPE_NONE,
#       0);
# 
#   /**
#    * OrgProjectSignalingIface::signal-with-many-args:
#    * @object: A #OrgProjectSignalingIface.
#    * @arg_an_b: Argument.
#    * @arg_an_y: Argument.
#    * @arg_an_n: Argument.
#    * @arg_an_q: Argument.
#    * @arg_an_i: Argument.
#    * @arg_an_u: Argument.
#    * @arg_an_x: Argument.
#    * @arg_an_t: Argument.
#    * @arg_an_d: Argument.
#    * @arg_an_s: Argument.
#    * @arg_an_o: Argument.
#    * @arg_an_g: Argument.
#    * @arg_an_h: Argument.
#    * @arg_an_ay: Argument.
#    * @arg_an_as: Argument.
#    * @arg_an_ao: Argument.
#    * @arg_an_aay: Argument.
#    * @arg_an_asv: Argument.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-project-SignalingIface.SignalWithManyArgs">"SignalWithManyArgs"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIGNAL_WITH_MANY_ARGS] =
#     g_signal_new ("signal-with-many-args",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (OrgProjectSignalingIfaceIface, signal_with_many_args),
#       NULL,
#       NULL,
#       org_project_signaling_iface_signal_marshal_signal_with_many_args,
#       G_TYPE_NONE,
#       18, G_TYPE_BOOLEAN, G_TYPE_UCHAR, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT, G_TYPE_UINT, G_TYPE_INT64, G_TYPE_UINT64, G_TYPE_DOUBLE, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_VARIANT, G_TYPE_STRING, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_STRV, G_TYPE_VARIANT);
# 
# }
# 
# /**
#  * org_project_signaling_iface_emit_simple_signal:
#  * @object: A #OrgProjectSignalingIface.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SimpleSignal">"SimpleSignal"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIMPLE_SIGNAL], 0);
# }
# 
# /**
#  * org_project_signaling_iface_emit_signal_with_many_args:
#  * @object: A #OrgProjectSignalingIface.
#  * @arg_an_b: Argument to pass with the signal.
#  * @arg_an_y: Argument to pass with the signal.
#  * @arg_an_n: Argument to pass with the signal.
#  * @arg_an_q: Argument to pass with the signal.
#  * @arg_an_i: Argument to pass with the signal.
#  * @arg_an_u: Argument to pass with the signal.
#  * @arg_an_x: Argument to pass with the signal.
#  * @arg_an_t: Argument to pass with the signal.
#  * @arg_an_d: Argument to pass with the signal.
#  * @arg_an_s: Argument to pass with the signal.
#  * @arg_an_o: Argument to pass with the signal.
#  * @arg_an_g: Argument to pass with the signal.
#  * @arg_an_h: Argument to pass with the signal.
#  * @arg_an_ay: Argument to pass with the signal.
#  * @arg_an_as: Argument to pass with the signal.
#  * @arg_an_ao: Argument to pass with the signal.
#  * @arg_an_aay: Argument to pass with the signal.
#  * @arg_an_asv: Argument to pass with the signal.
#  *
#  * Emits the <link linkend="gdbus-signal-org-project-SignalingIface.SignalWithManyArgs">"SignalWithManyArgs"</link> D-Bus signal.
#  */
# void
# org_project_signaling_iface_emit_signal_with_many_args (
#     OrgProjectSignalingIface *object,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv)
# {
#   g_signal_emit (object, _ORG_PROJECT_SIGNALING_IFACE_SIGNALS[_ORG_PROJECT_SIGNALING_IFACE_SIGNAL_WITH_MANY_ARGS], 0, arg_an_b, arg_an_y, arg_an_n, arg_an_q, arg_an_i, arg_an_u, arg_an_x, arg_an_t, arg_an_d, arg_an_s, arg_an_o, arg_an_g, arg_an_h, arg_an_ay, arg_an_as, arg_an_ao, arg_an_aay, arg_an_asv);
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceProxy:
#  *
#  * The #OrgProjectSignalingIfaceProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceProxy.
#  */
# 
# struct _OrgProjectSignalingIfaceProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceProxy, org_project_signaling_iface_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_proxy_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_proxy_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_signaling_iface_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_signaling_iface_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_signaling_iface_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectSignalingIfaceProxy *proxy = ORG_PROJECT_SIGNALING_IFACE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_signaling_iface_proxy_init (OrgProjectSignalingIfaceProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_signaling_iface_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, OrgProjectSignalingIfaceProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_signaling_iface_interface_info ());
# }
# 
# static void
# org_project_signaling_iface_proxy_class_init (OrgProjectSignalingIfaceProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_signaling_iface_proxy_finalize;
#   gobject_class->get_property = org_project_signaling_iface_proxy_get_property;
#   gobject_class->set_property = org_project_signaling_iface_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_signaling_iface_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_signaling_iface_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceProxyPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_proxy_iface_init (OrgProjectSignalingIfaceIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_signaling_iface_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_signaling_iface_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_signaling_iface_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_signaling_iface_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_signaling_iface_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_signaling_iface_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_signaling_iface_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_signaling_iface_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.SignalingIface", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_SIGNALING_IFACE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectSignalingIfaceSkeleton:
#  *
#  * The #OrgProjectSignalingIfaceSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectSignalingIfaceSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectSignalingIfaceSkeleton.
#  */
# 
# struct _OrgProjectSignalingIfaceSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_signaling_iface_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_SIGNALING_IFACE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_signaling_iface_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_signaling_iface_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_signaling_iface_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_signaling_iface_skeleton_vtable =
# {
#   _org_project_signaling_iface_skeleton_handle_method_call,
#   _org_project_signaling_iface_skeleton_handle_get_property,
#   _org_project_signaling_iface_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_signaling_iface_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_signaling_iface_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_signaling_iface_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_signaling_iface_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_signaling_iface_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_signaling_iface_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_signaling_iface_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_signaling_iface_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_signaling_iface_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_signaling_iface_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void
# _org_project_signaling_iface_on_signal_simple_signal (
#     OrgProjectSignalingIface *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SimpleSignal",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void
# _org_project_signaling_iface_on_signal_signal_with_many_args (
#     OrgProjectSignalingIface *object,
#     gboolean arg_an_b,
#     guchar arg_an_y,
#     gint16 arg_an_n,
#     guint16 arg_an_q,
#     gint arg_an_i,
#     guint arg_an_u,
#     gint64 arg_an_x,
#     guint64 arg_an_t,
#     gdouble arg_an_d,
#     const gchar *arg_an_s,
#     const gchar *arg_an_o,
#     const gchar *arg_an_g,
#     GVariant *arg_an_h,
#     const gchar *arg_an_ay,
#     const gchar *const *arg_an_as,
#     const gchar *const *arg_an_ao,
#     const gchar *const *arg_an_aay,
#     GVariant *arg_an_asv)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("(bynqiuxtdsog@h^ay^as^ao^aay@a{sv})",
#                    arg_an_b,
#                    arg_an_y,
#                    arg_an_n,
#                    arg_an_q,
#                    arg_an_i,
#                    arg_an_u,
#                    arg_an_x,
#                    arg_an_t,
#                    arg_an_d,
#                    arg_an_s,
#                    arg_an_o,
#                    arg_an_g,
#                    arg_an_h,
#                    arg_an_ay,
#                    arg_an_as,
#                    arg_an_ao,
#                    arg_an_aay,
#                    arg_an_asv));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.SignalingIface", "SignalWithManyArgs",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectSignalingIfaceSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectSignalingIfaceSkeleton, org_project_signaling_iface_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_SIGNALING_IFACE, org_project_signaling_iface_skeleton_iface_init))
# 
# #endif
# static void
# org_project_signaling_iface_skeleton_finalize (GObject *object)
# {
#   OrgProjectSignalingIfaceSkeleton *skeleton = ORG_PROJECT_SIGNALING_IFACE_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_signaling_iface_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_signaling_iface_skeleton_init (OrgProjectSignalingIfaceSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_signaling_iface_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, OrgProjectSignalingIfaceSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_signaling_iface_skeleton_class_init (OrgProjectSignalingIfaceSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_signaling_iface_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_signaling_iface_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_signaling_iface_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_signaling_iface_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_signaling_iface_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectSignalingIfaceSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_signaling_iface_skeleton_iface_init (OrgProjectSignalingIfaceIface *iface)
# {
#   iface->simple_signal = _org_project_signaling_iface_on_signal_simple_signal;
#   iface->signal_with_many_args = _org_project_signaling_iface_on_signal_signal_with_many_args;
# }
# 
# /**
#  * org_project_signaling_iface_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-SignalingIface.top_of_page">org.project.SignalingIface</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectSignalingIfaceSkeleton): The skeleton object.
#  */
# OrgProjectSignalingIface *
# org_project_signaling_iface_skeleton_new (void)
# {
#   return ORG_PROJECT_SIGNALING_IFACE (g_object_new (TYPE_ORG_PROJECT_SIGNALING_IFACE_SKELETON, NULL));
# }
# Error:
ok 25 __main__.TestCodegen.test_generate_valid_docbook
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpqtl3ysts
# /tmp/tmpqtl3ysts/tmpy1ptc469.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <!-- Resize:
#                  @size: New partition size in bytes, 0 for maximal size.
#                  @options: Options.
#                  @since 2.7.2
# 
#                  Resizes the partition.
# 
#                  The partition will not change its position but might be slightly bigger
#                  than requested due to sector counts and alignment (e.g. 1MiB).
#                  If the requested size can't be allocated it results in an error.
#                  The maximal size can automatically be set by using 0 as size.
#             -->
#             <method name="Resize">
#               <arg name="size" direction="in" type="t"/>
#               <arg name="options" direction="in" type="a{sv}"/>
#             </method>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpqtl3ysts/tmpy1ptc469.xml', '--generate-docbook', 'test']
# Return code: 0
# Output:
#  
# Error:
ok 26 __main__.TestCodegen.test_glib_max_allowed_less_than_min_required
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp87_nly10
# /tmp/tmp87_nly10/tmpidfdefrv.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp87_nly10/tmpidfdefrv.xml', '--output', '-', '--body', '--glib-max-allowed', '2.62', '--glib-min-required', '2.64']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Invalid versions: --glib-min-required ((2, 64)) must be less than or equal to --glib-max-allowed ((2, 62))
ok 27 __main__.TestCodegen.test_glib_max_allowed_major_only
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpogn56_50
# /tmp/tmpogn56_50/tmpjd_kqafl.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpogn56_50/tmpjd_kqafl.xml', '--output', '-', '--header', '--glib-max-allowed', '3']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
Executing: glib/codegen.py.test
ok 28 __main__.TestCodegen.test_glib_max_allowed_too_low
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpz145w9p1
# /tmp/tmpz145w9p1/tmpwl1p5cv1.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpz145w9p1/tmpwl1p5cv1.xml', '--output', '-', '--body', '--glib-max-allowed', '2.6']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Invalid versions: --glib-min-required ((2, 30)) must be less than or equal to --glib-max-allowed ((2, 6))
ok 29 __main__.TestCodegen.test_glib_max_allowed_unstable
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpbg23k6cf
# /tmp/tmpbg23k6cf/tmp032rvdmt.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpbg23k6cf/tmp032rvdmt.xml', '--output', '-', '--header', '--glib-max-allowed', '2.63', '--glib-min-required', '2.64']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
ok 30 __main__.TestCodegen.test_glib_max_allowed_with_micro
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp4arjesh1
# /tmp/tmp4arjesh1/tmpm6mmj2lq.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp4arjesh1/tmpm6mmj2lq.xml', '--output', '-', '--header', '--glib-max-allowed', '2.46.2']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
ok 31 __main__.TestCodegen.test_glib_min_required_invalid
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmprf7n0q7a
# /tmp/tmprf7n0q7a/tmpxij_4to2.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmprf7n0q7a/tmpxij_4to2.xml', '--output', '-', '--body', '--glib-min-required', 'hello mum']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Unrecognized --glib-min-required string ‘hello mum’
Executing: glib/codegen.py.test
ok 32 __main__.TestCodegen.test_glib_min_required_major_only
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmptxih1uma
# /tmp/tmptxih1uma/tmpjd_wdap7.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmptxih1uma/tmpjd_wdap7.xml', '--output', '-', '--header', '--glib-min-required', '3', '--glib-max-allowed', '3.2']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
ok 33 __main__.TestCodegen.test_glib_min_required_too_low
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmp77nj_sla
# /tmp/tmp77nj_sla/tmp7sda62ys.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmp77nj_sla/tmp7sda62ys.xml', '--output', '-', '--body', '--glib-min-required', '2.6']
# Return code: 1
# Output:
#  
# Error:
#  ERROR: Invalid --glib-min-required string ‘2.6’: minimum version is 2.30
ok 34 __main__.TestCodegen.test_glib_min_required_with_micro
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpoh1nkjqk
# /tmp/tmpoh1nkjqk/tmpijwkxiw6.xml: 
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpoh1nkjqk/tmpijwkxiw6.xml', '--output', '-', '--header', '--glib-min-required', '2.46.2']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
ok 35 __main__.TestCodegen.test_help
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpurw02_3h
# Running: ['/usr/bin/gdbus-codegen', '--help']
# Return code: 0
# Output:
#  usage: gdbus-codegen [-h] [--interface-prefix PREFIX]
#                      [--c-namespace NAMESPACE] [--c-generate-object-manager]
#                      [--c-generate-autocleanup {none,objects,all}]
#                      [--generate-docbook OUTFILES] [--generate-md OUTFILES]
#                      [--generate-rst OUTFILES] [--pragma-once]
#                      [--annotate WHAT KEY VALUE WHAT KEY VALUE WHAT KEY VALUE]
#                      [--glib-min-required VERSION]
#                      [--glib-max-allowed VERSION]
#                      [--symbol-decorator SYMBOL_DECORATOR]
#                      [--symbol-decorator-header SYMBOL_DECORATOR_HEADER]
#                      [--symbol-decorator-define SYMBOL_DECORATOR_DEFINE]
#                      [--generate-c-code OUTFILES | --header | --body |
#                      --interface-info-header | --interface-info-body]
#                      [--output FILE | --output-directory OUTDIR]
#                      FILE [FILE ...]
# 
# D-Bus code and documentation generator
# 
# positional arguments:
#   FILE                  D-Bus introspection XML file
# 
# options:
#   -h, --help            show this help message and exit
#   --interface-prefix PREFIX
#                         String to strip from D-Bus interface names for code
#                         and docs
#   --c-namespace NAMESPACE
#                         The namespace to use for generated C code
#   --c-generate-object-manager
#                         Generate a GDBusObjectManagerClient subclass when
#                         generating C code
#   --c-generate-autocleanup {none,objects,all}
#                         Generate autocleanup support
#   --generate-docbook OUTFILES
#                         Generate Docbook in OUTFILES-org.Project.IFace.xml
#   --generate-md OUTFILES
#                         Generate Markdown in OUTFILES-org.Project.IFace.md
#   --generate-rst OUTFILES
#                         Generate reStructuredText in OUTFILES-
#                         org.Project.IFace.rst
#   --pragma-once         Use "pragma once" as the inclusion guard
#   --annotate WHAT KEY VALUE WHAT KEY VALUE WHAT KEY VALUE
#                         Add annotation (may be used several times)
#   --glib-min-required VERSION
#                         Minimum version of GLib to be supported by the
#                         outputted code (default: 2.30)
#   --glib-max-allowed VERSION
#                         Maximum version of GLib to be used by the outputted
#                         code (default: current GLib version)
#   --symbol-decorator SYMBOL_DECORATOR
#                         Macro used to decorate a symbol in the outputted
#                         header, possibly to export symbols
#   --symbol-decorator-header SYMBOL_DECORATOR_HEADER
#                         Additional header required for decorator specified by
#                         --symbol-decorator
#   --symbol-decorator-define SYMBOL_DECORATOR_DEFINE
#                         Additional define required for decorator specified by
#                         --symbol-decorator
#   --generate-c-code OUTFILES
#                         Generate C code in OUTFILES.[ch]
#   --header              Generate C headers
#   --body                Generate C code
#   --interface-info-header
#                         Generate GDBusInterfaceInfo C header
#   --interface-info-body
#                         Generate GDBusInterfaceInfo C code
#   --output FILE         Write output into the specified file
#   --output-directory OUTDIR
#                         Location to output generated files
# Error:
Executing: glib/codegen.py.test
ok 36 __main__.TestCodegen.test_indentation_preservation_in_comments
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpg7xw76yb
# /tmp/tmpg7xw76yb/tmpajfj_hw_.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <!-- GetKeyBinding:
#                  @index: 0-based index of the action to query.
# 
#                  Gets the keybinding which can be used to activate this action, if one
#                  exists. The string returned should contain localized, human-readable,
#                  key sequences as they would appear when displayed on screen. It must
#                  be in the format "mnemonic;sequence;shortcut".
# 
#                  - The mnemonic key activates the object if it is presently enabled onscreen.
#                    This typically corresponds to the underlined letter within the widget.
#                    Example: "n" in a traditional "New..." menu item or the "a" in "Apply" for
#                    a button.
# 
#                  If there is no key binding for this action, return "".
#             -->
#             <method name="GetKeyBinding">
#               <arg type="i" name="index" direction="in"/>
#               <arg type="s" direction="out"/>
#             </method>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpg7xw76yb/tmpajfj_hw_.xml', '--generate-rst', 'test']
# Return code: 0
# Output:
#  
# Error:
#  
# /tmp/tmpg7xw76yb/tmpy2j5xiwy.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <!-- GetKeyBinding:
#                  @index: 0-based index of the action to query.
# 
#                  Gets the keybinding which can be used to activate this action, if one
#                  exists. The string returned should contain localized, human-readable,
#                  key sequences as they would appear when displayed on screen. It must
#                  be in the format "mnemonic;sequence;shortcut".
# 
#                  - The mnemonic key activates the object if it is presently enabled onscreen.
#                    This typically corresponds to the underlined letter within the widget.
#                    Example: "n" in a traditional "New..." menu item or the "a" in "Apply" for
#                    a button.
# 
#                  If there is no key binding for this action, return "".
#             -->
#             <method name="GetKeyBinding">
#               <arg type="i" name="index" direction="in"/>
#               <arg type="s" direction="out"/>
#             </method>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpg7xw76yb/tmpy2j5xiwy.xml', '--generate-md', 'test']
# Return code: 0
# Output:
#  
# Error:
#  
# /tmp/tmpg7xw76yb/tmpnfu3ke8v.xml: 
#         <node>
#           <interface name="org.project.Bar.Frobnicator">
#             <!-- GetKeyBinding:
#                  @index: 0-based index of the action to query.
# 
#                  Gets the keybinding which can be used to activate this action, if one
#                  exists. The string returned should contain localized, human-readable,
#                  key sequences as they would appear when displayed on screen. It must
#                  be in the format "mnemonic;sequence;shortcut".
# 
#                  - The mnemonic key activates the object if it is presently enabled onscreen.
#                    This typically corresponds to the underlined letter within the widget.
#                    Example: "n" in a traditional "New..." menu item or the "a" in "Apply" for
#                    a button.
# 
#                  If there is no key binding for this action, return "".
#             -->
#             <method name="GetKeyBinding">
#               <arg type="i" name="index" direction="in"/>
#               <arg type="s" direction="out"/>
#             </method>
#           </interface>
#         </node>
#         
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpg7xw76yb/tmpnfu3ke8v.xml', '--generate-docbook', 'test']
# Return code: 0
# Output:
#  
# Error:
ok 37 __main__.TestCodegen.test_no_args
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpzt9swt7q
# Running: ['/usr/bin/gdbus-codegen']
# Return code: 2
# Output:
#  
# Error:
#  usage: gdbus-codegen [-h] [--interface-prefix PREFIX]
#                      [--c-namespace NAMESPACE] [--c-generate-object-manager]
#                      [--c-generate-autocleanup {none,objects,all}]
#                      [--generate-docbook OUTFILES] [--generate-md OUTFILES]
#                      [--generate-rst OUTFILES] [--pragma-once]
#                      [--annotate WHAT KEY VALUE WHAT KEY VALUE WHAT KEY VALUE]
#                      [--glib-min-required VERSION]
#                      [--glib-max-allowed VERSION]
#                      [--symbol-decorator SYMBOL_DECORATOR]
#                      [--symbol-decorator-header SYMBOL_DECORATOR_HEADER]
#                      [--symbol-decorator-define SYMBOL_DECORATOR_DEFINE]
#                      [--generate-c-code OUTFILES | --header | --body |
#                      --interface-info-header | --interface-info-body]
#                      [--output FILE | --output-directory OUTDIR]
#                      FILE [FILE ...]
# gdbus-codegen: error: the following arguments are required: FILE
Executing: glib/codegen.py.test
ok 38 __main__.TestCodegen.test_reproducible
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmpf14iejbo
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpf14iejbo/tmpz07fy6s51.xml', '/tmp/tmpf14iejbo/tmp7_phzex82.xml', '--output', '-', '--header']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for org.project.Bar.Frobnicator */
# 
# #define TYPE_ORG_PROJECT_BAR_FROBNICATOR (org_project_bar_frobnicator_get_type ())
# #define ORG_PROJECT_BAR_FROBNICATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR, OrgProjectBarFrobnicator))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR))
# #define ORG_PROJECT_BAR_FROBNICATOR_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR, OrgProjectBarFrobnicatorIface))
# 
# struct _OrgProjectBarFrobnicator;
# typedef struct _OrgProjectBarFrobnicator OrgProjectBarFrobnicator;
# typedef struct _OrgProjectBarFrobnicatorIface OrgProjectBarFrobnicatorIface;
# 
# struct _OrgProjectBarFrobnicatorIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_random_method) (
#     OrgProjectBarFrobnicator *object,
#     GDBusMethodInvocation *invocation);
# 
# };
# 
# GType org_project_bar_frobnicator_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *org_project_bar_frobnicator_interface_info (void);
# guint org_project_bar_frobnicator_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void org_project_bar_frobnicator_complete_random_method (
#     OrgProjectBarFrobnicator *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus method calls: */
# void org_project_bar_frobnicator_call_random_method (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean org_project_bar_frobnicator_call_random_method_finish (
#     OrgProjectBarFrobnicator *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean org_project_bar_frobnicator_call_random_method_sync (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY (org_project_bar_frobnicator_proxy_get_type ())
# #define ORG_PROJECT_BAR_FROBNICATOR_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxy))
# #define ORG_PROJECT_BAR_FROBNICATOR_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxyClass))
# #define ORG_PROJECT_BAR_FROBNICATOR_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxyClass))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY))
# 
# typedef struct _OrgProjectBarFrobnicatorProxy OrgProjectBarFrobnicatorProxy;
# typedef struct _OrgProjectBarFrobnicatorProxyClass OrgProjectBarFrobnicatorProxyClass;
# typedef struct _OrgProjectBarFrobnicatorProxyPrivate OrgProjectBarFrobnicatorProxyPrivate;
# 
# struct _OrgProjectBarFrobnicatorProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   OrgProjectBarFrobnicatorProxyPrivate *priv;
# };
# 
# struct _OrgProjectBarFrobnicatorProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType org_project_bar_frobnicator_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectBarFrobnicatorProxy, g_object_unref)
# #endif
# 
# void org_project_bar_frobnicator_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void org_project_bar_frobnicator_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON (org_project_bar_frobnicator_skeleton_get_type ())
# #define ORG_PROJECT_BAR_FROBNICATOR_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeleton))
# #define ORG_PROJECT_BAR_FROBNICATOR_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeletonClass))
# #define ORG_PROJECT_BAR_FROBNICATOR_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeletonClass))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON))
# 
# typedef struct _OrgProjectBarFrobnicatorSkeleton OrgProjectBarFrobnicatorSkeleton;
# typedef struct _OrgProjectBarFrobnicatorSkeletonClass OrgProjectBarFrobnicatorSkeletonClass;
# typedef struct _OrgProjectBarFrobnicatorSkeletonPrivate OrgProjectBarFrobnicatorSkeletonPrivate;
# 
# struct _OrgProjectBarFrobnicatorSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   OrgProjectBarFrobnicatorSkeletonPrivate *priv;
# };
# 
# struct _OrgProjectBarFrobnicatorSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType org_project_bar_frobnicator_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectBarFrobnicatorSkeleton, g_object_unref)
# #endif
# 
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_skeleton_new (void);
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for com.acme.Coyote */
# 
# #define TYPE_COM_ACME_COYOTE (com_acme_coyote_get_type ())
# #define COM_ACME_COYOTE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_COM_ACME_COYOTE, ComAcmeCoyote))
# #define IS_COM_ACME_COYOTE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_COM_ACME_COYOTE))
# #define COM_ACME_COYOTE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_COM_ACME_COYOTE, ComAcmeCoyoteIface))
# 
# struct _ComAcmeCoyote;
# typedef struct _ComAcmeCoyote ComAcmeCoyote;
# typedef struct _ComAcmeCoyoteIface ComAcmeCoyoteIface;
# 
# struct _ComAcmeCoyoteIface
# {
#   GTypeInterface parent_iface;
# 
# 
# 
#   gboolean (*handle_attack) (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
#   gboolean (*handle_run) (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
#   gboolean (*handle_sleep) (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
#   const gchar * (*get_mood) (ComAcmeCoyote *object);
# 
#   void (*surprised) (
#     ComAcmeCoyote *object);
# 
# };
# 
# GType com_acme_coyote_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *com_acme_coyote_interface_info (void);
# guint com_acme_coyote_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void com_acme_coyote_complete_run (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
# void com_acme_coyote_complete_sleep (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
# void com_acme_coyote_complete_attack (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus signal emissions functions: */
# void com_acme_coyote_emit_surprised (
#     ComAcmeCoyote *object);
# 
# 
# 
# /* D-Bus method calls: */
# void com_acme_coyote_call_run (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean com_acme_coyote_call_run_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean com_acme_coyote_call_run_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# void com_acme_coyote_call_sleep (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean com_acme_coyote_call_sleep_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean com_acme_coyote_call_sleep_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# void com_acme_coyote_call_attack (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean com_acme_coyote_call_attack_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean com_acme_coyote_call_attack_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* D-Bus property accessors: */
# const gchar *com_acme_coyote_get_mood (ComAcmeCoyote *object);
# gchar *com_acme_coyote_dup_mood (ComAcmeCoyote *object);
# void com_acme_coyote_set_mood (ComAcmeCoyote *object, const gchar *value);
# 
# 
# /* ---- */
# 
# #define TYPE_COM_ACME_COYOTE_PROXY (com_acme_coyote_proxy_get_type ())
# #define COM_ACME_COYOTE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxy))
# #define COM_ACME_COYOTE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxyClass))
# #define COM_ACME_COYOTE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxyClass))
# #define IS_COM_ACME_COYOTE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_COM_ACME_COYOTE_PROXY))
# #define IS_COM_ACME_COYOTE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_COM_ACME_COYOTE_PROXY))
# 
# typedef struct _ComAcmeCoyoteProxy ComAcmeCoyoteProxy;
# typedef struct _ComAcmeCoyoteProxyClass ComAcmeCoyoteProxyClass;
# typedef struct _ComAcmeCoyoteProxyPrivate ComAcmeCoyoteProxyPrivate;
# 
# struct _ComAcmeCoyoteProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   ComAcmeCoyoteProxyPrivate *priv;
# };
# 
# struct _ComAcmeCoyoteProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType com_acme_coyote_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (ComAcmeCoyoteProxy, g_object_unref)
# #endif
# 
# void com_acme_coyote_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# ComAcmeCoyote *com_acme_coyote_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# ComAcmeCoyote *com_acme_coyote_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void com_acme_coyote_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# ComAcmeCoyote *com_acme_coyote_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# ComAcmeCoyote *com_acme_coyote_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_COM_ACME_COYOTE_SKELETON (com_acme_coyote_skeleton_get_type ())
# #define COM_ACME_COYOTE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeleton))
# #define COM_ACME_COYOTE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeletonClass))
# #define COM_ACME_COYOTE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeletonClass))
# #define IS_COM_ACME_COYOTE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_COM_ACME_COYOTE_SKELETON))
# #define IS_COM_ACME_COYOTE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_COM_ACME_COYOTE_SKELETON))
# 
# typedef struct _ComAcmeCoyoteSkeleton ComAcmeCoyoteSkeleton;
# typedef struct _ComAcmeCoyoteSkeletonClass ComAcmeCoyoteSkeletonClass;
# typedef struct _ComAcmeCoyoteSkeletonPrivate ComAcmeCoyoteSkeletonPrivate;
# 
# struct _ComAcmeCoyoteSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   ComAcmeCoyoteSkeletonPrivate *priv;
# };
# 
# struct _ComAcmeCoyoteSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType com_acme_coyote_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (ComAcmeCoyoteSkeleton, g_object_unref)
# #endif
# 
# ComAcmeCoyote *com_acme_coyote_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
#  
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpf14iejbo/tmp7_phzex82.xml', '/tmp/tmpf14iejbo/tmpz07fy6s51.xml', '--output', '-', '--header']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for org.project.Bar.Frobnicator */
# 
# #define TYPE_ORG_PROJECT_BAR_FROBNICATOR (org_project_bar_frobnicator_get_type ())
# #define ORG_PROJECT_BAR_FROBNICATOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR, OrgProjectBarFrobnicator))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR))
# #define ORG_PROJECT_BAR_FROBNICATOR_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR, OrgProjectBarFrobnicatorIface))
# 
# struct _OrgProjectBarFrobnicator;
# typedef struct _OrgProjectBarFrobnicator OrgProjectBarFrobnicator;
# typedef struct _OrgProjectBarFrobnicatorIface OrgProjectBarFrobnicatorIface;
# 
# struct _OrgProjectBarFrobnicatorIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_random_method) (
#     OrgProjectBarFrobnicator *object,
#     GDBusMethodInvocation *invocation);
# 
# };
# 
# GType org_project_bar_frobnicator_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *org_project_bar_frobnicator_interface_info (void);
# guint org_project_bar_frobnicator_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void org_project_bar_frobnicator_complete_random_method (
#     OrgProjectBarFrobnicator *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus method calls: */
# void org_project_bar_frobnicator_call_random_method (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean org_project_bar_frobnicator_call_random_method_finish (
#     OrgProjectBarFrobnicator *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean org_project_bar_frobnicator_call_random_method_sync (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY (org_project_bar_frobnicator_proxy_get_type ())
# #define ORG_PROJECT_BAR_FROBNICATOR_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxy))
# #define ORG_PROJECT_BAR_FROBNICATOR_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxyClass))
# #define ORG_PROJECT_BAR_FROBNICATOR_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxyClass))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY))
# 
# typedef struct _OrgProjectBarFrobnicatorProxy OrgProjectBarFrobnicatorProxy;
# typedef struct _OrgProjectBarFrobnicatorProxyClass OrgProjectBarFrobnicatorProxyClass;
# typedef struct _OrgProjectBarFrobnicatorProxyPrivate OrgProjectBarFrobnicatorProxyPrivate;
# 
# struct _OrgProjectBarFrobnicatorProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   OrgProjectBarFrobnicatorProxyPrivate *priv;
# };
# 
# struct _OrgProjectBarFrobnicatorProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType org_project_bar_frobnicator_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectBarFrobnicatorProxy, g_object_unref)
# #endif
# 
# void org_project_bar_frobnicator_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void org_project_bar_frobnicator_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON (org_project_bar_frobnicator_skeleton_get_type ())
# #define ORG_PROJECT_BAR_FROBNICATOR_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeleton))
# #define ORG_PROJECT_BAR_FROBNICATOR_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeletonClass))
# #define ORG_PROJECT_BAR_FROBNICATOR_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeletonClass))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON))
# #define IS_ORG_PROJECT_BAR_FROBNICATOR_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON))
# 
# typedef struct _OrgProjectBarFrobnicatorSkeleton OrgProjectBarFrobnicatorSkeleton;
# typedef struct _OrgProjectBarFrobnicatorSkeletonClass OrgProjectBarFrobnicatorSkeletonClass;
# typedef struct _OrgProjectBarFrobnicatorSkeletonPrivate OrgProjectBarFrobnicatorSkeletonPrivate;
# 
# struct _OrgProjectBarFrobnicatorSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   OrgProjectBarFrobnicatorSkeletonPrivate *priv;
# };
# 
# struct _OrgProjectBarFrobnicatorSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType org_project_bar_frobnicator_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (OrgProjectBarFrobnicatorSkeleton, g_object_unref)
# #endif
# 
# OrgProjectBarFrobnicator *org_project_bar_frobnicator_skeleton_new (void);
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for com.acme.Coyote */
# 
# #define TYPE_COM_ACME_COYOTE (com_acme_coyote_get_type ())
# #define COM_ACME_COYOTE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_COM_ACME_COYOTE, ComAcmeCoyote))
# #define IS_COM_ACME_COYOTE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_COM_ACME_COYOTE))
# #define COM_ACME_COYOTE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_COM_ACME_COYOTE, ComAcmeCoyoteIface))
# 
# struct _ComAcmeCoyote;
# typedef struct _ComAcmeCoyote ComAcmeCoyote;
# typedef struct _ComAcmeCoyoteIface ComAcmeCoyoteIface;
# 
# struct _ComAcmeCoyoteIface
# {
#   GTypeInterface parent_iface;
# 
# 
# 
#   gboolean (*handle_attack) (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
#   gboolean (*handle_run) (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
#   gboolean (*handle_sleep) (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
#   const gchar * (*get_mood) (ComAcmeCoyote *object);
# 
#   void (*surprised) (
#     ComAcmeCoyote *object);
# 
# };
# 
# GType com_acme_coyote_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *com_acme_coyote_interface_info (void);
# guint com_acme_coyote_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void com_acme_coyote_complete_run (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
# void com_acme_coyote_complete_sleep (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
# void com_acme_coyote_complete_attack (
#     ComAcmeCoyote *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus signal emissions functions: */
# void com_acme_coyote_emit_surprised (
#     ComAcmeCoyote *object);
# 
# 
# 
# /* D-Bus method calls: */
# void com_acme_coyote_call_run (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean com_acme_coyote_call_run_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean com_acme_coyote_call_run_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# void com_acme_coyote_call_sleep (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean com_acme_coyote_call_sleep_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean com_acme_coyote_call_sleep_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# void com_acme_coyote_call_attack (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean com_acme_coyote_call_attack_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean com_acme_coyote_call_attack_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* D-Bus property accessors: */
# const gchar *com_acme_coyote_get_mood (ComAcmeCoyote *object);
# gchar *com_acme_coyote_dup_mood (ComAcmeCoyote *object);
# void com_acme_coyote_set_mood (ComAcmeCoyote *object, const gchar *value);
# 
# 
# /* ---- */
# 
# #define TYPE_COM_ACME_COYOTE_PROXY (com_acme_coyote_proxy_get_type ())
# #define COM_ACME_COYOTE_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxy))
# #define COM_ACME_COYOTE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxyClass))
# #define COM_ACME_COYOTE_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxyClass))
# #define IS_COM_ACME_COYOTE_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_COM_ACME_COYOTE_PROXY))
# #define IS_COM_ACME_COYOTE_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_COM_ACME_COYOTE_PROXY))
# 
# typedef struct _ComAcmeCoyoteProxy ComAcmeCoyoteProxy;
# typedef struct _ComAcmeCoyoteProxyClass ComAcmeCoyoteProxyClass;
# typedef struct _ComAcmeCoyoteProxyPrivate ComAcmeCoyoteProxyPrivate;
# 
# struct _ComAcmeCoyoteProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   ComAcmeCoyoteProxyPrivate *priv;
# };
# 
# struct _ComAcmeCoyoteProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType com_acme_coyote_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (ComAcmeCoyoteProxy, g_object_unref)
# #endif
# 
# void com_acme_coyote_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# ComAcmeCoyote *com_acme_coyote_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# ComAcmeCoyote *com_acme_coyote_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void com_acme_coyote_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# ComAcmeCoyote *com_acme_coyote_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# ComAcmeCoyote *com_acme_coyote_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_COM_ACME_COYOTE_SKELETON (com_acme_coyote_skeleton_get_type ())
# #define COM_ACME_COYOTE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeleton))
# #define COM_ACME_COYOTE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeletonClass))
# #define COM_ACME_COYOTE_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeletonClass))
# #define IS_COM_ACME_COYOTE_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_COM_ACME_COYOTE_SKELETON))
# #define IS_COM_ACME_COYOTE_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_COM_ACME_COYOTE_SKELETON))
# 
# typedef struct _ComAcmeCoyoteSkeleton ComAcmeCoyoteSkeleton;
# typedef struct _ComAcmeCoyoteSkeletonClass ComAcmeCoyoteSkeletonClass;
# typedef struct _ComAcmeCoyoteSkeletonPrivate ComAcmeCoyoteSkeletonPrivate;
# 
# struct _ComAcmeCoyoteSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   ComAcmeCoyoteSkeletonPrivate *priv;
# };
# 
# struct _ComAcmeCoyoteSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType com_acme_coyote_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (ComAcmeCoyoteSkeleton, g_object_unref)
# #endif
# 
# ComAcmeCoyote *com_acme_coyote_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
#  
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpf14iejbo/tmpz07fy6s51.xml', '/tmp/tmpf14iejbo/tmp7_phzex82.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.Bar.Frobnicator
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectBarFrobnicator
#  * @title: OrgProjectBarFrobnicator
#  * @short_description: Generated C code for the org.project.Bar.Frobnicator D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.Bar.Frobnicator ---- */
# 
# static const _ExtendedGDBusMethodInfo _org_project_bar_frobnicator_method_info_random_method =
# {
#   {
#     -1,
#     (gchar *) "RandomMethod",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-random-method",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_bar_frobnicator_method_info_pointers[] =
# {
#   &_org_project_bar_frobnicator_method_info_random_method.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_bar_frobnicator_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.Bar.Frobnicator",
#     (GDBusMethodInfo **) &_org_project_bar_frobnicator_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-bar-frobnicator",
# };
# 
# 
# /**
#  * org_project_bar_frobnicator_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_bar_frobnicator_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_bar_frobnicator_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectBarFrobnicator interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_bar_frobnicator_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_bar_frobnicator_method_marshal_random_method (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectBarFrobnicator:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>.
#  */
# 
# /**
#  * OrgProjectBarFrobnicatorIface:
#  * @parent_iface: The parent interface.
#  * @handle_random_method: Handler for the #OrgProjectBarFrobnicator::handle-random-method signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>.
#  */
# 
# typedef OrgProjectBarFrobnicatorIface OrgProjectBarFrobnicatorInterface;
# G_DEFINE_INTERFACE (OrgProjectBarFrobnicator, org_project_bar_frobnicator, G_TYPE_OBJECT)
# 
# static void
# org_project_bar_frobnicator_default_init (OrgProjectBarFrobnicatorIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectBarFrobnicator::handle-random-method:
#    * @object: A #OrgProjectBarFrobnicator.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_bar_frobnicator_complete_random_method() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-random-method",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectBarFrobnicatorIface, handle_random_method),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_bar_frobnicator_method_marshal_random_method,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_bar_frobnicator_call_random_method:
#  * @proxy: A #OrgProjectBarFrobnicatorProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_bar_frobnicator_call_random_method_finish() to get the result of the operation.
#  *
#  * See org_project_bar_frobnicator_call_random_method_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_bar_frobnicator_call_random_method (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "RandomMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_bar_frobnicator_call_random_method_finish:
#  * @proxy: A #OrgProjectBarFrobnicatorProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_bar_frobnicator_call_random_method().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_bar_frobnicator_call_random_method().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_bar_frobnicator_call_random_method_finish (
#     OrgProjectBarFrobnicator *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_call_random_method_sync:
#  * @proxy: A #OrgProjectBarFrobnicatorProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_bar_frobnicator_call_random_method() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_bar_frobnicator_call_random_method_sync (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "RandomMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_complete_random_method:
#  * @object: A #OrgProjectBarFrobnicator.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_bar_frobnicator_complete_random_method (
#     OrgProjectBarFrobnicator *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectBarFrobnicatorProxy:
#  *
#  * The #OrgProjectBarFrobnicatorProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectBarFrobnicatorProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectBarFrobnicatorProxy.
#  */
# 
# struct _OrgProjectBarFrobnicatorProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_bar_frobnicator_proxy_iface_init (OrgProjectBarFrobnicatorIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorProxy, org_project_bar_frobnicator_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectBarFrobnicatorProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorProxy, org_project_bar_frobnicator_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_proxy_iface_init))
# 
# #endif
# static void
# org_project_bar_frobnicator_proxy_finalize (GObject *object)
# {
#   OrgProjectBarFrobnicatorProxy *proxy = ORG_PROJECT_BAR_FROBNICATOR_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_bar_frobnicator_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_bar_frobnicator_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_bar_frobnicator_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_bar_frobnicator_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_bar_frobnicator_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectBarFrobnicatorProxy *proxy = ORG_PROJECT_BAR_FROBNICATOR_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_bar_frobnicator_proxy_init (OrgProjectBarFrobnicatorProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_bar_frobnicator_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_bar_frobnicator_interface_info ());
# }
# 
# static void
# org_project_bar_frobnicator_proxy_class_init (OrgProjectBarFrobnicatorProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_bar_frobnicator_proxy_finalize;
#   gobject_class->get_property = org_project_bar_frobnicator_proxy_get_property;
#   gobject_class->set_property = org_project_bar_frobnicator_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_bar_frobnicator_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_bar_frobnicator_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectBarFrobnicatorProxyPrivate));
# #endif
# }
# 
# static void
# org_project_bar_frobnicator_proxy_iface_init (OrgProjectBarFrobnicatorIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_bar_frobnicator_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_bar_frobnicator_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_bar_frobnicator_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_bar_frobnicator_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_bar_frobnicator_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_bar_frobnicator_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_bar_frobnicator_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_bar_frobnicator_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_bar_frobnicator_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_bar_frobnicator_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_bar_frobnicator_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_bar_frobnicator_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_bar_frobnicator_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_bar_frobnicator_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectBarFrobnicatorSkeleton:
#  *
#  * The #OrgProjectBarFrobnicatorSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectBarFrobnicatorSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectBarFrobnicatorSkeleton.
#  */
# 
# struct _OrgProjectBarFrobnicatorSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_bar_frobnicator_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_bar_frobnicator_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_bar_frobnicator_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_bar_frobnicator_skeleton_vtable =
# {
#   _org_project_bar_frobnicator_skeleton_handle_method_call,
#   _org_project_bar_frobnicator_skeleton_handle_get_property,
#   _org_project_bar_frobnicator_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_bar_frobnicator_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_bar_frobnicator_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_bar_frobnicator_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_bar_frobnicator_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_bar_frobnicator_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_bar_frobnicator_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_bar_frobnicator_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_bar_frobnicator_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_bar_frobnicator_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.Bar.Frobnicator", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_bar_frobnicator_skeleton_iface_init (OrgProjectBarFrobnicatorIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorSkeleton, org_project_bar_frobnicator_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectBarFrobnicatorSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorSkeleton, org_project_bar_frobnicator_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_skeleton_iface_init))
# 
# #endif
# static void
# org_project_bar_frobnicator_skeleton_finalize (GObject *object)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_bar_frobnicator_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_init (OrgProjectBarFrobnicatorSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_bar_frobnicator_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_class_init (OrgProjectBarFrobnicatorSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_bar_frobnicator_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_bar_frobnicator_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_bar_frobnicator_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_bar_frobnicator_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_bar_frobnicator_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectBarFrobnicatorSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_iface_init (OrgProjectBarFrobnicatorIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_bar_frobnicator_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorSkeleton): The skeleton object.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_skeleton_new (void)
# {
#   return ORG_PROJECT_BAR_FROBNICATOR (g_object_new (TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, NULL));
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface com.acme.Coyote
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:ComAcmeCoyote
#  * @title: ComAcmeCoyote
#  * @short_description: Generated C code for the com.acme.Coyote D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _COM_ACME_COYOTE_SURPRISED,
# };
# 
# static unsigned _COM_ACME_COYOTE_SIGNALS[1] = { 0 };
# 
# /* ---- Introspection data for com.acme.Coyote ---- */
# 
# static const _ExtendedGDBusMethodInfo _com_acme_coyote_method_info_run =
# {
#   {
#     -1,
#     (gchar *) "Run",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-run",
#   FALSE
# };
# 
# static const _ExtendedGDBusMethodInfo _com_acme_coyote_method_info_sleep =
# {
#   {
#     -1,
#     (gchar *) "Sleep",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-sleep",
#   FALSE
# };
# 
# static const _ExtendedGDBusMethodInfo _com_acme_coyote_method_info_attack =
# {
#   {
#     -1,
#     (gchar *) "Attack",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-attack",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _com_acme_coyote_method_info_pointers[] =
# {
#   &_com_acme_coyote_method_info_run.parent_struct,
#   &_com_acme_coyote_method_info_sleep.parent_struct,
#   &_com_acme_coyote_method_info_attack.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _com_acme_coyote_signal_info_surprised =
# {
#   {
#     -1,
#     (gchar *) "Surprised",
#     NULL,
#     NULL
#   },
#   "surprised"
# };
# 
# static const GDBusSignalInfo * const _com_acme_coyote_signal_info_pointers[] =
# {
#   &_com_acme_coyote_signal_info_surprised.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusPropertyInfo _com_acme_coyote_property_info_mood =
# {
#   {
#     -1,
#     (gchar *) "Mood",
#     (gchar *) "s",
#     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
#     NULL
#   },
#   "mood",
#   FALSE,
#   TRUE
# };
# 
# static const GDBusPropertyInfo * const _com_acme_coyote_property_info_pointers[] =
# {
#   &_com_acme_coyote_property_info_mood.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _com_acme_coyote_interface_info =
# {
#   {
#     -1,
#     (gchar *) "com.acme.Coyote",
#     (GDBusMethodInfo **) &_com_acme_coyote_method_info_pointers,
#     (GDBusSignalInfo **) &_com_acme_coyote_signal_info_pointers,
#     (GDBusPropertyInfo **) &_com_acme_coyote_property_info_pointers,
#     NULL
#   },
#   "com-acme-coyote",
# };
# 
# 
# /**
#  * com_acme_coyote_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# com_acme_coyote_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct;
# }
# 
# /**
#  * com_acme_coyote_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #ComAcmeCoyote interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# com_acme_coyote_override_properties (GObjectClass *klass, guint property_id_begin)
# {
#   g_object_class_override_property (klass, property_id_begin++, "mood");
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# com_acme_coyote_signal_marshal_surprised (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# com_acme_coyote_method_marshal_run (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# com_acme_coyote_method_marshal_sleep (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# com_acme_coyote_method_marshal_attack (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * ComAcmeCoyote:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>.
#  */
# 
# /**
#  * ComAcmeCoyoteIface:
#  * @parent_iface: The parent interface.
#  * @handle_attack: Handler for the #ComAcmeCoyote::handle-attack signal.
#  * @handle_run: Handler for the #ComAcmeCoyote::handle-run signal.
#  * @handle_sleep: Handler for the #ComAcmeCoyote::handle-sleep signal.
#  * @get_mood: Getter for the #ComAcmeCoyote:mood property.
#  * @surprised: Handler for the #ComAcmeCoyote::surprised signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>.
#  */
# 
# typedef ComAcmeCoyoteIface ComAcmeCoyoteInterface;
# G_DEFINE_INTERFACE (ComAcmeCoyote, com_acme_coyote, G_TYPE_OBJECT)
# 
# static void
# com_acme_coyote_default_init (ComAcmeCoyoteIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * ComAcmeCoyote::handle-run:
#    * @object: A #ComAcmeCoyote.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call com_acme_coyote_complete_run() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-run",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (ComAcmeCoyoteIface, handle_run),
#     g_signal_accumulator_true_handled,
#     NULL,
#       com_acme_coyote_method_marshal_run,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
#   /**
#    * ComAcmeCoyote::handle-sleep:
#    * @object: A #ComAcmeCoyote.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call com_acme_coyote_complete_sleep() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-sleep",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (ComAcmeCoyoteIface, handle_sleep),
#     g_signal_accumulator_true_handled,
#     NULL,
#       com_acme_coyote_method_marshal_sleep,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
#   /**
#    * ComAcmeCoyote::handle-attack:
#    * @object: A #ComAcmeCoyote.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call com_acme_coyote_complete_attack() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-attack",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (ComAcmeCoyoteIface, handle_attack),
#     g_signal_accumulator_true_handled,
#     NULL,
#       com_acme_coyote_method_marshal_attack,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * ComAcmeCoyote::surprised:
#    * @object: A #ComAcmeCoyote.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-com-acme-Coyote.Surprised">"Surprised"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _COM_ACME_COYOTE_SIGNALS[_COM_ACME_COYOTE_SURPRISED] =
#     g_signal_new ("surprised",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (ComAcmeCoyoteIface, surprised),
#       NULL,
#       NULL,
#       com_acme_coyote_signal_marshal_surprised,
#       G_TYPE_NONE,
#       0);
# 
#   /* GObject properties for D-Bus properties: */
#   /**
#    * ComAcmeCoyote:mood:
#    *
#    * Represents the D-Bus property <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link>.
#    *
#    * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
#    */
#   g_object_interface_install_property (iface,
#     g_param_spec_string ("mood", "Mood", "Mood", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
# }
# 
# /**
#  * com_acme_coyote_get_mood: (skip)
#  * @object: A #ComAcmeCoyote.
#  *
#  * Gets the value of the <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use com_acme_coyote_dup_mood() if on another thread.
#  *
#  * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
#  */
# const gchar *
# com_acme_coyote_get_mood (ComAcmeCoyote *object)
# {
#   g_return_val_if_fail (IS_COM_ACME_COYOTE (object), NULL);
# 
#   return COM_ACME_COYOTE_GET_IFACE (object)->get_mood (object);
# }
# 
# /**
#  * com_acme_coyote_dup_mood: (skip)
#  * @object: A #ComAcmeCoyote.
#  *
#  * Gets a copy of the <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
#  */
# gchar *
# com_acme_coyote_dup_mood (ComAcmeCoyote *object)
# {
#   gchar *value;
#   g_object_get (G_OBJECT (object), "mood", &value, NULL);
#   return value;
# }
# 
# /**
#  * com_acme_coyote_set_mood: (skip)
#  * @object: A #ComAcmeCoyote.
#  * @value: The value to set.
#  *
#  * Sets the <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link> D-Bus property to @value.
#  *
#  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
#  */
# void
# com_acme_coyote_set_mood (ComAcmeCoyote *object, const gchar *value)
# {
#   g_object_set (G_OBJECT (object), "mood", value, NULL);
# }
# 
# /**
#  * com_acme_coyote_emit_surprised:
#  * @object: A #ComAcmeCoyote.
#  *
#  * Emits the <link linkend="gdbus-signal-com-acme-Coyote.Surprised">"Surprised"</link> D-Bus signal.
#  */
# void
# com_acme_coyote_emit_surprised (
#     ComAcmeCoyote *object)
# {
#   g_signal_emit (object, _COM_ACME_COYOTE_SIGNALS[_COM_ACME_COYOTE_SURPRISED], 0);
# }
# 
# /**
#  * com_acme_coyote_call_run:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_call_run_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_call_run_sync() for the synchronous, blocking version of this method.
#  */
# void
# com_acme_coyote_call_run (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "Run",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * com_acme_coyote_call_run_finish:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_call_run().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with com_acme_coyote_call_run().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_run_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_run_sync:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_call_run() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_run_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "Run",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_sleep:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_call_sleep_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_call_sleep_sync() for the synchronous, blocking version of this method.
#  */
# void
# com_acme_coyote_call_sleep (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "Sleep",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * com_acme_coyote_call_sleep_finish:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_call_sleep().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with com_acme_coyote_call_sleep().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_sleep_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_sleep_sync:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_call_sleep() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_sleep_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "Sleep",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_attack:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_call_attack_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_call_attack_sync() for the synchronous, blocking version of this method.
#  */
# void
# com_acme_coyote_call_attack (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "Attack",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * com_acme_coyote_call_attack_finish:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_call_attack().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with com_acme_coyote_call_attack().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_attack_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_attack_sync:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_call_attack() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_attack_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "Attack",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_complete_run:
#  * @object: A #ComAcmeCoyote.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# com_acme_coyote_complete_run (
#     ComAcmeCoyote *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /**
#  * com_acme_coyote_complete_sleep:
#  * @object: A #ComAcmeCoyote.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# com_acme_coyote_complete_sleep (
#     ComAcmeCoyote *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /**
#  * com_acme_coyote_complete_attack:
#  * @object: A #ComAcmeCoyote.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# com_acme_coyote_complete_attack (
#     ComAcmeCoyote *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * ComAcmeCoyoteProxy:
#  *
#  * The #ComAcmeCoyoteProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * ComAcmeCoyoteProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #ComAcmeCoyoteProxy.
#  */
# 
# struct _ComAcmeCoyoteProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void com_acme_coyote_proxy_iface_init (ComAcmeCoyoteIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteProxy, com_acme_coyote_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (ComAcmeCoyoteProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteProxy, com_acme_coyote_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_proxy_iface_init))
# 
# #endif
# static void
# com_acme_coyote_proxy_finalize (GObject *object)
# {
#   ComAcmeCoyoteProxy *proxy = COM_ACME_COYOTE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (com_acme_coyote_proxy_parent_class)->finalize (object);
# }
# 
# static void
# com_acme_coyote_proxy_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _com_acme_coyote_property_info_pointers[prop_id - 1];
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
#   if (info->use_gvariant)
#     {
#       g_value_set_variant (value, variant);
#     }
#   else
#     {
#       if (variant != NULL)
#         g_dbus_gvariant_to_gvalue (variant, value);
#     }
#   if (variant != NULL)
#     g_variant_unref (variant);
# }
# 
# static void
# com_acme_coyote_proxy_set_property_cb (GDBusProxy *proxy,
#   GAsyncResult *res,
#   gpointer      user_data)
# {
#   const _ExtendedGDBusPropertyInfo *info = user_data;
#   GError *error;
#   GVariant *_ret;
#   error = NULL;
#   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
#   if (!_ret)
#     {
#       g_warning ("Error setting property '%s' on interface com.acme.Coyote: %s (%s, %d)",
#                  info->parent_struct.name, 
#                  error->message, g_quark_to_string (error->domain), error->code);
#       g_error_free (error);
#     }
#   else
#     {
#       g_variant_unref (_ret);
#     }
# }
# 
# static void
# com_acme_coyote_proxy_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _com_acme_coyote_property_info_pointers[prop_id - 1];
#   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
#   g_dbus_proxy_call (G_DBUS_PROXY (object),
#     "org.freedesktop.DBus.Properties.Set",
#     g_variant_new ("(ssv)", "com.acme.Coyote", info->parent_struct.name, variant),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     NULL, (GAsyncReadyCallback) com_acme_coyote_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
#   g_variant_unref (variant);
# }
# 
# static void
# com_acme_coyote_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_COM_ACME_COYOTE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_COM_ACME_COYOTE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# com_acme_coyote_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   ComAcmeCoyoteProxy *proxy = COM_ACME_COYOTE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static const gchar *
# com_acme_coyote_proxy_get_mood (ComAcmeCoyote *object)
# {
#   ComAcmeCoyoteProxy *proxy = COM_ACME_COYOTE_PROXY (object);
#   GVariant *variant;
#   const gchar *value = NULL;
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Mood");
#   if (variant != NULL)
#     {
#       value = g_variant_get_string (variant, NULL);
#       g_variant_unref (variant);
#     }
#   return value;
# }
# 
# static void
# com_acme_coyote_proxy_init (ComAcmeCoyoteProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = com_acme_coyote_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), com_acme_coyote_interface_info ());
# }
# 
# static void
# com_acme_coyote_proxy_class_init (ComAcmeCoyoteProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = com_acme_coyote_proxy_finalize;
#   gobject_class->get_property = com_acme_coyote_proxy_get_property;
#   gobject_class->set_property = com_acme_coyote_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = com_acme_coyote_proxy_g_signal;
#   proxy_class->g_properties_changed = com_acme_coyote_proxy_g_properties_changed;
# 
#   com_acme_coyote_override_properties (gobject_class, 1);
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (ComAcmeCoyoteProxyPrivate));
# #endif
# }
# 
# static void
# com_acme_coyote_proxy_iface_init (ComAcmeCoyoteIface *iface)
# {
#   iface->get_mood = com_acme_coyote_proxy_get_mood;
# }
# 
# /**
#  * com_acme_coyote_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_proxy_new_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# com_acme_coyote_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_COM_ACME_COYOTE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
# }
# 
# /**
#  * com_acme_coyote_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with com_acme_coyote_proxy_new().
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * com_acme_coyote_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_COM_ACME_COYOTE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * com_acme_coyote_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like com_acme_coyote_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# com_acme_coyote_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_COM_ACME_COYOTE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
# }
# 
# /**
#  * com_acme_coyote_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with com_acme_coyote_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * com_acme_coyote_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like com_acme_coyote_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_COM_ACME_COYOTE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * ComAcmeCoyoteSkeleton:
#  *
#  * The #ComAcmeCoyoteSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * ComAcmeCoyoteSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #ComAcmeCoyoteSkeleton.
#  */
# 
# struct _ComAcmeCoyoteSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _com_acme_coyote_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_COM_ACME_COYOTE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_COM_ACME_COYOTE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _com_acme_coyote_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _com_acme_coyote_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _com_acme_coyote_skeleton_vtable =
# {
#   _com_acme_coyote_skeleton_handle_method_call,
#   _com_acme_coyote_skeleton_handle_get_property,
#   _com_acme_coyote_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# com_acme_coyote_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return com_acme_coyote_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# com_acme_coyote_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_com_acme_coyote_skeleton_vtable;
# }
# 
# static GVariant *
# com_acme_coyote_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_com_acme_coyote_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _com_acme_coyote_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _com_acme_coyote_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _com_acme_coyote_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "com.acme.Coyote", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static gboolean _com_acme_coyote_emit_changed (gpointer user_data);
# 
# static void
# com_acme_coyote_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (_skeleton);
#   gboolean emit_changed = FALSE;
# 
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     {
#       g_source_destroy (skeleton->priv->changed_properties_idle_source);
#       skeleton->priv->changed_properties_idle_source = NULL;
#       emit_changed = TRUE;
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# 
#   if (emit_changed)
#     _com_acme_coyote_emit_changed (skeleton);
# }
# 
# static void
# _com_acme_coyote_on_signal_surprised (
#     ComAcmeCoyote *object)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "com.acme.Coyote", "Surprised",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void com_acme_coyote_skeleton_iface_init (ComAcmeCoyoteIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteSkeleton, com_acme_coyote_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (ComAcmeCoyoteSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteSkeleton, com_acme_coyote_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_skeleton_iface_init))
# 
# #endif
# static void
# com_acme_coyote_skeleton_finalize (GObject *object)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   guint n;
#   for (n = 0; n < 1; n++)
#     g_value_unset (&skeleton->priv->properties[n]);
#   g_free (skeleton->priv->properties);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (com_acme_coyote_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# com_acme_coyote_skeleton_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   g_mutex_lock (&skeleton->priv->lock);
#   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static gboolean
# _com_acme_coyote_emit_changed (gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   GList *l;
#   GVariantBuilder builder;
#   GVariantBuilder invalidated_builder;
#   guint num_changes;
# 
#   g_mutex_lock (&skeleton->priv->lock);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init_static (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #else
#   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #endif
#   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
#     {
#       ChangedProperty *cp = l->data;
#       GVariant *variant;
#       const GValue *cur_value;
# 
#       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
#       if (!_g_value_equal (cur_value, &cp->orig_value))
#         {
#           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
#           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
#           g_variant_unref (variant);
#           num_changes++;
#         }
#     }
#   if (num_changes > 0)
#     {
#       GList *connections, *ll;
#       GVariant *signal_variant;
#       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "com.acme.Coyote",
#                                            &builder, &invalidated_builder));
#       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
#       for (ll = connections; ll != NULL; ll = ll->next)
#         {
#           GDBusConnection *connection = ll->data;
# 
#           g_dbus_connection_emit_signal (connection,
#                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
#                                          "org.freedesktop.DBus.Properties",
#                                          "PropertiesChanged",
#                                          signal_variant,
#                                          NULL);
#         }
#       g_variant_unref (signal_variant);
#       g_list_free_full (connections, g_object_unref);
#     }
#   else
#     {
#       g_variant_builder_clear (&builder);
#       g_variant_builder_clear (&invalidated_builder);
#     }
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   skeleton->priv->changed_properties = NULL;
#   skeleton->priv->changed_properties_idle_source = NULL;
#   g_mutex_unlock (&skeleton->priv->lock);
#   return FALSE;
# }
# 
# static void
# _com_acme_coyote_schedule_emit_changed (ComAcmeCoyoteSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
# {
#   ChangedProperty *cp;
#   GList *l;
#   cp = NULL;
#   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
#     {
#       ChangedProperty *i_cp = l->data;
#       if (i_cp->info == info)
#         {
#           cp = i_cp;
#           break;
#         }
#     }
#   if (cp == NULL)
#     {
#       cp = g_new0 (ChangedProperty, 1);
#       cp->prop_id = prop_id;
#       cp->info = info;
#       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
#       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
#       g_value_copy (orig_value, &cp->orig_value);
#     }
# }
# 
# static void
# com_acme_coyote_skeleton_notify (GObject      *object,
#   GParamSpec *pspec G_GNUC_UNUSED)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties != NULL &&
#       skeleton->priv->changed_properties_idle_source == NULL)
#     {
#       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
#       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
#       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _com_acme_coyote_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
#       g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _com_acme_coyote_emit_changed");
#       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
#       g_source_unref (skeleton->priv->changed_properties_idle_source);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static void
# com_acme_coyote_skeleton_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _com_acme_coyote_property_info_pointers[prop_id - 1];
#   g_mutex_lock (&skeleton->priv->lock);
#   g_object_freeze_notify (object);
#   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
#     {
#       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL &&
#           info->emits_changed_signal)
#         _com_acme_coyote_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]);
#       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
#       g_object_notify_by_pspec (object, pspec);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
#   g_object_thaw_notify (object);
# }
# 
# static void
# com_acme_coyote_skeleton_init (ComAcmeCoyoteSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = com_acme_coyote_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
#   skeleton->priv->properties = g_new0 (GValue, 1);
#   g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING);
# }
# 
# static const gchar *
# com_acme_coyote_skeleton_get_mood (ComAcmeCoyote *object)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   const gchar *value;
#   g_mutex_lock (&skeleton->priv->lock);
#   value = g_marshal_value_peek_string (&(skeleton->priv->properties[0]));
#   g_mutex_unlock (&skeleton->priv->lock);
#   return value;
# }
# 
# static void
# com_acme_coyote_skeleton_class_init (ComAcmeCoyoteSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = com_acme_coyote_skeleton_finalize;
#   gobject_class->get_property = com_acme_coyote_skeleton_get_property;
#   gobject_class->set_property = com_acme_coyote_skeleton_set_property;
#   gobject_class->notify       = com_acme_coyote_skeleton_notify;
# 
# 
#   com_acme_coyote_override_properties (gobject_class, 1);
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = com_acme_coyote_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = com_acme_coyote_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = com_acme_coyote_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = com_acme_coyote_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (ComAcmeCoyoteSkeletonPrivate));
# #endif
# }
# 
# static void
# com_acme_coyote_skeleton_iface_init (ComAcmeCoyoteIface *iface)
# {
#   iface->surprised = _com_acme_coyote_on_signal_surprised;
#   iface->get_mood = com_acme_coyote_skeleton_get_mood;
# }
# 
# /**
#  * com_acme_coyote_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>.
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteSkeleton): The skeleton object.
#  */
# ComAcmeCoyote *
# com_acme_coyote_skeleton_new (void)
# {
#   return COM_ACME_COYOTE (g_object_new (TYPE_COM_ACME_COYOTE_SKELETON, NULL));
# }
# Error:
#  
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmpf14iejbo/tmp7_phzex82.xml', '/tmp/tmpf14iejbo/tmpz07fy6s51.xml', '--output', '-', '--body']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifdef HAVE_CONFIG_H
# #  include "config.h"
# #endif
# 
# #include <string.h>
# #ifdef G_OS_UNIX
# #  include <gio/gunixfdlist.h>
# #endif
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# typedef struct
# {
#   GDBusArgInfo parent_struct;
#   gboolean use_gvariant;
# } _ExtendedGDBusArgInfo;
# 
# typedef struct
# {
#   GDBusMethodInfo parent_struct;
#   const gchar *signal_name;
#   gboolean pass_fdlist;
# } _ExtendedGDBusMethodInfo;
# 
# typedef struct
# {
#   GDBusSignalInfo parent_struct;
#   const gchar *signal_name;
# } _ExtendedGDBusSignalInfo;
# 
# typedef struct
# {
#   GDBusPropertyInfo parent_struct;
#   const gchar *hyphen_name;
#   guint use_gvariant : 1;
#   guint emits_changed_signal : 1;
# } _ExtendedGDBusPropertyInfo;
# 
# typedef struct
# {
#   GDBusInterfaceInfo parent_struct;
#   const gchar *hyphen_name;
# } _ExtendedGDBusInterfaceInfo;
# 
# typedef struct
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   guint prop_id;
#   GValue orig_value; /* the value before the change */
# } ChangedProperty;
# 
# static void
# _changed_property_free (ChangedProperty *data)
# {
#   g_value_unset (&data->orig_value);
#   g_free (data);
# }
# 
# static gboolean
# _g_strv_equal0 (gchar **a, gchar **b)
# {
#   gboolean ret = FALSE;
#   guint n;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   if (g_strv_length (a) != g_strv_length (b))
#     goto out;
#   for (n = 0; a[n] != NULL; n++)
#     if (g_strcmp0 (a[n], b[n]) != 0)
#       goto out;
#   ret = TRUE;
# out:
#   return ret;
# }
# 
# static gboolean
# _g_variant_equal0 (GVariant *a, GVariant *b)
# {
#   gboolean ret = FALSE;
#   if (a == NULL && b == NULL)
#     {
#       ret = TRUE;
#       goto out;
#     }
#   if (a == NULL || b == NULL)
#     goto out;
#   ret = g_variant_equal (a, b);
# out:
#   return ret;
# }
# 
# G_GNUC_UNUSED static gboolean
# _g_value_equal (const GValue *a, const GValue *b)
# {
#   gboolean ret = FALSE;
#   g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
#   switch (G_VALUE_TYPE (a))
#     {
#       case G_TYPE_BOOLEAN:
#         ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
#         break;
#       case G_TYPE_UCHAR:
#         ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
#         break;
#       case G_TYPE_INT:
#         ret = (g_value_get_int (a) == g_value_get_int (b));
#         break;
#       case G_TYPE_UINT:
#         ret = (g_value_get_uint (a) == g_value_get_uint (b));
#         break;
#       case G_TYPE_INT64:
#         ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
#         break;
#       case G_TYPE_UINT64:
#         ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
#         break;
#       case G_TYPE_DOUBLE:
#         {
#           /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
#           gdouble da = g_value_get_double (a);
#           gdouble db = g_value_get_double (b);
#           ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
#         }
#         break;
#       case G_TYPE_STRING:
#         ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
#         break;
#       case G_TYPE_VARIANT:
#         ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
#         break;
#       default:
#         if (G_VALUE_TYPE (a) == G_TYPE_STRV)
#           ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
#         else
#           g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
#         break;
#     }
#   return ret;
# }
# 
# static void
# _g_dbus_codegen_marshal_BOOLEAN__OBJECT (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint G_GNUC_UNUSED,
#     void         *marshal_data)
# {
#   typedef gboolean (*_GDbusCodegenMarshalBoolean_ObjectFunc)
#        (void *data1,
#         GDBusMethodInvocation *arg_method_invocation,
#         void *data2);
#   _GDbusCodegenMarshalBoolean_ObjectFunc callback;
#   GCClosure *cc = (GCClosure*) closure;
#   void *data1, *data2;
#   gboolean v_return;
# 
#   g_return_if_fail (return_value != NULL);
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
# 
#   callback = (_GDbusCodegenMarshalBoolean_ObjectFunc)
#     (marshal_data ? marshal_data : cc->callback);
# 
#   v_return =
#     callback (data1,
#               g_marshal_value_peek_object (param_values + 1),
#               data2);
# 
#   g_value_set_boolean (return_value, v_return);
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface org.project.Bar.Frobnicator
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:OrgProjectBarFrobnicator
#  * @title: OrgProjectBarFrobnicator
#  * @short_description: Generated C code for the org.project.Bar.Frobnicator D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link> D-Bus interface in C.
#  */
# 
# /* ---- Introspection data for org.project.Bar.Frobnicator ---- */
# 
# static const _ExtendedGDBusMethodInfo _org_project_bar_frobnicator_method_info_random_method =
# {
#   {
#     -1,
#     (gchar *) "RandomMethod",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-random-method",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _org_project_bar_frobnicator_method_info_pointers[] =
# {
#   &_org_project_bar_frobnicator_method_info_random_method.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _org_project_bar_frobnicator_interface_info =
# {
#   {
#     -1,
#     (gchar *) "org.project.Bar.Frobnicator",
#     (GDBusMethodInfo **) &_org_project_bar_frobnicator_method_info_pointers,
#     NULL,
#     NULL,
#     NULL
#   },
#   "org-project-bar-frobnicator",
# };
# 
# 
# /**
#  * org_project_bar_frobnicator_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# org_project_bar_frobnicator_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct;
# }
# 
# /**
#  * org_project_bar_frobnicator_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #OrgProjectBarFrobnicator interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# org_project_bar_frobnicator_override_properties (GObjectClass *klass G_GNUC_UNUSED, guint property_id_begin)
# {
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# org_project_bar_frobnicator_method_marshal_random_method (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * OrgProjectBarFrobnicator:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>.
#  */
# 
# /**
#  * OrgProjectBarFrobnicatorIface:
#  * @parent_iface: The parent interface.
#  * @handle_random_method: Handler for the #OrgProjectBarFrobnicator::handle-random-method signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>.
#  */
# 
# typedef OrgProjectBarFrobnicatorIface OrgProjectBarFrobnicatorInterface;
# G_DEFINE_INTERFACE (OrgProjectBarFrobnicator, org_project_bar_frobnicator, G_TYPE_OBJECT)
# 
# static void
# org_project_bar_frobnicator_default_init (OrgProjectBarFrobnicatorIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * OrgProjectBarFrobnicator::handle-random-method:
#    * @object: A #OrgProjectBarFrobnicator.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call org_project_bar_frobnicator_complete_random_method() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-random-method",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (OrgProjectBarFrobnicatorIface, handle_random_method),
#     g_signal_accumulator_true_handled,
#     NULL,
#       org_project_bar_frobnicator_method_marshal_random_method,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
# }
# 
# /**
#  * org_project_bar_frobnicator_call_random_method:
#  * @proxy: A #OrgProjectBarFrobnicatorProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_bar_frobnicator_call_random_method_finish() to get the result of the operation.
#  *
#  * See org_project_bar_frobnicator_call_random_method_sync() for the synchronous, blocking version of this method.
#  */
# void
# org_project_bar_frobnicator_call_random_method (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "RandomMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * org_project_bar_frobnicator_call_random_method_finish:
#  * @proxy: A #OrgProjectBarFrobnicatorProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_bar_frobnicator_call_random_method().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with org_project_bar_frobnicator_call_random_method().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_bar_frobnicator_call_random_method_finish (
#     OrgProjectBarFrobnicator *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_call_random_method_sync:
#  * @proxy: A #OrgProjectBarFrobnicatorProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See org_project_bar_frobnicator_call_random_method() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# org_project_bar_frobnicator_call_random_method_sync (
#     OrgProjectBarFrobnicator *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "RandomMethod",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_complete_random_method:
#  * @object: A #OrgProjectBarFrobnicator.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-project-Bar-Frobnicator.RandomMethod">RandomMethod()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# org_project_bar_frobnicator_complete_random_method (
#     OrgProjectBarFrobnicator *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectBarFrobnicatorProxy:
#  *
#  * The #OrgProjectBarFrobnicatorProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectBarFrobnicatorProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectBarFrobnicatorProxy.
#  */
# 
# struct _OrgProjectBarFrobnicatorProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void org_project_bar_frobnicator_proxy_iface_init (OrgProjectBarFrobnicatorIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorProxy, org_project_bar_frobnicator_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (OrgProjectBarFrobnicatorProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorProxy, org_project_bar_frobnicator_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_proxy_iface_init))
# 
# #endif
# static void
# org_project_bar_frobnicator_proxy_finalize (GObject *object)
# {
#   OrgProjectBarFrobnicatorProxy *proxy = ORG_PROJECT_BAR_FROBNICATOR_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (org_project_bar_frobnicator_proxy_parent_class)->finalize (object);
# }
# 
# static void
# org_project_bar_frobnicator_proxy_get_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   GValue       *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_bar_frobnicator_proxy_set_property (GObject      *object G_GNUC_UNUSED,
#   guint         prop_id G_GNUC_UNUSED,
#   const GValue *value G_GNUC_UNUSED,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
# }
# 
# static void
# org_project_bar_frobnicator_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# org_project_bar_frobnicator_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   OrgProjectBarFrobnicatorProxy *proxy = ORG_PROJECT_BAR_FROBNICATOR_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static void
# org_project_bar_frobnicator_proxy_init (OrgProjectBarFrobnicatorProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = org_project_bar_frobnicator_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, OrgProjectBarFrobnicatorProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), org_project_bar_frobnicator_interface_info ());
# }
# 
# static void
# org_project_bar_frobnicator_proxy_class_init (OrgProjectBarFrobnicatorProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = org_project_bar_frobnicator_proxy_finalize;
#   gobject_class->get_property = org_project_bar_frobnicator_proxy_get_property;
#   gobject_class->set_property = org_project_bar_frobnicator_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = org_project_bar_frobnicator_proxy_g_signal;
#   proxy_class->g_properties_changed = org_project_bar_frobnicator_proxy_g_properties_changed;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectBarFrobnicatorProxyPrivate));
# #endif
# }
# 
# static void
# org_project_bar_frobnicator_proxy_iface_init (OrgProjectBarFrobnicatorIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_bar_frobnicator_proxy_new_finish() to get the result of the operation.
#  *
#  * See org_project_bar_frobnicator_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_bar_frobnicator_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_bar_frobnicator_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_bar_frobnicator_proxy_new().
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_bar_frobnicator_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like org_project_bar_frobnicator_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call org_project_bar_frobnicator_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See org_project_bar_frobnicator_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# org_project_bar_frobnicator_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to org_project_bar_frobnicator_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with org_project_bar_frobnicator_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * org_project_bar_frobnicator_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like org_project_bar_frobnicator_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See org_project_bar_frobnicator_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorProxy): The constructed proxy object or %NULL if @error is set.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_ORG_PROJECT_BAR_FROBNICATOR_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "org.project.Bar.Frobnicator", NULL);
#   if (ret != NULL)
#     return ORG_PROJECT_BAR_FROBNICATOR (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * OrgProjectBarFrobnicatorSkeleton:
#  *
#  * The #OrgProjectBarFrobnicatorSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * OrgProjectBarFrobnicatorSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #OrgProjectBarFrobnicatorSkeleton.
#  */
# 
# struct _OrgProjectBarFrobnicatorSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _org_project_bar_frobnicator_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_ORG_PROJECT_BAR_FROBNICATOR);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _org_project_bar_frobnicator_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _org_project_bar_frobnicator_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_org_project_bar_frobnicator_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _org_project_bar_frobnicator_skeleton_vtable =
# {
#   _org_project_bar_frobnicator_skeleton_handle_method_call,
#   _org_project_bar_frobnicator_skeleton_handle_get_property,
#   _org_project_bar_frobnicator_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# org_project_bar_frobnicator_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return org_project_bar_frobnicator_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# org_project_bar_frobnicator_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_org_project_bar_frobnicator_skeleton_vtable;
# }
# 
# static GVariant *
# org_project_bar_frobnicator_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_org_project_bar_frobnicator_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _org_project_bar_frobnicator_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _org_project_bar_frobnicator_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _org_project_bar_frobnicator_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "org.project.Bar.Frobnicator", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton G_GNUC_UNUSED)
# {
# }
# 
# static void org_project_bar_frobnicator_skeleton_iface_init (OrgProjectBarFrobnicatorIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorSkeleton, org_project_bar_frobnicator_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (OrgProjectBarFrobnicatorSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (OrgProjectBarFrobnicatorSkeleton, org_project_bar_frobnicator_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_ORG_PROJECT_BAR_FROBNICATOR, org_project_bar_frobnicator_skeleton_iface_init))
# 
# #endif
# static void
# org_project_bar_frobnicator_skeleton_finalize (GObject *object)
# {
#   OrgProjectBarFrobnicatorSkeleton *skeleton = ORG_PROJECT_BAR_FROBNICATOR_SKELETON (object);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (org_project_bar_frobnicator_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_init (OrgProjectBarFrobnicatorSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = org_project_bar_frobnicator_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, OrgProjectBarFrobnicatorSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_class_init (OrgProjectBarFrobnicatorSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = org_project_bar_frobnicator_skeleton_finalize;
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = org_project_bar_frobnicator_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = org_project_bar_frobnicator_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = org_project_bar_frobnicator_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = org_project_bar_frobnicator_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (OrgProjectBarFrobnicatorSkeletonPrivate));
# #endif
# }
# 
# static void
# org_project_bar_frobnicator_skeleton_iface_init (OrgProjectBarFrobnicatorIface *iface G_GNUC_UNUSED)
# {
# }
# 
# /**
#  * org_project_bar_frobnicator_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-project-Bar-Frobnicator.top_of_page">org.project.Bar.Frobnicator</link>.
#  *
#  * Returns: (transfer full) (type OrgProjectBarFrobnicatorSkeleton): The skeleton object.
#  */
# OrgProjectBarFrobnicator *
# org_project_bar_frobnicator_skeleton_new (void)
# {
#   return ORG_PROJECT_BAR_FROBNICATOR (g_object_new (TYPE_ORG_PROJECT_BAR_FROBNICATOR_SKELETON, NULL));
# }
# 
# /* ------------------------------------------------------------------------
#  * Code for interface com.acme.Coyote
#  * ------------------------------------------------------------------------
#  */
# 
# /**
#  * SECTION:ComAcmeCoyote
#  * @title: ComAcmeCoyote
#  * @short_description: Generated C code for the com.acme.Coyote D-Bus interface
#  *
#  * This section contains code for working with the <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link> D-Bus interface in C.
#  */
# 
# enum
# {
#   _COM_ACME_COYOTE_SURPRISED,
# };
# 
# static unsigned _COM_ACME_COYOTE_SIGNALS[1] = { 0 };
# 
# /* ---- Introspection data for com.acme.Coyote ---- */
# 
# static const _ExtendedGDBusMethodInfo _com_acme_coyote_method_info_run =
# {
#   {
#     -1,
#     (gchar *) "Run",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-run",
#   FALSE
# };
# 
# static const _ExtendedGDBusMethodInfo _com_acme_coyote_method_info_sleep =
# {
#   {
#     -1,
#     (gchar *) "Sleep",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-sleep",
#   FALSE
# };
# 
# static const _ExtendedGDBusMethodInfo _com_acme_coyote_method_info_attack =
# {
#   {
#     -1,
#     (gchar *) "Attack",
#     NULL,
#     NULL,
#     NULL
#   },
#   "handle-attack",
#   FALSE
# };
# 
# static const GDBusMethodInfo * const _com_acme_coyote_method_info_pointers[] =
# {
#   &_com_acme_coyote_method_info_run.parent_struct,
#   &_com_acme_coyote_method_info_sleep.parent_struct,
#   &_com_acme_coyote_method_info_attack.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusSignalInfo _com_acme_coyote_signal_info_surprised =
# {
#   {
#     -1,
#     (gchar *) "Surprised",
#     NULL,
#     NULL
#   },
#   "surprised"
# };
# 
# static const GDBusSignalInfo * const _com_acme_coyote_signal_info_pointers[] =
# {
#   &_com_acme_coyote_signal_info_surprised.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusPropertyInfo _com_acme_coyote_property_info_mood =
# {
#   {
#     -1,
#     (gchar *) "Mood",
#     (gchar *) "s",
#     G_DBUS_PROPERTY_INFO_FLAGS_READABLE,
#     NULL
#   },
#   "mood",
#   FALSE,
#   TRUE
# };
# 
# static const GDBusPropertyInfo * const _com_acme_coyote_property_info_pointers[] =
# {
#   &_com_acme_coyote_property_info_mood.parent_struct,
#   NULL
# };
# 
# static const _ExtendedGDBusInterfaceInfo _com_acme_coyote_interface_info =
# {
#   {
#     -1,
#     (gchar *) "com.acme.Coyote",
#     (GDBusMethodInfo **) &_com_acme_coyote_method_info_pointers,
#     (GDBusSignalInfo **) &_com_acme_coyote_signal_info_pointers,
#     (GDBusPropertyInfo **) &_com_acme_coyote_property_info_pointers,
#     NULL
#   },
#   "com-acme-coyote",
# };
# 
# 
# /**
#  * com_acme_coyote_interface_info:
#  *
#  * Gets a machine-readable description of the <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link> D-Bus interface.
#  *
#  * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
#  */
# GDBusInterfaceInfo *
# com_acme_coyote_interface_info (void)
# {
#   return (GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct;
# }
# 
# /**
#  * com_acme_coyote_override_properties:
#  * @klass: The class structure for a #GObject derived class.
#  * @property_id_begin: The property id to assign to the first overridden property.
#  *
#  * Overrides all #GObject properties in the #ComAcmeCoyote interface for a concrete class.
#  * The properties are overridden in the order they are defined.
#  *
#  * Returns: The last property id.
#  */
# guint
# com_acme_coyote_override_properties (GObjectClass *klass, guint property_id_begin)
# {
#   g_object_class_override_property (klass, property_id_begin++, "mood");
#   return property_id_begin - 1;
# }
# 
# 
# inline static void
# com_acme_coyote_signal_marshal_surprised (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   g_cclosure_marshal_VOID__VOID (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# com_acme_coyote_method_marshal_run (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# com_acme_coyote_method_marshal_sleep (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# inline static void
# com_acme_coyote_method_marshal_attack (
#     GClosure     *closure,
#     GValue       *return_value,
#     unsigned int  n_param_values,
#     const GValue *param_values,
#     void         *invocation_hint,
#     void         *marshal_data)
# {
#   _g_dbus_codegen_marshal_BOOLEAN__OBJECT (closure,
#     return_value, n_param_values, param_values, invocation_hint, marshal_data);
# }
# 
# 
# /**
#  * ComAcmeCoyote:
#  *
#  * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>.
#  */
# 
# /**
#  * ComAcmeCoyoteIface:
#  * @parent_iface: The parent interface.
#  * @handle_attack: Handler for the #ComAcmeCoyote::handle-attack signal.
#  * @handle_run: Handler for the #ComAcmeCoyote::handle-run signal.
#  * @handle_sleep: Handler for the #ComAcmeCoyote::handle-sleep signal.
#  * @get_mood: Getter for the #ComAcmeCoyote:mood property.
#  * @surprised: Handler for the #ComAcmeCoyote::surprised signal.
#  *
#  * Virtual table for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>.
#  */
# 
# typedef ComAcmeCoyoteIface ComAcmeCoyoteInterface;
# G_DEFINE_INTERFACE (ComAcmeCoyote, com_acme_coyote, G_TYPE_OBJECT)
# 
# static void
# com_acme_coyote_default_init (ComAcmeCoyoteIface *iface)
# {
#   /* GObject signals for incoming D-Bus method calls: */
#   /**
#    * ComAcmeCoyote::handle-run:
#    * @object: A #ComAcmeCoyote.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call com_acme_coyote_complete_run() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-run",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (ComAcmeCoyoteIface, handle_run),
#     g_signal_accumulator_true_handled,
#     NULL,
#       com_acme_coyote_method_marshal_run,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
#   /**
#    * ComAcmeCoyote::handle-sleep:
#    * @object: A #ComAcmeCoyote.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call com_acme_coyote_complete_sleep() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-sleep",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (ComAcmeCoyoteIface, handle_sleep),
#     g_signal_accumulator_true_handled,
#     NULL,
#       com_acme_coyote_method_marshal_sleep,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
#   /**
#    * ComAcmeCoyote::handle-attack:
#    * @object: A #ComAcmeCoyote.
#    * @invocation: A #GDBusMethodInvocation.
#    *
#    * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method.
#    *
#    * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call com_acme_coyote_complete_attack() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
#    *
#    * Returns: %G_DBUS_METHOD_INVOCATION_HANDLED or %TRUE if the invocation was handled, %G_DBUS_METHOD_INVOCATION_UNHANDLED or %FALSE to let other signal handlers run.
#    */
#   g_signal_new ("handle-attack",
#     G_TYPE_FROM_INTERFACE (iface),
#     G_SIGNAL_RUN_LAST,
#     G_STRUCT_OFFSET (ComAcmeCoyoteIface, handle_attack),
#     g_signal_accumulator_true_handled,
#     NULL,
#       com_acme_coyote_method_marshal_attack,
#     G_TYPE_BOOLEAN,
#     1,
#     G_TYPE_DBUS_METHOD_INVOCATION);
# 
#   /* GObject signals for received D-Bus signals: */
#   /**
#    * ComAcmeCoyote::surprised:
#    * @object: A #ComAcmeCoyote.
#    *
#    * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-com-acme-Coyote.Surprised">"Surprised"</link> is received.
#    *
#    * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
#    */
#   _COM_ACME_COYOTE_SIGNALS[_COM_ACME_COYOTE_SURPRISED] =
#     g_signal_new ("surprised",
#       G_TYPE_FROM_INTERFACE (iface),
#       G_SIGNAL_RUN_LAST,
#       G_STRUCT_OFFSET (ComAcmeCoyoteIface, surprised),
#       NULL,
#       NULL,
#       com_acme_coyote_signal_marshal_surprised,
#       G_TYPE_NONE,
#       0);
# 
#   /* GObject properties for D-Bus properties: */
#   /**
#    * ComAcmeCoyote:mood:
#    *
#    * Represents the D-Bus property <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link>.
#    *
#    * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
#    */
#   g_object_interface_install_property (iface,
#     g_param_spec_string ("mood", "Mood", "Mood", NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
# }
# 
# /**
#  * com_acme_coyote_get_mood: (skip)
#  * @object: A #ComAcmeCoyote.
#  *
#  * Gets the value of the <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use com_acme_coyote_dup_mood() if on another thread.
#  *
#  * Returns: (transfer none) (nullable): The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
#  */
# const gchar *
# com_acme_coyote_get_mood (ComAcmeCoyote *object)
# {
#   g_return_val_if_fail (IS_COM_ACME_COYOTE (object), NULL);
# 
#   return COM_ACME_COYOTE_GET_IFACE (object)->get_mood (object);
# }
# 
# /**
#  * com_acme_coyote_dup_mood: (skip)
#  * @object: A #ComAcmeCoyote.
#  *
#  * Gets a copy of the <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link> D-Bus property.
#  *
#  * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
#  *
#  * Returns: (transfer full) (nullable): The property value or %NULL if the property is not set. The returned value should be freed with g_free().
#  */
# gchar *
# com_acme_coyote_dup_mood (ComAcmeCoyote *object)
# {
#   gchar *value;
#   g_object_get (G_OBJECT (object), "mood", &value, NULL);
#   return value;
# }
# 
# /**
#  * com_acme_coyote_set_mood: (skip)
#  * @object: A #ComAcmeCoyote.
#  * @value: The value to set.
#  *
#  * Sets the <link linkend="gdbus-property-com-acme-Coyote.Mood">"Mood"</link> D-Bus property to @value.
#  *
#  * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
#  */
# void
# com_acme_coyote_set_mood (ComAcmeCoyote *object, const gchar *value)
# {
#   g_object_set (G_OBJECT (object), "mood", value, NULL);
# }
# 
# /**
#  * com_acme_coyote_emit_surprised:
#  * @object: A #ComAcmeCoyote.
#  *
#  * Emits the <link linkend="gdbus-signal-com-acme-Coyote.Surprised">"Surprised"</link> D-Bus signal.
#  */
# void
# com_acme_coyote_emit_surprised (
#     ComAcmeCoyote *object)
# {
#   g_signal_emit (object, _COM_ACME_COYOTE_SIGNALS[_COM_ACME_COYOTE_SURPRISED], 0);
# }
# 
# /**
#  * com_acme_coyote_call_run:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_call_run_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_call_run_sync() for the synchronous, blocking version of this method.
#  */
# void
# com_acme_coyote_call_run (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "Run",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * com_acme_coyote_call_run_finish:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_call_run().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with com_acme_coyote_call_run().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_run_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_run_sync:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_call_run() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_run_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "Run",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_sleep:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_call_sleep_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_call_sleep_sync() for the synchronous, blocking version of this method.
#  */
# void
# com_acme_coyote_call_sleep (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "Sleep",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * com_acme_coyote_call_sleep_finish:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_call_sleep().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with com_acme_coyote_call_sleep().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_sleep_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_sleep_sync:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_call_sleep() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_sleep_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "Sleep",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_attack:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method on @proxy.
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_call_attack_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_call_attack_sync() for the synchronous, blocking version of this method.
#  */
# void
# com_acme_coyote_call_attack (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data)
# {
#   g_dbus_proxy_call (G_DBUS_PROXY (proxy),
#     "Attack",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     callback,
#     user_data);
# }
# 
# /**
#  * com_acme_coyote_call_attack_finish:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_call_attack().
#  * @error: Return location for error or %NULL.
#  *
#  * Finishes an operation started with com_acme_coyote_call_attack().
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_attack_finish (
#     ComAcmeCoyote *proxy,
#     GAsyncResult *res,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_call_attack_sync:
#  * @proxy: A #ComAcmeCoyoteProxy.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL.
#  *
#  * Synchronously invokes the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_call_attack() for the asynchronous version of this method.
#  *
#  * Returns: (skip): %TRUE if the call succeeded, %FALSE if @error is set.
#  */
# gboolean
# com_acme_coyote_call_attack_sync (
#     ComAcmeCoyote *proxy,
#     GCancellable *cancellable,
#     GError **error)
# {
#   GVariant *_ret;
#   _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
#     "Attack",
#     g_variant_new ("()"),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     cancellable,
#     error);
#   if (_ret == NULL)
#     goto _out;
#   g_variant_get (_ret,
#                  "()");
#   g_variant_unref (_ret);
# _out:
#   return _ret != NULL;
# }
# 
# /**
#  * com_acme_coyote_complete_run:
#  * @object: A #ComAcmeCoyote.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-acme-Coyote.Run">Run()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# com_acme_coyote_complete_run (
#     ComAcmeCoyote *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /**
#  * com_acme_coyote_complete_sleep:
#  * @object: A #ComAcmeCoyote.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-acme-Coyote.Sleep">Sleep()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# com_acme_coyote_complete_sleep (
#     ComAcmeCoyote *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /**
#  * com_acme_coyote_complete_attack:
#  * @object: A #ComAcmeCoyote.
#  * @invocation: (transfer full): A #GDBusMethodInvocation.
#  *
#  * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-acme-Coyote.Attack">Attack()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
#  *
#  * This method will free @invocation, you cannot use it afterwards.
#  */
# void
# com_acme_coyote_complete_attack (
#     ComAcmeCoyote *object G_GNUC_UNUSED,
#     GDBusMethodInvocation *invocation)
# {
#   g_dbus_method_invocation_return_value (invocation,
#     g_variant_new ("()"));
# }
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * ComAcmeCoyoteProxy:
#  *
#  * The #ComAcmeCoyoteProxy structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * ComAcmeCoyoteProxyClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #ComAcmeCoyoteProxy.
#  */
# 
# struct _ComAcmeCoyoteProxyPrivate
# {
#   GData *qdata;
# };
# 
# static void com_acme_coyote_proxy_iface_init (ComAcmeCoyoteIface *iface);
# 
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteProxy, com_acme_coyote_proxy, G_TYPE_DBUS_PROXY,
#                          G_ADD_PRIVATE (ComAcmeCoyoteProxy)
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_proxy_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteProxy, com_acme_coyote_proxy, G_TYPE_DBUS_PROXY,
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_proxy_iface_init))
# 
# #endif
# static void
# com_acme_coyote_proxy_finalize (GObject *object)
# {
#   ComAcmeCoyoteProxy *proxy = COM_ACME_COYOTE_PROXY (object);
#   g_datalist_clear (&proxy->priv->qdata);
#   G_OBJECT_CLASS (com_acme_coyote_proxy_parent_class)->finalize (object);
# }
# 
# static void
# com_acme_coyote_proxy_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _com_acme_coyote_property_info_pointers[prop_id - 1];
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (object), info->parent_struct.name);
#   if (info->use_gvariant)
#     {
#       g_value_set_variant (value, variant);
#     }
#   else
#     {
#       if (variant != NULL)
#         g_dbus_gvariant_to_gvalue (variant, value);
#     }
#   if (variant != NULL)
#     g_variant_unref (variant);
# }
# 
# static void
# com_acme_coyote_proxy_set_property_cb (GDBusProxy *proxy,
#   GAsyncResult *res,
#   gpointer      user_data)
# {
#   const _ExtendedGDBusPropertyInfo *info = user_data;
#   GError *error;
#   GVariant *_ret;
#   error = NULL;
#   _ret = g_dbus_proxy_call_finish (proxy, res, &error);
#   if (!_ret)
#     {
#       g_warning ("Error setting property '%s' on interface com.acme.Coyote: %s (%s, %d)",
#                  info->parent_struct.name, 
#                  error->message, g_quark_to_string (error->domain), error->code);
#       g_error_free (error);
#     }
#   else
#     {
#       g_variant_unref (_ret);
#     }
# }
# 
# static void
# com_acme_coyote_proxy_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   GVariant *variant;
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _com_acme_coyote_property_info_pointers[prop_id - 1];
#   variant = g_dbus_gvalue_to_gvariant (value, G_VARIANT_TYPE (info->parent_struct.signature));
#   g_dbus_proxy_call (G_DBUS_PROXY (object),
#     "org.freedesktop.DBus.Properties.Set",
#     g_variant_new ("(ssv)", "com.acme.Coyote", info->parent_struct.name, variant),
#     G_DBUS_CALL_FLAGS_NONE,
#     -1,
#     NULL, (GAsyncReadyCallback) com_acme_coyote_proxy_set_property_cb, (GDBusPropertyInfo *) &info->parent_struct);
#   g_variant_unref (variant);
# }
# 
# static void
# com_acme_coyote_proxy_g_signal (GDBusProxy *proxy,
#   const gchar *sender_name G_GNUC_UNUSED,
#   const gchar *signal_name,
#   GVariant *parameters)
# {
#   _ExtendedGDBusSignalInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   gsize n;
#   guint signal_id;
#   info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, signal_name);
#   if (info == NULL)
#     return;
#   num_params = g_variant_n_children (parameters);
#   paramv = g_new0 (GValue, num_params + 1);
#   g_value_init (&paramv[0], TYPE_COM_ACME_COYOTE);
#   g_value_set_object (&paramv[0], proxy);
#   g_variant_iter_init (&iter, parameters);
#   n = 1;
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_COM_ACME_COYOTE);
#   g_signal_emitv (paramv, signal_id, 0, NULL);
#   for (n = 0; n < num_params + 1; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static void
# com_acme_coyote_proxy_g_properties_changed (GDBusProxy *_proxy,
#   GVariant *changed_properties,
#   const gchar *const *invalidated_properties)
# {
#   ComAcmeCoyoteProxy *proxy = COM_ACME_COYOTE_PROXY (_proxy);
#   guint n;
#   const gchar *key;
#   GVariantIter *iter;
#   _ExtendedGDBusPropertyInfo *info;
#   g_variant_get (changed_properties, "a{sv}", &iter);
#   while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, key);
#       g_datalist_remove_data (&proxy->priv->qdata, key);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
#   g_variant_iter_free (iter);
#   for (n = 0; invalidated_properties[n] != NULL; n++)
#     {
#       info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, invalidated_properties[n]);
#       g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
#       if (info != NULL)
#         g_object_notify (G_OBJECT (proxy), info->hyphen_name);
#     }
# }
# 
# static const gchar *
# com_acme_coyote_proxy_get_mood (ComAcmeCoyote *object)
# {
#   ComAcmeCoyoteProxy *proxy = COM_ACME_COYOTE_PROXY (object);
#   GVariant *variant;
#   const gchar *value = NULL;
#   variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "Mood");
#   if (variant != NULL)
#     {
#       value = g_variant_get_string (variant, NULL);
#       g_variant_unref (variant);
#     }
#   return value;
# }
# 
# static void
# com_acme_coyote_proxy_init (ComAcmeCoyoteProxy *proxy)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   proxy->priv = com_acme_coyote_proxy_get_instance_private (proxy);
# #else
#   proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, TYPE_COM_ACME_COYOTE_PROXY, ComAcmeCoyoteProxyPrivate);
# #endif
# 
#   g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), com_acme_coyote_interface_info ());
# }
# 
# static void
# com_acme_coyote_proxy_class_init (ComAcmeCoyoteProxyClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusProxyClass *proxy_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize     = com_acme_coyote_proxy_finalize;
#   gobject_class->get_property = com_acme_coyote_proxy_get_property;
#   gobject_class->set_property = com_acme_coyote_proxy_set_property;
# 
#   proxy_class = G_DBUS_PROXY_CLASS (klass);
#   proxy_class->g_signal = com_acme_coyote_proxy_g_signal;
#   proxy_class->g_properties_changed = com_acme_coyote_proxy_g_properties_changed;
# 
#   com_acme_coyote_override_properties (gobject_class, 1);
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (ComAcmeCoyoteProxyPrivate));
# #endif
# }
# 
# static void
# com_acme_coyote_proxy_iface_init (ComAcmeCoyoteIface *iface)
# {
#   iface->get_mood = com_acme_coyote_proxy_get_mood;
# }
# 
# /**
#  * com_acme_coyote_proxy_new:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>. See g_dbus_proxy_new() for more details.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_proxy_new_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_proxy_new_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# com_acme_coyote_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_COM_ACME_COYOTE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
# }
# 
# /**
#  * com_acme_coyote_proxy_new_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_proxy_new().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with com_acme_coyote_proxy_new().
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * com_acme_coyote_proxy_new_sync:
#  * @connection: A #GDBusConnection.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>. See g_dbus_proxy_new_sync() for more details.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_proxy_new() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_COM_ACME_COYOTE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# 
# /**
#  * com_acme_coyote_proxy_new_for_bus:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
#  * @user_data: User data to pass to @callback.
#  *
#  * Like com_acme_coyote_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * When the operation is finished, @callback will be invoked in the thread-default main loop of the thread you are calling this method from (see g_main_context_push_thread_default()).
#  * You can then call com_acme_coyote_proxy_new_for_bus_finish() to get the result of the operation.
#  *
#  * See com_acme_coyote_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
#  */
# void
# com_acme_coyote_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data)
# {
#   g_async_initable_new_async (TYPE_COM_ACME_COYOTE_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
# }
# 
# /**
#  * com_acme_coyote_proxy_new_for_bus_finish:
#  * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to com_acme_coyote_proxy_new_for_bus().
#  * @error: Return location for error or %NULL
#  *
#  * Finishes an operation started with com_acme_coyote_proxy_new_for_bus().
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error)
# {
#   GObject *ret;
#   GObject *source_object;
#   source_object = g_async_result_get_source_object (res);
#   ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
#   g_object_unref (source_object);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# /**
#  * com_acme_coyote_proxy_new_for_bus_sync:
#  * @bus_type: A #GBusType.
#  * @flags: Flags from the #GDBusProxyFlags enumeration.
#  * @name: A bus name (well-known or unique).
#  * @object_path: An object path.
#  * @cancellable: (nullable): A #GCancellable or %NULL.
#  * @error: Return location for error or %NULL
#  *
#  * Like com_acme_coyote_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
#  *
#  * The calling thread is blocked until a reply is received.
#  *
#  * See com_acme_coyote_proxy_new_for_bus() for the asynchronous version of this constructor.
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteProxy): The constructed proxy object or %NULL if @error is set.
#  */
# ComAcmeCoyote *
# com_acme_coyote_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error)
# {
#   GInitable *ret;
#   ret = g_initable_new (TYPE_COM_ACME_COYOTE_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "com.acme.Coyote", NULL);
#   if (ret != NULL)
#     return COM_ACME_COYOTE (ret);
#   else
#     return NULL;
# }
# 
# 
# /* ------------------------------------------------------------------------ */
# 
# /**
#  * ComAcmeCoyoteSkeleton:
#  *
#  * The #ComAcmeCoyoteSkeleton structure contains only private data and should only be accessed using the provided API.
#  */
# 
# /**
#  * ComAcmeCoyoteSkeletonClass:
#  * @parent_class: The parent class.
#  *
#  * Class structure for #ComAcmeCoyoteSkeleton.
#  */
# 
# struct _ComAcmeCoyoteSkeletonPrivate
# {
#   GValue *properties;
#   GList *changed_properties;
#   GSource *changed_properties_idle_source;
#   GMainContext *context;
#   GMutex lock;
# };
# 
# static void
# _com_acme_coyote_skeleton_handle_method_call (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name,
#   const gchar *method_name,
#   GVariant *parameters,
#   GDBusMethodInvocation *invocation,
#   gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   _ExtendedGDBusMethodInfo *info;
#   GVariantIter iter;
#   GVariant *child;
#   GValue *paramv;
#   gsize num_params;
#   guint num_extra;
#   gsize n;
#   guint signal_id;
#   GValue return_value = G_VALUE_INIT;
#   info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
#   g_assert (info != NULL);
#   num_params = g_variant_n_children (parameters);
#   num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
#   n = 0;
#   g_value_init (&paramv[n], TYPE_COM_ACME_COYOTE);
#   g_value_set_object (&paramv[n++], skeleton);
#   g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
#   g_value_set_object (&paramv[n++], invocation);
#   if (info->pass_fdlist)
#     {
# #ifdef G_OS_UNIX
#       g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
#       g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
# #else
#       g_assert_not_reached ();
# #endif
#     }
#   g_variant_iter_init (&iter, parameters);
#   while ((child = g_variant_iter_next_value (&iter)) != NULL)
#     {
#       _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
#       if (arg_info->use_gvariant)
#         {
#           g_value_init (&paramv[n], G_TYPE_VARIANT);
#           g_value_set_variant (&paramv[n], child);
#           n++;
#         }
#       else
#         g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
#       g_variant_unref (child);
#     }
#   signal_id = g_signal_lookup (info->signal_name, TYPE_COM_ACME_COYOTE);
#   g_value_init (&return_value, G_TYPE_BOOLEAN);
#   g_signal_emitv (paramv, signal_id, 0, &return_value);
#   if (!g_value_get_boolean (&return_value))
#     g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
#   g_value_unset (&return_value);
#   for (n = 0; n < num_params + num_extra; n++)
#     g_value_unset (&paramv[n]);
#   g_free (paramv);
# }
# 
# static GVariant *
# _com_acme_coyote_skeleton_handle_get_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GError **error,
#   gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   GVariant *ret;
#   ret = NULL;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       g_value_init (&value, pspec->value_type);
#       g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
#       g_value_unset (&value);
#     }
#   return ret;
# }
# 
# static gboolean
# _com_acme_coyote_skeleton_handle_set_property (
#   GDBusConnection *connection G_GNUC_UNUSED,
#   const gchar *sender G_GNUC_UNUSED,
#   const gchar *object_path G_GNUC_UNUSED,
#   const gchar *interface_name G_GNUC_UNUSED,
#   const gchar *property_name,
#   GVariant *variant,
#   GError **error,
#   gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   GValue value = G_VALUE_INIT;
#   GParamSpec *pspec;
#   _ExtendedGDBusPropertyInfo *info;
#   gboolean ret;
#   ret = FALSE;
#   info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_com_acme_coyote_interface_info.parent_struct, property_name);
#   g_assert (info != NULL);
#   pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
#   if (pspec == NULL)
#     {
#       g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
#     }
#   else
#     {
#       if (info->use_gvariant)
#         g_value_set_variant (&value, variant);
#       else
#         g_dbus_gvariant_to_gvalue (variant, &value);
#       g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
#       g_value_unset (&value);
#       ret = TRUE;
#     }
#   return ret;
# }
# 
# static const GDBusInterfaceVTable _com_acme_coyote_skeleton_vtable =
# {
#   _com_acme_coyote_skeleton_handle_method_call,
#   _com_acme_coyote_skeleton_handle_get_property,
#   _com_acme_coyote_skeleton_handle_set_property,
#   {NULL}
# };
# 
# static GDBusInterfaceInfo *
# com_acme_coyote_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return com_acme_coyote_interface_info ();
# }
# 
# static GDBusInterfaceVTable *
# com_acme_coyote_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
# {
#   return (GDBusInterfaceVTable *) &_com_acme_coyote_skeleton_vtable;
# }
# 
# static GVariant *
# com_acme_coyote_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (_skeleton);
# 
#   GVariantBuilder builder;
#   guint n;
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
# #else
#   g_variant_builder_init(&builder, G_VARIANT_TYPE ("a{sv}"));
# #endif
#   if (_com_acme_coyote_interface_info.parent_struct.properties == NULL)
#     goto out;
#   for (n = 0; _com_acme_coyote_interface_info.parent_struct.properties[n] != NULL; n++)
#     {
#       GDBusPropertyInfo *info = _com_acme_coyote_interface_info.parent_struct.properties[n];
#       if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
#         {
#           GVariant *value;
#           value = _com_acme_coyote_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "com.acme.Coyote", info->name, NULL, skeleton);
#           if (value != NULL)
#             {
#               g_variant_take_ref (value);
#               g_variant_builder_add (&builder, "{sv}", info->name, value);
#               g_variant_unref (value);
#             }
#         }
#     }
# out:
#   return g_variant_builder_end (&builder);
# }
# 
# static gboolean _com_acme_coyote_emit_changed (gpointer user_data);
# 
# static void
# com_acme_coyote_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (_skeleton);
#   gboolean emit_changed = FALSE;
# 
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     {
#       g_source_destroy (skeleton->priv->changed_properties_idle_source);
#       skeleton->priv->changed_properties_idle_source = NULL;
#       emit_changed = TRUE;
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# 
#   if (emit_changed)
#     _com_acme_coyote_emit_changed (skeleton);
# }
# 
# static void
# _com_acme_coyote_on_signal_surprised (
#     ComAcmeCoyote *object)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
# 
#   GList      *connections, *l;
#   GVariant   *signal_variant;
#   connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
# 
#   signal_variant = g_variant_ref_sink (g_variant_new ("()"));
#   for (l = connections; l != NULL; l = l->next)
#     {
#       GDBusConnection *connection = l->data;
#       g_dbus_connection_emit_signal (connection,
#         NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "com.acme.Coyote", "Surprised",
#         signal_variant, NULL);
#     }
#   g_variant_unref (signal_variant);
#   g_list_free_full (connections, g_object_unref);
# }
# 
# static void com_acme_coyote_skeleton_iface_init (ComAcmeCoyoteIface *iface);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteSkeleton, com_acme_coyote_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_ADD_PRIVATE (ComAcmeCoyoteSkeleton)
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_skeleton_iface_init))
# 
# #else
# G_DEFINE_TYPE_WITH_CODE (ComAcmeCoyoteSkeleton, com_acme_coyote_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
#                          G_IMPLEMENT_INTERFACE (TYPE_COM_ACME_COYOTE, com_acme_coyote_skeleton_iface_init))
# 
# #endif
# static void
# com_acme_coyote_skeleton_finalize (GObject *object)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   guint n;
#   for (n = 0; n < 1; n++)
#     g_value_unset (&skeleton->priv->properties[n]);
#   g_free (skeleton->priv->properties);
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   if (skeleton->priv->changed_properties_idle_source != NULL)
#     g_source_destroy (skeleton->priv->changed_properties_idle_source);
#   g_main_context_unref (skeleton->priv->context);
#   g_mutex_clear (&skeleton->priv->lock);
#   G_OBJECT_CLASS (com_acme_coyote_skeleton_parent_class)->finalize (object);
# }
# 
# static void
# com_acme_coyote_skeleton_get_property (GObject      *object,
#   guint         prop_id,
#   GValue       *value,
#   GParamSpec   *pspec G_GNUC_UNUSED)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   g_mutex_lock (&skeleton->priv->lock);
#   g_value_copy (&skeleton->priv->properties[prop_id - 1], value);
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static gboolean
# _com_acme_coyote_emit_changed (gpointer user_data)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (user_data);
#   GList *l;
#   GVariantBuilder builder;
#   GVariantBuilder invalidated_builder;
#   guint num_changes;
# 
#   g_mutex_lock (&skeleton->priv->lock);
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_84
#   g_variant_builder_init_static (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init_static (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #else
#   g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
#   g_variant_builder_init (&invalidated_builder, G_VARIANT_TYPE ("as"));
# #endif
#   for (l = skeleton->priv->changed_properties, num_changes = 0; l != NULL; l = l->next)
#     {
#       ChangedProperty *cp = l->data;
#       GVariant *variant;
#       const GValue *cur_value;
# 
#       cur_value = &skeleton->priv->properties[cp->prop_id - 1];
#       if (!_g_value_equal (cur_value, &cp->orig_value))
#         {
#           variant = g_dbus_gvalue_to_gvariant (cur_value, G_VARIANT_TYPE (cp->info->parent_struct.signature));
#           g_variant_builder_add (&builder, "{sv}", cp->info->parent_struct.name, variant);
#           g_variant_unref (variant);
#           num_changes++;
#         }
#     }
#   if (num_changes > 0)
#     {
#       GList *connections, *ll;
#       GVariant *signal_variant;
#       signal_variant = g_variant_ref_sink (g_variant_new ("(sa{sv}as)", "com.acme.Coyote",
#                                            &builder, &invalidated_builder));
#       connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
#       for (ll = connections; ll != NULL; ll = ll->next)
#         {
#           GDBusConnection *connection = ll->data;
# 
#           g_dbus_connection_emit_signal (connection,
#                                          NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)),
#                                          "org.freedesktop.DBus.Properties",
#                                          "PropertiesChanged",
#                                          signal_variant,
#                                          NULL);
#         }
#       g_variant_unref (signal_variant);
#       g_list_free_full (connections, g_object_unref);
#     }
#   else
#     {
#       g_variant_builder_clear (&builder);
#       g_variant_builder_clear (&invalidated_builder);
#     }
#   g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
#   skeleton->priv->changed_properties = NULL;
#   skeleton->priv->changed_properties_idle_source = NULL;
#   g_mutex_unlock (&skeleton->priv->lock);
#   return FALSE;
# }
# 
# static void
# _com_acme_coyote_schedule_emit_changed (ComAcmeCoyoteSkeleton *skeleton, const _ExtendedGDBusPropertyInfo *info, guint prop_id, const GValue *orig_value)
# {
#   ChangedProperty *cp;
#   GList *l;
#   cp = NULL;
#   for (l = skeleton->priv->changed_properties; l != NULL; l = l->next)
#     {
#       ChangedProperty *i_cp = l->data;
#       if (i_cp->info == info)
#         {
#           cp = i_cp;
#           break;
#         }
#     }
#   if (cp == NULL)
#     {
#       cp = g_new0 (ChangedProperty, 1);
#       cp->prop_id = prop_id;
#       cp->info = info;
#       skeleton->priv->changed_properties = g_list_prepend (skeleton->priv->changed_properties, cp);
#       g_value_init (&cp->orig_value, G_VALUE_TYPE (orig_value));
#       g_value_copy (orig_value, &cp->orig_value);
#     }
# }
# 
# static void
# com_acme_coyote_skeleton_notify (GObject      *object,
#   GParamSpec *pspec G_GNUC_UNUSED)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   g_mutex_lock (&skeleton->priv->lock);
#   if (skeleton->priv->changed_properties != NULL &&
#       skeleton->priv->changed_properties_idle_source == NULL)
#     {
#       skeleton->priv->changed_properties_idle_source = g_idle_source_new ();
#       g_source_set_priority (skeleton->priv->changed_properties_idle_source, G_PRIORITY_DEFAULT);
#       g_source_set_callback (skeleton->priv->changed_properties_idle_source, _com_acme_coyote_emit_changed, g_object_ref (skeleton), (GDestroyNotify) g_object_unref);
#       g_source_set_name (skeleton->priv->changed_properties_idle_source, "[generated] _com_acme_coyote_emit_changed");
#       g_source_attach (skeleton->priv->changed_properties_idle_source, skeleton->priv->context);
#       g_source_unref (skeleton->priv->changed_properties_idle_source);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
# }
# 
# static void
# com_acme_coyote_skeleton_set_property (GObject      *object,
#   guint         prop_id,
#   const GValue *value,
#   GParamSpec   *pspec)
# {
#   const _ExtendedGDBusPropertyInfo *info;
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   g_assert (prop_id != 0 && prop_id - 1 < 1);
#   info = (const _ExtendedGDBusPropertyInfo *) _com_acme_coyote_property_info_pointers[prop_id - 1];
#   g_mutex_lock (&skeleton->priv->lock);
#   g_object_freeze_notify (object);
#   if (!_g_value_equal (value, &skeleton->priv->properties[prop_id - 1]))
#     {
#       if (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)) != NULL &&
#           info->emits_changed_signal)
#         _com_acme_coyote_schedule_emit_changed (skeleton, info, prop_id, &skeleton->priv->properties[prop_id - 1]);
#       g_value_copy (value, &skeleton->priv->properties[prop_id - 1]);
#       g_object_notify_by_pspec (object, pspec);
#     }
#   g_mutex_unlock (&skeleton->priv->lock);
#   g_object_thaw_notify (object);
# }
# 
# static void
# com_acme_coyote_skeleton_init (ComAcmeCoyoteSkeleton *skeleton)
# {
# #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
#   skeleton->priv = com_acme_coyote_skeleton_get_instance_private (skeleton);
# #else
#   skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, TYPE_COM_ACME_COYOTE_SKELETON, ComAcmeCoyoteSkeletonPrivate);
# #endif
# 
#   g_mutex_init (&skeleton->priv->lock);
#   skeleton->priv->context = g_main_context_ref_thread_default ();
#   skeleton->priv->properties = g_new0 (GValue, 1);
#   g_value_init (&skeleton->priv->properties[0], G_TYPE_STRING);
# }
# 
# static const gchar *
# com_acme_coyote_skeleton_get_mood (ComAcmeCoyote *object)
# {
#   ComAcmeCoyoteSkeleton *skeleton = COM_ACME_COYOTE_SKELETON (object);
#   const gchar *value;
#   g_mutex_lock (&skeleton->priv->lock);
#   value = g_marshal_value_peek_string (&(skeleton->priv->properties[0]));
#   g_mutex_unlock (&skeleton->priv->lock);
#   return value;
# }
# 
# static void
# com_acme_coyote_skeleton_class_init (ComAcmeCoyoteSkeletonClass *klass)
# {
#   GObjectClass *gobject_class;
#   GDBusInterfaceSkeletonClass *skeleton_class;
# 
#   gobject_class = G_OBJECT_CLASS (klass);
#   gobject_class->finalize = com_acme_coyote_skeleton_finalize;
#   gobject_class->get_property = com_acme_coyote_skeleton_get_property;
#   gobject_class->set_property = com_acme_coyote_skeleton_set_property;
#   gobject_class->notify       = com_acme_coyote_skeleton_notify;
# 
# 
#   com_acme_coyote_override_properties (gobject_class, 1);
# 
#   skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
#   skeleton_class->get_info = com_acme_coyote_skeleton_dbus_interface_get_info;
#   skeleton_class->get_properties = com_acme_coyote_skeleton_dbus_interface_get_properties;
#   skeleton_class->flush = com_acme_coyote_skeleton_dbus_interface_flush;
#   skeleton_class->get_vtable = com_acme_coyote_skeleton_dbus_interface_get_vtable;
# 
# #if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
#   g_type_class_add_private (klass, sizeof (ComAcmeCoyoteSkeletonPrivate));
# #endif
# }
# 
# static void
# com_acme_coyote_skeleton_iface_init (ComAcmeCoyoteIface *iface)
# {
#   iface->surprised = _com_acme_coyote_on_signal_surprised;
#   iface->get_mood = com_acme_coyote_skeleton_get_mood;
# }
# 
# /**
#  * com_acme_coyote_skeleton_new:
#  *
#  * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-com-acme-Coyote.top_of_page">com.acme.Coyote</link>.
#  *
#  * Returns: (transfer full) (type ComAcmeCoyoteSkeleton): The skeleton object.
#  */
# ComAcmeCoyote *
# com_acme_coyote_skeleton_new (void)
# {
#   return COM_ACME_COYOTE (g_object_new (TYPE_COM_ACME_COYOTE_SKELETON, NULL));
# }
# Error:
Executing: glib/codegen.py.test
ok 39 __main__.TestCodegen.test_unix_fd_types_and_annotations
# gdbus-codegen: /usr/bin/gdbus-codegen
# tmpdir: /tmp/tmptigr2rwy
# /tmp/tmptigr2rwy/tmpq9zg0g_7.xml: 
#             <node>
#               <interface name="FDPassing">
#                 <method name="HelloFD">
#                   <annotation name="org.gtk.GDBus.C.UnixFD" value="1"/>
#                   <arg name="greeting" direction="in" type="s"/>
#                   <arg name="response" direction="out" type="s"/>
#                 </method>
#                 <method name="NoAnnotation">
#                   <arg name="greeting" direction="in" type="h"/>
#                   <arg name="greeting_locale" direction="in" type="s"/>
#                   <arg name="response" direction="out" type="h"/>
#                   <arg name="response_locale" direction="out" type="s"/>
#                 </method>
#                 <method name="NoAnnotationNested">
#                   <arg name="files" type="a{sh}" direction="in"/>
#                 </method>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmptigr2rwy/tmpq9zg0g_7.xml', '--output', '-', '--header']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for FDPassing */
# 
# #define TYPE_FDPASSING (fdpassing_get_type ())
# #define FDPASSING(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING, FDPassing))
# #define IS_FDPASSING(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING))
# #define FDPASSING_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_FDPASSING, FDPassingIface))
# 
# struct _FDPassing;
# typedef struct _FDPassing FDPassing;
# typedef struct _FDPassingIface FDPassingIface;
# 
# struct _FDPassingIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_hello_fd) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     const gchar *arg_greeting);
# 
#   gboolean (*handle_no_annotation) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale);
# 
#   gboolean (*handle_no_annotation_nested) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GVariant *arg_files);
# 
# };
# 
# GType fdpassing_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *fdpassing_interface_info (void);
# guint fdpassing_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void fdpassing_complete_hello_fd (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     const gchar *response);
# 
# void fdpassing_complete_no_annotation (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GVariant *response,
#     const gchar *response_locale);
# 
# void fdpassing_complete_no_annotation_nested (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus method calls: */
# void fdpassing_call_hello_fd (
#     FDPassing *proxy,
#     const gchar *arg_greeting,
#     GUnixFDList *fd_list,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_hello_fd_finish (
#     FDPassing *proxy,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_hello_fd_sync (
#     FDPassing *proxy,
#     const gchar *arg_greeting,
#     GUnixFDList  *fd_list,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GCancellable *cancellable,
#     GError **error);
# 
# void fdpassing_call_no_annotation (
#     FDPassing *proxy,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_no_annotation_finish (
#     FDPassing *proxy,
#     GVariant **out_response,
#     gchar **out_response_locale,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_no_annotation_sync (
#     FDPassing *proxy,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale,
#     GVariant **out_response,
#     gchar **out_response_locale,
#     GCancellable *cancellable,
#     GError **error);
# 
# void fdpassing_call_no_annotation_nested (
#     FDPassing *proxy,
#     GVariant *arg_files,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_no_annotation_nested_finish (
#     FDPassing *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_no_annotation_nested_sync (
#     FDPassing *proxy,
#     GVariant *arg_files,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_FDPASSING_PROXY (fdpassing_proxy_get_type ())
# #define FDPASSING_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING_PROXY, FDPassingProxy))
# #define FDPASSING_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_FDPASSING_PROXY, FDPassingProxyClass))
# #define FDPASSING_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_FDPASSING_PROXY, FDPassingProxyClass))
# #define IS_FDPASSING_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING_PROXY))
# #define IS_FDPASSING_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_FDPASSING_PROXY))
# 
# typedef struct _FDPassingProxy FDPassingProxy;
# typedef struct _FDPassingProxyClass FDPassingProxyClass;
# typedef struct _FDPassingProxyPrivate FDPassingProxyPrivate;
# 
# struct _FDPassingProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   FDPassingProxyPrivate *priv;
# };
# 
# struct _FDPassingProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType fdpassing_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (FDPassingProxy, g_object_unref)
# #endif
# 
# void fdpassing_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# FDPassing *fdpassing_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# FDPassing *fdpassing_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void fdpassing_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# FDPassing *fdpassing_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# FDPassing *fdpassing_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_FDPASSING_SKELETON (fdpassing_skeleton_get_type ())
# #define FDPASSING_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING_SKELETON, FDPassingSkeleton))
# #define FDPASSING_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_FDPASSING_SKELETON, FDPassingSkeletonClass))
# #define FDPASSING_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_FDPASSING_SKELETON, FDPassingSkeletonClass))
# #define IS_FDPASSING_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING_SKELETON))
# #define IS_FDPASSING_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_FDPASSING_SKELETON))
# 
# typedef struct _FDPassingSkeleton FDPassingSkeleton;
# typedef struct _FDPassingSkeletonClass FDPassingSkeletonClass;
# typedef struct _FDPassingSkeletonPrivate FDPassingSkeletonPrivate;
# 
# struct _FDPassingSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   FDPassingSkeletonPrivate *priv;
# };
# 
# struct _FDPassingSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType fdpassing_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (FDPassingSkeleton, g_object_unref)
# #endif
# 
# FDPassing *fdpassing_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
#  
# /tmp/tmptigr2rwy/tmpi2t6aezl.xml: 
#             <node>
#               <interface name="FDPassing">
#                 <method name="HelloFD">
#                   <annotation name="org.gtk.GDBus.C.UnixFD" value="1"/>
#                   <arg name="greeting" direction="in" type="s"/>
#                   <arg name="response" direction="out" type="s"/>
#                 </method>
#                 <method name="NoAnnotation">
#                   <arg name="greeting" direction="in" type="h"/>
#                   <arg name="greeting_locale" direction="in" type="s"/>
#                   <arg name="response" direction="out" type="h"/>
#                   <arg name="response_locale" direction="out" type="s"/>
#                 </method>
#                 <method name="NoAnnotationNested">
#                   <arg name="files" type="a{sh}" direction="in"/>
#                 </method>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmptigr2rwy/tmpi2t6aezl.xml', '--output', '-', '--header', '--glib-min-required', '2.32']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for FDPassing */
# 
# #define TYPE_FDPASSING (fdpassing_get_type ())
# #define FDPASSING(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING, FDPassing))
# #define IS_FDPASSING(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING))
# #define FDPASSING_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_FDPASSING, FDPassingIface))
# 
# struct _FDPassing;
# typedef struct _FDPassing FDPassing;
# typedef struct _FDPassingIface FDPassingIface;
# 
# struct _FDPassingIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_hello_fd) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     const gchar *arg_greeting);
# 
#   gboolean (*handle_no_annotation) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale);
# 
#   gboolean (*handle_no_annotation_nested) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GVariant *arg_files);
# 
# };
# 
# GType fdpassing_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *fdpassing_interface_info (void);
# guint fdpassing_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void fdpassing_complete_hello_fd (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     const gchar *response);
# 
# void fdpassing_complete_no_annotation (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GVariant *response,
#     const gchar *response_locale);
# 
# void fdpassing_complete_no_annotation_nested (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation);
# 
# 
# 
# /* D-Bus method calls: */
# void fdpassing_call_hello_fd (
#     FDPassing *proxy,
#     const gchar *arg_greeting,
#     GUnixFDList *fd_list,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_hello_fd_finish (
#     FDPassing *proxy,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_hello_fd_sync (
#     FDPassing *proxy,
#     const gchar *arg_greeting,
#     GUnixFDList  *fd_list,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GCancellable *cancellable,
#     GError **error);
# 
# void fdpassing_call_no_annotation (
#     FDPassing *proxy,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_no_annotation_finish (
#     FDPassing *proxy,
#     GVariant **out_response,
#     gchar **out_response_locale,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_no_annotation_sync (
#     FDPassing *proxy,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale,
#     GVariant **out_response,
#     gchar **out_response_locale,
#     GCancellable *cancellable,
#     GError **error);
# 
# void fdpassing_call_no_annotation_nested (
#     FDPassing *proxy,
#     GVariant *arg_files,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_no_annotation_nested_finish (
#     FDPassing *proxy,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_no_annotation_nested_sync (
#     FDPassing *proxy,
#     GVariant *arg_files,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_FDPASSING_PROXY (fdpassing_proxy_get_type ())
# #define FDPASSING_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING_PROXY, FDPassingProxy))
# #define FDPASSING_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_FDPASSING_PROXY, FDPassingProxyClass))
# #define FDPASSING_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_FDPASSING_PROXY, FDPassingProxyClass))
# #define IS_FDPASSING_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING_PROXY))
# #define IS_FDPASSING_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_FDPASSING_PROXY))
# 
# typedef struct _FDPassingProxy FDPassingProxy;
# typedef struct _FDPassingProxyClass FDPassingProxyClass;
# typedef struct _FDPassingProxyPrivate FDPassingProxyPrivate;
# 
# struct _FDPassingProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   FDPassingProxyPrivate *priv;
# };
# 
# struct _FDPassingProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType fdpassing_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (FDPassingProxy, g_object_unref)
# #endif
# 
# void fdpassing_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# FDPassing *fdpassing_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# FDPassing *fdpassing_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void fdpassing_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# FDPassing *fdpassing_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# FDPassing *fdpassing_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_FDPASSING_SKELETON (fdpassing_skeleton_get_type ())
# #define FDPASSING_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING_SKELETON, FDPassingSkeleton))
# #define FDPASSING_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_FDPASSING_SKELETON, FDPassingSkeletonClass))
# #define FDPASSING_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_FDPASSING_SKELETON, FDPassingSkeletonClass))
# #define IS_FDPASSING_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING_SKELETON))
# #define IS_FDPASSING_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_FDPASSING_SKELETON))
# 
# typedef struct _FDPassingSkeleton FDPassingSkeleton;
# typedef struct _FDPassingSkeletonClass FDPassingSkeletonClass;
# typedef struct _FDPassingSkeletonPrivate FDPassingSkeletonPrivate;
# 
# struct _FDPassingSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   FDPassingSkeletonPrivate *priv;
# };
# 
# struct _FDPassingSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType fdpassing_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (FDPassingSkeleton, g_object_unref)
# #endif
# 
# FDPassing *fdpassing_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
#  
# /tmp/tmptigr2rwy/tmpb0q8j4qv.xml: 
#             <node>
#               <interface name="FDPassing">
#                 <method name="HelloFD">
#                   <annotation name="org.gtk.GDBus.C.UnixFD" value="1"/>
#                   <arg name="greeting" direction="in" type="s"/>
#                   <arg name="response" direction="out" type="s"/>
#                 </method>
#                 <method name="NoAnnotation">
#                   <arg name="greeting" direction="in" type="h"/>
#                   <arg name="greeting_locale" direction="in" type="s"/>
#                   <arg name="response" direction="out" type="h"/>
#                   <arg name="response_locale" direction="out" type="s"/>
#                 </method>
#                 <method name="NoAnnotationNested">
#                   <arg name="files" type="a{sh}" direction="in"/>
#                 </method>
#               </interface>
#             </node>
# Running: ['/usr/bin/gdbus-codegen', '/tmp/tmptigr2rwy/tmpb0q8j4qv.xml', '--output', '-', '--header', '--glib-min-required', '2.64']
# Return code: 0
# Output:
#  /*
#  * This file is generated by gdbus-codegen, do not modify it.
#  *
#  * The license of this code is the same as for the D-Bus interface description
#  * it was derived from. Note that it links to GLib, so must comply with the
#  * LGPL linking clauses.
#  */
# 
# #ifndef __STDOUT__
# #define __STDOUT__
# 
# #include <gio/gio.h>
# 
# G_BEGIN_DECLS
# 
# 
# /* ------------------------------------------------------------------------ */
# /* Declarations for FDPassing */
# 
# #define TYPE_FDPASSING (fdpassing_get_type ())
# #define FDPASSING(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING, FDPassing))
# #define IS_FDPASSING(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING))
# #define FDPASSING_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), TYPE_FDPASSING, FDPassingIface))
# 
# struct _FDPassing;
# typedef struct _FDPassing FDPassing;
# typedef struct _FDPassingIface FDPassingIface;
# 
# struct _FDPassingIface
# {
#   GTypeInterface parent_iface;
# 
#   gboolean (*handle_hello_fd) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     const gchar *arg_greeting);
# 
#   gboolean (*handle_no_annotation) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale);
# 
#   gboolean (*handle_no_annotation_nested) (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     GVariant *arg_files);
# 
# };
# 
# GType fdpassing_get_type (void) G_GNUC_CONST;
# 
# GDBusInterfaceInfo *fdpassing_interface_info (void);
# guint fdpassing_override_properties (GObjectClass *klass, guint property_id_begin);
# 
# 
# /* D-Bus method call completion functions: */
# void fdpassing_complete_hello_fd (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     const gchar *response);
# 
# void fdpassing_complete_no_annotation (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list,
#     GVariant *response,
#     const gchar *response_locale);
# 
# void fdpassing_complete_no_annotation_nested (
#     FDPassing *object,
#     GDBusMethodInvocation *invocation,
#     GUnixFDList *fd_list);
# 
# 
# 
# /* D-Bus method calls: */
# void fdpassing_call_hello_fd (
#     FDPassing *proxy,
#     const gchar *arg_greeting,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GUnixFDList *fd_list,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_hello_fd_finish (
#     FDPassing *proxy,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_hello_fd_sync (
#     FDPassing *proxy,
#     const gchar *arg_greeting,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GUnixFDList  *fd_list,
#     gchar **out_response,
#     GUnixFDList **out_fd_list,
#     GCancellable *cancellable,
#     GError **error);
# 
# void fdpassing_call_no_annotation (
#     FDPassing *proxy,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GUnixFDList *fd_list,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_no_annotation_finish (
#     FDPassing *proxy,
#     GVariant **out_response,
#     gchar **out_response_locale,
#     GUnixFDList **out_fd_list,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_no_annotation_sync (
#     FDPassing *proxy,
#     GVariant *arg_greeting,
#     const gchar *arg_greeting_locale,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GUnixFDList  *fd_list,
#     GVariant **out_response,
#     gchar **out_response_locale,
#     GUnixFDList **out_fd_list,
#     GCancellable *cancellable,
#     GError **error);
# 
# void fdpassing_call_no_annotation_nested (
#     FDPassing *proxy,
#     GVariant *arg_files,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GUnixFDList *fd_list,
#     GCancellable *cancellable,
#     GAsyncReadyCallback callback,
#     gpointer user_data);
# 
# gboolean fdpassing_call_no_annotation_nested_finish (
#     FDPassing *proxy,
#     GUnixFDList **out_fd_list,
#     GAsyncResult *res,
#     GError **error);
# 
# gboolean fdpassing_call_no_annotation_nested_sync (
#     FDPassing *proxy,
#     GVariant *arg_files,
#     GDBusCallFlags call_flags,
#     gint timeout_msec,
#     GUnixFDList  *fd_list,
#     GUnixFDList **out_fd_list,
#     GCancellable *cancellable,
#     GError **error);
# 
# 
# 
# /* ---- */
# 
# #define TYPE_FDPASSING_PROXY (fdpassing_proxy_get_type ())
# #define FDPASSING_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING_PROXY, FDPassingProxy))
# #define FDPASSING_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_FDPASSING_PROXY, FDPassingProxyClass))
# #define FDPASSING_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_FDPASSING_PROXY, FDPassingProxyClass))
# #define IS_FDPASSING_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING_PROXY))
# #define IS_FDPASSING_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_FDPASSING_PROXY))
# 
# typedef struct _FDPassingProxy FDPassingProxy;
# typedef struct _FDPassingProxyClass FDPassingProxyClass;
# typedef struct _FDPassingProxyPrivate FDPassingProxyPrivate;
# 
# struct _FDPassingProxy
# {
#   /*< private >*/
#   GDBusProxy parent_instance;
#   FDPassingProxyPrivate *priv;
# };
# 
# struct _FDPassingProxyClass
# {
#   GDBusProxyClass parent_class;
# };
# 
# GType fdpassing_proxy_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (FDPassingProxy, g_object_unref)
# #endif
# 
# void fdpassing_proxy_new (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# FDPassing *fdpassing_proxy_new_finish (
#     GAsyncResult        *res,
#     GError             **error);
# FDPassing *fdpassing_proxy_new_sync (
#     GDBusConnection     *connection,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# void fdpassing_proxy_new_for_bus (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GAsyncReadyCallback  callback,
#     gpointer             user_data);
# FDPassing *fdpassing_proxy_new_for_bus_finish (
#     GAsyncResult        *res,
#     GError             **error);
# FDPassing *fdpassing_proxy_new_for_bus_sync (
#     GBusType             bus_type,
#     GDBusProxyFlags      flags,
#     const gchar         *name,
#     const gchar         *object_path,
#     GCancellable        *cancellable,
#     GError             **error);
# 
# 
# /* ---- */
# 
# #define TYPE_FDPASSING_SKELETON (fdpassing_skeleton_get_type ())
# #define FDPASSING_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), TYPE_FDPASSING_SKELETON, FDPassingSkeleton))
# #define FDPASSING_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), TYPE_FDPASSING_SKELETON, FDPassingSkeletonClass))
# #define FDPASSING_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), TYPE_FDPASSING_SKELETON, FDPassingSkeletonClass))
# #define IS_FDPASSING_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), TYPE_FDPASSING_SKELETON))
# #define IS_FDPASSING_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), TYPE_FDPASSING_SKELETON))
# 
# typedef struct _FDPassingSkeleton FDPassingSkeleton;
# typedef struct _FDPassingSkeletonClass FDPassingSkeletonClass;
# typedef struct _FDPassingSkeletonPrivate FDPassingSkeletonPrivate;
# 
# struct _FDPassingSkeleton
# {
#   /*< private >*/
#   GDBusInterfaceSkeleton parent_instance;
#   FDPassingSkeletonPrivate *priv;
# };
# 
# struct _FDPassingSkeletonClass
# {
#   GDBusInterfaceSkeletonClass parent_class;
# };
# 
# GType fdpassing_skeleton_get_type (void) G_GNUC_CONST;
# 
# #if GLIB_CHECK_VERSION(2, 44, 0)
# G_DEFINE_AUTOPTR_CLEANUP_FUNC (FDPassingSkeleton, g_object_unref)
# #endif
# 
# FDPassing *fdpassing_skeleton_new (void);
# 
# 
# G_END_DECLS
# 
# #endif /* __STDOUT__ */
# Error:
1..39
PASS: glib/codegen.py.test
Running test: glib/search-utils.test
TAP version 14
# random seed: R02Sfbc015b4db27c363198523a8eb31fdb8
# GLib-DEBUG: Current user locale: C
1..6
# Start of search tests
# GLib-DEBUG: Started
# GLib-DEBUG: 'he' - 'Hello World' should match: OK
# GLib-DEBUG: 'wo' - 'Hello World' should match: OK
# GLib-DEBUG: 'lo' - 'Hello World' should NOT match: OK
# GLib-DEBUG: 'ld' - 'Hello World' should NOT match: OK
# GLib-DEBUG: 'wo' - 'Hello-World' should match: OK
# GLib-DEBUG: 'wo' - 'HelloWorld' should NOT match: OK
ok 1 /search/basic
# GLib-DEBUG: Started
# Locale 'sv_SE.UTF-8' is unavailable
# GLib-DEBUG: 'jor' - 'J?rgen' should match: SKIPPED
# GLib-DEBUG: 'gaetan' - 'Gaëtan' should match: OK
# GLib-DEBUG: 'ele' - 'élève' should match: OK
# GLib-DEBUG: 'AzaÏs' - 'Azais' should NOT match: OK
# GLib-DEBUG: 'Azais' - 'AzaÏs' should match: OK
ok 2 /search/composed
# GLib-DEBUG: Started
# Locale 'sv_SE.UTF-8' is unavailable
# GLib-DEBUG: 'Jör' - 'Jorgen' should NOT match: SKIPPED
# Locale 'sv_SE.UTF-8' is unavailable
# GLib-DEBUG: 'jor' - 'Jörgen' should match: SKIPPED
ok 3 /search/decomposed # SKIP No locales for the test set are available
# GLib-DEBUG: Started
# GLib-DEBUG: 'ist' - 'İstanbul' should match: OK
# GLib-DEBUG: 'diyarbakir' - 'Diyarbakır' should match: OK
ok 4 /search/turkish
# GLib-DEBUG: Started
# GLib-DEBUG: 'jor' - 'J?rgen' should match: OK
# GLib-DEBUG: 'Jo?r' - 'Jorgen' should NOT match: OK
# GLib-DEBUG: 'jor' - 'Jo?rgen' should match: OK
ok 5 /search/c_locale_unicode
# GLib-DEBUG: Started
# GLib-DEBUG: 'Xav Cla' - 'Xavier Claessens' should match: OK
# GLib-DEBUG: 'Cla Xav' - 'Xavier Claessens' should match: OK
# GLib-DEBUG: '   b  ' - 'Foo Bar Baz' should match: OK
# GLib-DEBUG: 'bar bazz' - 'Foo Bar Baz' should NOT match: OK
ok 6 /search/multi_words
# End of search tests
PASS: glib/search-utils.test
Running test: glib/threadtests.test
TAP version 14
# random seed: R02Scefdba239a6e99ecd928a4786bc38234
1..5
# Start of GObject tests
ok 1 /GObject/threaded-object-init
Executing: glib/threadtests.test
ok 2 /GObject/threaded-weak-ref
# slow test /GObject/threaded-weak-ref executed in 3.25 secs
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/2394
# /GObject/threaded-toggle-notify summary: Test that toggle reference notifications can be changed safely from another (the main) thread without causing the notifying thread to abort
ok 3 /GObject/threaded-toggle-notify
# slow test /GObject/threaded-toggle-notify executed in 0.86 secs
ok 4 /GObject/threaded-g-pointer-bit-unlock-and-set
# Start of threaded-weak-ref tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2390
# /GObject/threaded-weak-ref/on-finalization summary: Test that a weak ref added by another thread during dispose of a GObject is cleared during finalisation. Use on_weak_ref_disposed() to synchronize the other thread with the dispose vfunc.
ok 5 /GObject/threaded-weak-ref/on-finalization
# End of threaded-weak-ref tests
# End of GObject tests
PASS: glib/threadtests.test
Running test: glib/gutils-user-database.test
TAP version 14
# random seed: R02Sb0c1ce0ca77cc97a444174868da3e780
1..1
# Start of gutils tests
ok 1 /gutils/get_user_database_entry
# End of gutils tests
PASS: glib/gutils-user-database.test
Running test: glib/autoptr-gio.test
TAP version 14
# random seed: R02S44d30b9518ebc0c0212e7ce2e4d44189
1..1
# Start of autoptr tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 1 /autoptr/autoptr
# End of autoptr tests
PASS: glib/autoptr-gio.test
Running test: glib/hash.test
TAP version 14
# random seed: R02S90fd1ae98337eba25e4c25d5a7239285
1..34
# Start of hash tests
ok 1 /hash/misc
ok 2 /hash/one
ok 3 /hash/honeyman
ok 4 /hash/direct
ok 5 /hash/direct2
ok 6 /hash/int
ok 7 /hash/int64
ok 8 /hash/double
ok 9 /hash/string
ok 10 /hash/set
ok 11 /hash/set-ref
ok 12 /hash/ref
ok 13 /hash/remove-all
ok 14 /hash/recursive-remove-all
ok 15 /hash/find
ok 16 /hash/foreach
ok 17 /hash/foreach-steal
ok 18 /hash/steal-extended
ok 19 /hash/steal-all-keys
ok 20 /hash/steal-all-values
ok 21 /hash/lookup-extended
ok 22 /hash/new-similar
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=642944
ok 23 /hash/lookup-null-key
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=650459
ok 24 /hash/destroy-modify
ok 25 /hash/consistency
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=662544
ok 26 /hash/iter-replace
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=692815
ok 27 /hash/set-insert-corruption
ok 28 /hash/set-to-strv
ok 29 /hash/get-keys-as-ptr-array
ok 30 /hash/get-values-as-ptr-array
ok 31 /hash/primes
# Start of int64 tests
# /hash/int64/collisions summary: Check int64 Hash collisions caused by ignoring high word
ok 32 /hash/int64/collisions
# End of int64 tests
# Start of double tests
# /hash/double/collisions summary: Check double Hash collisions caused by int conversion and by numbers larger than 2^64-1 (G_MAXUINT64)
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2771
ok 33 /hash/double/collisions
# End of double tests
# Start of recursive-remove-all tests
# End of recursive-remove-all tests
# Start of steal-extended tests
ok 34 /hash/steal-extended/optional
# End of steal-extended tests
# End of hash tests
PASS: glib/hash.test
Running test: glib/markup-collect.test
TAP version 14
# random seed: R02S871975048faac4c0e94629455608bdd2
1..21
# Start of markup tests
# Start of collect tests
ok 1 /markup/collect/0
ok 2 /markup/collect/1
ok 3 /markup/collect/2
ok 4 /markup/collect/3
ok 5 /markup/collect/4
ok 6 /markup/collect/5
ok 7 /markup/collect/6
ok 8 /markup/collect/7
ok 9 /markup/collect/8
ok 10 /markup/collect/9
ok 11 /markup/collect/10
ok 12 /markup/collect/11
ok 13 /markup/collect/12
ok 14 /markup/collect/13
ok 15 /markup/collect/14
ok 16 /markup/collect/15
ok 17 /markup/collect/16
ok 18 /markup/collect/17
ok 19 /markup/collect/18
ok 20 /markup/collect/19
ok 21 /markup/collect/cleanup
# End of collect tests
# End of markup tests
PASS: glib/markup-collect.test
Running test: glib/gio-tool.py.test
TAP version 13
ok 1 __main__.TestGioTool.test_help
# gio: /usr/bin/gio
# tmpdir: /tmp/tmp8tgcflhd
# Running: ['/usr/bin/gio', '--help']
# Return code: 0
# Output:
#  Usage:
#   gio COMMAND [ARGS…]
# 
# Commands:
#   help     Print help
#   version  Print version
#   cat      Concatenate files to standard output
#   copy     Copy one or more files
#   info     Show information about locations
#   launch   Launch an application from a desktop file
#   list     List the contents of locations
#   mime     Get or set the handler for a mimetype
#   mkdir    Create directories
#   monitor  Monitor files and directories for changes
#   mount    Mount or unmount the locations
#   move     Move one or more files
#   open     Open files with the default application
#   rename   Rename a file
#   remove   Delete one or more files
#   save     Read from standard input and save
#   set      Set a file attribute
#   trash    Move files or directories to the trash
#   tree     Lists the contents of locations in a tree
# 
# Use “gio help COMMAND” to get detailed help.
# Error:
#  
# Running: ['/usr/bin/gio', 'help']
# Return code: 0
# Output:
#  Usage:
#   gio COMMAND [ARGS…]
# 
# Commands:
#   help     Print help
#   version  Print version
#   cat      Concatenate files to standard output
#   copy     Copy one or more files
#   info     Show information about locations
#   launch   Launch an application from a desktop file
#   list     List the contents of locations
#   mime     Get or set the handler for a mimetype
#   mkdir    Create directories
#   monitor  Monitor files and directories for changes
#   mount    Mount or unmount the locations
#   move     Move one or more files
#   open     Open files with the default application
#   rename   Rename a file
#   remove   Delete one or more files
#   save     Read from standard input and save
#   set      Set a file attribute
#   trash    Move files or directories to the trash
#   tree     Lists the contents of locations in a tree
# 
# Use “gio help COMMAND” to get detailed help.
# Error:
ok 2 __main__.TestGioTool.test_info_non_default_attributes
# gio: /usr/bin/gio
# tmpdir: /tmp/tmpwpxxqra5
# Running: ['/usr/bin/gio', 'info', '--attributes=standard::content-type', '/tmp/tmpwpxxqra5/tmp1lfd81of']
# Return code: 0
# Output:
#  uri: file:///tmp/tmpwpxxqra5/tmp1lfd81of
# local path: /tmp/tmpwpxxqra5/tmp1lfd81of
# unix mount: tmpfs /var/volatile tmpfs rw,relatime
# attributes:
#   standard::content-type: application/x-zerosize
# Error:
ok 3 __main__.TestGioTool.test_no_args
# gio: /usr/bin/gio
# tmpdir: /tmp/tmpw_1b1q2t
# Running: ['/usr/bin/gio']
# Return code: 1
# Output:
#  
# Error:
#  Usage:
#   gio COMMAND [ARGS…]
# 
# Commands:
#   help     Print help
#   version  Print version
#   cat      Concatenate files to standard output
#   copy     Copy one or more files
#   info     Show information about locations
#   launch   Launch an application from a desktop file
#   list     List the contents of locations
#   mime     Get or set the handler for a mimetype
#   mkdir    Create directories
#   monitor  Monitor files and directories for changes
#   mount    Mount or unmount the locations
#   move     Move one or more files
#   open     Open files with the default application
#   rename   Rename a file
#   remove   Delete one or more files
#   save     Read from standard input and save
#   set      Set a file attribute
#   trash    Move files or directories to the trash
#   tree     Lists the contents of locations in a tree
# 
# Use “gio help COMMAND” to get detailed help.
1..3
PASS: glib/gio-tool.py.test
Running test: glib/reference.test
TAP version 14
# random seed: R02Sbd2f79149248e9f4dc20f79aa2aaba8f
1..29
# Start of type tests
ok 1 /type/fundamentals
ok 2 /type/qdata
ok 3 /type/query
ok 4 /type/class-private
# End of type tests
# Start of object tests
ok 5 /object/clear
ok 6 /object/clear-function
ok 7 /object/set
ok 8 /object/set-function
ok 9 /object/value
ok 10 /object/initially-unowned
ok 11 /object/weak-pointer
ok 12 /object/weak-ref
ok 13 /object/toggle-ref
ok 14 /object/qdata
ok 15 /object/qdata2
# Start of set tests
# /object/set/derived-type summary: Check that g_set_object() doesn?t give strict aliasing warnings when used on types derived from GObject
ok 16 /object/set/derived-type
# End of set tests
# Start of weak-pointer tests
ok 17 /object/weak-pointer/clear
ok 18 /object/weak-pointer/clear-function
ok 19 /object/weak-pointer/set
ok 20 /object/weak-pointer/set-function
# End of weak-pointer tests
# Start of weak-ref tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2390
# /object/weak-ref/on-dispose summary: Test that a weak ref set during dispose vfunc is cleared
ok 21 /object/weak-ref/on-dispose
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/865
# /object/weak-ref/on-run-dispose summary: Test that a weak ref is cleared on g_object_run_dispose()
ok 22 /object/weak-ref/on-run-dispose
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2390
# /object/weak-ref/on-toggle-notify summary: Test that a weak ref set on toggle notify is cleared
ok 23 /object/weak-ref/on-toggle-notify
ok 24 /object/weak-ref/in-toggle-notify
ok 25 /object/weak-ref/many
# Start of concurrent tests
ok 26 /object/weak-ref/concurrent/0
ok 27 /object/weak-ref/concurrent/1
# End of concurrent tests
# End of weak-ref tests
# Start of toggle-ref tests
ok 28 /object/toggle-ref/ref-on-dispose
ok 29 /object/toggle-ref/ref-and-notify-on-dispose
# End of toggle-ref tests
# End of object tests
PASS: glib/reference.test
Running test: glib/environment.test
TAP version 14
# random seed: R02Sb52e0c9d264e5e1fbfa7f631b8f595d2
1..6
# Start of environ tests
# /environ/listenv summary: Test g_get_environ() returns an array of unique keys, all of which can be individually queried using g_getenv() to return the same value.
ok 1 /environ/listenv
# /environ/getenv summary: Test setting an environment variable using g_setenv(), and that the updated value is queryable using g_getenv().
ok 2 /environ/getenv
ok 3 /environ/setenv
# /environ/array summary: Test getting and setting variables on a local envp array (rather than the global envp).
ok 4 /environ/array
# /environ/null summary: Test getting and setting variables on a NULL envp array.
ok 5 /environ/null
# /environ/case summary: Test that matching environment variables is case-insensitive on Windows and not on other platforms, since envvars were case-insensitive on DOS.
ok 6 /environ/case
# End of environ tests
PASS: glib/environment.test
Running test: glib/gdbus-server-auth.test
TAP version 14
# random seed: R02Sd5d30e4da3b8cf47c017412e433236d8
1..9
# Start of gdbus tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/.dirs/runtime
# Testing GDBus server at unix:dir=/var/volatile/tmp/gdbus-server-auth-BDS472 / libdbus client, with flags: external:false anonymous:false sha1:false abstract:false tcp:false
# Connectable address: unix:path=/var/volatile/tmp/gdbus-server-auth-BDS472/dbus-UE44QRLP
# GLib-GIO-DEBUG: Accepting "ANONYMOUS" authentication
# GLib-GIO-DEBUG: Accepting "DBUS_COOKIE_SHA1" authentication
# GLib-GIO-DEBUG: Accepting "EXTERNAL" authentication
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: Server says GDBus client is uid 1000, pid 9758
ok 1 /gdbus/server-auth # SKIP Testing interop with libdbus not supported
# Start of server-auth tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/abstract/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/abstract/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/abstract/.dirs/runtime
# Testing GDBus server at unix:tmpdir=/var/volatile/tmp/gdbus-server-auth-QIO672 / libdbus client, with flags: external:false anonymous:false sha1:false abstract:true tcp:false
# Connectable address: unix:path=/var/volatile/tmp/gdbus-server-auth-QIO672/dbus-c9ffTvl1
# GLib-GIO-DEBUG: Accepting "ANONYMOUS" authentication
# GLib-GIO-DEBUG: Accepting "DBUS_COOKIE_SHA1" authentication
# GLib-GIO-DEBUG: Accepting "EXTERNAL" authentication
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: Server says GDBus client is uid 1000, pid 9758
ok 2 /gdbus/server-auth/abstract # SKIP Testing interop with libdbus not supported
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/tcp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/tcp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/tcp/.dirs/runtime
# Testing GDBus server at tcp:host=127.0.0.1 / libdbus client, with flags: external:false anonymous:false sha1:false abstract:false tcp:true
# Connectable address: tcp:host=127.0.0.1,port=43829
# GLib-GIO-DEBUG: Accepting "ANONYMOUS" authentication
# GLib-GIO-DEBUG: Accepting "DBUS_COOKIE_SHA1" authentication
# GLib-GIO-DEBUG: Accepting "EXTERNAL" authentication
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=0
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=0
# GLib-GIO-DEBUG: Server says GDBus client is uid 4294967295, pid -1
ok 3 /gdbus/server-auth/tcp # SKIP Testing interop with libdbus not supported
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/anonymous/.dirs/runtime
# Testing GDBus server at unix:dir=/var/volatile/tmp/gdbus-server-auth-0ZT572 / libdbus client, with flags: external:false anonymous:true sha1:false abstract:false tcp:false
# Connectable address: unix:path=/var/volatile/tmp/gdbus-server-auth-0ZT572/dbus-WY0SF9L0
# GLib-GIO-DEBUG: Accepting ANONYMOUS authentication
# GLib-GIO-DEBUG: Rejecting "DBUS_COOKIE_SHA1" authentication: not ANONYMOUS
# GLib-GIO-DEBUG: Rejecting "EXTERNAL" authentication: not ANONYMOUS
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: Server says GDBus client is uid 1000, pid 9758
ok 4 /gdbus/server-auth/anonymous # SKIP Testing interop with libdbus not supported
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/external/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/external/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/external/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/external/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/external/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/external/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/external/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/external/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/external/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/external/.dirs/runtime
# Testing GDBus server at unix:dir=/var/volatile/tmp/gdbus-server-auth-V4Z572 / libdbus client, with flags: external:true anonymous:false sha1:false abstract:false tcp:false
# Connectable address: unix:path=/var/volatile/tmp/gdbus-server-auth-V4Z572/dbus-91WPXBgQ
# GLib-GIO-DEBUG: Rejecting "ANONYMOUS" authentication: not EXTERNAL
# GLib-GIO-DEBUG: Rejecting "DBUS_COOKIE_SHA1" authentication: not EXTERNAL
# GLib-GIO-DEBUG: Accepting EXTERNAL authentication
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: Server says GDBus client is uid 1000, pid 9758
ok 5 /gdbus/server-auth/external # SKIP Testing interop with libdbus not supported
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/sha1/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/sha1/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/sha1/.dirs/runtime
# Testing GDBus server at unix:dir=/var/volatile/tmp/gdbus-server-auth-013572 / libdbus client, with flags: external:false anonymous:false sha1:true abstract:false tcp:false
# Connectable address: unix:path=/var/volatile/tmp/gdbus-server-auth-013572/dbus-SPposwU1
# GLib-GIO-DEBUG: Rejecting "ANONYMOUS" authentication: not DBUS_COOKIE_SHA1
# GLib-GIO-DEBUG: Accepting DBUS_COOKIE_SHA1 authentication
# GLib-GIO-DEBUG: Rejecting "EXTERNAL" authentication: not DBUS_COOKIE_SHA1
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: Server says GDBus client is uid 1000, pid 9758
ok 6 /gdbus/server-auth/sha1 # SKIP Testing interop with libdbus not supported
# Start of anonymous tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/anonymous/tcp/.dirs/runtime
# Testing GDBus server at tcp:host=127.0.0.1 / libdbus client, with flags: external:false anonymous:true sha1:false abstract:false tcp:true
# Connectable address: tcp:host=127.0.0.1,port=46405
# GLib-GIO-DEBUG: Accepting ANONYMOUS authentication
# GLib-GIO-DEBUG: Rejecting "DBUS_COOKIE_SHA1" authentication: not ANONYMOUS
# GLib-GIO-DEBUG: Rejecting "EXTERNAL" authentication: not ANONYMOUS
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=0
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=0
# GLib-GIO-DEBUG: Server says GDBus client is uid 4294967295, pid -1
ok 7 /gdbus/server-auth/anonymous/tcp # SKIP Testing interop with libdbus not supported
# End of anonymous tests
# Start of external tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/external/require-same-user/.dirs/runtime
# Testing GDBus server at unix:dir=/var/volatile/tmp/gdbus-server-auth-I00772 / libdbus client, with flags: external:true anonymous:false sha1:false abstract:false tcp:false
# Connectable address: unix:path=/var/volatile/tmp/gdbus-server-auth-I00772/dbus-mJqj3dY9
# GLib-GIO-DEBUG: Rejecting "ANONYMOUS" authentication: not EXTERNAL
# GLib-GIO-DEBUG: Rejecting "DBUS_COOKIE_SHA1" authentication: not EXTERNAL
# GLib-GIO-DEBUG: Accepting EXTERNAL authentication
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=9758,uid=1000,gid=1000
# GLib-GIO-DEBUG: Server says GDBus client is uid 1000, pid 9758
ok 8 /gdbus/server-auth/external/require-same-user # SKIP Testing interop with libdbus not supported
# End of external tests
# Start of sha1 tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/system-config1:/var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/system-data1:/var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/server-auth/sha1/tcp/.dirs/runtime
# Testing GDBus server at tcp:host=127.0.0.1 / libdbus client, with flags: external:false anonymous:false sha1:true abstract:false tcp:true
# Connectable address: tcp:host=127.0.0.1,port=38941
# GLib-GIO-DEBUG: Rejecting "ANONYMOUS" authentication: not DBUS_COOKIE_SHA1
# GLib-GIO-DEBUG: Accepting DBUS_COOKIE_SHA1 authentication
# GLib-GIO-DEBUG: Rejecting "EXTERNAL" authentication: not DBUS_COOKIE_SHA1
# GLib-GIO-DEBUG: Authorizing peer with credentials: GCredentials:linux-ucred:pid=0
# GLib-GIO-DEBUG: New connection from peer with credentials: GCredentials:linux-ucred:pid=0
# GLib-GIO-DEBUG: Server says GDBus client is uid 4294967295, pid -1
ok 9 /gdbus/server-auth/sha1/tcp # SKIP Testing interop with libdbus not supported
# End of sha1 tests
# End of server-auth tests
# End of gdbus tests
PASS: glib/gdbus-server-auth.test
Running test: glib/permission.test
TAP version 14
# random seed: R02Sf4cd1013e7b2c62543a398b6d33a96f4
1..1
# Start of permission tests
ok 1 /permission/simple
# End of permission tests
PASS: glib/permission.test
Running test: glib/giomodule.test
TAP version 14
# random seed: R02Se12a59fd5086f19b39751364700ebc82
1..3
# Start of giomodule tests
ok 1 /giomodule/extension-point
ok 2 /giomodule/module-scan-all
ok 3 /giomodule/module-scan-all-with-scope
# End of giomodule tests
PASS: glib/giomodule.test
Running test: glib/objects-refcount2.test
TAP version 14
# random seed: R02S5ca2cdf85ebae2dd9f221956efa97863
1..1
# Start of gobject tests
# Start of refcount tests
# init 0x55556cbe4b70
# 
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/objects-refcount2.test
# .
# .
# .
# .
# dispose 0x55556cbe4b70!
# 
ok 1 /gobject/refcount/object-advanced
# slow test /gobject/refcount/object-advanced executed in 76.97 secs
# End of refcount tests
# End of gobject tests
PASS: glib/objects-refcount2.test
Running test: glib/completion.test
TAP version 14
# random seed: R02Sb25438c967403b64b64edcbf91e5f224
1..1
# Start of completion tests
ok 1 /completion/test-completion
# End of completion tests
PASS: glib/completion.test
Running test: glib/memchunk.test
TAP version 14
# random seed: R02Sa2391086b48f48b486ef3b04396b11b2
1..1
# Start of memchunk tests
ok 1 /memchunk/basic
# End of memchunk tests
PASS: glib/memchunk.test
Running test: glib/onceinit.test
TAP version 14
# random seed: R02S8efaf5030ba12e05a56f672a4588caba
1..1
# Start of thread tests
ok 1 /thread/onceinit
# End of thread tests
PASS: glib/onceinit.test
Running test: glib/fileattributematcher.test
TAP version 14
# random seed: R02Sca99d7678bdc92918930d862e26e8d0e
1..3
# Start of fileattributematcher tests
ok 1 /fileattributematcher/exact
ok 2 /fileattributematcher/equality
ok 3 /fileattributematcher/subtract
# End of fileattributematcher tests
PASS: glib/fileattributematcher.test
Running test: glib/power-profile-monitor-dbus.test
TAP version 13
ok 1 __main__.TestPowerProfileMonitor.test_power_profile_power_saver_enabled
1..1
PASS: glib/power-profile-monitor-dbus.test
Running test: glib/regex.test
TAP version 14
# random seed: R02Sce8879cebcc24c9dfe575185d5640591
1..848
# Start of regex tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 1 /regex/properties
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 2 /regex/class
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 3 /regex/lookahead
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 4 /regex/lookbehind
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 5 /regex/subpattern
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 6 /regex/condition
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 7 /regex/recursion
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=640489
ok 8 /regex/multiline
ok 9 /regex/explicit-crlf
ok 10 /regex/max-lookbehind
ok 11 /regex/compile-errors
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 12 /regex/jit-unsupported-matching
# /regex/unmatched-named-subpattern summary: Test that unmatched subpatterns can still be queried
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2881
ok 13 /regex/unmatched-named-subpattern
# /regex/compiled-regex-after-jit-failure summary: Test that failed OPTIMIZE regex doesn't cause issues on subsequent matches
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2824
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
Executing: glib/regex.test
ok 14 /regex/compiled-regex-after-jit-failure
# slow test /regex/compiled-regex-after-jit-failure executed in 0.67 secs
# Start of new tests
ok 15 /regex/new/1
ok 16 /regex/new/2
ok 17 /regex/new/3
ok 18 /regex/new/4
ok 19 /regex/new/5
ok 20 /regex/new/6
ok 21 /regex/new/7
ok 22 /regex/new/8
ok 23 /regex/new/9
ok 24 /regex/new/10
ok 25 /regex/new/11
ok 26 /regex/new/12
ok 27 /regex/new/13
ok 28 /regex/new/14
ok 29 /regex/new/15
ok 30 /regex/new/16
ok 31 /regex/new/17
ok 32 /regex/new/18
ok 33 /regex/new/19
ok 34 /regex/new/71
ok 35 /regex/new/80
ok 36 /regex/new/82
# End of new tests
# Start of new-check-flags tests
ok 37 /regex/new-check-flags/20
ok 38 /regex/new-check-flags/21
ok 39 /regex/new-check-flags/22
ok 40 /regex/new-check-flags/23
ok 41 /regex/new-check-flags/24
ok 42 /regex/new-check-flags/25
ok 43 /regex/new-check-flags/26
ok 44 /regex/new-check-flags/27
ok 45 /regex/new-check-flags/28
ok 46 /regex/new-check-flags/29
ok 47 /regex/new-check-flags/30
ok 48 /regex/new-check-flags/31
ok 49 /regex/new-check-flags/32
ok 50 /regex/new-check-flags/33
ok 51 /regex/new-check-flags/34
ok 52 /regex/new-check-flags/35
ok 53 /regex/new-check-flags/36
# End of new-check-flags tests
# Start of new-fail tests
ok 54 /regex/new-fail/37
ok 55 /regex/new-fail/38
ok 56 /regex/new-fail/39
ok 57 /regex/new-fail/40
ok 58 /regex/new-fail/41
ok 59 /regex/new-fail/42
ok 60 /regex/new-fail/43
ok 61 /regex/new-fail/44
ok 62 /regex/new-fail/45
ok 63 /regex/new-fail/46
ok 64 /regex/new-fail/47
ok 65 /regex/new-fail/48
ok 66 /regex/new-fail/49
ok 67 /regex/new-fail/50
ok 68 /regex/new-fail/51
ok 69 /regex/new-fail/52
ok 70 /regex/new-fail/53
ok 71 /regex/new-fail/54
ok 72 /regex/new-fail/55
ok 73 /regex/new-fail/56
ok 74 /regex/new-fail/57
ok 75 /regex/new-fail/58
ok 76 /regex/new-fail/59
ok 77 /regex/new-fail/60
ok 78 /regex/new-fail/61
ok 79 /regex/new-fail/62
ok 80 /regex/new-fail/63
ok 81 /regex/new-fail/64
ok 82 /regex/new-fail/65
ok 83 /regex/new-fail/66
ok 84 /regex/new-fail/67
ok 85 /regex/new-fail/68
ok 86 /regex/new-fail/69
ok 87 /regex/new-fail/70
ok 88 /regex/new-fail/72
ok 89 /regex/new-fail/73
ok 90 /regex/new-fail/74
ok 91 /regex/new-fail/75
ok 92 /regex/new-fail/76
ok 93 /regex/new-fail/77
ok 94 /regex/new-fail/78
ok 95 /regex/new-fail/79
ok 96 /regex/new-fail/81
ok 97 /regex/new-fail/83
ok 98 /regex/new-fail/84
ok 99 /regex/new-fail/85
ok 100 /regex/new-fail/86
ok 101 /regex/new-fail/87
ok 102 /regex/new-fail/88
ok 103 /regex/new-fail/89
ok 104 /regex/new-fail/90
ok 105 /regex/new-fail/91
# End of new-fail tests
# Start of match-simple tests
ok 106 /regex/match-simple/92
ok 107 /regex/match-simple/93
ok 108 /regex/match-simple/94
ok 109 /regex/match-simple/95
ok 110 /regex/match-simple/96
ok 111 /regex/match-simple/97
ok 112 /regex/match-simple/98
ok 113 /regex/match-simple/99
ok 114 /regex/match-simple/100
ok 115 /regex/match-simple/101
ok 116 /regex/match-simple/102
ok 117 /regex/match-simple/103
ok 118 /regex/match-simple/104
ok 119 /regex/match-simple/105
ok 120 /regex/match-simple/106
ok 121 /regex/match-simple/107
ok 122 /regex/match-simple/108
ok 123 /regex/match-simple/109
ok 124 /regex/match-simple/110
ok 125 /regex/match-simple/111
ok 126 /regex/match-simple/112
ok 127 /regex/match-simple/113
ok 128 /regex/match-simple/114
ok 129 /regex/match-simple/115
ok 130 /regex/match-simple/116
ok 131 /regex/match-simple/117
ok 132 /regex/match-simple/118
ok 133 /regex/match-simple/119
ok 134 /regex/match-simple/120
ok 135 /regex/match-simple/121
ok 136 /regex/match-simple/122
ok 137 /regex/match-simple/123
ok 138 /regex/match-simple/124
ok 139 /regex/match-simple/125
ok 140 /regex/match-simple/126
ok 141 /regex/match-simple/127
ok 142 /regex/match-simple/128
ok 143 /regex/match-simple/129
ok 144 /regex/match-simple/130
ok 145 /regex/match-simple/131
ok 146 /regex/match-simple/132
ok 147 /regex/match-simple/133
ok 148 /regex/match-simple/134
ok 149 /regex/match-simple/135
ok 150 /regex/match-simple/136
ok 151 /regex/match-simple/137
ok 152 /regex/match-simple/138
ok 153 /regex/match-simple/139
ok 154 /regex/match-simple/140
ok 155 /regex/match-simple/141
ok 156 /regex/match-simple/142
ok 157 /regex/match-simple/143
ok 158 /regex/match-simple/144
ok 159 /regex/match-simple/145
ok 160 /regex/match-simple/146
ok 161 /regex/match-simple/147
ok 162 /regex/match-simple/148
ok 163 /regex/match-simple/149
ok 164 /regex/match-simple/150
ok 165 /regex/match-simple/151
ok 166 /regex/match-simple/152
ok 167 /regex/match-simple/153
ok 168 /regex/match-simple/154
ok 169 /regex/match-simple/155
ok 170 /regex/match-simple/156
ok 171 /regex/match-simple/157
ok 172 /regex/match-simple/158
ok 173 /regex/match-simple/159
ok 174 /regex/match-simple/160
ok 175 /regex/match-simple/161
ok 176 /regex/match-simple/162
ok 177 /regex/match-simple/163
ok 178 /regex/match-simple/164
# End of match-simple tests
# Start of match-simple-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 179 /regex/match-simple-optimized/92
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 180 /regex/match-simple-optimized/93
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 181 /regex/match-simple-optimized/94
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 182 /regex/match-simple-optimized/95
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 183 /regex/match-simple-optimized/96
ok 184 /regex/match-simple-optimized/97
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 185 /regex/match-simple-optimized/98
ok 186 /regex/match-simple-optimized/99
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 187 /regex/match-simple-optimized/100
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 188 /regex/match-simple-optimized/101
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 189 /regex/match-simple-optimized/102
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 190 /regex/match-simple-optimized/103
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 191 /regex/match-simple-optimized/104
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 192 /regex/match-simple-optimized/105
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 193 /regex/match-simple-optimized/106
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 194 /regex/match-simple-optimized/107
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 195 /regex/match-simple-optimized/108
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 196 /regex/match-simple-optimized/109
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 197 /regex/match-simple-optimized/110
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 198 /regex/match-simple-optimized/111
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 199 /regex/match-simple-optimized/112
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 200 /regex/match-simple-optimized/113
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 201 /regex/match-simple-optimized/114
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 202 /regex/match-simple-optimized/115
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 203 /regex/match-simple-optimized/116
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 204 /regex/match-simple-optimized/117
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 205 /regex/match-simple-optimized/118
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 206 /regex/match-simple-optimized/119
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 207 /regex/match-simple-optimized/120
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 208 /regex/match-simple-optimized/121
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 209 /regex/match-simple-optimized/122
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 210 /regex/match-simple-optimized/123
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 211 /regex/match-simple-optimized/124
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 212 /regex/match-simple-optimized/125
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 213 /regex/match-simple-optimized/126
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 214 /regex/match-simple-optimized/127
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 215 /regex/match-simple-optimized/128
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 216 /regex/match-simple-optimized/129
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 217 /regex/match-simple-optimized/130
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 218 /regex/match-simple-optimized/131
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 219 /regex/match-simple-optimized/132
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 220 /regex/match-simple-optimized/133
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 221 /regex/match-simple-optimized/134
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 222 /regex/match-simple-optimized/135
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 223 /regex/match-simple-optimized/136
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 224 /regex/match-simple-optimized/137
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 225 /regex/match-simple-optimized/138
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 226 /regex/match-simple-optimized/139
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 227 /regex/match-simple-optimized/140
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 228 /regex/match-simple-optimized/141
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 229 /regex/match-simple-optimized/142
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 230 /regex/match-simple-optimized/143
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 231 /regex/match-simple-optimized/144
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 232 /regex/match-simple-optimized/145
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 233 /regex/match-simple-optimized/146
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 234 /regex/match-simple-optimized/147
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 235 /regex/match-simple-optimized/148
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 236 /regex/match-simple-optimized/149
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 237 /regex/match-simple-optimized/150
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 238 /regex/match-simple-optimized/151
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 239 /regex/match-simple-optimized/152
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 240 /regex/match-simple-optimized/153
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 241 /regex/match-simple-optimized/154
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 242 /regex/match-simple-optimized/155
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 243 /regex/match-simple-optimized/156
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 244 /regex/match-simple-optimized/157
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 245 /regex/match-simple-optimized/158
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 246 /regex/match-simple-optimized/159
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 247 /regex/match-simple-optimized/160
ok 248 /regex/match-simple-optimized/161
ok 249 /regex/match-simple-optimized/162
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 250 /regex/match-simple-optimized/163
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 251 /regex/match-simple-optimized/164
# End of match-simple-optimized tests
# Start of match tests
ok 252 /regex/match/165
ok 253 /regex/match/166
ok 254 /regex/match/167
ok 255 /regex/match/168
ok 256 /regex/match/169
ok 257 /regex/match/170
ok 258 /regex/match/171
ok 259 /regex/match/172
ok 260 /regex/match/173
ok 261 /regex/match/174
ok 262 /regex/match/175
ok 263 /regex/match/176
ok 264 /regex/match/177
ok 265 /regex/match/178
ok 266 /regex/match/179
ok 267 /regex/match/180
ok 268 /regex/match/181
ok 269 /regex/match/182
ok 270 /regex/match/183
ok 271 /regex/match/184
ok 272 /regex/match/185
ok 273 /regex/match/186
ok 274 /regex/match/187
ok 275 /regex/match/188
ok 276 /regex/match/189
ok 277 /regex/match/190
ok 278 /regex/match/191
ok 279 /regex/match/192
ok 280 /regex/match/193
ok 281 /regex/match/194
ok 282 /regex/match/195
ok 283 /regex/match/196
ok 284 /regex/match/197
ok 285 /regex/match/198
ok 286 /regex/match/199
ok 287 /regex/match/200
ok 288 /regex/match/201
ok 289 /regex/match/202
ok 290 /regex/match/203
ok 291 /regex/match/204
ok 292 /regex/match/205
ok 293 /regex/match/206
ok 294 /regex/match/207
ok 295 /regex/match/208
ok 296 /regex/match/209
ok 297 /regex/match/210
ok 298 /regex/match/211
ok 299 /regex/match/212
ok 300 /regex/match/213
ok 301 /regex/match/214
ok 302 /regex/match/215
ok 303 /regex/match/216
ok 304 /regex/match/217
ok 305 /regex/match/218
ok 306 /regex/match/219
ok 307 /regex/match/220
ok 308 /regex/match/221
ok 309 /regex/match/222
ok 310 /regex/match/223
ok 311 /regex/match/224
ok 312 /regex/match/225
ok 313 /regex/match/226
ok 314 /regex/match/227
ok 315 /regex/match/228
ok 316 /regex/match/229
ok 317 /regex/match/230
ok 318 /regex/match/231
ok 319 /regex/match/232
ok 320 /regex/match/233
ok 321 /regex/match/234
ok 322 /regex/match/235
ok 323 /regex/match/236
ok 324 /regex/match/237
ok 325 /regex/match/238
ok 326 /regex/match/239
ok 327 /regex/match/240
ok 328 /regex/match/241
ok 329 /regex/match/242
ok 330 /regex/match/243
ok 331 /regex/match/244
ok 332 /regex/match/245
ok 333 /regex/match/246
ok 334 /regex/match/partial281
ok 335 /regex/match/partial282
ok 336 /regex/match/partial283
ok 337 /regex/match/partial284
ok 338 /regex/match/partial285
ok 339 /regex/match/partial286
ok 340 /regex/match/partial287
ok 341 /regex/match/partial288
ok 342 /regex/match/partial289
ok 343 /regex/match/partial290
ok 344 /regex/match/partial291
ok 345 /regex/match/partial292
ok 346 /regex/match/partial293
ok 347 /regex/match/partial294
ok 348 /regex/match/partial295
ok 349 /regex/match/partial296
ok 350 /regex/match/partial297
ok 351 /regex/match/partial298
ok 352 /regex/match/partial299
ok 353 /regex/match/partial300
ok 354 /regex/match/partial301
ok 355 /regex/match/partial302
# Start of next0 tests
ok 356 /regex/match/next0/247
ok 357 /regex/match/next0/248
ok 358 /regex/match/next0/249
ok 359 /regex/match/next0/250
# End of next0 tests
# Start of next1 tests
ok 360 /regex/match/next1/251
ok 361 /regex/match/next1/252
ok 362 /regex/match/next1/253
ok 363 /regex/match/next1/254
ok 364 /regex/match/next1/255
# End of next1 tests
# Start of next2 tests
ok 365 /regex/match/next2/256
ok 366 /regex/match/next2/257
ok 367 /regex/match/next2/258
ok 368 /regex/match/next2/259
ok 369 /regex/match/next2/260
ok 370 /regex/match/next2/261
ok 371 /regex/match/next2/262
ok 372 /regex/match/next2/263
# End of next2 tests
# Start of next3 tests
ok 373 /regex/match/next3/264
ok 374 /regex/match/next3/265
ok 375 /regex/match/next3/266
ok 376 /regex/match/next3/267
ok 377 /regex/match/next3/268
ok 378 /regex/match/next3/269
# End of next3 tests
# Start of next4 tests
ok 379 /regex/match/next4/270
# End of next4 tests
# Start of count tests
ok 380 /regex/match/count/271
ok 381 /regex/match/count/272
ok 382 /regex/match/count/273
ok 383 /regex/match/count/274
ok 384 /regex/match/count/275
ok 385 /regex/match/count/276
ok 386 /regex/match/count/277
ok 387 /regex/match/count/278
ok 388 /regex/match/count/279
ok 389 /regex/match/count/280
# End of count tests
# Start of count-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 390 /regex/match/count-optimized/271
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 391 /regex/match/count-optimized/272
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 392 /regex/match/count-optimized/273
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 393 /regex/match/count-optimized/274
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 394 /regex/match/count-optimized/275
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 395 /regex/match/count-optimized/276
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 396 /regex/match/count-optimized/277
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 397 /regex/match/count-optimized/278
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 398 /regex/match/count-optimized/279
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 399 /regex/match/count-optimized/280
# End of count-optimized tests
# Start of partial-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 400 /regex/match/partial-optimized/281
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 401 /regex/match/partial-optimized/282
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 402 /regex/match/partial-optimized/283
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 403 /regex/match/partial-optimized/284
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 404 /regex/match/partial-optimized/285
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 405 /regex/match/partial-optimized/286
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 406 /regex/match/partial-optimized/287
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 407 /regex/match/partial-optimized/288
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 408 /regex/match/partial-optimized/289
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 409 /regex/match/partial-optimized/290
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 410 /regex/match/partial-optimized/291
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 411 /regex/match/partial-optimized/292
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 412 /regex/match/partial-optimized/293
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 413 /regex/match/partial-optimized/294
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 414 /regex/match/partial-optimized/295
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 415 /regex/match/partial-optimized/296
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 416 /regex/match/partial-optimized/297
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 417 /regex/match/partial-optimized/298
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 418 /regex/match/partial-optimized/299
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 419 /regex/match/partial-optimized/300
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 420 /regex/match/partial-optimized/301
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 421 /regex/match/partial-optimized/302
# End of partial-optimized tests
# Start of subpattern tests
ok 422 /regex/match/subpattern/303
ok 423 /regex/match/subpattern/304
ok 424 /regex/match/subpattern/305
ok 425 /regex/match/subpattern/306
ok 426 /regex/match/subpattern/307
ok 427 /regex/match/subpattern/308
ok 428 /regex/match/subpattern/309
ok 429 /regex/match/subpattern/310
ok 430 /regex/match/subpattern/311
ok 431 /regex/match/subpattern/312
ok 432 /regex/match/subpattern/313
ok 433 /regex/match/subpattern/314
ok 434 /regex/match/subpattern/315
# Start of named tests
# Start of dupnames tests
ok 435 /regex/match/subpattern/named/dupnames/325
ok 436 /regex/match/subpattern/named/dupnames/326
ok 437 /regex/match/subpattern/named/dupnames/327
ok 438 /regex/match/subpattern/named/dupnames/328
ok 439 /regex/match/subpattern/named/dupnames/329
# End of dupnames tests
# End of named tests
# End of subpattern tests
# Start of subpattern-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 440 /regex/match/subpattern-optimized/303
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 441 /regex/match/subpattern-optimized/304
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 442 /regex/match/subpattern-optimized/305
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 443 /regex/match/subpattern-optimized/306
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 444 /regex/match/subpattern-optimized/307
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 445 /regex/match/subpattern-optimized/308
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 446 /regex/match/subpattern-optimized/309
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 447 /regex/match/subpattern-optimized/310
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 448 /regex/match/subpattern-optimized/311
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 449 /regex/match/subpattern-optimized/312
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 450 /regex/match/subpattern-optimized/313
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 451 /regex/match/subpattern-optimized/314
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 452 /regex/match/subpattern-optimized/315
# End of subpattern-optimized tests
# Start of named tests
# Start of subpattern tests
ok 453 /regex/match/named/subpattern/316
ok 454 /regex/match/named/subpattern/317
ok 455 /regex/match/named/subpattern/318
ok 456 /regex/match/named/subpattern/319
ok 457 /regex/match/named/subpattern/320
ok 458 /regex/match/named/subpattern/321
ok 459 /regex/match/named/subpattern/322
ok 460 /regex/match/named/subpattern/323
ok 461 /regex/match/named/subpattern/324
ok 462 /regex/match/named/subpattern/330
ok 463 /regex/match/named/subpattern/331
ok 464 /regex/match/named/subpattern/332
ok 465 /regex/match/named/subpattern/333
ok 466 /regex/match/named/subpattern/334
# End of subpattern tests
# End of named tests
# End of match tests
# Start of match-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 467 /regex/match-optimized/165
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 468 /regex/match-optimized/166
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 469 /regex/match-optimized/167
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 470 /regex/match-optimized/168
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 471 /regex/match-optimized/169
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 472 /regex/match-optimized/170
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 473 /regex/match-optimized/171
ok 474 /regex/match-optimized/172
ok 475 /regex/match-optimized/173
ok 476 /regex/match-optimized/174
ok 477 /regex/match-optimized/175
ok 478 /regex/match-optimized/176
ok 479 /regex/match-optimized/177
ok 480 /regex/match-optimized/178
ok 481 /regex/match-optimized/179
ok 482 /regex/match-optimized/180
ok 483 /regex/match-optimized/181
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 484 /regex/match-optimized/182
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 485 /regex/match-optimized/183
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 486 /regex/match-optimized/184
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 487 /regex/match-optimized/185
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 488 /regex/match-optimized/186
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 489 /regex/match-optimized/187
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 490 /regex/match-optimized/188
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 491 /regex/match-optimized/189
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 492 /regex/match-optimized/190
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 493 /regex/match-optimized/191
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 494 /regex/match-optimized/192
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 495 /regex/match-optimized/193
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 496 /regex/match-optimized/194
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 497 /regex/match-optimized/195
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 498 /regex/match-optimized/196
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 499 /regex/match-optimized/197
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 500 /regex/match-optimized/198
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 501 /regex/match-optimized/199
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 502 /regex/match-optimized/200
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 503 /regex/match-optimized/201
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 504 /regex/match-optimized/202
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 505 /regex/match-optimized/203
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 506 /regex/match-optimized/204
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 507 /regex/match-optimized/205
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 508 /regex/match-optimized/206
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 509 /regex/match-optimized/207
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 510 /regex/match-optimized/208
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 511 /regex/match-optimized/209
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 512 /regex/match-optimized/210
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 513 /regex/match-optimized/211
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 514 /regex/match-optimized/212
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 515 /regex/match-optimized/213
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 516 /regex/match-optimized/214
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 517 /regex/match-optimized/215
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 518 /regex/match-optimized/216
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 519 /regex/match-optimized/217
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 520 /regex/match-optimized/218
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 521 /regex/match-optimized/219
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 522 /regex/match-optimized/220
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 523 /regex/match-optimized/221
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 524 /regex/match-optimized/222
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 525 /regex/match-optimized/223
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 526 /regex/match-optimized/224
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 527 /regex/match-optimized/225
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 528 /regex/match-optimized/226
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 529 /regex/match-optimized/227
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 530 /regex/match-optimized/228
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 531 /regex/match-optimized/229
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 532 /regex/match-optimized/230
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 533 /regex/match-optimized/231
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 534 /regex/match-optimized/232
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 535 /regex/match-optimized/233
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 536 /regex/match-optimized/234
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 537 /regex/match-optimized/235
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 538 /regex/match-optimized/236
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 539 /regex/match-optimized/237
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 540 /regex/match-optimized/238
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 541 /regex/match-optimized/239
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 542 /regex/match-optimized/240
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 543 /regex/match-optimized/241
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 544 /regex/match-optimized/242
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 545 /regex/match-optimized/243
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 546 /regex/match-optimized/244
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 547 /regex/match-optimized/245
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 548 /regex/match-optimized/246
# End of match-optimized tests
# Start of fetch-all0 tests
ok 549 /regex/fetch-all0/335
ok 550 /regex/fetch-all0/336
# End of fetch-all0 tests
# Start of fetch-all1 tests
ok 551 /regex/fetch-all1/337
ok 552 /regex/fetch-all1/338
ok 553 /regex/fetch-all1/339
# End of fetch-all1 tests
# Start of fetch-all2 tests
ok 554 /regex/fetch-all2/340
ok 555 /regex/fetch-all2/341
ok 556 /regex/fetch-all2/342
# End of fetch-all2 tests
# Start of fetch-all3 tests
ok 557 /regex/fetch-all3/343
ok 558 /regex/fetch-all3/344
ok 559 /regex/fetch-all3/345
ok 560 /regex/fetch-all3/346
ok 561 /regex/fetch-all3/347
# End of fetch-all3 tests
# Start of split tests
# Start of simple0 tests
ok 562 /regex/split/simple0/348
ok 563 /regex/split/simple0/349
ok 564 /regex/split/simple0/364
ok 565 /regex/split/simple0/365
# End of simple0 tests
# Start of simple1 tests
ok 566 /regex/split/simple1/350
ok 567 /regex/split/simple1/351
# End of simple1 tests
# Start of simple2 tests
ok 568 /regex/split/simple2/352
ok 569 /regex/split/simple2/358
ok 570 /regex/split/simple2/360
# End of simple2 tests
# Start of simple3 tests
ok 571 /regex/split/simple3/353
ok 572 /regex/split/simple3/354
ok 573 /regex/split/simple3/355
ok 574 /regex/split/simple3/356
ok 575 /regex/split/simple3/357
ok 576 /regex/split/simple3/359
ok 577 /regex/split/simple3/361
ok 578 /regex/split/simple3/362
ok 579 /regex/split/simple3/363
# End of simple3 tests
# End of split tests
# Start of split0 tests
ok 580 /regex/split0/366
ok 581 /regex/split0/368
# End of split0 tests
# Start of full-split0 tests
ok 582 /regex/full-split0/367
ok 583 /regex/full-split0/369
ok 584 /regex/full-split0/370
ok 585 /regex/full-split0/371
ok 586 /regex/full-split0/372
# End of full-split0 tests
# Start of split1 tests
ok 587 /regex/split1/373
ok 588 /regex/split1/376
# End of split1 tests
# Start of full-split1 tests
ok 589 /regex/full-split1/374
ok 590 /regex/full-split1/375
ok 591 /regex/full-split1/377
ok 592 /regex/full-split1/378
ok 593 /regex/full-split1/404
# End of full-split1 tests
# Start of split2 tests
ok 594 /regex/split2/379
ok 595 /regex/split2/383
ok 596 /regex/split2/395
# End of split2 tests
# Start of full-split2 tests
ok 597 /regex/full-split2/380
ok 598 /regex/full-split2/381
ok 599 /regex/full-split2/382
ok 600 /regex/full-split2/384
ok 601 /regex/full-split2/396
ok 602 /regex/full-split2/399
ok 603 /regex/full-split2/405
# End of full-split2 tests
# Start of split3 tests
ok 604 /regex/split3/385
ok 605 /regex/split3/387
ok 606 /regex/split3/389
ok 607 /regex/split3/391
ok 608 /regex/split3/393
ok 609 /regex/split3/397
ok 610 /regex/split3/400
ok 611 /regex/split3/402
# End of split3 tests
# Start of full-split3 tests
ok 612 /regex/full-split3/386
ok 613 /regex/full-split3/388
ok 614 /regex/full-split3/390
ok 615 /regex/full-split3/392
ok 616 /regex/full-split3/394
ok 617 /regex/full-split3/398
ok 618 /regex/full-split3/401
ok 619 /regex/full-split3/403
ok 620 /regex/full-split3/406
ok 621 /regex/full-split3/407
# End of full-split3 tests
# Start of check-repacement tests
ok 622 /regex/check-repacement/408
ok 623 /regex/check-repacement/409
ok 624 /regex/check-repacement/410
ok 625 /regex/check-repacement/411
ok 626 /regex/check-repacement/412
ok 627 /regex/check-repacement/413
ok 628 /regex/check-repacement/414
ok 629 /regex/check-repacement/415
# End of check-repacement tests
# Start of expand tests
ok 630 /regex/expand/416
ok 631 /regex/expand/417
ok 632 /regex/expand/418
ok 633 /regex/expand/419
ok 634 /regex/expand/420
ok 635 /regex/expand/421
ok 636 /regex/expand/422
ok 637 /regex/expand/423
ok 638 /regex/expand/424
ok 639 /regex/expand/425
ok 640 /regex/expand/426
ok 641 /regex/expand/427
ok 642 /regex/expand/428
ok 643 /regex/expand/429
ok 644 /regex/expand/430
ok 645 /regex/expand/431
ok 646 /regex/expand/432
ok 647 /regex/expand/433
ok 648 /regex/expand/434
ok 649 /regex/expand/435
ok 650 /regex/expand/436
ok 651 /regex/expand/437
ok 652 /regex/expand/438
ok 653 /regex/expand/439
ok 654 /regex/expand/440
ok 655 /regex/expand/441
ok 656 /regex/expand/442
ok 657 /regex/expand/443
ok 658 /regex/expand/444
ok 659 /regex/expand/445
ok 660 /regex/expand/446
ok 661 /regex/expand/447
ok 662 /regex/expand/448
ok 663 /regex/expand/449
ok 664 /regex/expand/450
ok 665 /regex/expand/451
ok 666 /regex/expand/452
ok 667 /regex/expand/453
ok 668 /regex/expand/454
ok 669 /regex/expand/455
ok 670 /regex/expand/456
ok 671 /regex/expand/457
ok 672 /regex/expand/458
ok 673 /regex/expand/459
ok 674 /regex/expand/460
ok 675 /regex/expand/461
ok 676 /regex/expand/462
ok 677 /regex/expand/463
ok 678 /regex/expand/464
ok 679 /regex/expand/465
ok 680 /regex/expand/466
ok 681 /regex/expand/467
ok 682 /regex/expand/468
ok 683 /regex/expand/469
ok 684 /regex/expand/470
ok 685 /regex/expand/471
ok 686 /regex/expand/472
ok 687 /regex/expand/473
ok 688 /regex/expand/474
ok 689 /regex/expand/475
ok 690 /regex/expand/476
ok 691 /regex/expand/477
ok 692 /regex/expand/478
ok 693 /regex/expand/479
ok 694 /regex/expand/480
ok 695 /regex/expand/481
# End of expand tests
# Start of replace tests
ok 696 /regex/replace/482
ok 697 /regex/replace/483
ok 698 /regex/replace/484
ok 699 /regex/replace/485
ok 700 /regex/replace/486
ok 701 /regex/replace/487
ok 702 /regex/replace/488
ok 703 /regex/replace/489
ok 704 /regex/replace/490
ok 705 /regex/replace/491
ok 706 /regex/replace/492
ok 707 /regex/replace/493
ok 708 /regex/replace/494
ok 709 /regex/replace/495
ok 710 /regex/replace/496
ok 711 /regex/replace/497
ok 712 /regex/replace/498
ok 713 /regex/replace/499
ok 714 /regex/replace/500
ok 715 /regex/replace/501
ok 716 /regex/replace/502
ok 717 /regex/replace/503
ok 718 /regex/replace/504
ok 719 /regex/replace/505
ok 720 /regex/replace/506
ok 721 /regex/replace/507
ok 722 /regex/replace/508
ok 723 /regex/replace/509
# End of replace tests
# Start of replace-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 724 /regex/replace-optimized/482
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 725 /regex/replace-optimized/483
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 726 /regex/replace-optimized/484
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 727 /regex/replace-optimized/485
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 728 /regex/replace-optimized/486
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 729 /regex/replace-optimized/487
ok 730 /regex/replace-optimized/488
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 731 /regex/replace-optimized/489
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 732 /regex/replace-optimized/490
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 733 /regex/replace-optimized/491
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 734 /regex/replace-optimized/492
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 735 /regex/replace-optimized/493
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 736 /regex/replace-optimized/494
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 737 /regex/replace-optimized/495
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 738 /regex/replace-optimized/496
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 739 /regex/replace-optimized/497
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 740 /regex/replace-optimized/498
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 741 /regex/replace-optimized/499
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 742 /regex/replace-optimized/500
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 743 /regex/replace-optimized/501
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 744 /regex/replace-optimized/502
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 745 /regex/replace-optimized/503
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 746 /regex/replace-optimized/504
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 747 /regex/replace-optimized/505
ok 748 /regex/replace-optimized/506
ok 749 /regex/replace-optimized/507
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 750 /regex/replace-optimized/508
ok 751 /regex/replace-optimized/509
# End of replace-optimized tests
# Start of replace-literally tests
ok 752 /regex/replace-literally/510
ok 753 /regex/replace-literally/511
ok 754 /regex/replace-literally/512
ok 755 /regex/replace-literally/513
ok 756 /regex/replace-literally/514
ok 757 /regex/replace-literally/515
ok 758 /regex/replace-literally/516
ok 759 /regex/replace-literally/517
ok 760 /regex/replace-literally/518
ok 761 /regex/replace-literally/519
ok 762 /regex/replace-literally/520
ok 763 /regex/replace-literally/521
ok 764 /regex/replace-literally/522
ok 765 /regex/replace-literally/523
ok 766 /regex/replace-literally/524
ok 767 /regex/replace-literally/525
ok 768 /regex/replace-literally/526
ok 769 /regex/replace-literally/527
ok 770 /regex/replace-literally/528
ok 771 /regex/replace-literally/529
# End of replace-literally tests
# Start of string-number tests
ok 772 /regex/string-number/530
ok 773 /regex/string-number/531
ok 774 /regex/string-number/532
ok 775 /regex/string-number/533
ok 776 /regex/string-number/534
ok 777 /regex/string-number/535
ok 778 /regex/string-number/536
ok 779 /regex/string-number/537
ok 780 /regex/string-number/538
ok 781 /regex/string-number/539
ok 782 /regex/string-number/540
ok 783 /regex/string-number/541
ok 784 /regex/string-number/542
ok 785 /regex/string-number/543
ok 786 /regex/string-number/544
# End of string-number tests
# Start of escape_nul tests
ok 787 /regex/escape_nul/545
ok 788 /regex/escape_nul/546
ok 789 /regex/escape_nul/547
ok 790 /regex/escape_nul/548
ok 791 /regex/escape_nul/549
ok 792 /regex/escape_nul/550
ok 793 /regex/escape_nul/551
ok 794 /regex/escape_nul/552
ok 795 /regex/escape_nul/553
ok 796 /regex/escape_nul/554
ok 797 /regex/escape_nul/555
ok 798 /regex/escape_nul/556
ok 799 /regex/escape_nul/557
ok 800 /regex/escape_nul/558
ok 801 /regex/escape_nul/559
# End of escape_nul tests
# Start of escape tests
ok 802 /regex/escape/560
ok 803 /regex/escape/561
ok 804 /regex/escape/562
ok 805 /regex/escape/563
ok 806 /regex/escape/564
ok 807 /regex/escape/565
ok 808 /regex/escape/566
ok 809 /regex/escape/567
ok 810 /regex/escape/568
ok 811 /regex/escape/569
ok 812 /regex/escape/570
ok 813 /regex/escape/571
ok 814 /regex/escape/572
ok 815 /regex/escape/573
ok 816 /regex/escape/574
ok 817 /regex/escape/575
ok 818 /regex/escape/576
ok 819 /regex/escape/577
# End of escape tests
# Start of match-all0 tests
ok 820 /regex/match-all0/578
ok 821 /regex/match-all0/580
# End of match-all0 tests
# Start of match-all-full0 tests
ok 822 /regex/match-all-full0/579
ok 823 /regex/match-all-full0/581
ok 824 /regex/match-all-full0/582
ok 825 /regex/match-all-full0/583
# End of match-all-full0 tests
# Start of match-all1 tests
ok 826 /regex/match-all1/584
ok 827 /regex/match-all1/586
ok 828 /regex/match-all1/591
# End of match-all1 tests
# Start of match-all-full1 tests
ok 829 /regex/match-all-full1/585
ok 830 /regex/match-all-full1/587
ok 831 /regex/match-all-full1/588
ok 832 /regex/match-all-full1/589
ok 833 /regex/match-all-full1/590
ok 834 /regex/match-all-full1/592
# End of match-all-full1 tests
# Start of match-all2 tests
ok 835 /regex/match-all2/593
ok 836 /regex/match-all2/595
ok 837 /regex/match-all2/597
# End of match-all2 tests
# Start of match-all-full2 tests
ok 838 /regex/match-all-full2/594
ok 839 /regex/match-all-full2/596
ok 840 /regex/match-all-full2/598
# End of match-all-full2 tests
# Start of match-all3 tests
ok 841 /regex/match-all3/599
ok 842 /regex/match-all3/601
# End of match-all3 tests
# Start of match-all-full3 tests
ok 843 /regex/match-all-full3/600
ok 844 /regex/match-all-full3/602
# End of match-all-full3 tests
# Start of match-notempty tests
ok 845 /regex/match-notempty/603
# End of match-notempty tests
# Start of match-notempty-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 846 /regex/match-notempty-optimized/603
# End of match-notempty-optimized tests
# Start of match-notempty-atstart tests
ok 847 /regex/match-notempty-atstart/604
# End of match-notempty-atstart tests
# Start of match-notempty-atstart-optimized tests
# GLib-DEBUG: JIT compilation was requested with G_REGEX_OPTIMIZE, but JIT support is not available. Falling back to interpretive code.
ok 848 /regex/match-notempty-atstart-optimized/604
# End of match-notempty-atstart-optimized tests
# End of regex tests
PASS: glib/regex.test
Running test: glib/strfuncs.test
TAP version 14
# random seed: R02S8c2ef6070d953f17d6ba89bb97f41364
1..51
# Start of strfuncs tests
ok 1 /strfuncs/ascii-strcasecmp
ok 2 /strfuncs/ascii_strdown
ok 3 /strfuncs/ascii_strdup
ok 4 /strfuncs/ascii_strtod
ok 5 /strfuncs/bounds-check
ok 6 /strfuncs/has-prefix
ok 7 /strfuncs/has-prefix-macro
ok 8 /strfuncs/has-suffix
ok 9 /strfuncs/has-suffix-macro
ok 10 /strfuncs/memdup
ok 11 /strfuncs/memdup2
ok 12 /strfuncs/set_str
ok 13 /strfuncs/stpcpy
ok 14 /strfuncs/str_match_string
ok 15 /strfuncs/str_tokenize_and_fold
ok 16 /strfuncs/strcanon
ok 17 /strfuncs/strchomp
ok 18 /strfuncs/strchug
ok 19 /strfuncs/strcompress-strescape
ok 20 /strfuncs/strconcat
ok 21 /strfuncs/strdelimit
ok 22 /strfuncs/strdup
ok 23 /strfuncs/strdup-printf
ok 24 /strfuncs/strdupv
ok 25 /strfuncs/strerror
ok 26 /strfuncs/strip-context
ok 27 /strfuncs/strjoin
ok 28 /strfuncs/strjoinv
ok 29 /strfuncs/strlcat
ok 30 /strfuncs/strlcpy
ok 31 /strfuncs/strncasecmp
ok 32 /strfuncs/strndup
ok 33 /strfuncs/strnfill
ok 34 /strfuncs/strreverse
ok 35 /strfuncs/strsignal
ok 36 /strfuncs/strsplit
ok 37 /strfuncs/strsplit-set
ok 38 /strfuncs/strstr
ok 39 /strfuncs/strtod
ok 40 /strfuncs/strtoull-strtoll
ok 41 /strfuncs/strup
ok 42 /strfuncs/strv-contains
ok 43 /strfuncs/strv-equal
ok 44 /strfuncs/strv-length
ok 45 /strfuncs/test-is-to-digit
ok 46 /strfuncs/transliteration
# /strfuncs/str-equal summary: Test macro and function forms of g_str_equal()
ok 47 /strfuncs/str-equal
ok 48 /strfuncs/str-is-ascii
# Start of ascii-string-to-num tests
ok 49 /strfuncs/ascii-string-to-num/pathological
ok 50 /strfuncs/ascii-string-to-num/usual
# End of ascii-string-to-num tests
# Start of strdup tests
ok 51 /strfuncs/strdup/inline
# End of strdup tests
# End of strfuncs tests
PASS: glib/strfuncs.test
Running test: glib/throws.test
TAP version 14
# random seed: R02Sf72c65cd70f9944d1ddfc8e4ecf3f04a
1..3
# Start of throws tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/throws/invoke-gerror/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/throws/invoke-gerror/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/throws/invoke-gerror/.dirs/system-config1:/var/volatile/tmp/throws/invoke-gerror/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/throws/invoke-gerror/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/throws/invoke-gerror/.dirs/system-data1:/var/volatile/tmp/throws/invoke-gerror/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/throws/invoke-gerror/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/throws/invoke-gerror/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/throws/invoke-gerror/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /throws/invoke-gerror summary: Test invoking a function that throws a GError
ok 1 /throws/invoke-gerror
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/system-config1:/var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/system-data1:/var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/throws/vfunc-can-throw-gerror/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /throws/vfunc-can-throw-gerror summary: Test gi_callable_info_can_throw_gerror() on a vfunc
ok 2 /throws/vfunc-can-throw-gerror
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/system-config1:/var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/system-data1:/var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/throws/callback-can-throw-gerror/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /throws/callback-can-throw-gerror summary: Test gi_callable_info_can_throw_gerror() on a callback
ok 3 /throws/callback-can-throw-gerror
# End of throws tests
PASS: glib/throws.test
Running test: glib/testing.test
TAP version 14
# random seed: R02S8faadf7b7504533c9c8389d4b5f7e2d6
1..1
# Start of assert tests
ok 1 /assert/finalize_object
# Start of finalize_object tests
# Start of subprocess tests
# End of subprocess tests
# End of finalize_object tests
# End of assert tests
PASS: glib/testing.test
Running test: glib/atomic.test
TAP version 14
# random seed: R02Sc930c3cf30d31aa1c204170e9f933bd7
1..2
# Start of atomic tests
ok 1 /atomic/types
ok 2 /atomic/threaded
# End of atomic tests
PASS: glib/atomic.test
Running test: glib/static-link.test
Test disabled because GLIB_TEST_COMPILATION is not set in the env.
If you wish to run this test, set GLIB_TEST_COMPILATION=1 in the env,
and make sure you have glib build dependencies installed, including
meson.
SKIP: glib/static-link.test
Running test: glib/basic-signals.test
TAP version 14
# random seed: R02S603bf5539ea4bed57491c414f2632fd1
1..1
# Start of gobject tests
ok 1 /gobject/basic-signals
# End of gobject tests
PASS: glib/basic-signals.test
Running test: glib/genmarshal.py.test
TAP version 13
ok 1 __main__.TestGenmarshal.test_empty_list
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmpnr5rcb8w
# /tmp/tmpnr5rcb8w/tmpmxuqyjpk.list: 
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpnr5rcb8w/tmpmxuqyjpk.list', '--header', '--quiet']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifndef __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# #define __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# 
# #include <glib-object.h>
# 
# G_BEGIN_DECLS
# 
# 
# G_END_DECLS
# 
# #endif /* __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__ */
# Error:
#  
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpnr5rcb8w/tmpmxuqyjpk.list', '--body', '--quiet']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #include <glib-object.h>
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# Error:
ok 2 __main__.TestGenmarshal.test_help
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmpftoyg1pq
# Running: ['/usr/bin/glib-genmarshal', '--help']
# Return code: 0
# Output:
#  usage: glib-genmarshal [-h] [--prefix STRING] [--output FILE] [--skip-source]
#                        [--internal] [--valist-marshallers] [-v]
#                        [--g-fatal-warnings] [--include-header [HEADER]]
#                        [--pragma-once] [-D CPP_DEFINES] [-U CPP_UNDEFINES]
#                        [--prototypes] [--header] [--body] [--stdinc |
#                        --nostdinc] [--quiet | --verbose]
#                        [FILE ...]
# 
# Generate signal marshallers for GObject
# 
# positional arguments:
#   FILE                  Files with lists of marshallers to generate, or "-"
#                         for standard input
# 
# options:
#   -h, --help            show this help message and exit
#   --prefix STRING       Specify marshaller prefix
#   --output FILE         Write output into the specified file
#   --skip-source         Skip source location comments
#   --internal            Mark generated functions as internal
#   --valist-marshallers  Generate va_list marshallers
#   -v, --version         Print version information, and exit
#   --g-fatal-warnings    Make warnings fatal
#   --include-header [HEADER]
#                         Include the specified header in the body
#   --pragma-once         Use "pragma once" as the inclusion guard
#   -D CPP_DEFINES        Pre-processor define
#   -U CPP_UNDEFINES      Pre-processor undefine
#   --prototypes          Generate the marshallers prototype in the C code
#   --header              Generate C headers
#   --body                Generate C code
#   --stdinc              Include standard marshallers
#   --nostdinc            Use standard marshallers
#   --quiet               Only print warnings and errors
#   --verbose             Be verbose, and include debugging information
# Error:
ok 3 __main__.TestGenmarshal.test_no_args
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmp5l1qwf1y
# Running: ['/usr/bin/glib-genmarshal']
# Return code: 0
# Output:
#  
# Error:
Executing: glib/genmarshal.py.test
ok 4 __main__.TestGenmarshal.test_void_boolean
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmpzvvyx__p
# /tmp/tmpzvvyx__p/tmprpi9uas3.list: VOID:BOOLEAN
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpzvvyx__p/tmprpi9uas3.list', '--header', '--quiet']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifndef __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# #define __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# 
# #include <glib-object.h>
# 
# G_BEGIN_DECLS
# 
# /* VOID:BOOLEAN (/tmp/tmpzvvyx__p/tmprpi9uas3.list:1) */
# #define g_cclosure_user_marshal_VOID__BOOLEAN	g_cclosure_marshal_VOID__BOOLEAN
# 
# 
# G_END_DECLS
# 
# #endif /* __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__ */
# Error:
#  
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpzvvyx__p/tmprpi9uas3.list', '--body', '--quiet']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #include <glib-object.h>
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# Error:
ok 5 __main__.TestGenmarshal.test_void_boolean_int64
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmpyzs8y9iw
# /tmp/tmpyzs8y9iw/tmpgp7fntkh.list: VOID:BOOLEAN,INT64
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpyzs8y9iw/tmpgp7fntkh.list', '--header', '--quiet']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifndef __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# #define __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# 
# #include <glib-object.h>
# 
# G_BEGIN_DECLS
# 
# /* VOID:BOOLEAN,INT64 (/tmp/tmpyzs8y9iw/tmpgp7fntkh.list:1) */
# extern
# void g_cclosure_user_marshal_VOID__BOOLEAN_INT64 (GClosure     *closure,
#                                                   GValue       *return_value,
#                                                   guint         n_param_values,
#                                                   const GValue *param_values,
#                                                   gpointer      invocation_hint,
#                                                   gpointer      marshal_data);
# 
# 
# G_END_DECLS
# 
# #endif /* __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__ */
# Error:
#  
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpyzs8y9iw/tmpgp7fntkh.list', '--body', '--quiet']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #include <glib-object.h>
# 
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# /* VOID:BOOLEAN,INT64 (/tmp/tmpyzs8y9iw/tmpgp7fntkh.list:1) */
# void
# g_cclosure_user_marshal_VOID__BOOLEAN_INT64 (GClosure     *closure,
#                                              GValue       *return_value G_GNUC_UNUSED,
#                                              guint         n_param_values,
#                                              const GValue *param_values,
#                                              gpointer      invocation_hint G_GNUC_UNUSED,
#                                              gpointer      marshal_data)
# {
#   typedef void (*GMarshalFunc_VOID__BOOLEAN_INT64) (gpointer data1,
#                                                     gboolean arg1,
#                                                     gint64 arg2,
#                                                     gpointer data2);
#   GCClosure *cc = (GCClosure *) closure;
#   gpointer data1, data2;
#   GMarshalFunc_VOID__BOOLEAN_INT64 callback;
# 
#   g_return_if_fail (n_param_values == 3);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
#   callback = (GMarshalFunc_VOID__BOOLEAN_INT64) (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_boolean (param_values + 1),
#             g_marshal_value_peek_int64 (param_values + 2),
#             data2);
# }
# Error:
ok 6 __main__.TestGenmarshal.test_void_param_nostdinc
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmpeck2y1zh
# /tmp/tmpeck2y1zh/tmpsmnudxhx.list: VOID:PARAM
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpeck2y1zh/tmpsmnudxhx.list', '--header', '--quiet', '--nostdinc', '--valist-marshaller']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifndef __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# #define __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# 
# G_BEGIN_DECLS
# 
# /* VOID:PARAM (/tmp/tmpeck2y1zh/tmpsmnudxhx.list:1) */
# extern
# void g_cclosure_user_marshal_VOID__PARAM (GClosure     *closure,
#                                           GValue       *return_value,
#                                           guint         n_param_values,
#                                           const GValue *param_values,
#                                           gpointer      invocation_hint,
#                                           gpointer      marshal_data);
# extern
# void g_cclosure_user_marshal_VOID__PARAMv (GClosure *closure,
#                                            GValue   *return_value,
#                                            gpointer  instance,
#                                            va_list   args,
#                                            gpointer  marshal_data,
#                                            int       n_params,
#                                            GType    *param_types);
# 
# 
# G_END_DECLS
# 
# #endif /* __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__ */
# Error:
#  
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpeck2y1zh/tmpsmnudxhx.list', '--body', '--quiet', '--nostdinc', '--valist-marshaller']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# /* VOID:PARAM (/tmp/tmpeck2y1zh/tmpsmnudxhx.list:1) */
# void
# g_cclosure_user_marshal_VOID__PARAM (GClosure     *closure,
#                                      GValue       *return_value G_GNUC_UNUSED,
#                                      guint         n_param_values,
#                                      const GValue *param_values,
#                                      gpointer      invocation_hint G_GNUC_UNUSED,
#                                      gpointer      marshal_data)
# {
#   typedef void (*GMarshalFunc_VOID__PARAM) (gpointer data1,
#                                             gpointer arg1,
#                                             gpointer data2);
#   GCClosure *cc = (GCClosure *) closure;
#   gpointer data1, data2;
#   GMarshalFunc_VOID__PARAM callback;
# 
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
#   callback = (GMarshalFunc_VOID__PARAM) (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_param (param_values + 1),
#             data2);
# }
# 
# void
# g_cclosure_user_marshal_VOID__PARAMv (GClosure *closure,
#                                       GValue   *return_value G_GNUC_UNUSED,
#                                       gpointer  instance,
#                                       va_list   args,
#                                       gpointer  marshal_data,
#                                       int       n_params,
#                                       GType    *param_types)
# {
#   typedef void (*GMarshalFunc_VOID__PARAM) (gpointer data1,
#                                             gpointer arg1,
#                                             gpointer data2);
#   GCClosure *cc = (GCClosure *) closure;
#   gpointer data1, data2;
#   GMarshalFunc_VOID__PARAM callback;
#   gpointer arg0;
#   va_list args_copy;
# 
#   va_copy (args_copy, args);
#   arg0 = (gpointer) va_arg (args_copy, gpointer);
#   if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
#     arg0 = g_param_spec_ref (arg0);
#   va_end (args_copy);
# 
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = instance;
#     }
#   else
#     {
#       data1 = instance;
#       data2 = closure->data;
#     }
#   callback = (GMarshalFunc_VOID__PARAM) (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             arg0,
#             data2);
#   if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
#     g_param_spec_unref (arg0);
# }
# Error:
ok 7 __main__.TestGenmarshal.test_void_string_nostdinc
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmpevd94y03
# /tmp/tmpevd94y03/tmpe5pow7hu.list: VOID:STRING
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpevd94y03/tmpe5pow7hu.list', '--header', '--quiet', '--nostdinc', '--valist-marshaller']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifndef __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# #define __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# 
# G_BEGIN_DECLS
# 
# /* VOID:STRING (/tmp/tmpevd94y03/tmpe5pow7hu.list:1) */
# extern
# void g_cclosure_user_marshal_VOID__STRING (GClosure     *closure,
#                                            GValue       *return_value,
#                                            guint         n_param_values,
#                                            const GValue *param_values,
#                                            gpointer      invocation_hint,
#                                            gpointer      marshal_data);
# extern
# void g_cclosure_user_marshal_VOID__STRINGv (GClosure *closure,
#                                             GValue   *return_value,
#                                             gpointer  instance,
#                                             va_list   args,
#                                             gpointer  marshal_data,
#                                             int       n_params,
#                                             GType    *param_types);
# 
# 
# G_END_DECLS
# 
# #endif /* __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__ */
# Error:
#  
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpevd94y03/tmpe5pow7hu.list', '--body', '--quiet', '--nostdinc', '--valist-marshaller']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# /* VOID:STRING (/tmp/tmpevd94y03/tmpe5pow7hu.list:1) */
# void
# g_cclosure_user_marshal_VOID__STRING (GClosure     *closure,
#                                       GValue       *return_value G_GNUC_UNUSED,
#                                       guint         n_param_values,
#                                       const GValue *param_values,
#                                       gpointer      invocation_hint G_GNUC_UNUSED,
#                                       gpointer      marshal_data)
# {
#   typedef void (*GMarshalFunc_VOID__STRING) (gpointer data1,
#                                              gpointer arg1,
#                                              gpointer data2);
#   GCClosure *cc = (GCClosure *) closure;
#   gpointer data1, data2;
#   GMarshalFunc_VOID__STRING callback;
# 
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
#   callback = (GMarshalFunc_VOID__STRING) (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_string (param_values + 1),
#             data2);
# }
# 
# void
# g_cclosure_user_marshal_VOID__STRINGv (GClosure *closure,
#                                        GValue   *return_value G_GNUC_UNUSED,
#                                        gpointer  instance,
#                                        va_list   args,
#                                        gpointer  marshal_data,
#                                        int       n_params,
#                                        GType    *param_types)
# {
#   typedef void (*GMarshalFunc_VOID__STRING) (gpointer data1,
#                                              gpointer arg1,
#                                              gpointer data2);
#   GCClosure *cc = (GCClosure *) closure;
#   gpointer data1, data2;
#   GMarshalFunc_VOID__STRING callback;
#   gpointer arg0;
#   va_list args_copy;
# 
#   va_copy (args_copy, args);
#   arg0 = (gpointer) va_arg (args_copy, gpointer);
#   if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
#     arg0 = g_strdup (arg0);
#   va_end (args_copy);
# 
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = instance;
#     }
#   else
#     {
#       data1 = instance;
#       data2 = closure->data;
#     }
#   callback = (GMarshalFunc_VOID__STRING) (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             arg0,
#             data2);
#   if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
#     g_free (arg0);
# }
# Error:
Executing: glib/genmarshal.py.test
ok 8 __main__.TestGenmarshal.test_void_variant_nostdinc_valist_marshaller
# glib-genmarshal: /usr/bin/glib-genmarshal
# tmpdir: /tmp/tmpmk71wkji
# /tmp/tmpmk71wkji/tmp_tb4c0vg.list: VOID:VARIANT
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpmk71wkji/tmp_tb4c0vg.list', '--header', '--quiet', '--nostdinc', '--valist-marshaller']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifndef __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# #define __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__
# 
# G_BEGIN_DECLS
# 
# /* VOID:VARIANT (/tmp/tmpmk71wkji/tmp_tb4c0vg.list:1) */
# extern
# void g_cclosure_user_marshal_VOID__VARIANT (GClosure     *closure,
#                                             GValue       *return_value,
#                                             guint         n_param_values,
#                                             const GValue *param_values,
#                                             gpointer      invocation_hint,
#                                             gpointer      marshal_data);
# extern
# void g_cclosure_user_marshal_VOID__VARIANTv (GClosure *closure,
#                                              GValue   *return_value,
#                                              gpointer  instance,
#                                              va_list   args,
#                                              gpointer  marshal_data,
#                                              int       n_params,
#                                              GType    *param_types);
# 
# 
# G_END_DECLS
# 
# #endif /* __G_CCLOSURE_USER_MARSHAL_MARSHAL_H__ */
# Error:
#  
# Running: ['/usr/bin/glib-genmarshal', '/tmp/tmpmk71wkji/tmp_tb4c0vg.list', '--body', '--quiet', '--nostdinc', '--valist-marshaller']
# Return code: 0
# Output:
#  /* This file is generated by glib-genmarshal, do not modify it. This code is licensed under the same license as the containing project. Note that it links to GLib, so must comply with the LGPL linking clauses. */
# #ifdef G_ENABLE_DEBUG
# #define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
# #define g_marshal_value_peek_char(v)     g_value_get_schar (v)
# #define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
# #define g_marshal_value_peek_int(v)      g_value_get_int (v)
# #define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
# #define g_marshal_value_peek_long(v)     g_value_get_long (v)
# #define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
# #define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
# #define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
# #define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
# #define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
# #define g_marshal_value_peek_float(v)    g_value_get_float (v)
# #define g_marshal_value_peek_double(v)   g_value_get_double (v)
# #define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
# #define g_marshal_value_peek_param(v)    g_value_get_param (v)
# #define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
# #define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
# #define g_marshal_value_peek_object(v)   g_value_get_object (v)
# #define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
# #else /* !G_ENABLE_DEBUG */
# /* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
#  *          Do not access GValues directly in your code. Instead, use the
#  *          g_value_get_*() functions
#  */
# #define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
# #define g_marshal_value_peek_char(v)     (v)->data[0].v_int
# #define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
# #define g_marshal_value_peek_int(v)      (v)->data[0].v_int
# #define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
# #define g_marshal_value_peek_long(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
# #define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
# #define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
# #define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
# #define g_marshal_value_peek_float(v)    (v)->data[0].v_float
# #define g_marshal_value_peek_double(v)   (v)->data[0].v_double
# #define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
# #define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
# #define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
# #define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
# #endif /* !G_ENABLE_DEBUG */
# 
# /* VOID:VARIANT (/tmp/tmpmk71wkji/tmp_tb4c0vg.list:1) */
# void
# g_cclosure_user_marshal_VOID__VARIANT (GClosure     *closure,
#                                        GValue       *return_value G_GNUC_UNUSED,
#                                        guint         n_param_values,
#                                        const GValue *param_values,
#                                        gpointer      invocation_hint G_GNUC_UNUSED,
#                                        gpointer      marshal_data)
# {
#   typedef void (*GMarshalFunc_VOID__VARIANT) (gpointer data1,
#                                               gpointer arg1,
#                                               gpointer data2);
#   GCClosure *cc = (GCClosure *) closure;
#   gpointer data1, data2;
#   GMarshalFunc_VOID__VARIANT callback;
# 
#   g_return_if_fail (n_param_values == 2);
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = g_value_peek_pointer (param_values + 0);
#     }
#   else
#     {
#       data1 = g_value_peek_pointer (param_values + 0);
#       data2 = closure->data;
#     }
#   callback = (GMarshalFunc_VOID__VARIANT) (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             g_marshal_value_peek_variant (param_values + 1),
#             data2);
# }
# 
# void
# g_cclosure_user_marshal_VOID__VARIANTv (GClosure *closure,
#                                         GValue   *return_value G_GNUC_UNUSED,
#                                         gpointer  instance,
#                                         va_list   args,
#                                         gpointer  marshal_data,
#                                         int       n_params,
#                                         GType    *param_types)
# {
#   typedef void (*GMarshalFunc_VOID__VARIANT) (gpointer data1,
#                                               gpointer arg1,
#                                               gpointer data2);
#   GCClosure *cc = (GCClosure *) closure;
#   gpointer data1, data2;
#   GMarshalFunc_VOID__VARIANT callback;
#   gpointer arg0;
#   va_list args_copy;
# 
#   va_copy (args_copy, args);
#   arg0 = (gpointer) va_arg (args_copy, gpointer);
#   if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
#     arg0 = g_variant_ref_sink (arg0);
#   va_end (args_copy);
# 
# 
#   if (G_CCLOSURE_SWAP_DATA (closure))
#     {
#       data1 = closure->data;
#       data2 = instance;
#     }
#   else
#     {
#       data1 = instance;
#       data2 = closure->data;
#     }
#   callback = (GMarshalFunc_VOID__VARIANT) (marshal_data ? marshal_data : cc->callback);
# 
#   callback (data1,
#             arg0,
#             data2);
#   if ((param_types[0] & G_SIGNAL_TYPE_STATIC_SCOPE) == 0 && arg0 != NULL)
#     g_variant_unref (arg0);
# }
# Error:
1..8
PASS: glib/genmarshal.py.test
Running test: glib/qdata.test
TAP version 14
# random seed: R02Sd02290ca15afc558e01c10dec73a6922
1..2
# Start of qdata tests
ok 1 /qdata/threaded
# slow test /qdata/threaded executed in 0.72 secs
ok 2 /qdata/dup
# End of qdata tests
PASS: glib/qdata.test
Running test: glib/gi-compile-repository.py.test
TAP version 13
ok 1 __main__.TestGICompileRepository.test_open_failure
# gir path set to [PosixPath('/usr/share/gir-1.0'), PosixPath('/usr/share/gir-1.0')]
# gi-compile-repository: /usr/bin/gi-compile-repository
# tmpdir: /tmp/tmpjuetao1g
# Running: ['/usr/bin/gi-compile-repository', 'this-is/not/a-file.gir', '--output', '/tmp/tmpjuetao1g/invalid.typelib']
# Return code: 1
# Output:
#  
# Error:
#  Error parsing file ‘this-is/not/a-file.gir’: Failed to open file “this-is/not/a-file.gir”: No such file or directory
ok 2 __main__.TestGICompileRepositoryForGLib.test_compile
# gir path set to [PosixPath('/usr/share/gir-1.0'), PosixPath('/usr/share/gir-1.0')]
# gi-compile-repository: /usr/bin/gi-compile-repository
# tmpdir: /tmp/tmp3v1i2vvg
# Running: ['/usr/bin/gi-compile-repository', '/usr/share/gir-1.0/GLib-2.0.gir', '--output', '/tmp/tmp3v1i2vvg/GLib-2.typelib']
# Return code: 0
# Output:
#  
# Error:
ok 3 __main__.TestGICompileRepositoryForGLib.test_write_failure
# gi-compile-repository: /usr/bin/gi-compile-repository
# tmpdir: /tmp/tmp5n78ekkb
# Running: ['/usr/bin/gi-compile-repository', '/usr/share/gir-1.0/GLib-2.0.gir', '--output', 'this-is/not/a-good-output/invalid.typelib']
# Return code: 1
# Output:
#  
# Error:
#  Failed to open ‘this-is/not/a-good-output/invalid.typelib.tmp’: No such file or directory
Executing: glib/gi-compile-repository.py.test
ok 4 __main__.TestGICompileRepositoryForGObject.test_compile
# gir path set to [PosixPath('/usr/share/gir-1.0'), PosixPath('/usr/share/gir-1.0')]
# gi-compile-repository: /usr/bin/gi-compile-repository
# tmpdir: /tmp/tmp11prlc23
# Running: ['/usr/bin/gi-compile-repository', '/usr/share/gir-1.0/GObject-2.0.gir', '--output', '/tmp/tmp11prlc23/GObject-2.typelib', '--includedir', '/usr/share/gir-1.0', '--includedir', '/usr/share/gir-1.0']
# Return code: 0
# Output:
#  
# Error:
ok 5 __main__.TestGICompileRepositoryForGObject.test_write_failure
# gi-compile-repository: /usr/bin/gi-compile-repository
# tmpdir: /tmp/tmpldnj0ijq
# Running: ['/usr/bin/gi-compile-repository', '/usr/share/gir-1.0/GObject-2.0.gir', '--output', 'this-is/not/a-good-output/invalid.typelib', '--includedir', '/usr/share/gir-1.0', '--includedir', '/usr/share/gir-1.0']
# Return code: 1
# Output:
#  
# Error:
#  Failed to open ‘this-is/not/a-good-output/invalid.typelib.tmp’: No such file or directory
Executing: glib/gi-compile-repository.py.test
ok 6 __main__.TestGICompileRepositoryForGio.test_compile
# gir path set to [PosixPath('/usr/share/gir-1.0'), PosixPath('/usr/share/gir-1.0')]
# gi-compile-repository: /usr/bin/gi-compile-repository
# tmpdir: /tmp/tmpzj7_qgi_
# Running: ['/usr/bin/gi-compile-repository', '/usr/share/gir-1.0/Gio-2.0.gir', '--output', '/tmp/tmpzj7_qgi_/Gio-2.typelib', '--includedir', '/usr/share/gir-1.0', '--includedir', '/usr/share/gir-1.0']
# Return code: 0
# Output:
#  
# Error:
Executing: glib/gi-compile-repository.py.test
ok 7 __main__.TestGICompileRepositoryForGio.test_write_failure
# gi-compile-repository: /usr/bin/gi-compile-repository
# tmpdir: /tmp/tmppylw1k55
# Running: ['/usr/bin/gi-compile-repository', '/usr/share/gir-1.0/Gio-2.0.gir', '--output', 'this-is/not/a-good-output/invalid.typelib', '--includedir', '/usr/share/gir-1.0', '--includedir', '/usr/share/gir-1.0']
# Return code: 1
# Output:
#  
# Error:
#  Failed to open ‘this-is/not/a-good-output/invalid.typelib.tmp’: No such file or directory
1..7
PASS: glib/gi-compile-repository.py.test
Running test: glib/spawn-singlethread.test
TAP version 14
# random seed: R02Sb2143727762d92c8241c76b2b36643fb
1..9
# Start of gthread tests
ok 1 /gthread/spawn-single-sync
# /gthread/spawn-stderr-socket summary: Test calling g_spawn_sync() with its stderr FD set to a socket
ok 2 /gthread/spawn-stderr-socket
ok 3 /gthread/spawn-single-async
# thread 1
# thread 1
ok 4 /gthread/spawn-single-async-with-fds
ok 5 /gthread/spawn-async-with-invalid-fds
ok 6 /gthread/spawn-script
ok 7 /gthread/spawn-posix-spawn
# Start of spawn tests
ok 8 /gthread/spawn/nonexistent
# FD map:
#  ? 5 ? 15
#  ? 6 ? 16
#  ? 7 ? 17
#  ? 8 ? 18
#  ? 9 ? 19
#  ? 10 ? 20
#  ? 11 ? 21
#  ? 12 ? 22
#  ? 13 ? 23
#  ? 3 ? 13
ok 9 /gthread/spawn/fd-assignment-clash
# End of spawn tests
# End of gthread tests
PASS: glib/spawn-singlethread.test
Running test: glib/atomic-c-11.test
TAP version 14
# random seed: R02S1a3a5b6872030885388dcc46ffebd04e
1..2
# Start of atomic tests
ok 1 /atomic/types
ok 2 /atomic/threaded
# End of atomic tests
PASS: glib/atomic-c-11.test
Running test: glib/mapping.test
TAP version 14
# random seed: R02S620e9ba8d57bc0e18037629b568b7927
1..3
# Start of mapping tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/mapping/flags/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/mapping/flags/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/mapping/flags/.dirs/system-config1:/var/volatile/tmp/mapping/flags/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/mapping/flags/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/mapping/flags/.dirs/system-data1:/var/volatile/tmp/mapping/flags/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/mapping/flags/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/mapping/flags/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/mapping/flags/.dirs/runtime
# test_mapping: ok
ok 1 /mapping/flags
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/mapping/private/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/mapping/private/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/mapping/private/.dirs/system-config1:/var/volatile/tmp/mapping/private/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/mapping/private/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/mapping/private/.dirs/system-data1:/var/volatile/tmp/mapping/private/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/mapping/private/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/mapping/private/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/mapping/private/.dirs/runtime
ok 2 /mapping/private
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/mapping/private-child/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/mapping/private-child/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/mapping/private-child/.dirs/system-config1:/var/volatile/tmp/mapping/private-child/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/mapping/private-child/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/mapping/private-child/.dirs/system-data1:/var/volatile/tmp/mapping/private-child/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/mapping/private-child/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/mapping/private-child/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/mapping/private-child/.dirs/runtime
# test_child_private: child spawned
# Subtest: /usr/libexec/installed-tests/glib/mapping
    # random seed: R02S77489cc7a64a8a535aa0c278403d4b01
# test_child_private: received first child signal
    # test_child_private: received parent signal
# Child exited with status 0
# test_child_private: received second child signal
ok 3 /mapping/private-child
# End of mapping tests
PASS: glib/mapping.test
Running test: glib/date.test
TAP version 14
# random seed: R02S8d9a835f1e1a9fef27d4f9d9511a7d08
1..121
# Start of date tests
ok 1 /date/basic
ok 2 /date/empty
ok 3 /date/dmy
ok 4 /date/julian
ok 5 /date/compare
ok 6 /date/dates
ok 7 /date/strftime
ok 8 /date/two-digit-years
ok 9 /date/parse
ok 10 /date/parse_locale_change
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=793550
ok 11 /date/month_substring
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=749206
ok 12 /date/month_names # SKIP libc doesn’t support all alternative month names
ok 13 /date/clamp
ok 14 /date/order
ok 15 /date/copy
# Vector 0: 0000-00-00, invalid
# Vector 1: 0001-01-01, valid
# Vector 2: 0000-01-01, invalid
# Vector 3: 2000-02-30, invalid
# Vector 4: 2000-02-29, valid
# Vector 5: 2001-02-29, invalid
# Vector 6: 65535-01-01, valid
ok 16 /date/valid-dmy
# Start of parse tests
# Test 0
# Test 1
ok 17 /date/parse/invalid
# End of parse tests
# Start of year tests
ok 18 /date/year/1
ok 19 /date/year/2
ok 20 /date/year/3
ok 21 /date/year/4
ok 22 /date/year/5
ok 23 /date/year/6
ok 24 /date/year/7
ok 25 /date/year/8
ok 26 /date/year/9
ok 27 /date/year/10
ok 28 /date/year/11
ok 29 /date/year/12
ok 30 /date/year/13
ok 31 /date/year/14
ok 32 /date/year/98
ok 33 /date/year/99
ok 34 /date/year/100
ok 35 /date/year/101
ok 36 /date/year/102
ok 37 /date/year/103
ok 38 /date/year/397
ok 39 /date/year/398
ok 40 /date/year/399
ok 41 /date/year/400
ok 42 /date/year/401
ok 43 /date/year/402
Executing: glib/date.test
ok 44 /date/year/403
ok 45 /date/year/404
ok 46 /date/year/405
ok 47 /date/year/406
ok 48 /date/year/1598
ok 49 /date/year/1599
ok 50 /date/year/1600
ok 51 /date/year/1601
ok 52 /date/year/1602
ok 53 /date/year/1650
ok 54 /date/year/1651
ok 55 /date/year/1897
ok 56 /date/year/1898
ok 57 /date/year/1899
ok 58 /date/year/1900
ok 59 /date/year/1901
ok 60 /date/year/1902
ok 61 /date/year/1903
ok 62 /date/year/1961
ok 63 /date/year/1962
ok 64 /date/year/1963
ok 65 /date/year/1964
ok 66 /date/year/1965
ok 67 /date/year/1967
ok 68 /date/year/1968
ok 69 /date/year/1969
ok 70 /date/year/1970
ok 71 /date/year/1971
ok 72 /date/year/1972
ok 73 /date/year/1973
ok 74 /date/year/1974
ok 75 /date/year/1975
ok 76 /date/year/1976
ok 77 /date/year/1977
ok 78 /date/year/1978
ok 79 /date/year/1979
ok 80 /date/year/1980
ok 81 /date/year/1981
ok 82 /date/year/1982
ok 83 /date/year/1983
ok 84 /date/year/1984
ok 85 /date/year/1985
ok 86 /date/year/1986
ok 87 /date/year/1987
ok 88 /date/year/1988
ok 89 /date/year/1989
ok 90 /date/year/1990
ok 91 /date/year/1991
ok 92 /date/year/1992
ok 93 /date/year/1993
ok 94 /date/year/1994
ok 95 /date/year/1995
ok 96 /date/year/1996
ok 97 /date/year/1997
ok 98 /date/year/1998
ok 99 /date/year/1999
ok 100 /date/year/2000
ok 101 /date/year/2001
ok 102 /date/year/2002
ok 103 /date/year/2003
ok 104 /date/year/2004
ok 105 /date/year/2005
ok 106 /date/year/2006
ok 107 /date/year/2007
ok 108 /date/year/2008
ok 109 /date/year/2009
ok 110 /date/year/2010
ok 111 /date/year/2011
ok 112 /date/year/2012
ok 113 /date/year/3000
ok 114 /date/year/3001
ok 115 /date/year/3002
ok 116 /date/year/3998
ok 117 /date/year/3999
ok 118 /date/year/4000
ok 119 /date/year/4001
ok 120 /date/year/4002
ok 121 /date/year/4003
# End of year tests
# End of date tests
PASS: glib/date.test
Running test: glib/volumemonitor.test
TAP version 14
# random seed: R02S7554c54cf0ecccc1836952441ea54ca3
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
1..3
# Start of volumemonitor tests
ok 1 /volumemonitor/connected_drives
ok 2 /volumemonitor/volumes
ok 3 /volumemonitor/mounts
# End of volumemonitor tests
PASS: glib/volumemonitor.test
Running test: glib/value.test
TAP version 14
# random seed: R02S18af8185d16eb5993268cc6901b2aa9b
1..9
# Start of value tests
ok 1 /value/basic
ok 2 /value/collection
ok 3 /value/copying
ok 4 /value/enum-transformation
ok 5 /value/gtype
# /value/string summary: Test that G_TYPE_STRING GValue copy properly
ok 6 /value/string
# Next: GObject object in GValue of GObject to GValue of GObject
# Next: GObject object in GValue of GObject to GValue of TestInterface
# Next: GObject object in GValue of GObject to GValue of TestObjectA
# Next: GObject object in GValue of GObject to GValue of TestObjectB
# Next: GObject object in GValue of GObject to GValue of TestObjectA1
# Next: GObject object in GValue of GObject to GValue of TestObjectA2
# Next: TestObjectA object in GValue of GObject to GValue of GObject
# Next: TestObjectA object in GValue of GObject to GValue of TestInterface
# Next: TestObjectA object in GValue of GObject to GValue of TestObjectA
# Next: TestObjectA object in GValue of GObject to GValue of TestObjectB
# Next: TestObjectA object in GValue of GObject to GValue of TestObjectA1
# Next: TestObjectA object in GValue of GObject to GValue of TestObjectA2
# Next: TestObjectA object in GValue of TestObjectA to GValue of GObject
# Next: TestObjectA object in GValue of TestObjectA to GValue of TestInterface
# Next: TestObjectA object in GValue of TestObjectA to GValue of TestObjectA
# Next: TestObjectA object in GValue of TestObjectA to GValue of TestObjectB
# Next: TestObjectA object in GValue of TestObjectA to GValue of TestObjectA1
# Next: TestObjectA object in GValue of TestObjectA to GValue of TestObjectA2
# Next: TestObjectB object in GValue of GObject to GValue of GObject
# Next: TestObjectB object in GValue of GObject to GValue of TestInterface
# Next: TestObjectB object in GValue of GObject to GValue of TestObjectA
# Next: TestObjectB object in GValue of GObject to GValue of TestObjectB
# Next: TestObjectB object in GValue of GObject to GValue of TestObjectA1
# Next: TestObjectB object in GValue of GObject to GValue of TestObjectA2
# Next: TestObjectB object in GValue of TestInterface to GValue of GObject
# Next: TestObjectB object in GValue of TestInterface to GValue of TestInterface
# Next: TestObjectB object in GValue of TestInterface to GValue of TestObjectA
# Next: TestObjectB object in GValue of TestInterface to GValue of TestObjectB
# Next: TestObjectB object in GValue of TestInterface to GValue of TestObjectA1
# Next: TestObjectB object in GValue of TestInterface to GValue of TestObjectA2
# Next: TestObjectB object in GValue of TestObjectB to GValue of GObject
# Next: TestObjectB object in GValue of TestObjectB to GValue of TestInterface
# Next: TestObjectB object in GValue of TestObjectB to GValue of TestObjectA
# Next: TestObjectB object in GValue of TestObjectB to GValue of TestObjectB
# Next: TestObjectB object in GValue of TestObjectB to GValue of TestObjectA1
# Next: TestObjectB object in GValue of TestObjectB to GValue of TestObjectA2
# Next: TestObjectA1 object in GValue of GObject to GValue of GObject
# Next: TestObjectA1 object in GValue of GObject to GValue of TestInterface
# Next: TestObjectA1 object in GValue of GObject to GValue of TestObjectA
# Next: TestObjectA1 object in GValue of GObject to GValue of TestObjectB
# Next: TestObjectA1 object in GValue of GObject to GValue of TestObjectA1
# Next: TestObjectA1 object in GValue of GObject to GValue of TestObjectA2
# Next: TestObjectA1 object in GValue of TestObjectA to GValue of GObject
# Next: TestObjectA1 object in GValue of TestObjectA to GValue of TestInterface
# Next: TestObjectA1 object in GValue of TestObjectA to GValue of TestObjectA
# Next: TestObjectA1 object in GValue of TestObjectA to GValue of TestObjectB
# Next: TestObjectA1 object in GValue of TestObjectA to GValue of TestObjectA1
# Next: TestObjectA1 object in GValue of TestObjectA to GValue of TestObjectA2
# Next: TestObjectA1 object in GValue of TestObjectA1 to GValue of GObject
# Next: TestObjectA1 object in GValue of TestObjectA1 to GValue of TestInterface
# Next: TestObjectA1 object in GValue of TestObjectA1 to GValue of TestObjectA
# Next: TestObjectA1 object in GValue of TestObjectA1 to GValue of TestObjectB
# Next: TestObjectA1 object in GValue of TestObjectA1 to GValue of TestObjectA1
# Next: TestObjectA1 object in GValue of TestObjectA1 to GValue of TestObjectA2
# Next: TestObjectA2 object in GValue of GObject to GValue of GObject
# Next: TestObjectA2 object in GValue of GObject to GValue of TestInterface
# Next: TestObjectA2 object in GValue of GObject to GValue of TestObjectA
# Next: TestObjectA2 object in GValue of GObject to GValue of TestObjectB
# Next: TestObjectA2 object in GValue of GObject to GValue of TestObjectA1
# Next: TestObjectA2 object in GValue of GObject to GValue of TestObjectA2
# Next: TestObjectA2 object in GValue of TestInterface to GValue of GObject
# Next: TestObjectA2 object in GValue of TestInterface to GValue of TestInterface
# Next: TestObjectA2 object in GValue of TestInterface to GValue of TestObjectA
# Next: TestObjectA2 object in GValue of TestInterface to GValue of TestObjectB
# Next: TestObjectA2 object in GValue of TestInterface to GValue of TestObjectA1
# Next: TestObjectA2 object in GValue of TestInterface to GValue of TestObjectA2
# Next: TestObjectA2 object in GValue of TestObjectA to GValue of GObject
# Next: TestObjectA2 object in GValue of TestObjectA to GValue of TestInterface
# Next: TestObjectA2 object in GValue of TestObjectA to GValue of TestObjectA
# Next: TestObjectA2 object in GValue of TestObjectA to GValue of TestObjectB
# Next: TestObjectA2 object in GValue of TestObjectA to GValue of TestObjectA1
# Next: TestObjectA2 object in GValue of TestObjectA to GValue of TestObjectA2
# Next: TestObjectA2 object in GValue of TestObjectA2 to GValue of GObject
# Next: TestObjectA2 object in GValue of TestObjectA2 to GValue of TestInterface
# Next: TestObjectA2 object in GValue of TestObjectA2 to GValue of TestObjectA
# Next: TestObjectA2 object in GValue of TestObjectA2 to GValue of TestObjectB
# Next: TestObjectA2 object in GValue of TestObjectA2 to GValue of TestObjectA1
# Next: TestObjectA2 object in GValue of TestObjectA2 to GValue of TestObjectA2
ok 7 /value/transform-object
# Start of array tests
ok 8 /value/array/basic
ok 9 /value/array/sort-with-data
# End of array tests
# End of value tests
PASS: glib/value.test
Running test: glib/gvariant.test
TAP version 14
# random seed: R02S5afdae32f6ae8ee6cf6947d2fc91d0ea
1..69
# Start of gvariant tests
ok 1 /gvariant/type
Executing: glib/gvariant.test
ok 2 /gvariant/typeinfo
# slow test /gvariant/typeinfo executed in 1.62 secs
ok 3 /gvariant/string
ok 4 /gvariant/utf8
ok 5 /gvariant/utf8-new-strings
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
ok 6 /gvariant/containers
# slow test /gvariant/containers executed in 53.99 secs
ok 7 /gvariant/format-strings
ok 8 /gvariant/invalid-varargs
ok 9 /gvariant/varargs
ok 10 /gvariant/valist
ok 11 /gvariant/builder-memory
ok 12 /gvariant/hashing
# slow test /gvariant/hashing executed in 1.82 secs
ok 13 /gvariant/byteswap
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
ok 14 /gvariant/parser
# slow test /gvariant/parser executed in 50.60 secs
ok 15 /gvariant/parse-failures
ok 16 /gvariant/parse-positional
ok 17 /gvariant/floating
ok 18 /gvariant/bytestring
ok 19 /gvariant/lookup-value
ok 20 /gvariant/lookup
ok 21 /gvariant/compare
ok 22 /gvariant/equal
ok 23 /gvariant/fixed-array
ok 24 /gvariant/check-format-string
ok 25 /gvariant/checksum-basic
ok 26 /gvariant/checksum-nested
ok 27 /gvariant/gbytes
ok 28 /gvariant/print-context
ok 29 /gvariant/error-quark
ok 30 /gvariant/stack-builder-init
ok 31 /gvariant/stack-builder-init-static
ok 32 /gvariant/stack-builder-init-unset
ok 33 /gvariant/stack-dict-init
ok 34 /gvariant/unaligned-construction
# Start of type tests
# Start of string-scan tests
# Start of recursion tests
ok 35 /gvariant/type/string-scan/recursion/tuple
ok 36 /gvariant/type/string-scan/recursion/array
# End of recursion tests
# End of string-scan tests
# End of type tests
# Start of serialiser tests
ok 37 /gvariant/serialiser/maybe
Executing: glib/gvariant.test
ok 38 /gvariant/serialiser/array
# slow test /gvariant/serialiser/array executed in 1.81 secs
ok 39 /gvariant/serialiser/tuple
# slow test /gvariant/serialiser/tuple executed in 0.94 secs
ok 40 /gvariant/serialiser/variant
ok 41 /gvariant/serialiser/strings
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
ok 42 /gvariant/serialiser/byteswap
# slow test /gvariant/serialiser/byteswap executed in 31.60 secs
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1865
# /gvariant/serialiser/children summary: Test that getting a child variant before and after serialisation of the parent works
ok 43 /gvariant/serialiser/children
# Start of byteswap tests
ok 44 /gvariant/serialiser/byteswap/zero-sized
# End of byteswap tests
# Start of fuzz tests
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
ok 45 /gvariant/serialiser/fuzz/1%
# slow test /gvariant/serialiser/fuzz/1% executed in 31.48 secs
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
ok 46 /gvariant/serialiser/fuzz/5%
# slow test /gvariant/serialiser/fuzz/5% executed in 30.74 secs
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
ok 47 /gvariant/serialiser/fuzz/9%
# slow test /gvariant/serialiser/fuzz/9% executed in 31.48 secs
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Test timed out after 300 seconds
Executing: glib/gvariant.test
ok 48 /gvariant/serialiser/fuzz/13%
# slow test /gvariant/serialiser/fuzz/13% executed in 35.36 secs
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Executing: glib/gvariant.test
Test timed out after 300 seconds
FAIL: glib/gvariant.test (Child process killed by signal 9)
Running test: glib/type-flags.test
TAP version 14
# random seed: R02Sd92a81b49c852b70a3804bf16ca8832c
1..4
# Start of type tests
# Start of flags tests
ok 1 /type/flags/interface
ok 2 /type/flags/final
# /type/flags/deprecated summary: Test that trying to instantiate a deprecated type results in a warning.
ok 3 /type/flags/deprecated
# Start of final tests
ok 4 /type/flags/final/instance-check
# End of final tests
# End of flags tests
# End of type tests
PASS: glib/type-flags.test
Running test: glib/repository-search-paths.test
TAP version 14
# random seed: R02Sa2b822e3b8319cc8d6793df5902eb622
1..4
# Start of repository tests
# Start of search-paths tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/search-paths/default/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/search-paths/default/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/search-paths/default/.dirs/system-config1:/var/volatile/tmp/repository/search-paths/default/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/search-paths/default/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/search-paths/default/.dirs/system-data1:/var/volatile/tmp/repository/search-paths/default/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/search-paths/default/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/search-paths/default/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/search-paths/default/.dirs/runtime
ok 1 /repository/search-paths/default
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/search-paths/prepend/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/search-paths/prepend/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/search-paths/prepend/.dirs/system-config1:/var/volatile/tmp/repository/search-paths/prepend/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/search-paths/prepend/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/search-paths/prepend/.dirs/system-data1:/var/volatile/tmp/repository/search-paths/prepend/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/search-paths/prepend/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/search-paths/prepend/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/search-paths/prepend/.dirs/runtime
ok 2 /repository/search-paths/prepend
# End of search-paths tests
# Start of library-paths tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/library-paths/default/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/library-paths/default/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/library-paths/default/.dirs/system-config1:/var/volatile/tmp/repository/library-paths/default/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/library-paths/default/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/library-paths/default/.dirs/system-data1:/var/volatile/tmp/repository/library-paths/default/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/library-paths/default/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/library-paths/default/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/library-paths/default/.dirs/runtime
ok 3 /repository/library-paths/default
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/repository/library-paths/prepend/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/repository/library-paths/prepend/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/repository/library-paths/prepend/.dirs/system-config1:/var/volatile/tmp/repository/library-paths/prepend/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/repository/library-paths/prepend/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/repository/library-paths/prepend/.dirs/system-data1:/var/volatile/tmp/repository/library-paths/prepend/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/repository/library-paths/prepend/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/repository/library-paths/prepend/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/repository/library-paths/prepend/.dirs/runtime
ok 4 /repository/library-paths/prepend
# End of library-paths tests
# End of repository tests
PASS: glib/repository-search-paths.test
Running test: glib/io-stream.test
TAP version 14
# random seed: R02Sb2f9bbd255003650aaaeb6a1d385b37a
1..3
# Start of io-stream tests
ok 1 /io-stream/copy-chunks
# Start of close tests
# Start of async tests
ok 2 /io-stream/close/async/memory
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 3 /io-stream/close/async/file
# End of async tests
# End of close tests
# End of io-stream tests
PASS: glib/io-stream.test
Running test: glib/simple-async-result.test
TAP version 14
# random seed: R02S6d7d74b34a51fb17c97d9861ded6a437
1..2
# Start of gio tests
# Start of simple-async-result tests
ok 1 /gio/simple-async-result/test
# GLib-GIO-DEBUG: GTask 0x5555920dc3e0 (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gio/simple-async-result/valid
# End of simple-async-result tests
# End of gio tests
PASS: glib/simple-async-result.test
Running test: glib/string.test
TAP version 14
# random seed: R02S9ccf9d9ed2fcaa5d33670c1a3ac029a2
1..23
# Start of string tests
ok 1 /string/test-string-chunks
ok 2 /string/test-string-chunk-insert
ok 3 /string/test-string-new
ok 4 /string/test-string-printf
ok 5 /string/test-string-assign
ok 6 /string/test-string-append-c
ok 7 /string/test-string-append
ok 8 /string/test-string-append-vprintf
ok 9 /string/test-string-prepend-c
ok 10 /string/test-string-prepend
ok 11 /string/test-string-insert
ok 12 /string/test-string-insert-unichar
ok 13 /string/test-string-equal
ok 14 /string/test-string-truncate
ok 15 /string/test-string-overwrite
ok 16 /string/test-string-nul-handling
ok 17 /string/test-string-up-down
ok 18 /string/test-string-set-size
ok 19 /string/test-string-to-bytes
# 0: Replacing "bar" with "baz" (limit 0) in "foo bar foo baz foo bar foobarbaz"
# -> 3 replacements, "foo baz foo baz foo baz foobazbaz"
# 1: Replacing "baz" with "bar" (limit 3) in "foo baz foo baz foo baz foobazbaz"
# -> 3 replacements, "foo bar foo bar foo bar foobazbaz"
# 2: Replacing "foobar" with "bar" (limit 1) in "foo bar foo bar foo bar foobazbaz"
# -> 0 replacements, "foo bar foo bar foo bar foobazbaz"
# 3: Replacing "a" with "abcdefghijkl" (limit 0) in "aaaaaaaa"
# -> 8 replacements, "abcdefghijklabcdefghijklabcdefghijklabcdefghijklabcdefghijklabcdefghijklabcdefghijklabcdefghijkl"
# 4: Replacing "$LIB" with "lib32" (limit 0) in "/usr/$LIB/libMangoHud.so"
# -> 1 replacements, "/usr/lib32/libMangoHud.so"
# 5: Replacing "o" with "" (limit 0) in "food for foals"
# -> 4 replacements, "fd fr fals"
# 6: Replacing "a" with "aaa" (limit 0) in "aaa"
# -> 3 replacements, "aaaaaaaaa"
# 7: Replacing "a" with "" (limit 0) in "aaa"
# -> 3 replacements, ""
# 8: Replacing "aa" with "bb" (limit 0) in "aaa"
# -> 1 replacements, "bba"
# 9: Replacing "" with "bar" (limit 0) in "foo"
# -> 4 replacements, "barfbarobarobar"
# 10: Replacing "" with "bar" (limit 1) in "foo"
# -> 1 replacements, "barfoo"
# 11: Replacing "" with "bar" (limit 2) in "foo"
# -> 2 replacements, "barfbaroo"
# 12: Replacing "" with "bar" (limit 3) in "foo"
# -> 3 replacements, "barfbarobaro"
# 13: Replacing "" with "bar" (limit 4) in "foo"
# -> 4 replacements, "barfbarobarobar"
# 14: Replacing "" with "bar" (limit 5) in "foo"
# -> 4 replacements, "barfbarobarobar"
# 15: Replacing "" with "x" (limit 0) in ""
# -> 1 replacements, "x"
# 16: Replacing "" with "" (limit 0) in ""
# -> 1 replacements, ""
# 17: Replacing "" with "aaaaaaaaaaaa" (limit 0) in "bbbbbbbbb"
# -> 10 replacements, "aaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaabaaaaaaaaaaaa"
ok 20 /string/test-string-replace
ok 21 /string/test-string-steal
ok 22 /string/test-string-new-take
# Start of test-string-new-take tests
ok 23 /string/test-string-new-take/null
# End of test-string-new-take tests
# End of string tests
PASS: glib/string.test
Running test: glib/error.test
TAP version 14
# random seed: R02Sd72bad40156afeccb6220a28393c2b97
1..3
# Start of error tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/error/from-errno/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/error/from-errno/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/error/from-errno/.dirs/system-config1:/var/volatile/tmp/error/from-errno/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/error/from-errno/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/error/from-errno/.dirs/system-data1:/var/volatile/tmp/error/from-errno/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/error/from-errno/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/error/from-errno/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/error/from-errno/.dirs/runtime
ok 1 /error/from-errno
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/error/from-file-error/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/error/from-file-error/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/error/from-file-error/.dirs/system-config1:/var/volatile/tmp/error/from-file-error/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/error/from-file-error/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/error/from-file-error/.dirs/system-data1:/var/volatile/tmp/error/from-file-error/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/error/from-file-error/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/error/from-file-error/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/error/from-file-error/.dirs/runtime
ok 2 /error/from-file-error
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/error/from-win32-error/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/error/from-win32-error/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/error/from-win32-error/.dirs/system-config1:/var/volatile/tmp/error/from-win32-error/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/error/from-win32-error/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/error/from-win32-error/.dirs/system-data1:/var/volatile/tmp/error/from-win32-error/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/error/from-win32-error/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/error/from-win32-error/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/error/from-win32-error/.dirs/runtime
ok 3 /error/from-win32-error # SKIP Windows error codes can only be checked on Windows
# End of error tests
PASS: glib/error.test
Running test: glib/memory-monitor-dbus.test
TAP version 13
ok 1 __main__.TestLowMemoryMonitor.test_low_memory_warning_signal
# Received memory warning signal, level 0
# Received memory warning signal, level 100
# Received memory warning signal, level 255
1..1
PASS: glib/memory-monitor-dbus.test
Running test: glib/utf8-pointer.test
TAP version 14
# random seed: R02S46e45a07a82fad35011167d020e1240a
1..3
# Start of utf8 tests
Executing: glib/utf8-pointer.test
ok 1 /utf8/offsets
# slow test /utf8/offsets executed in 5.99 secs
ok 2 /utf8/lengths
ok 3 /utf8/find
# End of utf8 tests
PASS: glib/utf8-pointer.test
Running test: glib/scannerapi.test
TAP version 14
# random seed: R02Sb9affb530b57276d85eebeddf9f29f53
1..4
# Start of scanner tests
ok 1 /scanner/warn
ok 2 /scanner/error
ok 3 /scanner/symbols
ok 4 /scanner/tokens
# End of scanner tests
PASS: glib/scannerapi.test
Running test: glib/macros-c-17.test
TAP version 14
# random seed: R02S936df80fbdf0b618627e20f97c2ab741
1..4
# Start of C tests
ok 1 /C/standard-17
# End of C tests
# Start of alignof tests
ok 2 /alignof/fallback
# End of alignof tests
# Start of assert tests
ok 3 /assert/static
# End of assert tests
# Start of struct tests
ok 4 /struct/sizeof_member
# End of struct tests
PASS: glib/macros-c-17.test
Running test: glib/g-icon.test
TAP version 14
# random seed: R02S54aacc162a1d9e9459b76e7c34353962
1..6
# Start of icons tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 1 /icons/to-string
ok 2 /icons/serialize
ok 3 /icons/themed
ok 4 /icons/emblemed
ok 5 /icons/file
ok 6 /icons/bytes
# End of icons tests
PASS: glib/g-icon.test
Running test: glib/struct-info.test
TAP version 14
# random seed: R02S26848fd87863705e33ccd79b912057a8
1..4
# Start of struct-info tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/struct-info/field-iterators/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/struct-info/field-iterators/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/struct-info/field-iterators/.dirs/system-config1:/var/volatile/tmp/struct-info/field-iterators/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/struct-info/field-iterators/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/struct-info/field-iterators/.dirs/system-data1:/var/volatile/tmp/struct-info/field-iterators/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/struct-info/field-iterators/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/struct-info/field-iterators/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/struct-info/field-iterators/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /struct-info/field-iterators summary: Test iterating through a struct's fields with gi_struct_info_get_field()
ok 1 /struct-info/field-iterators
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/system-config1:/var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/system-data1:/var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/struct-info/sizeof-gvalue/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /struct-info/sizeof-gvalue summary: Test that gi_struct_info_get_size() reports the correct sizeof GValue
ok 2 /struct-info/sizeof-gvalue
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/system-config1:/var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/system-data1:/var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/struct-info/is-pointer-for-struct-method-arg/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /struct-info/is-pointer-for-struct-method-arg summary: Test that a struct method reports the correct type with gi_type_info_is_pointer()
ok 3 /struct-info/is-pointer-for-struct-method-arg
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/struct-info/boxed/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/struct-info/boxed/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/struct-info/boxed/.dirs/system-config1:/var/volatile/tmp/struct-info/boxed/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/struct-info/boxed/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/struct-info/boxed/.dirs/system-data1:/var/volatile/tmp/struct-info/boxed/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/struct-info/boxed/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/struct-info/boxed/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/struct-info/boxed/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /struct-info/boxed summary: Test that a boxed struct is recognised as such
ok 4 /struct-info/boxed
# End of struct-info tests
Executing: glib/struct-info.test
PASS: glib/struct-info.test
Running test: glib/asyncqueue.test
TAP version 14
# random seed: R02S3a42a08c8e6498e7cd746deb041828d5
1..7
# Start of asyncqueue tests
ok 1 /asyncqueue/basics
ok 2 /asyncqueue/sort
ok 3 /asyncqueue/destroy
ok 4 /asyncqueue/threads
ok 5 /asyncqueue/timed
ok 6 /asyncqueue/remove
ok 7 /asyncqueue/push_front
# End of asyncqueue tests
PASS: glib/asyncqueue.test
Running test: glib/memory-monitor-portal.test
TAP version 13
ok 1 __main__.TestLowMemoryMonitorPortal.test_low_memory_warning_portal_signal # SKIP xdg-desktop-portal not available
1..1
PASS: glib/memory-monitor-portal.test
Running test: glib/cxx-98.test
TAP version 14
# random seed: R02Sc9c690fd3ec7cb44de2c9893a6879699
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx-98.test
Running test: glib/gdbus-non-socket.test
TAP version 14
# random seed: R02Sf40c4f5339d19c94f3b9cdf127dc5108
1..1
# Start of gdbus tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/non-socket/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/non-socket/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/non-socket/.dirs/system-config1:/var/volatile/tmp/gdbus/non-socket/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/non-socket/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/non-socket/.dirs/system-data1:/var/volatile/tmp/gdbus/non-socket/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/non-socket/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/non-socket/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/non-socket/.dirs/runtime
ok 1 /gdbus/non-socket
# End of gdbus tests
PASS: glib/gdbus-non-socket.test
Running test: glib/gdbus-address-get-session.test
TAP version 14
# random seed: R02S2905f533114b483bc12987b976b93aa2
1..2
# Start of gdbus tests
ok 1 /gdbus/x11-autolaunch
ok 2 /gdbus/xdg-runtime
# End of gdbus tests
PASS: glib/gdbus-address-get-session.test
Running test: glib/gdbus-sasl.test
TAP version 14
# random seed: R02S8cc0c103b01337519ca48f15b3c7a9b7
1..1
# Start of gdbus tests
# Start of sasl tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/sasl/server/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/sasl/server/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/sasl/server/.dirs/system-config1:/var/volatile/tmp/gdbus/sasl/server/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/sasl/server/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/sasl/server/.dirs/system-data1:/var/volatile/tmp/gdbus/sasl/server/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/sasl/server/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/sasl/server/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/sasl/server/.dirs/runtime
# New handshake: EXTERNAL with incorrect initial response
# C:?AUTH EXTERNAL 30?
# Expect: /^REJECTED.*$/
# S:?REJECTED EXTERNAL DBUS_COOKIE_SHA1?
# New handshake: EXTERNAL without initial response, failing to authenticate
# C:?AUTH EXTERNAL?
# Expect: /^DATA$/
# S:?DATA?
# C:?DATA 30?
# Expect: /^REJECTED.*$/
# S:?REJECTED EXTERNAL DBUS_COOKIE_SHA1?
# New handshake: EXTERNAL with initial response
# C:?AUTH EXTERNAL 31303030?
# Expect: /^OK [0-9a-f]+$/
# S:?OK 6b0a3c15175be198f4c0510f6840873b?
# New handshake: EXTERNAL without initial response
# C:?AUTH EXTERNAL?
# Expect: /^DATA$/
# S:?DATA?
# C:?DATA 31303030?
# Expect: /^OK [0-9a-f]+$/
# S:?OK 6b0a3c15175be198f4c0510f6840873b?
# New handshake: EXTERNAL with empty authorization identity
# C:?AUTH EXTERNAL?
# Expect: /^DATA$/
# S:?DATA?
# C:?DATA?
# Expect: /^OK [0-9a-f]+$/
# S:?OK 6b0a3c15175be198f4c0510f6840873b?
# New handshake: EXTERNAL with empty authorization identity and whitespace
# C:?AUTH EXTERNAL?
# Expect: /^DATA$/
# S:?DATA?
# C:?DATA ?
# Expect: /^OK [0-9a-f]+$/
# S:?OK 6b0a3c15175be198f4c0510f6840873b?
ok 1 /gdbus/sasl/server
# End of sasl tests
# End of gdbus tests
PASS: glib/gdbus-sasl.test
Running test: glib/slice.test
TAP version 14
# random seed: R02S8c7b766289af8c664c14ef44189d3879
1..3
# Start of slice tests
ok 1 /slice/copy
ok 2 /slice/chain
Executing: glib/slice.test
ok 3 /slice/allocate
# slow test /slice/allocate executed in 0.92 secs
# End of slice tests
PASS: glib/slice.test
Running test: glib/mimeapps.test
TAP version 14
# random seed: R02Sc2ef6754421b9bf7c54316eaa1cb6ab2
1..7
# Start of appinfo tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/appinfo/all/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/appinfo/all/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/appinfo/all/.dirs/system-config1:/var/volatile/tmp/appinfo/all/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/appinfo/all/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/appinfo/all/.dirs/system-data1:/var/volatile/tmp/appinfo/all/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/appinfo/all/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/appinfo/all/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/appinfo/all/.dirs/runtime
# creating '/var/volatile/tmp/appinfo/all/.dirs/system-data1/applications'
# creating '/var/volatile/tmp/appinfo/all/.dirs/system-data1/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications/myapp.desktop'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications/myapp2.desktop'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications/myapp3.desktop'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications/myapp4.desktop'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications/myapp5.desktop'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications/nosuchapp.desktop'
# removing '/var/volatile/tmp/appinfo/all/.dirs/data/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/all/.dirs/data/applications/mimeinfo.cache'
ok 1 /appinfo/all
# Start of mime tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/appinfo/mime/api/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/appinfo/mime/api/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/appinfo/mime/api/.dirs/system-config1:/var/volatile/tmp/appinfo/mime/api/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/appinfo/mime/api/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/appinfo/mime/api/.dirs/system-data1:/var/volatile/tmp/appinfo/mime/api/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/appinfo/mime/api/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/appinfo/mime/api/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/appinfo/mime/api/.dirs/runtime
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/system-data1/applications'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/system-data1/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/myapp.desktop'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/myapp2.desktop'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/myapp3.desktop'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/myapp4.desktop'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/myapp5.desktop'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/nosuchapp.desktop'
# removing '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/api/.dirs/data/applications/mimeinfo.cache'
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/api/.dirs/config
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/appinfo/all/.dirs/config to /var/volatile/tmp/appinfo/mime/api/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/api/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/api/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/api/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/api/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/api/.dirs/config
ok 2 /appinfo/mime/api
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/appinfo/mime/default/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/appinfo/mime/default/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/appinfo/mime/default/.dirs/system-config1:/var/volatile/tmp/appinfo/mime/default/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/appinfo/mime/default/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/appinfo/mime/default/.dirs/system-data1:/var/volatile/tmp/appinfo/mime/default/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/appinfo/mime/default/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/appinfo/mime/default/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/appinfo/mime/default/.dirs/runtime
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/system-data1/applications'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/system-data1/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/myapp.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/myapp2.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/myapp3.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/myapp4.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/myapp5.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/nosuchapp.desktop'
# removing '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/default/.dirs/data/applications/mimeinfo.cache'
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default/.dirs/config
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/appinfo/mime/api/.dirs/config to /var/volatile/tmp/appinfo/mime/default/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default/.dirs/config
ok 3 /appinfo/mime/default
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/appinfo/mime/file/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/appinfo/mime/file/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/appinfo/mime/file/.dirs/system-config1:/var/volatile/tmp/appinfo/mime/file/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/appinfo/mime/file/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/appinfo/mime/file/.dirs/system-data1:/var/volatile/tmp/appinfo/mime/file/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/appinfo/mime/file/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/appinfo/mime/file/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/appinfo/mime/file/.dirs/runtime
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/system-data1/applications'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/system-data1/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/myapp.desktop'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/myapp2.desktop'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/myapp3.desktop'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/myapp4.desktop'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/myapp5.desktop'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/nosuchapp.desktop'
# removing '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/file/.dirs/data/applications/mimeinfo.cache'
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/file/.dirs/config
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/appinfo/mime/default/.dirs/config to /var/volatile/tmp/appinfo/mime/file/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/file/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/file/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/file/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/file/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/file/.dirs/config
ok 4 /appinfo/mime/file
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/system-config1:/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/system-data1:/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/runtime
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/system-data1/applications'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/system-data1/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/myapp.desktop'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/myapp2.desktop'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/myapp3.desktop'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/myapp4.desktop'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/myapp5.desktop'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/nosuchapp.desktop'
# removing '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/data/applications/mimeinfo.cache'
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/appinfo/mime/file/.dirs/config to /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/config
ok 5 /appinfo/mime/scheme-handler
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/system-config1:/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/system-data1:/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/runtime
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/system-data1/applications'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/system-data1/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/myapp.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/myapp2.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/myapp3.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/myapp4.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/myapp5.desktop'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/nosuchapp.desktop'
# removing '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/default-last-used/.dirs/data/applications/mimeinfo.cache'
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/appinfo/mime/scheme-handler/.dirs/config to /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config
ok 6 /appinfo/mime/default-last-used
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/system-config1:/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/system-data1:/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/runtime
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/system-data1/applications'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/system-data1/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/myapp.desktop'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/myapp2.desktop'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/myapp3.desktop'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/myapp4.desktop'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/myapp5.desktop'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/nosuchapp.desktop'
# removing '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/mimeapps.list'
# creating '/var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/data/applications/mimeinfo.cache'
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/appinfo/mime/default-last-used/.dirs/config to /var/volatile/tmp/appinfo/mime/ignore-nonexisting/.dirs/config
ok 7 /appinfo/mime/ignore-nonexisting
# End of mime tests
# End of appinfo tests
PASS: glib/mimeapps.test
Running test: glib/mappedfile.test
TAP version 14
# random seed: R02S199def92c8f35cb1d436c536a832c921
1..7
# Start of mappedfile tests
ok 1 /mappedfile/basic
ok 2 /mappedfile/empty
ok 3 /mappedfile/device
ok 4 /mappedfile/nonexisting
ok 5 /mappedfile/writable
ok 6 /mappedfile/writable_fd
ok 7 /mappedfile/gbytes
# End of mappedfile tests
PASS: glib/mappedfile.test
Running test: glib/type.test
TAP version 14
# random seed: R02Sed36e617b15ac4cfcfe061a9e7766710
1..6
# Start of type tests
ok 1 /type/registration-serial
ok 2 /type/interface-prerequisite
ok 3 /type/interface-check
ok 4 /type/next-base
ok 5 /type/is-a
# Invalid types can?t be queried.
# Unclassed types can?t be queried.
ok 6 /type/query
# End of type tests
PASS: glib/type.test
Running test: glib/enums.test
TAP version 14
# random seed: R02Se1817d6b3dec1f05539db4dec499c6f4
1..4
# Start of enum tests
ok 1 /enum/basic
ok 2 /enum/define-type
# End of enum tests
# Start of flags tests
ok 3 /flags/basic
ok 4 /flags/define-type
# End of flags tests
PASS: glib/enums.test
Running test: glib/refstring.test
TAP version 14
# random seed: R02Sd33745af128fce6d64c38ed6f7592242
1..8
# Start of refstring tests
# s = 'hello, world' (0x5555938518d0)
ok 1 /refstring/base
ok 2 /refstring/length
ok 3 /refstring/length-auto
ok 4 /refstring/length-nuls
# s = 'hello, world' (0x555593851770)
# p = s = 'hello, world' (0x555593851770)
# releasing p[0x555593851770] ('hello, world')
# p = 'goodbye, world' (0x5555938518d0)
# releasing p[0x5555938518d0] ('goodbye, world')
# releasing s[0x555593851770] ('hello, world')
ok 5 /refstring/intern
# /refstring/hash_equal summary: Test g_ref_string_equal() in GHashTable
ok 6 /refstring/hash_equal
# /refstring/equal summary: Test g_ref_string_equal() standalone
ok 7 /refstring/equal
Executing: glib/refstring.test
Executing: glib/refstring.test
ok 8 /refstring/intern-thread-safety
# slow test /refstring/intern-thread-safety executed in 9.62 secs
# End of refstring tests
PASS: glib/refstring.test
Running test: glib/portal-support-flatpak-network-only.test
TAP version 14
# random seed: R02Seb7ece7460903495ae558560d22686db
1..1
# Start of portal-support tests
# Start of flatpak tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/portal-support/flatpak/network/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/portal-support/flatpak/network/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/portal-support/flatpak/network/.dirs/system-config1:/var/volatile/tmp/portal-support/flatpak/network/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/portal-support/flatpak/network/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/portal-support/flatpak/network/.dirs/system-data1:/var/volatile/tmp/portal-support/flatpak/network/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/portal-support/flatpak/network/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/portal-support/flatpak/network/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/portal-support/flatpak/network/.dirs/runtime
# Creating .flatpak-info in /var/volatile/tmp/portal-support/flatpak/network/.dirs/runtime/.flatpak-info
ok 1 /portal-support/flatpak/network
# End of flatpak tests
# End of portal-support tests
PASS: glib/portal-support-flatpak-network-only.test
Running test: glib/private.test
TAP version 14
# random seed: R02S0e4f86a2f8a8f91ff8ac1f080eca6e9b
1..8
# Start of thread tests
ok 1 /thread/private1
ok 2 /thread/private2
# slow test /thread/private2 executed in 1.14 secs
ok 3 /thread/private3
ok 4 /thread/staticprivate1
ok 5 /thread/staticprivate2
ok 6 /thread/staticprivate3
ok 7 /thread/staticprivate4
# slow test /thread/staticprivate4 executed in 1.13 secs
ok 8 /thread/staticprivate5
# End of thread tests
PASS: glib/private.test
Running test: glib/checksum.test
TAP version 14
# random seed: R02S61127a11b967d60fb15217d4daefc30a
1..1851
# Start of checksum tests
ok 1 /checksum/unsupported
# Start of MD5 tests
ok 2 /checksum/MD5/0
ok 3 /checksum/MD5/1
ok 4 /checksum/MD5/2
ok 5 /checksum/MD5/3
ok 6 /checksum/MD5/4
ok 7 /checksum/MD5/5
ok 8 /checksum/MD5/6
ok 9 /checksum/MD5/7
ok 10 /checksum/MD5/8
ok 11 /checksum/MD5/9
ok 12 /checksum/MD5/10
ok 13 /checksum/MD5/11
ok 14 /checksum/MD5/12
ok 15 /checksum/MD5/13
ok 16 /checksum/MD5/14
ok 17 /checksum/MD5/15
ok 18 /checksum/MD5/16
ok 19 /checksum/MD5/17
ok 20 /checksum/MD5/18
ok 21 /checksum/MD5/19
ok 22 /checksum/MD5/20
ok 23 /checksum/MD5/21
ok 24 /checksum/MD5/22
ok 25 /checksum/MD5/23
ok 26 /checksum/MD5/24
ok 27 /checksum/MD5/25
ok 28 /checksum/MD5/26
ok 29 /checksum/MD5/27
ok 30 /checksum/MD5/28
ok 31 /checksum/MD5/29
ok 32 /checksum/MD5/30
ok 33 /checksum/MD5/31
ok 34 /checksum/MD5/32
ok 35 /checksum/MD5/33
ok 36 /checksum/MD5/34
ok 37 /checksum/MD5/35
ok 38 /checksum/MD5/36
ok 39 /checksum/MD5/37
ok 40 /checksum/MD5/38
ok 41 /checksum/MD5/39
ok 42 /checksum/MD5/40
ok 43 /checksum/MD5/41
ok 44 /checksum/MD5/42
ok 45 /checksum/MD5/43
ok 46 /checksum/MD5/44
ok 47 /checksum/MD5/45
ok 48 /checksum/MD5/46
ok 49 /checksum/MD5/47
ok 50 /checksum/MD5/48
ok 51 /checksum/MD5/49
ok 52 /checksum/MD5/50
ok 53 /checksum/MD5/51
ok 54 /checksum/MD5/52
ok 55 /checksum/MD5/53
ok 56 /checksum/MD5/54
ok 57 /checksum/MD5/55
ok 58 /checksum/MD5/56
ok 59 /checksum/MD5/57
ok 60 /checksum/MD5/58
ok 61 /checksum/MD5/59
ok 62 /checksum/MD5/60
ok 63 /checksum/MD5/61
ok 64 /checksum/MD5/62
ok 65 /checksum/MD5/63
ok 66 /checksum/MD5/64
ok 67 /checksum/MD5/65
ok 68 /checksum/MD5/66
ok 69 /checksum/MD5/67
ok 70 /checksum/MD5/68
ok 71 /checksum/MD5/69
ok 72 /checksum/MD5/70
ok 73 /checksum/MD5/71
ok 74 /checksum/MD5/72
ok 75 /checksum/MD5/73
ok 76 /checksum/MD5/74
ok 77 /checksum/MD5/75
ok 78 /checksum/MD5/76
ok 79 /checksum/MD5/77
ok 80 /checksum/MD5/78
ok 81 /checksum/MD5/79
ok 82 /checksum/MD5/80
ok 83 /checksum/MD5/81
ok 84 /checksum/MD5/82
ok 85 /checksum/MD5/83
ok 86 /checksum/MD5/84
ok 87 /checksum/MD5/85
ok 88 /checksum/MD5/86
ok 89 /checksum/MD5/87
ok 90 /checksum/MD5/88
ok 91 /checksum/MD5/89
ok 92 /checksum/MD5/90
ok 93 /checksum/MD5/91
ok 94 /checksum/MD5/92
ok 95 /checksum/MD5/93
ok 96 /checksum/MD5/94
ok 97 /checksum/MD5/95
ok 98 /checksum/MD5/96
ok 99 /checksum/MD5/97
ok 100 /checksum/MD5/98
ok 101 /checksum/MD5/99
ok 102 /checksum/MD5/100
ok 103 /checksum/MD5/101
ok 104 /checksum/MD5/102
ok 105 /checksum/MD5/103
ok 106 /checksum/MD5/104
ok 107 /checksum/MD5/105
ok 108 /checksum/MD5/106
ok 109 /checksum/MD5/107
ok 110 /checksum/MD5/108
ok 111 /checksum/MD5/109
ok 112 /checksum/MD5/110
ok 113 /checksum/MD5/111
ok 114 /checksum/MD5/112
ok 115 /checksum/MD5/113
ok 116 /checksum/MD5/114
ok 117 /checksum/MD5/115
ok 118 /checksum/MD5/116
ok 119 /checksum/MD5/117
ok 120 /checksum/MD5/118
ok 121 /checksum/MD5/119
ok 122 /checksum/MD5/120
ok 123 /checksum/MD5/121
ok 124 /checksum/MD5/122
ok 125 /checksum/MD5/123
ok 126 /checksum/MD5/124
ok 127 /checksum/MD5/125
ok 128 /checksum/MD5/126
ok 129 /checksum/MD5/127
ok 130 /checksum/MD5/128
ok 131 /checksum/MD5/129
ok 132 /checksum/MD5/130
ok 133 /checksum/MD5/131
ok 134 /checksum/MD5/132
ok 135 /checksum/MD5/133
ok 136 /checksum/MD5/134
ok 137 /checksum/MD5/135
ok 138 /checksum/MD5/136
ok 139 /checksum/MD5/137
ok 140 /checksum/MD5/138
ok 141 /checksum/MD5/139
ok 142 /checksum/MD5/140
ok 143 /checksum/MD5/141
ok 144 /checksum/MD5/142
ok 145 /checksum/MD5/143
ok 146 /checksum/MD5/144
ok 147 /checksum/MD5/145
ok 148 /checksum/MD5/146
ok 149 /checksum/MD5/147
ok 150 /checksum/MD5/148
ok 151 /checksum/MD5/149
ok 152 /checksum/MD5/150
ok 153 /checksum/MD5/151
ok 154 /checksum/MD5/152
ok 155 /checksum/MD5/153
ok 156 /checksum/MD5/154
ok 157 /checksum/MD5/155
ok 158 /checksum/MD5/156
ok 159 /checksum/MD5/157
ok 160 /checksum/MD5/158
ok 161 /checksum/MD5/159
ok 162 /checksum/MD5/160
ok 163 /checksum/MD5/161
ok 164 /checksum/MD5/162
ok 165 /checksum/MD5/163
ok 166 /checksum/MD5/164
ok 167 /checksum/MD5/165
ok 168 /checksum/MD5/166
ok 169 /checksum/MD5/167
ok 170 /checksum/MD5/168
ok 171 /checksum/MD5/169
ok 172 /checksum/MD5/170
ok 173 /checksum/MD5/171
ok 174 /checksum/MD5/172
ok 175 /checksum/MD5/173
ok 176 /checksum/MD5/174
ok 177 /checksum/MD5/175
ok 178 /checksum/MD5/176
ok 179 /checksum/MD5/177
ok 180 /checksum/MD5/178
ok 181 /checksum/MD5/179
ok 182 /checksum/MD5/180
ok 183 /checksum/MD5/181
ok 184 /checksum/MD5/182
ok 185 /checksum/MD5/183
ok 186 /checksum/MD5/string
ok 187 /checksum/MD5/bytes
# Start of reset tests
ok 188 /checksum/MD5/reset/0
ok 189 /checksum/MD5/reset/1
ok 190 /checksum/MD5/reset/2
ok 191 /checksum/MD5/reset/3
ok 192 /checksum/MD5/reset/4
ok 193 /checksum/MD5/reset/5
ok 194 /checksum/MD5/reset/6
ok 195 /checksum/MD5/reset/7
ok 196 /checksum/MD5/reset/8
ok 197 /checksum/MD5/reset/9
ok 198 /checksum/MD5/reset/10
ok 199 /checksum/MD5/reset/11
ok 200 /checksum/MD5/reset/12
ok 201 /checksum/MD5/reset/13
ok 202 /checksum/MD5/reset/14
ok 203 /checksum/MD5/reset/15
ok 204 /checksum/MD5/reset/16
ok 205 /checksum/MD5/reset/17
ok 206 /checksum/MD5/reset/18
ok 207 /checksum/MD5/reset/19
ok 208 /checksum/MD5/reset/20
ok 209 /checksum/MD5/reset/21
ok 210 /checksum/MD5/reset/22
ok 211 /checksum/MD5/reset/23
ok 212 /checksum/MD5/reset/24
ok 213 /checksum/MD5/reset/25
ok 214 /checksum/MD5/reset/26
ok 215 /checksum/MD5/reset/27
ok 216 /checksum/MD5/reset/28
ok 217 /checksum/MD5/reset/29
ok 218 /checksum/MD5/reset/30
ok 219 /checksum/MD5/reset/31
ok 220 /checksum/MD5/reset/32
ok 221 /checksum/MD5/reset/33
ok 222 /checksum/MD5/reset/34
ok 223 /checksum/MD5/reset/35
ok 224 /checksum/MD5/reset/36
ok 225 /checksum/MD5/reset/37
ok 226 /checksum/MD5/reset/38
ok 227 /checksum/MD5/reset/39
ok 228 /checksum/MD5/reset/40
ok 229 /checksum/MD5/reset/41
ok 230 /checksum/MD5/reset/42
ok 231 /checksum/MD5/reset/43
ok 232 /checksum/MD5/reset/44
ok 233 /checksum/MD5/reset/45
ok 234 /checksum/MD5/reset/46
ok 235 /checksum/MD5/reset/47
ok 236 /checksum/MD5/reset/48
ok 237 /checksum/MD5/reset/49
ok 238 /checksum/MD5/reset/50
ok 239 /checksum/MD5/reset/51
ok 240 /checksum/MD5/reset/52
ok 241 /checksum/MD5/reset/53
ok 242 /checksum/MD5/reset/54
ok 243 /checksum/MD5/reset/55
ok 244 /checksum/MD5/reset/56
ok 245 /checksum/MD5/reset/57
ok 246 /checksum/MD5/reset/58
ok 247 /checksum/MD5/reset/59
ok 248 /checksum/MD5/reset/60
ok 249 /checksum/MD5/reset/61
ok 250 /checksum/MD5/reset/62
ok 251 /checksum/MD5/reset/63
ok 252 /checksum/MD5/reset/64
ok 253 /checksum/MD5/reset/65
ok 254 /checksum/MD5/reset/66
ok 255 /checksum/MD5/reset/67
ok 256 /checksum/MD5/reset/68
ok 257 /checksum/MD5/reset/69
ok 258 /checksum/MD5/reset/70
ok 259 /checksum/MD5/reset/71
ok 260 /checksum/MD5/reset/72
ok 261 /checksum/MD5/reset/73
ok 262 /checksum/MD5/reset/74
ok 263 /checksum/MD5/reset/75
ok 264 /checksum/MD5/reset/76
ok 265 /checksum/MD5/reset/77
ok 266 /checksum/MD5/reset/78
ok 267 /checksum/MD5/reset/79
ok 268 /checksum/MD5/reset/80
ok 269 /checksum/MD5/reset/81
ok 270 /checksum/MD5/reset/82
ok 271 /checksum/MD5/reset/83
ok 272 /checksum/MD5/reset/84
ok 273 /checksum/MD5/reset/85
ok 274 /checksum/MD5/reset/86
ok 275 /checksum/MD5/reset/87
ok 276 /checksum/MD5/reset/88
ok 277 /checksum/MD5/reset/89
ok 278 /checksum/MD5/reset/90
ok 279 /checksum/MD5/reset/91
ok 280 /checksum/MD5/reset/92
ok 281 /checksum/MD5/reset/93
ok 282 /checksum/MD5/reset/94
ok 283 /checksum/MD5/reset/95
ok 284 /checksum/MD5/reset/96
ok 285 /checksum/MD5/reset/97
ok 286 /checksum/MD5/reset/98
ok 287 /checksum/MD5/reset/99
ok 288 /checksum/MD5/reset/100
ok 289 /checksum/MD5/reset/101
ok 290 /checksum/MD5/reset/102
ok 291 /checksum/MD5/reset/103
ok 292 /checksum/MD5/reset/104
ok 293 /checksum/MD5/reset/105
ok 294 /checksum/MD5/reset/106
ok 295 /checksum/MD5/reset/107
ok 296 /checksum/MD5/reset/108
ok 297 /checksum/MD5/reset/109
ok 298 /checksum/MD5/reset/110
ok 299 /checksum/MD5/reset/111
ok 300 /checksum/MD5/reset/112
ok 301 /checksum/MD5/reset/113
ok 302 /checksum/MD5/reset/114
ok 303 /checksum/MD5/reset/115
ok 304 /checksum/MD5/reset/116
ok 305 /checksum/MD5/reset/117
ok 306 /checksum/MD5/reset/118
ok 307 /checksum/MD5/reset/119
ok 308 /checksum/MD5/reset/120
ok 309 /checksum/MD5/reset/121
ok 310 /checksum/MD5/reset/122
ok 311 /checksum/MD5/reset/123
ok 312 /checksum/MD5/reset/124
ok 313 /checksum/MD5/reset/125
ok 314 /checksum/MD5/reset/126
ok 315 /checksum/MD5/reset/127
ok 316 /checksum/MD5/reset/128
ok 317 /checksum/MD5/reset/129
ok 318 /checksum/MD5/reset/130
ok 319 /checksum/MD5/reset/131
ok 320 /checksum/MD5/reset/132
ok 321 /checksum/MD5/reset/133
ok 322 /checksum/MD5/reset/134
ok 323 /checksum/MD5/reset/135
ok 324 /checksum/MD5/reset/136
ok 325 /checksum/MD5/reset/137
ok 326 /checksum/MD5/reset/138
ok 327 /checksum/MD5/reset/139
ok 328 /checksum/MD5/reset/140
ok 329 /checksum/MD5/reset/141
ok 330 /checksum/MD5/reset/142
ok 331 /checksum/MD5/reset/143
ok 332 /checksum/MD5/reset/144
ok 333 /checksum/MD5/reset/145
ok 334 /checksum/MD5/reset/146
ok 335 /checksum/MD5/reset/147
ok 336 /checksum/MD5/reset/148
ok 337 /checksum/MD5/reset/149
ok 338 /checksum/MD5/reset/150
ok 339 /checksum/MD5/reset/151
ok 340 /checksum/MD5/reset/152
ok 341 /checksum/MD5/reset/153
ok 342 /checksum/MD5/reset/154
ok 343 /checksum/MD5/reset/155
ok 344 /checksum/MD5/reset/156
ok 345 /checksum/MD5/reset/157
ok 346 /checksum/MD5/reset/158
ok 347 /checksum/MD5/reset/159
ok 348 /checksum/MD5/reset/160
ok 349 /checksum/MD5/reset/161
ok 350 /checksum/MD5/reset/162
ok 351 /checksum/MD5/reset/163
ok 352 /checksum/MD5/reset/164
ok 353 /checksum/MD5/reset/165
ok 354 /checksum/MD5/reset/166
ok 355 /checksum/MD5/reset/167
ok 356 /checksum/MD5/reset/168
ok 357 /checksum/MD5/reset/169
ok 358 /checksum/MD5/reset/170
ok 359 /checksum/MD5/reset/171
ok 360 /checksum/MD5/reset/172
ok 361 /checksum/MD5/reset/173
ok 362 /checksum/MD5/reset/174
ok 363 /checksum/MD5/reset/175
ok 364 /checksum/MD5/reset/176
ok 365 /checksum/MD5/reset/177
ok 366 /checksum/MD5/reset/178
ok 367 /checksum/MD5/reset/179
ok 368 /checksum/MD5/reset/180
ok 369 /checksum/MD5/reset/181
ok 370 /checksum/MD5/reset/182
ok 371 /checksum/MD5/reset/183
# End of reset tests
# End of MD5 tests
# Start of SHA1 tests
ok 372 /checksum/SHA1/0
ok 373 /checksum/SHA1/1
ok 374 /checksum/SHA1/2
ok 375 /checksum/SHA1/3
ok 376 /checksum/SHA1/4
ok 377 /checksum/SHA1/5
ok 378 /checksum/SHA1/6
ok 379 /checksum/SHA1/7
ok 380 /checksum/SHA1/8
ok 381 /checksum/SHA1/9
ok 382 /checksum/SHA1/10
ok 383 /checksum/SHA1/11
ok 384 /checksum/SHA1/12
ok 385 /checksum/SHA1/13
ok 386 /checksum/SHA1/14
ok 387 /checksum/SHA1/15
ok 388 /checksum/SHA1/16
ok 389 /checksum/SHA1/17
ok 390 /checksum/SHA1/18
ok 391 /checksum/SHA1/19
ok 392 /checksum/SHA1/20
ok 393 /checksum/SHA1/21
ok 394 /checksum/SHA1/22
ok 395 /checksum/SHA1/23
ok 396 /checksum/SHA1/24
ok 397 /checksum/SHA1/25
ok 398 /checksum/SHA1/26
ok 399 /checksum/SHA1/27
ok 400 /checksum/SHA1/28
ok 401 /checksum/SHA1/29
ok 402 /checksum/SHA1/30
ok 403 /checksum/SHA1/31
ok 404 /checksum/SHA1/32
ok 405 /checksum/SHA1/33
ok 406 /checksum/SHA1/34
ok 407 /checksum/SHA1/35
ok 408 /checksum/SHA1/36
ok 409 /checksum/SHA1/37
ok 410 /checksum/SHA1/38
ok 411 /checksum/SHA1/39
ok 412 /checksum/SHA1/40
ok 413 /checksum/SHA1/41
ok 414 /checksum/SHA1/42
ok 415 /checksum/SHA1/43
ok 416 /checksum/SHA1/44
ok 417 /checksum/SHA1/45
ok 418 /checksum/SHA1/46
ok 419 /checksum/SHA1/47
ok 420 /checksum/SHA1/48
ok 421 /checksum/SHA1/49
ok 422 /checksum/SHA1/50
ok 423 /checksum/SHA1/51
ok 424 /checksum/SHA1/52
ok 425 /checksum/SHA1/53
ok 426 /checksum/SHA1/54
ok 427 /checksum/SHA1/55
ok 428 /checksum/SHA1/56
ok 429 /checksum/SHA1/57
ok 430 /checksum/SHA1/58
ok 431 /checksum/SHA1/59
ok 432 /checksum/SHA1/60
ok 433 /checksum/SHA1/61
ok 434 /checksum/SHA1/62
ok 435 /checksum/SHA1/63
ok 436 /checksum/SHA1/64
ok 437 /checksum/SHA1/65
ok 438 /checksum/SHA1/66
ok 439 /checksum/SHA1/67
ok 440 /checksum/SHA1/68
ok 441 /checksum/SHA1/69
ok 442 /checksum/SHA1/70
ok 443 /checksum/SHA1/71
ok 444 /checksum/SHA1/72
ok 445 /checksum/SHA1/73
ok 446 /checksum/SHA1/74
ok 447 /checksum/SHA1/75
ok 448 /checksum/SHA1/76
ok 449 /checksum/SHA1/77
ok 450 /checksum/SHA1/78
ok 451 /checksum/SHA1/79
ok 452 /checksum/SHA1/80
ok 453 /checksum/SHA1/81
ok 454 /checksum/SHA1/82
ok 455 /checksum/SHA1/83
ok 456 /checksum/SHA1/84
ok 457 /checksum/SHA1/85
ok 458 /checksum/SHA1/86
ok 459 /checksum/SHA1/87
ok 460 /checksum/SHA1/88
ok 461 /checksum/SHA1/89
ok 462 /checksum/SHA1/90
ok 463 /checksum/SHA1/91
ok 464 /checksum/SHA1/92
ok 465 /checksum/SHA1/93
ok 466 /checksum/SHA1/94
ok 467 /checksum/SHA1/95
ok 468 /checksum/SHA1/96
ok 469 /checksum/SHA1/97
ok 470 /checksum/SHA1/98
ok 471 /checksum/SHA1/99
ok 472 /checksum/SHA1/100
ok 473 /checksum/SHA1/101
ok 474 /checksum/SHA1/102
ok 475 /checksum/SHA1/103
ok 476 /checksum/SHA1/104
ok 477 /checksum/SHA1/105
ok 478 /checksum/SHA1/106
ok 479 /checksum/SHA1/107
ok 480 /checksum/SHA1/108
ok 481 /checksum/SHA1/109
ok 482 /checksum/SHA1/110
ok 483 /checksum/SHA1/111
ok 484 /checksum/SHA1/112
ok 485 /checksum/SHA1/113
ok 486 /checksum/SHA1/114
ok 487 /checksum/SHA1/115
ok 488 /checksum/SHA1/116
ok 489 /checksum/SHA1/117
ok 490 /checksum/SHA1/118
ok 491 /checksum/SHA1/119
ok 492 /checksum/SHA1/120
ok 493 /checksum/SHA1/121
ok 494 /checksum/SHA1/122
ok 495 /checksum/SHA1/123
ok 496 /checksum/SHA1/124
ok 497 /checksum/SHA1/125
ok 498 /checksum/SHA1/126
ok 499 /checksum/SHA1/127
ok 500 /checksum/SHA1/128
ok 501 /checksum/SHA1/129
ok 502 /checksum/SHA1/130
ok 503 /checksum/SHA1/131
ok 504 /checksum/SHA1/132
ok 505 /checksum/SHA1/133
ok 506 /checksum/SHA1/134
ok 507 /checksum/SHA1/135
ok 508 /checksum/SHA1/136
ok 509 /checksum/SHA1/137
ok 510 /checksum/SHA1/138
ok 511 /checksum/SHA1/139
ok 512 /checksum/SHA1/140
ok 513 /checksum/SHA1/141
ok 514 /checksum/SHA1/142
ok 515 /checksum/SHA1/143
ok 516 /checksum/SHA1/144
ok 517 /checksum/SHA1/145
ok 518 /checksum/SHA1/146
ok 519 /checksum/SHA1/147
ok 520 /checksum/SHA1/148
ok 521 /checksum/SHA1/149
ok 522 /checksum/SHA1/150
ok 523 /checksum/SHA1/151
ok 524 /checksum/SHA1/152
ok 525 /checksum/SHA1/153
ok 526 /checksum/SHA1/154
ok 527 /checksum/SHA1/155
ok 528 /checksum/SHA1/156
ok 529 /checksum/SHA1/157
ok 530 /checksum/SHA1/158
ok 531 /checksum/SHA1/159
ok 532 /checksum/SHA1/160
ok 533 /checksum/SHA1/161
ok 534 /checksum/SHA1/162
ok 535 /checksum/SHA1/163
ok 536 /checksum/SHA1/164
ok 537 /checksum/SHA1/165
ok 538 /checksum/SHA1/166
ok 539 /checksum/SHA1/167
ok 540 /checksum/SHA1/168
ok 541 /checksum/SHA1/169
ok 542 /checksum/SHA1/170
ok 543 /checksum/SHA1/171
ok 544 /checksum/SHA1/172
ok 545 /checksum/SHA1/173
ok 546 /checksum/SHA1/174
ok 547 /checksum/SHA1/175
ok 548 /checksum/SHA1/176
ok 549 /checksum/SHA1/177
ok 550 /checksum/SHA1/178
ok 551 /checksum/SHA1/179
ok 552 /checksum/SHA1/180
ok 553 /checksum/SHA1/181
ok 554 /checksum/SHA1/182
ok 555 /checksum/SHA1/183
ok 556 /checksum/SHA1/string
ok 557 /checksum/SHA1/bytes
# Start of reset tests
ok 558 /checksum/SHA1/reset/0
ok 559 /checksum/SHA1/reset/1
ok 560 /checksum/SHA1/reset/2
ok 561 /checksum/SHA1/reset/3
ok 562 /checksum/SHA1/reset/4
ok 563 /checksum/SHA1/reset/5
ok 564 /checksum/SHA1/reset/6
ok 565 /checksum/SHA1/reset/7
ok 566 /checksum/SHA1/reset/8
ok 567 /checksum/SHA1/reset/9
ok 568 /checksum/SHA1/reset/10
ok 569 /checksum/SHA1/reset/11
ok 570 /checksum/SHA1/reset/12
ok 571 /checksum/SHA1/reset/13
ok 572 /checksum/SHA1/reset/14
ok 573 /checksum/SHA1/reset/15
ok 574 /checksum/SHA1/reset/16
ok 575 /checksum/SHA1/reset/17
ok 576 /checksum/SHA1/reset/18
ok 577 /checksum/SHA1/reset/19
ok 578 /checksum/SHA1/reset/20
ok 579 /checksum/SHA1/reset/21
ok 580 /checksum/SHA1/reset/22
ok 581 /checksum/SHA1/reset/23
ok 582 /checksum/SHA1/reset/24
ok 583 /checksum/SHA1/reset/25
ok 584 /checksum/SHA1/reset/26
ok 585 /checksum/SHA1/reset/27
ok 586 /checksum/SHA1/reset/28
ok 587 /checksum/SHA1/reset/29
ok 588 /checksum/SHA1/reset/30
ok 589 /checksum/SHA1/reset/31
ok 590 /checksum/SHA1/reset/32
ok 591 /checksum/SHA1/reset/33
ok 592 /checksum/SHA1/reset/34
ok 593 /checksum/SHA1/reset/35
ok 594 /checksum/SHA1/reset/36
ok 595 /checksum/SHA1/reset/37
ok 596 /checksum/SHA1/reset/38
ok 597 /checksum/SHA1/reset/39
ok 598 /checksum/SHA1/reset/40
ok 599 /checksum/SHA1/reset/41
ok 600 /checksum/SHA1/reset/42
ok 601 /checksum/SHA1/reset/43
ok 602 /checksum/SHA1/reset/44
ok 603 /checksum/SHA1/reset/45
ok 604 /checksum/SHA1/reset/46
ok 605 /checksum/SHA1/reset/47
ok 606 /checksum/SHA1/reset/48
ok 607 /checksum/SHA1/reset/49
ok 608 /checksum/SHA1/reset/50
ok 609 /checksum/SHA1/reset/51
ok 610 /checksum/SHA1/reset/52
ok 611 /checksum/SHA1/reset/53
ok 612 /checksum/SHA1/reset/54
ok 613 /checksum/SHA1/reset/55
ok 614 /checksum/SHA1/reset/56
ok 615 /checksum/SHA1/reset/57
ok 616 /checksum/SHA1/reset/58
ok 617 /checksum/SHA1/reset/59
ok 618 /checksum/SHA1/reset/60
ok 619 /checksum/SHA1/reset/61
ok 620 /checksum/SHA1/reset/62
ok 621 /checksum/SHA1/reset/63
ok 622 /checksum/SHA1/reset/64
ok 623 /checksum/SHA1/reset/65
ok 624 /checksum/SHA1/reset/66
ok 625 /checksum/SHA1/reset/67
ok 626 /checksum/SHA1/reset/68
ok 627 /checksum/SHA1/reset/69
ok 628 /checksum/SHA1/reset/70
ok 629 /checksum/SHA1/reset/71
ok 630 /checksum/SHA1/reset/72
ok 631 /checksum/SHA1/reset/73
ok 632 /checksum/SHA1/reset/74
ok 633 /checksum/SHA1/reset/75
ok 634 /checksum/SHA1/reset/76
ok 635 /checksum/SHA1/reset/77
ok 636 /checksum/SHA1/reset/78
ok 637 /checksum/SHA1/reset/79
ok 638 /checksum/SHA1/reset/80
ok 639 /checksum/SHA1/reset/81
ok 640 /checksum/SHA1/reset/82
ok 641 /checksum/SHA1/reset/83
ok 642 /checksum/SHA1/reset/84
ok 643 /checksum/SHA1/reset/85
ok 644 /checksum/SHA1/reset/86
ok 645 /checksum/SHA1/reset/87
ok 646 /checksum/SHA1/reset/88
ok 647 /checksum/SHA1/reset/89
ok 648 /checksum/SHA1/reset/90
ok 649 /checksum/SHA1/reset/91
ok 650 /checksum/SHA1/reset/92
ok 651 /checksum/SHA1/reset/93
ok 652 /checksum/SHA1/reset/94
ok 653 /checksum/SHA1/reset/95
ok 654 /checksum/SHA1/reset/96
ok 655 /checksum/SHA1/reset/97
ok 656 /checksum/SHA1/reset/98
ok 657 /checksum/SHA1/reset/99
ok 658 /checksum/SHA1/reset/100
ok 659 /checksum/SHA1/reset/101
ok 660 /checksum/SHA1/reset/102
ok 661 /checksum/SHA1/reset/103
ok 662 /checksum/SHA1/reset/104
ok 663 /checksum/SHA1/reset/105
ok 664 /checksum/SHA1/reset/106
ok 665 /checksum/SHA1/reset/107
ok 666 /checksum/SHA1/reset/108
ok 667 /checksum/SHA1/reset/109
ok 668 /checksum/SHA1/reset/110
ok 669 /checksum/SHA1/reset/111
ok 670 /checksum/SHA1/reset/112
ok 671 /checksum/SHA1/reset/113
ok 672 /checksum/SHA1/reset/114
ok 673 /checksum/SHA1/reset/115
ok 674 /checksum/SHA1/reset/116
ok 675 /checksum/SHA1/reset/117
ok 676 /checksum/SHA1/reset/118
ok 677 /checksum/SHA1/reset/119
ok 678 /checksum/SHA1/reset/120
ok 679 /checksum/SHA1/reset/121
ok 680 /checksum/SHA1/reset/122
ok 681 /checksum/SHA1/reset/123
ok 682 /checksum/SHA1/reset/124
ok 683 /checksum/SHA1/reset/125
ok 684 /checksum/SHA1/reset/126
ok 685 /checksum/SHA1/reset/127
ok 686 /checksum/SHA1/reset/128
ok 687 /checksum/SHA1/reset/129
ok 688 /checksum/SHA1/reset/130
ok 689 /checksum/SHA1/reset/131
ok 690 /checksum/SHA1/reset/132
ok 691 /checksum/SHA1/reset/133
ok 692 /checksum/SHA1/reset/134
ok 693 /checksum/SHA1/reset/135
ok 694 /checksum/SHA1/reset/136
ok 695 /checksum/SHA1/reset/137
ok 696 /checksum/SHA1/reset/138
ok 697 /checksum/SHA1/reset/139
ok 698 /checksum/SHA1/reset/140
ok 699 /checksum/SHA1/reset/141
ok 700 /checksum/SHA1/reset/142
ok 701 /checksum/SHA1/reset/143
ok 702 /checksum/SHA1/reset/144
ok 703 /checksum/SHA1/reset/145
ok 704 /checksum/SHA1/reset/146
ok 705 /checksum/SHA1/reset/147
ok 706 /checksum/SHA1/reset/148
ok 707 /checksum/SHA1/reset/149
ok 708 /checksum/SHA1/reset/150
ok 709 /checksum/SHA1/reset/151
ok 710 /checksum/SHA1/reset/152
ok 711 /checksum/SHA1/reset/153
ok 712 /checksum/SHA1/reset/154
ok 713 /checksum/SHA1/reset/155
ok 714 /checksum/SHA1/reset/156
ok 715 /checksum/SHA1/reset/157
ok 716 /checksum/SHA1/reset/158
ok 717 /checksum/SHA1/reset/159
ok 718 /checksum/SHA1/reset/160
ok 719 /checksum/SHA1/reset/161
ok 720 /checksum/SHA1/reset/162
ok 721 /checksum/SHA1/reset/163
ok 722 /checksum/SHA1/reset/164
ok 723 /checksum/SHA1/reset/165
ok 724 /checksum/SHA1/reset/166
ok 725 /checksum/SHA1/reset/167
ok 726 /checksum/SHA1/reset/168
ok 727 /checksum/SHA1/reset/169
ok 728 /checksum/SHA1/reset/170
ok 729 /checksum/SHA1/reset/171
ok 730 /checksum/SHA1/reset/172
ok 731 /checksum/SHA1/reset/173
ok 732 /checksum/SHA1/reset/174
ok 733 /checksum/SHA1/reset/175
ok 734 /checksum/SHA1/reset/176
ok 735 /checksum/SHA1/reset/177
ok 736 /checksum/SHA1/reset/178
ok 737 /checksum/SHA1/reset/179
ok 738 /checksum/SHA1/reset/180
ok 739 /checksum/SHA1/reset/181
ok 740 /checksum/SHA1/reset/182
ok 741 /checksum/SHA1/reset/183
# End of reset tests
# End of SHA1 tests
# Start of SHA256 tests
ok 742 /checksum/SHA256/0
ok 743 /checksum/SHA256/1
ok 744 /checksum/SHA256/2
ok 745 /checksum/SHA256/3
ok 746 /checksum/SHA256/4
ok 747 /checksum/SHA256/5
ok 748 /checksum/SHA256/6
ok 749 /checksum/SHA256/7
ok 750 /checksum/SHA256/8
ok 751 /checksum/SHA256/9
ok 752 /checksum/SHA256/10
ok 753 /checksum/SHA256/11
ok 754 /checksum/SHA256/12
ok 755 /checksum/SHA256/13
ok 756 /checksum/SHA256/14
ok 757 /checksum/SHA256/15
ok 758 /checksum/SHA256/16
ok 759 /checksum/SHA256/17
ok 760 /checksum/SHA256/18
ok 761 /checksum/SHA256/19
ok 762 /checksum/SHA256/20
ok 763 /checksum/SHA256/21
ok 764 /checksum/SHA256/22
ok 765 /checksum/SHA256/23
ok 766 /checksum/SHA256/24
ok 767 /checksum/SHA256/25
ok 768 /checksum/SHA256/26
ok 769 /checksum/SHA256/27
ok 770 /checksum/SHA256/28
ok 771 /checksum/SHA256/29
ok 772 /checksum/SHA256/30
ok 773 /checksum/SHA256/31
ok 774 /checksum/SHA256/32
ok 775 /checksum/SHA256/33
ok 776 /checksum/SHA256/34
ok 777 /checksum/SHA256/35
ok 778 /checksum/SHA256/36
ok 779 /checksum/SHA256/37
ok 780 /checksum/SHA256/38
ok 781 /checksum/SHA256/39
ok 782 /checksum/SHA256/40
ok 783 /checksum/SHA256/41
ok 784 /checksum/SHA256/42
ok 785 /checksum/SHA256/43
ok 786 /checksum/SHA256/44
ok 787 /checksum/SHA256/45
ok 788 /checksum/SHA256/46
ok 789 /checksum/SHA256/47
ok 790 /checksum/SHA256/48
ok 791 /checksum/SHA256/49
ok 792 /checksum/SHA256/50
ok 793 /checksum/SHA256/51
ok 794 /checksum/SHA256/52
ok 795 /checksum/SHA256/53
ok 796 /checksum/SHA256/54
ok 797 /checksum/SHA256/55
ok 798 /checksum/SHA256/56
ok 799 /checksum/SHA256/57
ok 800 /checksum/SHA256/58
ok 801 /checksum/SHA256/59
ok 802 /checksum/SHA256/60
ok 803 /checksum/SHA256/61
ok 804 /checksum/SHA256/62
ok 805 /checksum/SHA256/63
ok 806 /checksum/SHA256/64
ok 807 /checksum/SHA256/65
ok 808 /checksum/SHA256/66
ok 809 /checksum/SHA256/67
ok 810 /checksum/SHA256/68
ok 811 /checksum/SHA256/69
ok 812 /checksum/SHA256/70
ok 813 /checksum/SHA256/71
ok 814 /checksum/SHA256/72
ok 815 /checksum/SHA256/73
ok 816 /checksum/SHA256/74
ok 817 /checksum/SHA256/75
ok 818 /checksum/SHA256/76
ok 819 /checksum/SHA256/77
ok 820 /checksum/SHA256/78
ok 821 /checksum/SHA256/79
ok 822 /checksum/SHA256/80
ok 823 /checksum/SHA256/81
ok 824 /checksum/SHA256/82
ok 825 /checksum/SHA256/83
ok 826 /checksum/SHA256/84
ok 827 /checksum/SHA256/85
ok 828 /checksum/SHA256/86
ok 829 /checksum/SHA256/87
ok 830 /checksum/SHA256/88
ok 831 /checksum/SHA256/89
ok 832 /checksum/SHA256/90
ok 833 /checksum/SHA256/91
ok 834 /checksum/SHA256/92
ok 835 /checksum/SHA256/93
ok 836 /checksum/SHA256/94
ok 837 /checksum/SHA256/95
ok 838 /checksum/SHA256/96
ok 839 /checksum/SHA256/97
ok 840 /checksum/SHA256/98
ok 841 /checksum/SHA256/99
ok 842 /checksum/SHA256/100
ok 843 /checksum/SHA256/101
ok 844 /checksum/SHA256/102
ok 845 /checksum/SHA256/103
ok 846 /checksum/SHA256/104
ok 847 /checksum/SHA256/105
ok 848 /checksum/SHA256/106
ok 849 /checksum/SHA256/107
ok 850 /checksum/SHA256/108
ok 851 /checksum/SHA256/109
ok 852 /checksum/SHA256/110
ok 853 /checksum/SHA256/111
ok 854 /checksum/SHA256/112
ok 855 /checksum/SHA256/113
ok 856 /checksum/SHA256/114
ok 857 /checksum/SHA256/115
ok 858 /checksum/SHA256/116
ok 859 /checksum/SHA256/117
ok 860 /checksum/SHA256/118
ok 861 /checksum/SHA256/119
ok 862 /checksum/SHA256/120
ok 863 /checksum/SHA256/121
ok 864 /checksum/SHA256/122
ok 865 /checksum/SHA256/123
ok 866 /checksum/SHA256/124
ok 867 /checksum/SHA256/125
ok 868 /checksum/SHA256/126
ok 869 /checksum/SHA256/127
ok 870 /checksum/SHA256/128
ok 871 /checksum/SHA256/129
ok 872 /checksum/SHA256/130
ok 873 /checksum/SHA256/131
ok 874 /checksum/SHA256/132
ok 875 /checksum/SHA256/133
ok 876 /checksum/SHA256/134
ok 877 /checksum/SHA256/135
ok 878 /checksum/SHA256/136
ok 879 /checksum/SHA256/137
ok 880 /checksum/SHA256/138
ok 881 /checksum/SHA256/139
ok 882 /checksum/SHA256/140
ok 883 /checksum/SHA256/141
ok 884 /checksum/SHA256/142
ok 885 /checksum/SHA256/143
ok 886 /checksum/SHA256/144
ok 887 /checksum/SHA256/145
ok 888 /checksum/SHA256/146
ok 889 /checksum/SHA256/147
ok 890 /checksum/SHA256/148
ok 891 /checksum/SHA256/149
ok 892 /checksum/SHA256/150
ok 893 /checksum/SHA256/151
ok 894 /checksum/SHA256/152
ok 895 /checksum/SHA256/153
ok 896 /checksum/SHA256/154
ok 897 /checksum/SHA256/155
ok 898 /checksum/SHA256/156
ok 899 /checksum/SHA256/157
ok 900 /checksum/SHA256/158
ok 901 /checksum/SHA256/159
ok 902 /checksum/SHA256/160
ok 903 /checksum/SHA256/161
ok 904 /checksum/SHA256/162
ok 905 /checksum/SHA256/163
ok 906 /checksum/SHA256/164
ok 907 /checksum/SHA256/165
ok 908 /checksum/SHA256/166
ok 909 /checksum/SHA256/167
ok 910 /checksum/SHA256/168
ok 911 /checksum/SHA256/169
ok 912 /checksum/SHA256/170
ok 913 /checksum/SHA256/171
ok 914 /checksum/SHA256/172
ok 915 /checksum/SHA256/173
ok 916 /checksum/SHA256/174
ok 917 /checksum/SHA256/175
ok 918 /checksum/SHA256/176
ok 919 /checksum/SHA256/177
ok 920 /checksum/SHA256/178
ok 921 /checksum/SHA256/179
ok 922 /checksum/SHA256/180
ok 923 /checksum/SHA256/181
ok 924 /checksum/SHA256/182
ok 925 /checksum/SHA256/183
ok 926 /checksum/SHA256/string
ok 927 /checksum/SHA256/bytes
# Start of reset tests
ok 928 /checksum/SHA256/reset/0
ok 929 /checksum/SHA256/reset/1
ok 930 /checksum/SHA256/reset/2
ok 931 /checksum/SHA256/reset/3
ok 932 /checksum/SHA256/reset/4
ok 933 /checksum/SHA256/reset/5
ok 934 /checksum/SHA256/reset/6
ok 935 /checksum/SHA256/reset/7
ok 936 /checksum/SHA256/reset/8
ok 937 /checksum/SHA256/reset/9
ok 938 /checksum/SHA256/reset/10
ok 939 /checksum/SHA256/reset/11
ok 940 /checksum/SHA256/reset/12
ok 941 /checksum/SHA256/reset/13
ok 942 /checksum/SHA256/reset/14
ok 943 /checksum/SHA256/reset/15
ok 944 /checksum/SHA256/reset/16
ok 945 /checksum/SHA256/reset/17
ok 946 /checksum/SHA256/reset/18
ok 947 /checksum/SHA256/reset/19
ok 948 /checksum/SHA256/reset/20
ok 949 /checksum/SHA256/reset/21
ok 950 /checksum/SHA256/reset/22
ok 951 /checksum/SHA256/reset/23
ok 952 /checksum/SHA256/reset/24
ok 953 /checksum/SHA256/reset/25
ok 954 /checksum/SHA256/reset/26
ok 955 /checksum/SHA256/reset/27
ok 956 /checksum/SHA256/reset/28
ok 957 /checksum/SHA256/reset/29
ok 958 /checksum/SHA256/reset/30
ok 959 /checksum/SHA256/reset/31
ok 960 /checksum/SHA256/reset/32
ok 961 /checksum/SHA256/reset/33
ok 962 /checksum/SHA256/reset/34
ok 963 /checksum/SHA256/reset/35
ok 964 /checksum/SHA256/reset/36
ok 965 /checksum/SHA256/reset/37
ok 966 /checksum/SHA256/reset/38
ok 967 /checksum/SHA256/reset/39
ok 968 /checksum/SHA256/reset/40
ok 969 /checksum/SHA256/reset/41
ok 970 /checksum/SHA256/reset/42
ok 971 /checksum/SHA256/reset/43
ok 972 /checksum/SHA256/reset/44
ok 973 /checksum/SHA256/reset/45
ok 974 /checksum/SHA256/reset/46
ok 975 /checksum/SHA256/reset/47
ok 976 /checksum/SHA256/reset/48
ok 977 /checksum/SHA256/reset/49
ok 978 /checksum/SHA256/reset/50
ok 979 /checksum/SHA256/reset/51
ok 980 /checksum/SHA256/reset/52
ok 981 /checksum/SHA256/reset/53
ok 982 /checksum/SHA256/reset/54
ok 983 /checksum/SHA256/reset/55
ok 984 /checksum/SHA256/reset/56
ok 985 /checksum/SHA256/reset/57
ok 986 /checksum/SHA256/reset/58
ok 987 /checksum/SHA256/reset/59
ok 988 /checksum/SHA256/reset/60
ok 989 /checksum/SHA256/reset/61
ok 990 /checksum/SHA256/reset/62
ok 991 /checksum/SHA256/reset/63
ok 992 /checksum/SHA256/reset/64
ok 993 /checksum/SHA256/reset/65
ok 994 /checksum/SHA256/reset/66
ok 995 /checksum/SHA256/reset/67
ok 996 /checksum/SHA256/reset/68
ok 997 /checksum/SHA256/reset/69
ok 998 /checksum/SHA256/reset/70
ok 999 /checksum/SHA256/reset/71
ok 1000 /checksum/SHA256/reset/72
ok 1001 /checksum/SHA256/reset/73
ok 1002 /checksum/SHA256/reset/74
ok 1003 /checksum/SHA256/reset/75
ok 1004 /checksum/SHA256/reset/76
ok 1005 /checksum/SHA256/reset/77
ok 1006 /checksum/SHA256/reset/78
ok 1007 /checksum/SHA256/reset/79
ok 1008 /checksum/SHA256/reset/80
ok 1009 /checksum/SHA256/reset/81
ok 1010 /checksum/SHA256/reset/82
ok 1011 /checksum/SHA256/reset/83
ok 1012 /checksum/SHA256/reset/84
ok 1013 /checksum/SHA256/reset/85
ok 1014 /checksum/SHA256/reset/86
ok 1015 /checksum/SHA256/reset/87
ok 1016 /checksum/SHA256/reset/88
ok 1017 /checksum/SHA256/reset/89
ok 1018 /checksum/SHA256/reset/90
ok 1019 /checksum/SHA256/reset/91
ok 1020 /checksum/SHA256/reset/92
ok 1021 /checksum/SHA256/reset/93
ok 1022 /checksum/SHA256/reset/94
ok 1023 /checksum/SHA256/reset/95
ok 1024 /checksum/SHA256/reset/96
ok 1025 /checksum/SHA256/reset/97
ok 1026 /checksum/SHA256/reset/98
ok 1027 /checksum/SHA256/reset/99
ok 1028 /checksum/SHA256/reset/100
ok 1029 /checksum/SHA256/reset/101
ok 1030 /checksum/SHA256/reset/102
ok 1031 /checksum/SHA256/reset/103
ok 1032 /checksum/SHA256/reset/104
ok 1033 /checksum/SHA256/reset/105
ok 1034 /checksum/SHA256/reset/106
ok 1035 /checksum/SHA256/reset/107
ok 1036 /checksum/SHA256/reset/108
ok 1037 /checksum/SHA256/reset/109
ok 1038 /checksum/SHA256/reset/110
ok 1039 /checksum/SHA256/reset/111
ok 1040 /checksum/SHA256/reset/112
ok 1041 /checksum/SHA256/reset/113
ok 1042 /checksum/SHA256/reset/114
ok 1043 /checksum/SHA256/reset/115
ok 1044 /checksum/SHA256/reset/116
ok 1045 /checksum/SHA256/reset/117
ok 1046 /checksum/SHA256/reset/118
ok 1047 /checksum/SHA256/reset/119
ok 1048 /checksum/SHA256/reset/120
ok 1049 /checksum/SHA256/reset/121
ok 1050 /checksum/SHA256/reset/122
ok 1051 /checksum/SHA256/reset/123
ok 1052 /checksum/SHA256/reset/124
ok 1053 /checksum/SHA256/reset/125
ok 1054 /checksum/SHA256/reset/126
ok 1055 /checksum/SHA256/reset/127
ok 1056 /checksum/SHA256/reset/128
ok 1057 /checksum/SHA256/reset/129
ok 1058 /checksum/SHA256/reset/130
ok 1059 /checksum/SHA256/reset/131
ok 1060 /checksum/SHA256/reset/132
ok 1061 /checksum/SHA256/reset/133
ok 1062 /checksum/SHA256/reset/134
ok 1063 /checksum/SHA256/reset/135
ok 1064 /checksum/SHA256/reset/136
ok 1065 /checksum/SHA256/reset/137
ok 1066 /checksum/SHA256/reset/138
ok 1067 /checksum/SHA256/reset/139
ok 1068 /checksum/SHA256/reset/140
ok 1069 /checksum/SHA256/reset/141
ok 1070 /checksum/SHA256/reset/142
ok 1071 /checksum/SHA256/reset/143
ok 1072 /checksum/SHA256/reset/144
ok 1073 /checksum/SHA256/reset/145
ok 1074 /checksum/SHA256/reset/146
ok 1075 /checksum/SHA256/reset/147
ok 1076 /checksum/SHA256/reset/148
ok 1077 /checksum/SHA256/reset/149
ok 1078 /checksum/SHA256/reset/150
ok 1079 /checksum/SHA256/reset/151
ok 1080 /checksum/SHA256/reset/152
ok 1081 /checksum/SHA256/reset/153
ok 1082 /checksum/SHA256/reset/154
ok 1083 /checksum/SHA256/reset/155
ok 1084 /checksum/SHA256/reset/156
ok 1085 /checksum/SHA256/reset/157
ok 1086 /checksum/SHA256/reset/158
ok 1087 /checksum/SHA256/reset/159
ok 1088 /checksum/SHA256/reset/160
ok 1089 /checksum/SHA256/reset/161
ok 1090 /checksum/SHA256/reset/162
ok 1091 /checksum/SHA256/reset/163
ok 1092 /checksum/SHA256/reset/164
ok 1093 /checksum/SHA256/reset/165
ok 1094 /checksum/SHA256/reset/166
ok 1095 /checksum/SHA256/reset/167
ok 1096 /checksum/SHA256/reset/168
ok 1097 /checksum/SHA256/reset/169
ok 1098 /checksum/SHA256/reset/170
ok 1099 /checksum/SHA256/reset/171
ok 1100 /checksum/SHA256/reset/172
ok 1101 /checksum/SHA256/reset/173
ok 1102 /checksum/SHA256/reset/174
ok 1103 /checksum/SHA256/reset/175
ok 1104 /checksum/SHA256/reset/176
ok 1105 /checksum/SHA256/reset/177
ok 1106 /checksum/SHA256/reset/178
ok 1107 /checksum/SHA256/reset/179
ok 1108 /checksum/SHA256/reset/180
ok 1109 /checksum/SHA256/reset/181
ok 1110 /checksum/SHA256/reset/182
ok 1111 /checksum/SHA256/reset/183
# End of reset tests
# End of SHA256 tests
# Start of SHA384 tests
ok 1112 /checksum/SHA384/0
ok 1113 /checksum/SHA384/1
ok 1114 /checksum/SHA384/2
ok 1115 /checksum/SHA384/3
ok 1116 /checksum/SHA384/4
ok 1117 /checksum/SHA384/5
ok 1118 /checksum/SHA384/6
ok 1119 /checksum/SHA384/7
ok 1120 /checksum/SHA384/8
ok 1121 /checksum/SHA384/9
ok 1122 /checksum/SHA384/10
ok 1123 /checksum/SHA384/11
ok 1124 /checksum/SHA384/12
ok 1125 /checksum/SHA384/13
ok 1126 /checksum/SHA384/14
ok 1127 /checksum/SHA384/15
ok 1128 /checksum/SHA384/16
ok 1129 /checksum/SHA384/17
ok 1130 /checksum/SHA384/18
ok 1131 /checksum/SHA384/19
ok 1132 /checksum/SHA384/20
ok 1133 /checksum/SHA384/21
ok 1134 /checksum/SHA384/22
ok 1135 /checksum/SHA384/23
ok 1136 /checksum/SHA384/24
ok 1137 /checksum/SHA384/25
ok 1138 /checksum/SHA384/26
ok 1139 /checksum/SHA384/27
ok 1140 /checksum/SHA384/28
ok 1141 /checksum/SHA384/29
ok 1142 /checksum/SHA384/30
ok 1143 /checksum/SHA384/31
ok 1144 /checksum/SHA384/32
ok 1145 /checksum/SHA384/33
ok 1146 /checksum/SHA384/34
ok 1147 /checksum/SHA384/35
ok 1148 /checksum/SHA384/36
ok 1149 /checksum/SHA384/37
ok 1150 /checksum/SHA384/38
ok 1151 /checksum/SHA384/39
ok 1152 /checksum/SHA384/40
ok 1153 /checksum/SHA384/41
ok 1154 /checksum/SHA384/42
ok 1155 /checksum/SHA384/43
ok 1156 /checksum/SHA384/44
ok 1157 /checksum/SHA384/45
ok 1158 /checksum/SHA384/46
ok 1159 /checksum/SHA384/47
ok 1160 /checksum/SHA384/48
ok 1161 /checksum/SHA384/49
ok 1162 /checksum/SHA384/50
ok 1163 /checksum/SHA384/51
ok 1164 /checksum/SHA384/52
ok 1165 /checksum/SHA384/53
ok 1166 /checksum/SHA384/54
ok 1167 /checksum/SHA384/55
ok 1168 /checksum/SHA384/56
ok 1169 /checksum/SHA384/57
ok 1170 /checksum/SHA384/58
ok 1171 /checksum/SHA384/59
ok 1172 /checksum/SHA384/60
ok 1173 /checksum/SHA384/61
ok 1174 /checksum/SHA384/62
ok 1175 /checksum/SHA384/63
ok 1176 /checksum/SHA384/64
ok 1177 /checksum/SHA384/65
ok 1178 /checksum/SHA384/66
ok 1179 /checksum/SHA384/67
ok 1180 /checksum/SHA384/68
ok 1181 /checksum/SHA384/69
ok 1182 /checksum/SHA384/70
ok 1183 /checksum/SHA384/71
ok 1184 /checksum/SHA384/72
ok 1185 /checksum/SHA384/73
ok 1186 /checksum/SHA384/74
ok 1187 /checksum/SHA384/75
ok 1188 /checksum/SHA384/76
ok 1189 /checksum/SHA384/77
ok 1190 /checksum/SHA384/78
ok 1191 /checksum/SHA384/79
ok 1192 /checksum/SHA384/80
ok 1193 /checksum/SHA384/81
ok 1194 /checksum/SHA384/82
ok 1195 /checksum/SHA384/83
ok 1196 /checksum/SHA384/84
ok 1197 /checksum/SHA384/85
ok 1198 /checksum/SHA384/86
ok 1199 /checksum/SHA384/87
ok 1200 /checksum/SHA384/88
ok 1201 /checksum/SHA384/89
ok 1202 /checksum/SHA384/90
ok 1203 /checksum/SHA384/91
ok 1204 /checksum/SHA384/92
ok 1205 /checksum/SHA384/93
ok 1206 /checksum/SHA384/94
ok 1207 /checksum/SHA384/95
ok 1208 /checksum/SHA384/96
ok 1209 /checksum/SHA384/97
ok 1210 /checksum/SHA384/98
ok 1211 /checksum/SHA384/99
ok 1212 /checksum/SHA384/100
ok 1213 /checksum/SHA384/101
ok 1214 /checksum/SHA384/102
ok 1215 /checksum/SHA384/103
ok 1216 /checksum/SHA384/104
ok 1217 /checksum/SHA384/105
ok 1218 /checksum/SHA384/106
ok 1219 /checksum/SHA384/107
ok 1220 /checksum/SHA384/108
ok 1221 /checksum/SHA384/109
ok 1222 /checksum/SHA384/110
ok 1223 /checksum/SHA384/111
ok 1224 /checksum/SHA384/112
ok 1225 /checksum/SHA384/113
ok 1226 /checksum/SHA384/114
ok 1227 /checksum/SHA384/115
ok 1228 /checksum/SHA384/116
ok 1229 /checksum/SHA384/117
ok 1230 /checksum/SHA384/118
ok 1231 /checksum/SHA384/119
ok 1232 /checksum/SHA384/120
ok 1233 /checksum/SHA384/121
ok 1234 /checksum/SHA384/122
ok 1235 /checksum/SHA384/123
ok 1236 /checksum/SHA384/124
ok 1237 /checksum/SHA384/125
ok 1238 /checksum/SHA384/126
ok 1239 /checksum/SHA384/127
ok 1240 /checksum/SHA384/128
ok 1241 /checksum/SHA384/129
ok 1242 /checksum/SHA384/130
ok 1243 /checksum/SHA384/131
ok 1244 /checksum/SHA384/132
ok 1245 /checksum/SHA384/133
ok 1246 /checksum/SHA384/134
ok 1247 /checksum/SHA384/135
ok 1248 /checksum/SHA384/136
ok 1249 /checksum/SHA384/137
ok 1250 /checksum/SHA384/138
ok 1251 /checksum/SHA384/139
ok 1252 /checksum/SHA384/140
ok 1253 /checksum/SHA384/141
ok 1254 /checksum/SHA384/142
ok 1255 /checksum/SHA384/143
ok 1256 /checksum/SHA384/144
ok 1257 /checksum/SHA384/145
ok 1258 /checksum/SHA384/146
ok 1259 /checksum/SHA384/147
ok 1260 /checksum/SHA384/148
ok 1261 /checksum/SHA384/149
ok 1262 /checksum/SHA384/150
ok 1263 /checksum/SHA384/151
ok 1264 /checksum/SHA384/152
ok 1265 /checksum/SHA384/153
ok 1266 /checksum/SHA384/154
ok 1267 /checksum/SHA384/155
ok 1268 /checksum/SHA384/156
ok 1269 /checksum/SHA384/157
ok 1270 /checksum/SHA384/158
ok 1271 /checksum/SHA384/159
ok 1272 /checksum/SHA384/160
ok 1273 /checksum/SHA384/161
ok 1274 /checksum/SHA384/162
ok 1275 /checksum/SHA384/163
ok 1276 /checksum/SHA384/164
ok 1277 /checksum/SHA384/165
ok 1278 /checksum/SHA384/166
ok 1279 /checksum/SHA384/167
ok 1280 /checksum/SHA384/168
ok 1281 /checksum/SHA384/169
ok 1282 /checksum/SHA384/170
ok 1283 /checksum/SHA384/171
ok 1284 /checksum/SHA384/172
ok 1285 /checksum/SHA384/173
ok 1286 /checksum/SHA384/174
ok 1287 /checksum/SHA384/175
ok 1288 /checksum/SHA384/176
ok 1289 /checksum/SHA384/177
ok 1290 /checksum/SHA384/178
ok 1291 /checksum/SHA384/179
ok 1292 /checksum/SHA384/180
ok 1293 /checksum/SHA384/181
ok 1294 /checksum/SHA384/182
ok 1295 /checksum/SHA384/183
ok 1296 /checksum/SHA384/string
ok 1297 /checksum/SHA384/bytes
# Start of reset tests
ok 1298 /checksum/SHA384/reset/0
ok 1299 /checksum/SHA384/reset/1
ok 1300 /checksum/SHA384/reset/2
ok 1301 /checksum/SHA384/reset/3
ok 1302 /checksum/SHA384/reset/4
ok 1303 /checksum/SHA384/reset/5
ok 1304 /checksum/SHA384/reset/6
ok 1305 /checksum/SHA384/reset/7
ok 1306 /checksum/SHA384/reset/8
ok 1307 /checksum/SHA384/reset/9
ok 1308 /checksum/SHA384/reset/10
ok 1309 /checksum/SHA384/reset/11
ok 1310 /checksum/SHA384/reset/12
ok 1311 /checksum/SHA384/reset/13
ok 1312 /checksum/SHA384/reset/14
ok 1313 /checksum/SHA384/reset/15
ok 1314 /checksum/SHA384/reset/16
ok 1315 /checksum/SHA384/reset/17
ok 1316 /checksum/SHA384/reset/18
ok 1317 /checksum/SHA384/reset/19
ok 1318 /checksum/SHA384/reset/20
ok 1319 /checksum/SHA384/reset/21
ok 1320 /checksum/SHA384/reset/22
ok 1321 /checksum/SHA384/reset/23
ok 1322 /checksum/SHA384/reset/24
ok 1323 /checksum/SHA384/reset/25
ok 1324 /checksum/SHA384/reset/26
ok 1325 /checksum/SHA384/reset/27
ok 1326 /checksum/SHA384/reset/28
ok 1327 /checksum/SHA384/reset/29
ok 1328 /checksum/SHA384/reset/30
ok 1329 /checksum/SHA384/reset/31
ok 1330 /checksum/SHA384/reset/32
ok 1331 /checksum/SHA384/reset/33
ok 1332 /checksum/SHA384/reset/34
ok 1333 /checksum/SHA384/reset/35
ok 1334 /checksum/SHA384/reset/36
ok 1335 /checksum/SHA384/reset/37
ok 1336 /checksum/SHA384/reset/38
ok 1337 /checksum/SHA384/reset/39
ok 1338 /checksum/SHA384/reset/40
ok 1339 /checksum/SHA384/reset/41
ok 1340 /checksum/SHA384/reset/42
ok 1341 /checksum/SHA384/reset/43
ok 1342 /checksum/SHA384/reset/44
ok 1343 /checksum/SHA384/reset/45
ok 1344 /checksum/SHA384/reset/46
ok 1345 /checksum/SHA384/reset/47
ok 1346 /checksum/SHA384/reset/48
ok 1347 /checksum/SHA384/reset/49
ok 1348 /checksum/SHA384/reset/50
ok 1349 /checksum/SHA384/reset/51
ok 1350 /checksum/SHA384/reset/52
ok 1351 /checksum/SHA384/reset/53
ok 1352 /checksum/SHA384/reset/54
ok 1353 /checksum/SHA384/reset/55
ok 1354 /checksum/SHA384/reset/56
ok 1355 /checksum/SHA384/reset/57
ok 1356 /checksum/SHA384/reset/58
ok 1357 /checksum/SHA384/reset/59
ok 1358 /checksum/SHA384/reset/60
ok 1359 /checksum/SHA384/reset/61
ok 1360 /checksum/SHA384/reset/62
ok 1361 /checksum/SHA384/reset/63
ok 1362 /checksum/SHA384/reset/64
ok 1363 /checksum/SHA384/reset/65
ok 1364 /checksum/SHA384/reset/66
ok 1365 /checksum/SHA384/reset/67
ok 1366 /checksum/SHA384/reset/68
ok 1367 /checksum/SHA384/reset/69
ok 1368 /checksum/SHA384/reset/70
ok 1369 /checksum/SHA384/reset/71
ok 1370 /checksum/SHA384/reset/72
ok 1371 /checksum/SHA384/reset/73
ok 1372 /checksum/SHA384/reset/74
ok 1373 /checksum/SHA384/reset/75
ok 1374 /checksum/SHA384/reset/76
ok 1375 /checksum/SHA384/reset/77
ok 1376 /checksum/SHA384/reset/78
ok 1377 /checksum/SHA384/reset/79
ok 1378 /checksum/SHA384/reset/80
ok 1379 /checksum/SHA384/reset/81
ok 1380 /checksum/SHA384/reset/82
ok 1381 /checksum/SHA384/reset/83
ok 1382 /checksum/SHA384/reset/84
ok 1383 /checksum/SHA384/reset/85
ok 1384 /checksum/SHA384/reset/86
ok 1385 /checksum/SHA384/reset/87
ok 1386 /checksum/SHA384/reset/88
ok 1387 /checksum/SHA384/reset/89
ok 1388 /checksum/SHA384/reset/90
ok 1389 /checksum/SHA384/reset/91
ok 1390 /checksum/SHA384/reset/92
ok 1391 /checksum/SHA384/reset/93
ok 1392 /checksum/SHA384/reset/94
ok 1393 /checksum/SHA384/reset/95
ok 1394 /checksum/SHA384/reset/96
ok 1395 /checksum/SHA384/reset/97
ok 1396 /checksum/SHA384/reset/98
ok 1397 /checksum/SHA384/reset/99
ok 1398 /checksum/SHA384/reset/100
ok 1399 /checksum/SHA384/reset/101
ok 1400 /checksum/SHA384/reset/102
ok 1401 /checksum/SHA384/reset/103
ok 1402 /checksum/SHA384/reset/104
ok 1403 /checksum/SHA384/reset/105
ok 1404 /checksum/SHA384/reset/106
ok 1405 /checksum/SHA384/reset/107
ok 1406 /checksum/SHA384/reset/108
ok 1407 /checksum/SHA384/reset/109
ok 1408 /checksum/SHA384/reset/110
ok 1409 /checksum/SHA384/reset/111
ok 1410 /checksum/SHA384/reset/112
ok 1411 /checksum/SHA384/reset/113
ok 1412 /checksum/SHA384/reset/114
ok 1413 /checksum/SHA384/reset/115
ok 1414 /checksum/SHA384/reset/116
ok 1415 /checksum/SHA384/reset/117
ok 1416 /checksum/SHA384/reset/118
ok 1417 /checksum/SHA384/reset/119
ok 1418 /checksum/SHA384/reset/120
ok 1419 /checksum/SHA384/reset/121
ok 1420 /checksum/SHA384/reset/122
ok 1421 /checksum/SHA384/reset/123
ok 1422 /checksum/SHA384/reset/124
ok 1423 /checksum/SHA384/reset/125
ok 1424 /checksum/SHA384/reset/126
ok 1425 /checksum/SHA384/reset/127
ok 1426 /checksum/SHA384/reset/128
ok 1427 /checksum/SHA384/reset/129
ok 1428 /checksum/SHA384/reset/130
ok 1429 /checksum/SHA384/reset/131
ok 1430 /checksum/SHA384/reset/132
ok 1431 /checksum/SHA384/reset/133
ok 1432 /checksum/SHA384/reset/134
ok 1433 /checksum/SHA384/reset/135
ok 1434 /checksum/SHA384/reset/136
ok 1435 /checksum/SHA384/reset/137
ok 1436 /checksum/SHA384/reset/138
ok 1437 /checksum/SHA384/reset/139
ok 1438 /checksum/SHA384/reset/140
ok 1439 /checksum/SHA384/reset/141
ok 1440 /checksum/SHA384/reset/142
ok 1441 /checksum/SHA384/reset/143
ok 1442 /checksum/SHA384/reset/144
ok 1443 /checksum/SHA384/reset/145
ok 1444 /checksum/SHA384/reset/146
ok 1445 /checksum/SHA384/reset/147
ok 1446 /checksum/SHA384/reset/148
ok 1447 /checksum/SHA384/reset/149
ok 1448 /checksum/SHA384/reset/150
ok 1449 /checksum/SHA384/reset/151
ok 1450 /checksum/SHA384/reset/152
ok 1451 /checksum/SHA384/reset/153
ok 1452 /checksum/SHA384/reset/154
ok 1453 /checksum/SHA384/reset/155
ok 1454 /checksum/SHA384/reset/156
ok 1455 /checksum/SHA384/reset/157
ok 1456 /checksum/SHA384/reset/158
ok 1457 /checksum/SHA384/reset/159
ok 1458 /checksum/SHA384/reset/160
ok 1459 /checksum/SHA384/reset/161
ok 1460 /checksum/SHA384/reset/162
ok 1461 /checksum/SHA384/reset/163
ok 1462 /checksum/SHA384/reset/164
ok 1463 /checksum/SHA384/reset/165
ok 1464 /checksum/SHA384/reset/166
ok 1465 /checksum/SHA384/reset/167
ok 1466 /checksum/SHA384/reset/168
ok 1467 /checksum/SHA384/reset/169
ok 1468 /checksum/SHA384/reset/170
ok 1469 /checksum/SHA384/reset/171
ok 1470 /checksum/SHA384/reset/172
ok 1471 /checksum/SHA384/reset/173
ok 1472 /checksum/SHA384/reset/174
ok 1473 /checksum/SHA384/reset/175
ok 1474 /checksum/SHA384/reset/176
ok 1475 /checksum/SHA384/reset/177
ok 1476 /checksum/SHA384/reset/178
ok 1477 /checksum/SHA384/reset/179
ok 1478 /checksum/SHA384/reset/180
ok 1479 /checksum/SHA384/reset/181
ok 1480 /checksum/SHA384/reset/182
ok 1481 /checksum/SHA384/reset/183
# End of reset tests
# End of SHA384 tests
# Start of SHA512 tests
ok 1482 /checksum/SHA512/0
ok 1483 /checksum/SHA512/1
ok 1484 /checksum/SHA512/2
ok 1485 /checksum/SHA512/3
ok 1486 /checksum/SHA512/4
ok 1487 /checksum/SHA512/5
ok 1488 /checksum/SHA512/6
ok 1489 /checksum/SHA512/7
ok 1490 /checksum/SHA512/8
ok 1491 /checksum/SHA512/9
ok 1492 /checksum/SHA512/10
ok 1493 /checksum/SHA512/11
ok 1494 /checksum/SHA512/12
ok 1495 /checksum/SHA512/13
ok 1496 /checksum/SHA512/14
ok 1497 /checksum/SHA512/15
ok 1498 /checksum/SHA512/16
ok 1499 /checksum/SHA512/17
ok 1500 /checksum/SHA512/18
ok 1501 /checksum/SHA512/19
ok 1502 /checksum/SHA512/20
ok 1503 /checksum/SHA512/21
ok 1504 /checksum/SHA512/22
ok 1505 /checksum/SHA512/23
ok 1506 /checksum/SHA512/24
ok 1507 /checksum/SHA512/25
ok 1508 /checksum/SHA512/26
ok 1509 /checksum/SHA512/27
ok 1510 /checksum/SHA512/28
ok 1511 /checksum/SHA512/29
ok 1512 /checksum/SHA512/30
ok 1513 /checksum/SHA512/31
ok 1514 /checksum/SHA512/32
ok 1515 /checksum/SHA512/33
ok 1516 /checksum/SHA512/34
ok 1517 /checksum/SHA512/35
ok 1518 /checksum/SHA512/36
ok 1519 /checksum/SHA512/37
ok 1520 /checksum/SHA512/38
ok 1521 /checksum/SHA512/39
ok 1522 /checksum/SHA512/40
ok 1523 /checksum/SHA512/41
ok 1524 /checksum/SHA512/42
ok 1525 /checksum/SHA512/43
ok 1526 /checksum/SHA512/44
ok 1527 /checksum/SHA512/45
ok 1528 /checksum/SHA512/46
ok 1529 /checksum/SHA512/47
ok 1530 /checksum/SHA512/48
ok 1531 /checksum/SHA512/49
ok 1532 /checksum/SHA512/50
ok 1533 /checksum/SHA512/51
ok 1534 /checksum/SHA512/52
ok 1535 /checksum/SHA512/53
ok 1536 /checksum/SHA512/54
ok 1537 /checksum/SHA512/55
ok 1538 /checksum/SHA512/56
ok 1539 /checksum/SHA512/57
ok 1540 /checksum/SHA512/58
ok 1541 /checksum/SHA512/59
ok 1542 /checksum/SHA512/60
ok 1543 /checksum/SHA512/61
ok 1544 /checksum/SHA512/62
ok 1545 /checksum/SHA512/63
ok 1546 /checksum/SHA512/64
ok 1547 /checksum/SHA512/65
ok 1548 /checksum/SHA512/66
ok 1549 /checksum/SHA512/67
ok 1550 /checksum/SHA512/68
ok 1551 /checksum/SHA512/69
ok 1552 /checksum/SHA512/70
ok 1553 /checksum/SHA512/71
ok 1554 /checksum/SHA512/72
ok 1555 /checksum/SHA512/73
ok 1556 /checksum/SHA512/74
ok 1557 /checksum/SHA512/75
ok 1558 /checksum/SHA512/76
ok 1559 /checksum/SHA512/77
ok 1560 /checksum/SHA512/78
ok 1561 /checksum/SHA512/79
ok 1562 /checksum/SHA512/80
ok 1563 /checksum/SHA512/81
ok 1564 /checksum/SHA512/82
ok 1565 /checksum/SHA512/83
ok 1566 /checksum/SHA512/84
ok 1567 /checksum/SHA512/85
ok 1568 /checksum/SHA512/86
ok 1569 /checksum/SHA512/87
ok 1570 /checksum/SHA512/88
ok 1571 /checksum/SHA512/89
ok 1572 /checksum/SHA512/90
ok 1573 /checksum/SHA512/91
ok 1574 /checksum/SHA512/92
ok 1575 /checksum/SHA512/93
ok 1576 /checksum/SHA512/94
ok 1577 /checksum/SHA512/95
ok 1578 /checksum/SHA512/96
ok 1579 /checksum/SHA512/97
ok 1580 /checksum/SHA512/98
ok 1581 /checksum/SHA512/99
ok 1582 /checksum/SHA512/100
ok 1583 /checksum/SHA512/101
ok 1584 /checksum/SHA512/102
ok 1585 /checksum/SHA512/103
ok 1586 /checksum/SHA512/104
ok 1587 /checksum/SHA512/105
ok 1588 /checksum/SHA512/106
ok 1589 /checksum/SHA512/107
ok 1590 /checksum/SHA512/108
ok 1591 /checksum/SHA512/109
ok 1592 /checksum/SHA512/110
ok 1593 /checksum/SHA512/111
ok 1594 /checksum/SHA512/112
ok 1595 /checksum/SHA512/113
ok 1596 /checksum/SHA512/114
ok 1597 /checksum/SHA512/115
ok 1598 /checksum/SHA512/116
ok 1599 /checksum/SHA512/117
ok 1600 /checksum/SHA512/118
ok 1601 /checksum/SHA512/119
ok 1602 /checksum/SHA512/120
ok 1603 /checksum/SHA512/121
ok 1604 /checksum/SHA512/122
ok 1605 /checksum/SHA512/123
ok 1606 /checksum/SHA512/124
ok 1607 /checksum/SHA512/125
ok 1608 /checksum/SHA512/126
ok 1609 /checksum/SHA512/127
ok 1610 /checksum/SHA512/128
ok 1611 /checksum/SHA512/129
ok 1612 /checksum/SHA512/130
ok 1613 /checksum/SHA512/131
ok 1614 /checksum/SHA512/132
ok 1615 /checksum/SHA512/133
ok 1616 /checksum/SHA512/134
ok 1617 /checksum/SHA512/135
ok 1618 /checksum/SHA512/136
ok 1619 /checksum/SHA512/137
ok 1620 /checksum/SHA512/138
ok 1621 /checksum/SHA512/139
ok 1622 /checksum/SHA512/140
ok 1623 /checksum/SHA512/141
ok 1624 /checksum/SHA512/142
ok 1625 /checksum/SHA512/143
ok 1626 /checksum/SHA512/144
ok 1627 /checksum/SHA512/145
ok 1628 /checksum/SHA512/146
ok 1629 /checksum/SHA512/147
ok 1630 /checksum/SHA512/148
ok 1631 /checksum/SHA512/149
ok 1632 /checksum/SHA512/150
ok 1633 /checksum/SHA512/151
ok 1634 /checksum/SHA512/152
ok 1635 /checksum/SHA512/153
ok 1636 /checksum/SHA512/154
ok 1637 /checksum/SHA512/155
ok 1638 /checksum/SHA512/156
ok 1639 /checksum/SHA512/157
ok 1640 /checksum/SHA512/158
ok 1641 /checksum/SHA512/159
ok 1642 /checksum/SHA512/160
ok 1643 /checksum/SHA512/161
ok 1644 /checksum/SHA512/162
ok 1645 /checksum/SHA512/163
ok 1646 /checksum/SHA512/164
ok 1647 /checksum/SHA512/165
ok 1648 /checksum/SHA512/166
ok 1649 /checksum/SHA512/167
ok 1650 /checksum/SHA512/168
ok 1651 /checksum/SHA512/169
ok 1652 /checksum/SHA512/170
ok 1653 /checksum/SHA512/171
ok 1654 /checksum/SHA512/172
ok 1655 /checksum/SHA512/173
ok 1656 /checksum/SHA512/174
ok 1657 /checksum/SHA512/175
ok 1658 /checksum/SHA512/176
ok 1659 /checksum/SHA512/177
ok 1660 /checksum/SHA512/178
ok 1661 /checksum/SHA512/179
ok 1662 /checksum/SHA512/180
ok 1663 /checksum/SHA512/181
ok 1664 /checksum/SHA512/182
ok 1665 /checksum/SHA512/183
ok 1666 /checksum/SHA512/string
ok 1667 /checksum/SHA512/bytes
# Start of reset tests
ok 1668 /checksum/SHA512/reset/0
ok 1669 /checksum/SHA512/reset/1
ok 1670 /checksum/SHA512/reset/2
ok 1671 /checksum/SHA512/reset/3
ok 1672 /checksum/SHA512/reset/4
ok 1673 /checksum/SHA512/reset/5
ok 1674 /checksum/SHA512/reset/6
ok 1675 /checksum/SHA512/reset/7
ok 1676 /checksum/SHA512/reset/8
ok 1677 /checksum/SHA512/reset/9
ok 1678 /checksum/SHA512/reset/10
ok 1679 /checksum/SHA512/reset/11
ok 1680 /checksum/SHA512/reset/12
ok 1681 /checksum/SHA512/reset/13
ok 1682 /checksum/SHA512/reset/14
ok 1683 /checksum/SHA512/reset/15
ok 1684 /checksum/SHA512/reset/16
ok 1685 /checksum/SHA512/reset/17
ok 1686 /checksum/SHA512/reset/18
ok 1687 /checksum/SHA512/reset/19
ok 1688 /checksum/SHA512/reset/20
ok 1689 /checksum/SHA512/reset/21
ok 1690 /checksum/SHA512/reset/22
ok 1691 /checksum/SHA512/reset/23
ok 1692 /checksum/SHA512/reset/24
ok 1693 /checksum/SHA512/reset/25
ok 1694 /checksum/SHA512/reset/26
ok 1695 /checksum/SHA512/reset/27
ok 1696 /checksum/SHA512/reset/28
ok 1697 /checksum/SHA512/reset/29
ok 1698 /checksum/SHA512/reset/30
ok 1699 /checksum/SHA512/reset/31
ok 1700 /checksum/SHA512/reset/32
ok 1701 /checksum/SHA512/reset/33
ok 1702 /checksum/SHA512/reset/34
ok 1703 /checksum/SHA512/reset/35
ok 1704 /checksum/SHA512/reset/36
ok 1705 /checksum/SHA512/reset/37
ok 1706 /checksum/SHA512/reset/38
ok 1707 /checksum/SHA512/reset/39
ok 1708 /checksum/SHA512/reset/40
ok 1709 /checksum/SHA512/reset/41
ok 1710 /checksum/SHA512/reset/42
ok 1711 /checksum/SHA512/reset/43
ok 1712 /checksum/SHA512/reset/44
ok 1713 /checksum/SHA512/reset/45
ok 1714 /checksum/SHA512/reset/46
ok 1715 /checksum/SHA512/reset/47
ok 1716 /checksum/SHA512/reset/48
ok 1717 /checksum/SHA512/reset/49
ok 1718 /checksum/SHA512/reset/50
ok 1719 /checksum/SHA512/reset/51
ok 1720 /checksum/SHA512/reset/52
ok 1721 /checksum/SHA512/reset/53
ok 1722 /checksum/SHA512/reset/54
ok 1723 /checksum/SHA512/reset/55
ok 1724 /checksum/SHA512/reset/56
ok 1725 /checksum/SHA512/reset/57
ok 1726 /checksum/SHA512/reset/58
ok 1727 /checksum/SHA512/reset/59
ok 1728 /checksum/SHA512/reset/60
ok 1729 /checksum/SHA512/reset/61
ok 1730 /checksum/SHA512/reset/62
ok 1731 /checksum/SHA512/reset/63
ok 1732 /checksum/SHA512/reset/64
ok 1733 /checksum/SHA512/reset/65
ok 1734 /checksum/SHA512/reset/66
ok 1735 /checksum/SHA512/reset/67
ok 1736 /checksum/SHA512/reset/68
ok 1737 /checksum/SHA512/reset/69
ok 1738 /checksum/SHA512/reset/70
ok 1739 /checksum/SHA512/reset/71
ok 1740 /checksum/SHA512/reset/72
ok 1741 /checksum/SHA512/reset/73
ok 1742 /checksum/SHA512/reset/74
ok 1743 /checksum/SHA512/reset/75
ok 1744 /checksum/SHA512/reset/76
ok 1745 /checksum/SHA512/reset/77
ok 1746 /checksum/SHA512/reset/78
ok 1747 /checksum/SHA512/reset/79
ok 1748 /checksum/SHA512/reset/80
ok 1749 /checksum/SHA512/reset/81
ok 1750 /checksum/SHA512/reset/82
ok 1751 /checksum/SHA512/reset/83
ok 1752 /checksum/SHA512/reset/84
ok 1753 /checksum/SHA512/reset/85
ok 1754 /checksum/SHA512/reset/86
ok 1755 /checksum/SHA512/reset/87
ok 1756 /checksum/SHA512/reset/88
ok 1757 /checksum/SHA512/reset/89
ok 1758 /checksum/SHA512/reset/90
ok 1759 /checksum/SHA512/reset/91
ok 1760 /checksum/SHA512/reset/92
ok 1761 /checksum/SHA512/reset/93
ok 1762 /checksum/SHA512/reset/94
ok 1763 /checksum/SHA512/reset/95
ok 1764 /checksum/SHA512/reset/96
ok 1765 /checksum/SHA512/reset/97
ok 1766 /checksum/SHA512/reset/98
ok 1767 /checksum/SHA512/reset/99
ok 1768 /checksum/SHA512/reset/100
ok 1769 /checksum/SHA512/reset/101
ok 1770 /checksum/SHA512/reset/102
ok 1771 /checksum/SHA512/reset/103
ok 1772 /checksum/SHA512/reset/104
ok 1773 /checksum/SHA512/reset/105
ok 1774 /checksum/SHA512/reset/106
ok 1775 /checksum/SHA512/reset/107
ok 1776 /checksum/SHA512/reset/108
ok 1777 /checksum/SHA512/reset/109
ok 1778 /checksum/SHA512/reset/110
ok 1779 /checksum/SHA512/reset/111
ok 1780 /checksum/SHA512/reset/112
ok 1781 /checksum/SHA512/reset/113
ok 1782 /checksum/SHA512/reset/114
ok 1783 /checksum/SHA512/reset/115
ok 1784 /checksum/SHA512/reset/116
ok 1785 /checksum/SHA512/reset/117
ok 1786 /checksum/SHA512/reset/118
ok 1787 /checksum/SHA512/reset/119
ok 1788 /checksum/SHA512/reset/120
ok 1789 /checksum/SHA512/reset/121
ok 1790 /checksum/SHA512/reset/122
ok 1791 /checksum/SHA512/reset/123
ok 1792 /checksum/SHA512/reset/124
ok 1793 /checksum/SHA512/reset/125
ok 1794 /checksum/SHA512/reset/126
ok 1795 /checksum/SHA512/reset/127
ok 1796 /checksum/SHA512/reset/128
ok 1797 /checksum/SHA512/reset/129
ok 1798 /checksum/SHA512/reset/130
ok 1799 /checksum/SHA512/reset/131
ok 1800 /checksum/SHA512/reset/132
ok 1801 /checksum/SHA512/reset/133
ok 1802 /checksum/SHA512/reset/134
ok 1803 /checksum/SHA512/reset/135
ok 1804 /checksum/SHA512/reset/136
ok 1805 /checksum/SHA512/reset/137
ok 1806 /checksum/SHA512/reset/138
ok 1807 /checksum/SHA512/reset/139
ok 1808 /checksum/SHA512/reset/140
ok 1809 /checksum/SHA512/reset/141
ok 1810 /checksum/SHA512/reset/142
ok 1811 /checksum/SHA512/reset/143
ok 1812 /checksum/SHA512/reset/144
ok 1813 /checksum/SHA512/reset/145
ok 1814 /checksum/SHA512/reset/146
ok 1815 /checksum/SHA512/reset/147
ok 1816 /checksum/SHA512/reset/148
ok 1817 /checksum/SHA512/reset/149
ok 1818 /checksum/SHA512/reset/150
ok 1819 /checksum/SHA512/reset/151
ok 1820 /checksum/SHA512/reset/152
ok 1821 /checksum/SHA512/reset/153
ok 1822 /checksum/SHA512/reset/154
ok 1823 /checksum/SHA512/reset/155
ok 1824 /checksum/SHA512/reset/156
ok 1825 /checksum/SHA512/reset/157
ok 1826 /checksum/SHA512/reset/158
ok 1827 /checksum/SHA512/reset/159
ok 1828 /checksum/SHA512/reset/160
ok 1829 /checksum/SHA512/reset/161
ok 1830 /checksum/SHA512/reset/162
ok 1831 /checksum/SHA512/reset/163
ok 1832 /checksum/SHA512/reset/164
ok 1833 /checksum/SHA512/reset/165
ok 1834 /checksum/SHA512/reset/166
ok 1835 /checksum/SHA512/reset/167
ok 1836 /checksum/SHA512/reset/168
ok 1837 /checksum/SHA512/reset/169
ok 1838 /checksum/SHA512/reset/170
ok 1839 /checksum/SHA512/reset/171
ok 1840 /checksum/SHA512/reset/172
ok 1841 /checksum/SHA512/reset/173
ok 1842 /checksum/SHA512/reset/174
ok 1843 /checksum/SHA512/reset/175
ok 1844 /checksum/SHA512/reset/176
ok 1845 /checksum/SHA512/reset/177
ok 1846 /checksum/SHA512/reset/178
ok 1847 /checksum/SHA512/reset/179
ok 1848 /checksum/SHA512/reset/180
ok 1849 /checksum/SHA512/reset/181
ok 1850 /checksum/SHA512/reset/182
ok 1851 /checksum/SHA512/reset/183
# End of reset tests
# End of SHA512 tests
# End of checksum tests
PASS: glib/checksum.test
Running test: glib/closure-refcount.test
TAP version 14
# random seed: R02Sa0543d0f5fa83e8088d052e5675d001b
1..1
# Start of closure tests
# Init 0x5555850e0380
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
Executing: glib/closure-refcount.test
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
Executing: glib/closure-refcount.test
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread2
# Yielding from thread1
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from main thread
# Yielding from thread1
# Yielding from main thread
# Yielding from thread2
# Yielding from main thread
# Stopping
# Stopped
ok 1 /closure/refcount
# slow test /closure/refcount executed in 10.85 secs
# End of closure tests
PASS: glib/closure-refcount.test
Running test: glib/properties-refcount1.test
TAP version 14
# random seed: R02Sa0c80f946ed10c9057989281603cfadb
1..1
# Start of gobject tests
# Start of refcount tests
Executing: glib/properties-refcount1.test
# .e
# .f
# .d
# .c
# .b
# .f
# .d
# .e
# .b
# .c
# .d
# .f
# .e
# .b
# .c
# .f
# .d
# .b
# .c
# .e
# .f
# .d
# .b
# .c
# .f
# .e
# .d
# .c
# .b
# .f
# .e
# .c
ok 1 /gobject/refcount/properties-1
# slow test /gobject/refcount/properties-1 executed in 3.01 secs
# End of refcount tests
# End of gobject tests
PASS: glib/properties-refcount1.test
Running test: glib/union-info.test
TAP version 14
# random seed: R02S7935f1598ed85dff78e16d3f61a9d427
1..2
# Start of union-info tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/union-info/basic/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/union-info/basic/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/union-info/basic/.dirs/system-config1:/var/volatile/tmp/union-info/basic/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/union-info/basic/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/union-info/basic/.dirs/system-data1:/var/volatile/tmp/union-info/basic/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/union-info/basic/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/union-info/basic/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/union-info/basic/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /union-info/basic summary: Test basic properties of GIUnionInfo
ok 1 /union-info/basic
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/union-info/methods/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/union-info/methods/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/union-info/methods/.dirs/system-config1:/var/volatile/tmp/union-info/methods/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/union-info/methods/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/union-info/methods/.dirs/system-data1:/var/volatile/tmp/union-info/methods/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/union-info/methods/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/union-info/methods/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/union-info/methods/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
# /union-info/methods summary: Test retrieving methods from GIUnionInfo
ok 2 /union-info/methods
# End of union-info tests
PASS: glib/union-info.test
Running test: glib/contenttype.test
TAP version 14
# random seed: R02S3a82fd285d074a1ca26cbddf09f15ee5
1..14
# Start of contenttype tests
ok 1 /contenttype/guess
ok 2 /contenttype/guess_svg_from_data
ok 3 /contenttype/mime_to_content # SKIP mime from content type test not implemented on UNIX
ok 4 /contenttype/mime_from_content # SKIP mime from content type test not implemented on UNIX
ok 5 /contenttype/unknown
ok 6 /contenttype/subtype
ok 7 /contenttype/list
ok 8 /contenttype/executable
ok 9 /contenttype/description
ok 10 /contenttype/icon
ok 11 /contenttype/symbolic-icon
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 12 /contenttype/tree
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3168
ok 13 /contenttype/tree_invalid_encoding
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=782311
ok 14 /contenttype/test_type_is_a_special_case
# End of contenttype tests
PASS: glib/contenttype.test
Running test: glib/null-settings-backend.test
TAP version 14
# random seed: R02S189b7312c5c000489d5f4bbe9a094821
1..1
# Start of null-settings-backend tests
ok 1 /null-settings-backend/extension-point-registered
# End of null-settings-backend tests
PASS: glib/null-settings-backend.test
Running test: glib/readwrite.test
TAP version 14
# random seed: R02S3f7deaf7e3bca0db6122213fc0b27157
1..3
# Start of readwrite tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 1 /readwrite/test_g_file_open_readwrite
ok 2 /readwrite/test_g_file_create_readwrite
ok 3 /readwrite/test_g_file_replace_readwrite
# End of readwrite tests
PASS: glib/readwrite.test
Running test: glib/markup-subparser.test
TAP version 14
# random seed: R02Sf7d7e1d616562c34469382ddb4c3f8d3
1..14
# Start of glib tests
# Start of markup tests
# Start of subparser tests
# Start of success tests
ok 1 /glib/markup/subparser/success/0
ok 2 /glib/markup/subparser/success/1
ok 3 /glib/markup/subparser/success/2
ok 4 /glib/markup/subparser/success/3
ok 5 /glib/markup/subparser/success/4
ok 6 /glib/markup/subparser/success/5
ok 7 /glib/markup/subparser/success/6
# End of success tests
# Start of failure tests
ok 8 /glib/markup/subparser/failure/0
ok 9 /glib/markup/subparser/failure/1
ok 10 /glib/markup/subparser/failure/2
ok 11 /glib/markup/subparser/failure/3
ok 12 /glib/markup/subparser/failure/4
ok 13 /glib/markup/subparser/failure/5
ok 14 /glib/markup/subparser/failure/6
# End of failure tests
# End of subparser tests
# End of markup tests
# End of glib tests
PASS: glib/markup-subparser.test
Running test: glib/markup-escape.test
TAP version 14
# random seed: R02Sa407a7a7a3722d0e107165d36e96a76c
1..41
# Start of markup tests
ok 1 /markup/format
# Start of escape-text tests
ok 2 /markup/escape-text/0
ok 3 /markup/escape-text/1
ok 4 /markup/escape-text/2
ok 5 /markup/escape-text/3
ok 6 /markup/escape-text/4
ok 7 /markup/escape-text/5
ok 8 /markup/escape-text/6
ok 9 /markup/escape-text/7
ok 10 /markup/escape-text/8
ok 11 /markup/escape-text/9
ok 12 /markup/escape-text/10
ok 13 /markup/escape-text/11
ok 14 /markup/escape-text/12
ok 15 /markup/escape-text/13
ok 16 /markup/escape-text/14
ok 17 /markup/escape-text/15
ok 18 /markup/escape-text/16
ok 19 /markup/escape-text/17
ok 20 /markup/escape-text/18
ok 21 /markup/escape-text/19
ok 22 /markup/escape-text/20
ok 23 /markup/escape-text/21
ok 24 /markup/escape-text/22
# End of escape-text tests
# Start of escape-unichar tests
ok 25 /markup/escape-unichar/0
ok 26 /markup/escape-unichar/1
ok 27 /markup/escape-unichar/2
ok 28 /markup/escape-unichar/3
ok 29 /markup/escape-unichar/4
ok 30 /markup/escape-unichar/5
ok 31 /markup/escape-unichar/6
ok 32 /markup/escape-unichar/7
ok 33 /markup/escape-unichar/8
ok 34 /markup/escape-unichar/9
ok 35 /markup/escape-unichar/10
ok 36 /markup/escape-unichar/11
ok 37 /markup/escape-unichar/12
ok 38 /markup/escape-unichar/13
ok 39 /markup/escape-unichar/14
ok 40 /markup/escape-unichar/15
ok 41 /markup/escape-unichar/16
# End of escape-unichar tests
# End of markup tests
PASS: glib/markup-escape.test
Running test: glib/sandbox.test
TAP version 14
# random seed: R02S74303e0013cfa6299dc683770c130b52
1..4
# Start of sandbox tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/sandbox/none/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/sandbox/none/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/sandbox/none/.dirs/system-config1:/var/volatile/tmp/sandbox/none/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/sandbox/none/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/sandbox/none/.dirs/system-data1:/var/volatile/tmp/sandbox/none/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/sandbox/none/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/sandbox/none/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/sandbox/none/.dirs/runtime
ok 1 /sandbox/none
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/sandbox/snap/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/sandbox/snap/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/sandbox/snap/.dirs/system-config1:/var/volatile/tmp/sandbox/snap/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/sandbox/snap/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/sandbox/snap/.dirs/system-data1:/var/volatile/tmp/sandbox/snap/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/sandbox/snap/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/sandbox/snap/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/sandbox/snap/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/snap/current/meta/snap.yaml
ok 2 /sandbox/snap
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/sandbox/classic-snap/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/sandbox/classic-snap/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/sandbox/classic-snap/.dirs/system-config1:/var/volatile/tmp/sandbox/classic-snap/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/sandbox/classic-snap/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/sandbox/classic-snap/.dirs/system-data1:/var/volatile/tmp/sandbox/classic-snap/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/sandbox/classic-snap/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/sandbox/classic-snap/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/sandbox/classic-snap/.dirs/runtime
# Created snap.yaml in /var/volatile/tmp/snap/current/meta/snap.yaml
ok 3 /sandbox/classic-snap
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/sandbox/flatpak/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/sandbox/flatpak/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/sandbox/flatpak/.dirs/system-config1:/var/volatile/tmp/sandbox/flatpak/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/sandbox/flatpak/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/sandbox/flatpak/.dirs/system-data1:/var/volatile/tmp/sandbox/flatpak/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/sandbox/flatpak/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/sandbox/flatpak/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/sandbox/flatpak/.dirs/runtime
# Creating .flatpak-info in /var/volatile/tmp/sandbox/flatpak/.dirs/runtime/.flatpak-info
ok 4 /sandbox/flatpak
# End of sandbox tests
PASS: glib/sandbox.test
Running test: glib/types.test
TAP version 14
# random seed: R02S5945d3272e508e91d187a2d9cec3168d
1..1
# Start of types tests
ok 1 /types/basic_types
# End of types tests
PASS: glib/types.test
Running test: glib/live-g-file.test
TAP version 14
# random seed: R02Sc18487a76f9f8e53d3aacae1e5aeaa0d
1..13
# Start of live-g-file tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/system-config1:/var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/system-data1:/var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/prep_clean_structure/.dirs/runtime
#   Cleaning target testing structure in '/var/volatile/tmp/testdir_live-g-file'...
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 1 /live-g-file/prep_clean_structure
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/create_structure/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/create_structure/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/create_structure/.dirs/system-config1:/var/volatile/tmp/live-g-file/create_structure/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/create_structure/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/create_structure/.dirs/system-data1:/var/volatile/tmp/live-g-file/create_structure/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/create_structure/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/create_structure/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/create_structure/.dirs/runtime
# 
#   Going to create testing structure in '/var/volatile/tmp/testdir_live-g-file'...
#     Creating directory 'dir1'...
#     Creating directory 'dir1/subdir'...
#     Creating directory 'dir2'...
#     Creating directory 'dir-target'...
#     Creating directory 'dir_no-access'...
#     Creating directory 'dir_no-write'...
#     Creating file 'target-file'...
#     Creating file 'normal_file'...
#     Creating symlink 'normal_file-symlink' --> 'normal_file'...
#     Creating file 'executable_file'...
#     Creating file 'private_file'...
#     Creating file 'normal_file2'...
#     Creating file 'readonly_file'...
#     Creating file 'UTF_pr?i?lis? z'...
#     Creating directory 'dir_pr?i?lis? z'...
#     Creating symlink 'lost_symlink' --> 'nowhere'...
#     Creating directory 'dir_hidden'...
#     Creating file 'dir_hidden/.a-hidden-file'...
#     Creating file 'dir_hidden/file-in-.hidden1'...
#     Creating file 'dir_hidden/file-in-.hidden2'...
#     Creating pattern file...
#  done.
ok 2 /live-g-file/create_structure
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_initial_structure/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_initial_structure/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_initial_structure/.dirs/runtime
#   Testing sample structure in '/var/volatile/tmp/testdir_live-g-file'...
#     Testing file 'dir1'...
#     Testing file 'dir1/subdir'...
#     Testing file 'dir2'...
#     Testing file 'dir-target'...
#     Testing file 'dir_no-access'...
#     Testing file 'dir_no-write'...
#     Testing file 'target-file'...
#     Testing file 'normal_file'...
#     Testing file 'normal_file-symlink'...
#     Testing file 'executable_file'...
#     Testing file 'private_file'...
#     Testing file 'normal_file2'...
#     Testing file 'readonly_file'...
#     Testing file 'UTF_pr?i?lis? z'...
#     Testing file 'dir_pr?i?lis? z'...
#     Testing file 'lost_symlink'...
#     Testing file 'dir_hidden'...
#     Testing file 'dir_hidden/.a-hidden-file'...
#     Testing file 'dir_hidden/file-in-.hidden1'...
#     Testing file 'dir_hidden/file-in-.hidden2'...
#     Testing pattern file...
#       read 65536 bytes, total = 65536 of 65536.
ok 3 /live-g-file/test_initial_structure
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_traverse_structure/.dirs/runtime
#   Traversing through the sample structure in '/var/volatile/tmp/testdir_live-g-file'...
#   Found file dir1, relative to root: dir1
#   Found file subdir, relative to root: dir1/subdir
#   Found file dir2, relative to root: dir2
#   Found file dir-target, relative to root: dir-target
#   Found file dir_no-access, relative to root: dir_no-access
#   Found file dir_no-write, relative to root: dir_no-write
#   Found file target-file, relative to root: target-file
#   Found file normal_file, relative to root: normal_file
#   Found file normal_file-symlink, relative to root: normal_file-symlink
#   Found file executable_file, relative to root: executable_file
#   Found file private_file, relative to root: private_file
#   Found file normal_file2, relative to root: normal_file2
#   Found file readonly_file, relative to root: readonly_file
#   Found file UTF_pr?i?lis? z, relative to root: UTF_pr?i?lis? z
#   Found file dir_pr?i?lis? z, relative to root: dir_pr?i?lis? z
#   Found file lost_symlink, relative to root: lost_symlink
#   Found file dir_hidden, relative to root: dir_hidden
#   Found file .a-hidden-file, relative to root: dir_hidden/.a-hidden-file
#   Found file file-in-.hidden1, relative to root: dir_hidden/file-in-.hidden1
#   Found file .hidden, relative to root: dir_hidden/.hidden
#   Found file file-in-.hidden2, relative to root: dir_hidden/file-in-.hidden2
#   Found file pattern_file, relative to root: pattern_file
ok 4 /live-g-file/test_traverse_structure
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_enumerate/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_enumerate/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_enumerate/.dirs/runtime
#   Test enumerate '/var/volatile/tmp/testdir_live-g-file'...
#     Testing file 'dir_no-access'
#     Testing file 'normal_file'
#     Testing file 'normal_file-symlink'
#     Testing file 'not_exists'
#     Testing file 'not_exists'
#     Testing file 'not_exists2'
#     Testing file 'not_exists3'
#     Testing file 'not_exists4'
#     Testing file 'dir_no-execute/file'
ok 5 /live-g-file/test_enumerate
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_open/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_open/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_open/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_open/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_open/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_open/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_open/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_open/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_open/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_open/.dirs/runtime
#   test_open: 'dir1'
#   test_open: 'dir_no-access'
#   test_open: 'target-file'
#   test_open: 'normal_file-symlink'
#   test_open: 'executable_file'
#   test_open: 'private_file'
#   test_open: 'readonly_file'
#   test_open: 'UTF_pr?i?lis? z'
#   test_open: 'pattern_file'
#   test_open: 'not_exists'
#   test_open: 'dir_no-execute/file'
#   test_open: 'lost_symlink'
ok 6 /live-g-file/test_open
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_create/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_create/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_create/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_create/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_create/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_create/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_create/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_create/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_create/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_create/.dirs/runtime
#   test_create: 'dir1'
#        error code 3 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir1?: Is a directory
#   test_create: 'dir1/subdir'
#        error code 3 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir1/subdir?: Is a directory
#   test_create: 'dir2'
#        error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir2?: File exists
#   test_create: 'normal_file'
#        error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/normal_file?: File exists
#   test_create: 'executable_file'
#   test_create: 'private_file'
#   test_create: 'normal_file2'
#   test_create: 'UTF_pr?i?lis? z'
#        error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/UTF_pr?i?lis? z?: File exists
#   test_create: 'dir_pr?i?lis? z'
#        error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_pr?i?lis? z?: File exists
#   test_create: 'pattern_file'
#   test_create: 'not_exists2'
#   test_create: 'not_exists3'
#   test_create: 'not_exists4'
ok 7 /live-g-file/test_create
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_copy_move/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_copy_move/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_copy_move/.dirs/runtime
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir1/subdir' --> 'dir-target'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir1/subdir' --> '.'
#        res = 0, error code 2 = Target file exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir1/subdir' --> 'target-file'
#        res = 0, error code 4 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/target-file/dir1/subdir?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir1/subdir' --> 'not_exists'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir1/subdir' --> 'dir_no-access'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir1/subdir' --> 'dir_no-write'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir2' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir-target' --> 'dir-target'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir-target' --> '.'
#        res = 0, error code 2 = Target file exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir-target' --> 'target-file'
#        res = 0, error code 4 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/target-file/dir-target?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir-target' --> 'not_exists'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir-target' --> 'dir_no-access'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'dir-target' --> 'dir_no-write'
#        res = 0, error code 25 = Can?t recursively copy directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'target-file' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'target-file' --> '.'
#        res = 0, error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/target-file?: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'target-file' --> 'target-file'
#        res = 0, error code 4 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/target-file/target-file?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'target-file' --> 'not_exists'
#        res = 0, error code 1 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/not_exists/target-file?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'target-file' --> 'dir_no-access'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-access/target-file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'target-file' --> 'dir_no-write'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-write/target-file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file-symlink' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file-symlink' --> '.'
#        res = 0, error code 2 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/normal_file-symlink: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file-symlink' --> 'target-file'
#        res = 0, error code 4 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/target-file/normal_file-symlink: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file-symlink' --> 'not_exists'
#        res = 0, error code 1 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/not_exists/normal_file-symlink: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file-symlink' --> 'dir_no-access'
#        res = 0, error code 14 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/dir_no-access/normal_file-symlink: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file-symlink' --> 'dir_no-write'
#        res = 0, error code 14 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/dir_no-write/normal_file-symlink: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'executable_file' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'executable_file' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'executable_file' --> '.'
#        res = 0, error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/executable_file?: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'executable_file' --> 'target-file'
#        res = 0, error code 4 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/target-file/executable_file?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'executable_file' --> 'not_exists'
#        res = 0, error code 1 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/not_exists/executable_file?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'executable_file' --> 'dir_no-access'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-access/executable_file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'executable_file' --> 'dir_no-write'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-write/executable_file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'private_file' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'private_file' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'private_file' --> '.'
#        res = 0, error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/private_file?: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'private_file' --> 'target-file'
#        res = 0, error code 4 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/target-file/private_file?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'private_file' --> 'not_exists'
#        res = 0, error code 1 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/not_exists/private_file?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'private_file' --> 'dir_no-access'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-access/private_file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'private_file' --> 'dir_no-write'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-write/private_file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file2' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file2' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file2' --> '.'
#        res = 0, error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/normal_file2?: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file2' --> 'target-file'
#        res = 0, error code 4 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/target-file/normal_file2?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file2' --> 'not_exists'
#        res = 0, error code 1 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/not_exists/normal_file2?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file2' --> 'dir_no-access'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-access/normal_file2?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'normal_file2' --> 'dir_no-write'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-write/normal_file2?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'UTF_pr?i?lis? z' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'UTF_pr?i?lis? z' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'UTF_pr?i?lis? z' --> '.'
#        res = 0, error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/UTF_pr?i?lis? z?: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'UTF_pr?i?lis? z' --> 'target-file'
#        res = 0, error code 4 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/target-file/UTF_pr?i?lis? z?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'UTF_pr?i?lis? z' --> 'not_exists'
#        res = 0, error code 1 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/not_exists/UTF_pr?i?lis? z?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'UTF_pr?i?lis? z' --> 'dir_no-access'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-access/UTF_pr?i?lis? z?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'UTF_pr?i?lis? z' --> 'dir_no-write'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-write/UTF_pr?i?lis? z?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'pattern_file' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'pattern_file' --> '.'
#        res = 0, error code 2 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/pattern_file?: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'pattern_file' --> 'target-file'
#        res = 0, error code 4 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/target-file/pattern_file?: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'pattern_file' --> 'not_exists'
#        res = 0, error code 1 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/not_exists/pattern_file?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'pattern_file' --> 'dir_no-access'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-access/pattern_file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'pattern_file' --> 'dir_no-write'
#        res = 0, error code 14 = Error opening file ?/var/volatile/tmp/testdir_live-g-file/dir_no-write/pattern_file?: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'not_exists' --> 'dir-target'
#        res = 0, error code 1 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/not_exists?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'not_exists' --> '.'
#        res = 0, error code 1 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/not_exists?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'not_exists' --> 'target-file'
#        res = 0, error code 1 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/not_exists?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'not_exists' --> 'not_exists'
#        res = 0, error code 1 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/not_exists?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'not_exists' --> 'dir_no-access'
#        res = 0, error code 1 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/not_exists?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'not_exists' --> 'dir_no-write'
#        res = 0, error code 1 = Error when getting information for file ?/var/volatile/tmp/testdir_live-g-file/not_exists?: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'not_exists' --> 'dir-target'
#        res = 0, error code 1 = Error moving file /var/volatile/tmp/testdir_live-g-file/not_exists: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'lost_symlink' --> 'dir-target'
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'lost_symlink' --> '.'
#        res = 0, error code 2 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/lost_symlink: File exists
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'lost_symlink' --> 'target-file'
#        res = 0, error code 4 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/target-file/lost_symlink: Not a directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'lost_symlink' --> 'not_exists'
#        res = 0, error code 1 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/not_exists/lost_symlink: No such file or directory
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'lost_symlink' --> 'dir_no-access'
#        res = 0, error code 14 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/dir_no-access/lost_symlink: Permission denied
# We do not have CAP_DAC_OVERRIDE or equivalent
#     do_copy_move: 'lost_symlink' --> 'dir_no-write'
#        res = 0, error code 14 = Error making symbolic link /var/volatile/tmp/testdir_live-g-file/dir_no-write/lost_symlink: Permission denied
ok 8 /live-g-file/test_copy_move
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_delete/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_delete/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_delete/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_delete/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_delete/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_delete/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_delete/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_delete/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_delete/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_delete/.dirs/runtime
#   Deleting dir1, path = /var/volatile/tmp/testdir_live-g-file/dir1
#       result = 0, error = Error removing file /var/volatile/tmp/testdir_live-g-file/dir1: Directory not empty
#   Deleting dir2, path = /var/volatile/tmp/testdir_live-g-file/dir2
#       result = 0, error = Error removing file /var/volatile/tmp/testdir_live-g-file/dir2: No such file or directory
#   Deleting executable_file, path = /var/volatile/tmp/testdir_live-g-file/executable_file
#       result = 0, error = Error trashing file /var/volatile/tmp/testdir_live-g-file/executable_file: No such file or directory
#   Deleting readonly_file, path = /var/volatile/tmp/testdir_live-g-file/readonly_file
#   Deleting dir_pr?i?lis? z, path = /var/volatile/tmp/testdir_live-g-file/dir_pr?i?lis? z
#   Deleting not_exists, path = /var/volatile/tmp/testdir_live-g-file/not_exists
#       result = 0, error = Error removing file /var/volatile/tmp/testdir_live-g-file/not_exists: No such file or directory
#   Deleting not_exists, path = /var/volatile/tmp/testdir_live-g-file/not_exists
#       result = 0, error = Error trashing file /var/volatile/tmp/testdir_live-g-file/not_exists: No such file or directory
#   Deleting dir_no-execute/file, path = /var/volatile/tmp/testdir_live-g-file/dir_no-execute/file
#       result = 0, error = Error removing file /var/volatile/tmp/testdir_live-g-file/dir_no-execute/file: No such file or directory
#   Deleting lost_symlink, path = /var/volatile/tmp/testdir_live-g-file/lost_symlink
ok 9 /live-g-file/test_delete
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_make_directory_with_parents/.dirs/runtime
# We do not have CAP_DAC_OVERRIDE or equivalent
ok 10 /live-g-file/test_make_directory_with_parents
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/final_clean/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/final_clean/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/final_clean/.dirs/system-config1:/var/volatile/tmp/live-g-file/final_clean/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/final_clean/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/final_clean/.dirs/system-data1:/var/volatile/tmp/live-g-file/final_clean/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/final_clean/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/final_clean/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/final_clean/.dirs/runtime
#   Cleaning target testing structure in '/var/volatile/tmp/testdir_live-g-file'...
#     deleting 'dir1'
#     deleting 'subdir'
#     deleting 'dir-target'
#     deleting 'dir2'
#     deleting 'target-file'
#     deleting 'normal_file-symlink'
#     deleting 'executable_file'
#     deleting 'private_file'
#     deleting 'normal_file2'
#     deleting 'UTF_pr?i?lis? z'
#     deleting 'pattern_file'
#     deleting 'lost_symlink'
#     deleting 'dir_no-access'
#     deleting 'dir_no-write'
#     deleting 'target-file'
#     deleting 'normal_file'
#     deleting 'normal_file-symlink'
#     deleting 'executable_file~'
#     deleting 'private_file'
#     deleting 'normal_file2~'
#     deleting 'UTF_pr?i?lis? z'
#     deleting 'dir_hidden'
#     deleting '.a-hidden-file'
#     deleting 'file-in-.hidden1'
#     deleting '.hidden'
#     deleting 'file-in-.hidden2'
#     deleting 'pattern_file'
#     deleting 'executable_file'
#     deleting 'normal_file2'
#     deleting 'not_exists2'
#     deleting 'not_exists3'
#     deleting 'not_exists4'
#     deleting 'a'
ok 11 /live-g-file/final_clean
# Start of test_unix_is_mountpoint tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/sysroot/.dirs/runtime
ok 12 /live-g-file/test_unix_is_mountpoint/sysroot
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/system-config1:/var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/system-data1:/var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/live-g-file/test_unix_is_mountpoint/proc/.dirs/runtime
ok 13 /live-g-file/test_unix_is_mountpoint/proc
# End of test_unix_is_mountpoint tests
# End of live-g-file tests
PASS: glib/live-g-file.test
Running test: glib/memory-input-stream.test
TAP version 14
# random seed: R02S83107723feae9105b732e86285920f6c
1..6
# Start of memory-input-stream tests
ok 1 /memory-input-stream/read-chunks
ok 2 /memory-input-stream/async
ok 3 /memory-input-stream/seek
ok 4 /memory-input-stream/truncate
ok 5 /memory-input-stream/read-bytes
ok 6 /memory-input-stream/from-bytes
# End of memory-input-stream tests
PASS: glib/memory-input-stream.test
Running test: glib/cxx-14.test
TAP version 14
# random seed: R02Sda4ba98cee3b57c4fbb9083a76f784de
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx-14.test
Running test: glib/spawn-path-search.test
TAP version 14
# random seed: R02Sd9d1022d917d61731a4db692d3c84826
1..7
# Start of spawn tests
# /spawn/do-not-search summary: Without G_SPAWN_SEARCH_PATH, spawn-test-helper means ./spawn-test-helper.
# 
# this is spawn-test-helper from glib/tests
# 
ok 1 /spawn/do-not-search
# /spawn/search-path summary: With G_SPAWN_SEARCH_PATH, spawn-test-helper means $PATH/spawn-test-helper.
# 
# this is spawn-test-helper from path-test-subdir
# 
ok 2 /spawn/search-path
# /spawn/search-path-from-envp summary: With G_SPAWN_SEARCH_PATH_FROM_ENVP, spawn-test-helper means $PATH/spawn-test-helper with $PATH from envp.
# 
# this is spawn-test-helper from path-test-subdir
# 
ok 3 /spawn/search-path-from-envp
# /spawn/search-path-ambiguous summary: With G_SPAWN_SEARCH_PATH and G_SPAWN_SEARCH_PATH_FROM_ENVP, the latter wins.
# 
# this is spawn-test-helper from path-test-subdir
# 
ok 4 /spawn/search-path-ambiguous
# 
# this is spawn-test-helper from path-test-subdir
# 
ok 5 /spawn/search-path-heap-allocation
# /spawn/search-path-fallback-in-environ summary: With G_SPAWN_SEARCH_PATH but no PATH, a fallback is used.
# 
# this is spawn-test-helper from glib/tests
# 
ok 6 /spawn/search-path-fallback-in-environ
# /spawn/search-path-fallback-in-envp summary: With G_SPAWN_SEARCH_PATH_FROM_ENVP but no PATH, a fallback is used.
# 
# this is spawn-test-helper from glib/tests
# 
ok 7 /spawn/search-path-fallback-in-envp
# End of spawn tests
PASS: glib/spawn-path-search.test
Running test: glib/glistmodel.test
TAP version 14
# random seed: R02Sf055f11821d1f6e24e8a28aa3b7877d4
1..18
# Start of glistmodel tests
# Start of store tests
ok 1 /glistmodel/store/properties
ok 2 /glistmodel/store/non-gobjects
ok 3 /glistmodel/store/boundaries
ok 4 /glistmodel/store/refcounts
ok 5 /glistmodel/store/sorted
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=795307
ok 6 /glistmodel/store/splice-replace-middle
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=795307
ok 7 /glistmodel/store/splice-replace-all
ok 8 /glistmodel/store/splice-noop
ok 9 /glistmodel/store/splice-remove-multiple
ok 10 /glistmodel/store/splice-add-multiple
ok 11 /glistmodel/store/splice-wrong-type
ok 12 /glistmodel/store/item-type
ok 13 /glistmodel/store/remove-all
ok 14 /glistmodel/store/sort
ok 15 /glistmodel/store/get-item-cache
ok 16 /glistmodel/store/items-changed
ok 17 /glistmodel/store/past-end
ok 18 /glistmodel/store/find
# End of store tests
# End of glistmodel tests
PASS: glib/glistmodel.test
Running test: glib/hook.test
TAP version 14
# random seed: R02Sf18a04df4d525b51693a505c828a023c
1..2
# Start of hook tests
ok 1 /hook/basics
ok 2 /hook/corner-cases
# End of hook tests
PASS: glib/hook.test
Running test: glib/signal-handler.test
TAP version 14
# random seed: R02Sb0d52558fd9a3a77eec26dc3a3a0a87b
1..7
# Start of signal tests
# Start of handler tests
# min perf: connected 1 handlers in  0.000 seconds
ok 1 /signal/handler/connect-many
# min perf: disconnected 1 handlers in  0.000 seconds
ok 2 /signal/handler/disconnect-many-ordered
# min perf: disconnected 1 handlers in  0.000 seconds
ok 3 /signal/handler/disconnect-many-inverse
# min perf: disconnected 1 handlers in  0.000 seconds
ok 4 /signal/handler/disconnect-many-random
# min perf: disconnected 1 handlers in  0.000 seconds
ok 5 /signal/handler/disconnect-2-signals
# min perf: disconnected 1 handlers in  0.000 seconds
ok 6 /signal/handler/disconnect-2-objects
# min perf: blocked and unblocked 1 handlers in  0.000 seconds
ok 7 /signal/handler/block-many
# End of handler tests
# End of signal tests
PASS: glib/signal-handler.test
Running test: glib/deprecated-properties.test
TAP version 14
# random seed: R02Saf2aa18ddc7e421a64779296c3af74c7
1..3
# Start of deprecated-properties tests
ok 1 /deprecated-properties/construct
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2748
ok 2 /deprecated-properties/default-construct
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2748
ok 3 /deprecated-properties/set
# End of deprecated-properties tests
PASS: glib/deprecated-properties.test
Running test: glib/pollable.test
TAP version 14
# random seed: R02Sc3a5bb6db528ef3cc52b6e5836fd5680
1..6
# Start of pollable tests
ok 1 /pollable/converter
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation dummy (GDummyProxyResolver) for ?gio-proxy-resolver?
# GLib-GIO-DEBUG: g_socket_client_connect_async: starting new g_socket_client_connect_async() with GTask 0x55557220c660 and GSocketClientAsyncConnectData 0x555572208630
# GLib-GIO-DEBUG: GSocketClient: Starting new address enumeration
# GLib-GIO-DEBUG: GSocketClient: Address enumeration succeeded
# GLib-GIO-DEBUG: g_socket_client_enumerator_callback: starting connection attempt 0x5555722115e0 for GSocketClientAsyncConnectData 0x555572208630
# GLib-GIO-DEBUG: GSocketClient: Starting TCP connection attempt
# GLib-GIO-DEBUG: GSocketClient: TCP connection successful
# GLib-GIO-DEBUG: GSocketClient: Starting application layer connection
# GLib-GIO-DEBUG: GSocketClient: Connection successful!
ok 2 /pollable/socket
# Start of unix tests
# /pollable/unix/pipe summary: Test that pipes are considered pollable, just like sockets
ok 3 /pollable/unix/pipe
# /pollable/unix/pty summary: Test that PTYs are considered pollable
ok 4 /pollable/unix/pty
# /pollable/unix/file summary: Test that regular files are not considered pollable
ok 5 /pollable/unix/file
# /pollable/unix/nulldev summary: Test that /dev/null is not considered pollable, but only if on a system where we are able to tell it apart from devices that actually implement poll
ok 6 /pollable/unix/nulldev
# End of unix tests
# End of pollable tests
PASS: glib/pollable.test
Running test: glib/markup.test
TAP version 14
# random seed: R02S20fc9d99699187b0709b6e94a7fe3a5f
1..1
# Start of markup tests
ok 1 /markup/stack
# End of markup tests
PASS: glib/markup.test
Running test: glib/filter-streams.test
TAP version 14
# random seed: R02S8b561d459017152781d343f2c8d524f4
1..4
# Start of filter-stream tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=568394
ok 1 /filter-stream/input
ok 2 /filter-stream/output
ok 3 /filter-stream/async-input
ok 4 /filter-stream/async-output
# End of filter-stream tests
PASS: glib/filter-streams.test
Running test: glib/collate.test
TAP version 14
# random seed: R02Saecaf65c0d0edca568c67b9421c9c99b
1..9
# Start of unicode tests
# Start of collate tests
ok 1 /unicode/collate/0
ok 2 /unicode/collate/1
ok 3 /unicode/collate/2
# End of collate tests
# Start of collate-key tests
ok 4 /unicode/collate-key/0
ok 5 /unicode/collate-key/1
ok 6 /unicode/collate-key/2
# End of collate-key tests
# Start of collate-filename tests
ok 7 /unicode/collate-filename/0
ok 8 /unicode/collate-filename/1
ok 9 /unicode/collate-filename/2
# End of collate-filename tests
# End of unicode tests
PASS: glib/collate.test
Running test: glib/unix.test
TAP version 14
# random seed: R02S195e5cb086af26d0390731cebebcfe8f
1..20
# Start of glib-unix tests
# /glib-unix/closefrom summary: Test g_closefrom(), g_fdwalk_set_cloexec()
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3247
ok 1 /glib-unix/closefrom
ok 2 /glib-unix/pipe
# /glib-unix/pipe-stdio-overwrite summary: Test that g_unix_open_pipe() will use the first available FD, even if it?s stdin/stdout/stderr
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2795
ok 3 /glib-unix/pipe-stdio-overwrite
# /glib-unix/pipe-struct summary: Test GUnixPipe structure
ok 4 /glib-unix/pipe-struct
# /glib-unix/pipe-struct-auto summary: Test g_auto(GUnixPipe)
ok 5 /glib-unix/pipe-struct-auto
ok 6 /glib-unix/error
ok 7 /glib-unix/nonblocking
Executing: glib/unix.test
ok 8 /glib-unix/sighup
# slow test /glib-unix/sighup executed in 0.50 secs
ok 9 /glib-unix/sigterm
# slow test /glib-unix/sigterm executed in 0.50 secs
ok 10 /glib-unix/sighup_again
# slow test /glib-unix/sighup_again executed in 0.50 secs
ok 11 /glib-unix/sighup_add_remove
ok 12 /glib-unix/sighup_nested
ok 13 /glib-unix/callback_after_signal
# slow test /glib-unix/callback_after_signal executed in 2.00 secs
ok 14 /glib-unix/child-wait
# Start of closefrom tests
# Start of subprocess tests
# End of subprocess tests
# End of closefrom tests
# Start of pipe tests
# /glib-unix/pipe/fd-cloexec summary: Test that FD_CLOEXEC is still accepted as an argument to g_unix_open_pipe()
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3459
# GLib-DEBUG: g_unix_open_pipe() called with FD_CLOEXEC; please migrate to using O_CLOEXEC instead
ok 15 /glib-unix/pipe/fd-cloexec
# End of pipe tests
# Start of sighup tests
ok 16 /glib-unix/sighup/alternate-stack
# slow test /glib-unix/sighup/alternate-stack executed in 1.01 secs
# End of sighup tests
# Start of sigterm tests
Executing: glib/unix.test
ok 17 /glib-unix/sigterm/alternate-stack
# slow test /glib-unix/sigterm/alternate-stack executed in 1.00 secs
# End of sigterm tests
# Start of sighup_again tests
ok 18 /glib-unix/sighup_again/alternate-stack
# slow test /glib-unix/sighup_again/alternate-stack executed in 1.00 secs
# End of sighup_again tests
# Start of get-passwd-entry tests
# /glib-unix/get-passwd-entry/root summary: Tests that g_unix_get_passwd_entry() works for a known-existing username.
ok 19 /glib-unix/get-passwd-entry/root
# /glib-unix/get-passwd-entry/nonexistent summary: Tests that g_unix_get_passwd_entry() returns an error for a nonexistent username.
ok 20 /glib-unix/get-passwd-entry/nonexistent
# End of get-passwd-entry tests
# End of glib-unix tests
PASS: glib/unix.test
Running test: glib/messages-low-memory.py.test
TAP version 13
ok 1 __main__.TestMessagesLowMemory.test_message_memory_allocation_failure
# messages-low-memory: /usr/libexec/installed-tests/glib/messages-low-memory
# tmpdir: /tmp/tmp0xqz3599
# Running: ['/usr/libexec/installed-tests/glib/messages-low-memory']
# Return code: -6
# Output:
#  
# Error:
#  GLib-Message: 17:50:24.988: Simulates a situation in which we were crashing because of low-memory, leading malloc to fail instead of aborting
# GLib-Message: 17:50:25.002: bug: https://gitlab.gnome.org/GNOME/glib/-/issues/2753
# ../glib-2.84.2/glib/gprintf.c:350: failed to allocate memory
1..1
PASS: glib/messages-low-memory.py.test
Running test: glib/array-test.test
TAP version 14
# random seed: R02Sbcbb04453134a1f481e89de060c1896c
1..113
# Start of array tests
ok 1 /array/ref-count
ok 2 /array/steal
ok 3 /array/clear-func
ok 4 /array/binary-search
# /array/copy-sized summary: Test that copying a newly-allocated sized array works.
ok 5 /array/copy-sized
ok 6 /array/overflow-append-vals
ok 7 /array/overflow-set-size
# Start of new tests
ok 8 /array/new/zero-terminated
ok 9 /array/new/take
ok 10 /array/new/take-zero-terminated
# Start of take tests
ok 11 /array/new/take/empty
ok 12 /array/new/take/overflow # SKIP Overflow test requires UINT_WIDTH > SIZE_WIDTH.
# End of take tests
# End of new tests
# Start of set-size tests
ok 13 /array/set-size/non-zero-terminated-no-clear
ok 14 /array/set-size/non-zero-terminated-clear
ok 15 /array/set-size/zero-terminated-no-clear
ok 16 /array/set-size/zero-terminated-clear
# Start of sized tests
ok 17 /array/set-size/sized/non-zero-terminated-no-clear
ok 18 /array/set-size/sized/non-zero-terminated-clear
ok 19 /array/set-size/sized/zero-terminated-no-clear
ok 20 /array/set-size/sized/zero-terminated-clear
# End of sized tests
# End of set-size tests
# Start of append-val tests
ok 21 /array/append-val/non-zero-terminated-no-clear
ok 22 /array/append-val/non-zero-terminated-clear
ok 23 /array/append-val/zero-terminated-no-clear
ok 24 /array/append-val/zero-terminated-clear
# End of append-val tests
# Start of prepend-val tests
ok 25 /array/prepend-val/non-zero-terminated-no-clear
ok 26 /array/prepend-val/non-zero-terminated-clear
ok 27 /array/prepend-val/zero-terminated-no-clear
ok 28 /array/prepend-val/zero-terminated-clear
# End of prepend-val tests
# Start of prepend-vals tests
ok 29 /array/prepend-vals/non-zero-terminated-no-clear
ok 30 /array/prepend-vals/non-zero-terminated-clear
ok 31 /array/prepend-vals/zero-terminated-no-clear
ok 32 /array/prepend-vals/zero-terminated-clear
# End of prepend-vals tests
# Start of insert-vals tests
ok 33 /array/insert-vals/non-zero-terminated-no-clear
ok 34 /array/insert-vals/non-zero-terminated-clear
ok 35 /array/insert-vals/zero-terminated-no-clear
ok 36 /array/insert-vals/zero-terminated-clear
# End of insert-vals tests
# Start of remove-index tests
ok 37 /array/remove-index/non-zero-terminated-no-clear
ok 38 /array/remove-index/non-zero-terminated-clear
ok 39 /array/remove-index/zero-terminated-no-clear
ok 40 /array/remove-index/zero-terminated-clear
# End of remove-index tests
# Start of remove-index-fast tests
ok 41 /array/remove-index-fast/non-zero-terminated-no-clear
ok 42 /array/remove-index-fast/non-zero-terminated-clear
ok 43 /array/remove-index-fast/zero-terminated-no-clear
ok 44 /array/remove-index-fast/zero-terminated-clear
# End of remove-index-fast tests
# Start of remove-range tests
ok 45 /array/remove-range/non-zero-terminated-no-clear
ok 46 /array/remove-range/non-zero-terminated-clear
ok 47 /array/remove-range/zero-terminated-no-clear
ok 48 /array/remove-range/zero-terminated-clear
# End of remove-range tests
# Start of copy tests
ok 49 /array/copy/non-zero-terminated-no-clear
ok 50 /array/copy/non-zero-terminated-clear
ok 51 /array/copy/zero-terminated-no-clear
ok 52 /array/copy/zero-terminated-clear
# End of copy tests
# Start of sort tests
ok 53 /array/sort/non-zero-terminated-no-clear
ok 54 /array/sort/non-zero-terminated-clear
ok 55 /array/sort/zero-terminated-no-clear
ok 56 /array/sort/zero-terminated-clear
# End of sort tests
# Start of sort-with-data tests
ok 57 /array/sort-with-data/non-zero-terminated-no-clear
ok 58 /array/sort-with-data/non-zero-terminated-clear
ok 59 /array/sort-with-data/zero-terminated-no-clear
ok 60 /array/sort-with-data/zero-terminated-clear
# End of sort-with-data tests
# End of array tests
# Start of pointerarray tests
ok 61 /pointerarray/add
ok 62 /pointerarray/insert
ok 63 /pointerarray/new-take
ok 64 /pointerarray/new-take-null-terminated
ok 65 /pointerarray/new-from-array
ok 66 /pointerarray/new-from-null-terminated-array
ok 67 /pointerarray/free-func
ok 68 /pointerarray/array_extend_and_steal
ok 69 /pointerarray/sort
ok 70 /pointerarray/sort-with-data
ok 71 /pointerarray/sort-values
ok 72 /pointerarray/sort-values-with-data
ok 73 /pointerarray/remove-range
ok 74 /pointerarray/steal
# Start of free tests
# /pointerarray/free/null-terminated summary: Check that g_ptr_array_free() on an empty array returns a NULL-terminated empty array
ok 75 /pointerarray/free/null-terminated
# End of free tests
# Start of new-take tests
ok 76 /pointerarray/new-take/empty
ok 77 /pointerarray/new-take/overflow # SKIP Overflow test requires UINT_WIDTH > SIZE_WIDTH.
ok 78 /pointerarray/new-take/with-free-func
# End of new-take tests
# Start of new-take-null-terminated tests
ok 79 /pointerarray/new-take-null-terminated/empty
ok 80 /pointerarray/new-take-null-terminated/with-free-func
ok 81 /pointerarray/new-take-null-terminated/from-gstrv
# End of new-take-null-terminated tests
# Start of new-from-array tests
ok 82 /pointerarray/new-from-array/empty
ok 83 /pointerarray/new-from-array/overflow # SKIP Overflow test requires UINT_WIDTH > SIZE_WIDTH.
ok 84 /pointerarray/new-from-array/with-copy-and-free-func
# End of new-from-array tests
# Start of new-from-null-terminated-array tests
ok 85 /pointerarray/new-from-null-terminated-array/empty
ok 86 /pointerarray/new-from-null-terminated-array/with-copy-and-free-func
ok 87 /pointerarray/new-from-null-terminated-array/from-gstrv
# End of new-from-null-terminated-array tests
# Start of ref-count tests
ok 88 /pointerarray/ref-count/not-null-terminated
ok 89 /pointerarray/ref-count/null-terminated
# End of ref-count tests
# Start of array_copy tests
# /pointerarray/array_copy/not-null-terminated summary: Check all normal behaviour of stealing elements from one array to append to another, covering different array sizes and element copy functions
ok 90 /pointerarray/array_copy/not-null-terminated
# /pointerarray/array_copy/null-terminated summary: Check all normal behaviour of stealing elements from one array to append to another, covering different array sizes and element copy functions
ok 91 /pointerarray/array_copy/null-terminated
# End of array_copy tests
# Start of array_extend tests
ok 92 /pointerarray/array_extend/not-null-terminated
ok 93 /pointerarray/array_extend/null-terminated
# End of array_extend tests
# Start of sort tests
# /pointerarray/sort/example summary: Check that the doc-comment for g_ptr_array_sort() is correct
ok 94 /pointerarray/sort/example
# End of sort tests
# Start of sort-with-data tests
# /pointerarray/sort-with-data/example summary: Check that the doc-comment for g_ptr_array_sort_with_data() is correct
ok 95 /pointerarray/sort-with-data/example
# End of sort-with-data tests
# Start of sort-values tests
ok 96 /pointerarray/sort-values/example
# End of sort-values tests
# Start of sort-values-with-data tests
ok 97 /pointerarray/sort-values-with-data/example
# End of sort-values-with-data tests
# Start of find tests
ok 98 /pointerarray/find/empty
ok 99 /pointerarray/find/non-empty
# End of find tests
# Start of steal_index tests
ok 100 /pointerarray/steal_index/not-null-terminated
ok 101 /pointerarray/steal_index/null-terminated
# End of steal_index tests
# End of pointerarray tests
# Start of bytearray tests
ok 102 /bytearray/steal
ok 103 /bytearray/append
ok 104 /bytearray/prepend
ok 105 /bytearray/remove
ok 106 /bytearray/remove-fast
ok 107 /bytearray/remove-range
ok 108 /bytearray/ref-count
ok 109 /bytearray/sort
ok 110 /bytearray/sort-with-data
ok 111 /bytearray/new-take
ok 112 /bytearray/new-take-overflow # SKIP Overflow test requires G_MAXSIZE > G_MAXUINT.
ok 113 /bytearray/free-to-bytes
# End of bytearray tests
PASS: glib/array-test.test
Running test: glib/boxed.test
TAP version 14
# random seed: R02S62de094e65486472769e35ecc5d5a3b6
1..27
# Start of boxed tests
ok 1 /boxed/define
ok 2 /boxed/ownership
ok 3 /boxed/closure
ok 4 /boxed/date
ok 5 /boxed/value
ok 6 /boxed/string
ok 7 /boxed/hashtable
ok 8 /boxed/array
ok 9 /boxed/ptrarray
ok 10 /boxed/regex
ok 11 /boxed/varianttype
ok 12 /boxed/error
ok 13 /boxed/datetime
ok 14 /boxed/matchinfo
ok 15 /boxed/keyfile
ok 16 /boxed/mainloop
ok 17 /boxed/maincontext
ok 18 /boxed/source
ok 19 /boxed/variantbuilder
ok 20 /boxed/timezone
ok 21 /boxed/pollfd
ok 22 /boxed/markup
ok 23 /boxed/thread
ok 24 /boxed/checksum
ok 25 /boxed/tree
ok 26 /boxed/patternspec
ok 27 /boxed/rand
# End of boxed tests
PASS: glib/boxed.test
Running test: glib/gdbus-connection-flush.test
TAP version 14
# random seed: R02S0406bd1022163615c27ba0f41e743248
1..2
# Start of gdbus tests
# Start of connection tests
# Start of flush tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/system-config1:/var/volatile/tmp/gdbus/connection/flush/busy/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/system-data1:/var/volatile/tmp/gdbus/connection/flush/busy/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/connection/flush/busy/.dirs/runtime
ok 1 /gdbus/connection/flush/busy
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/system-config1:/var/volatile/tmp/gdbus/connection/flush/idle/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/system-data1:/var/volatile/tmp/gdbus/connection/flush/idle/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/connection/flush/idle/.dirs/runtime
ok 2 /gdbus/connection/flush/idle
# End of flush tests
# End of connection tests
# End of gdbus tests
PASS: glib/gdbus-connection-flush.test
Running test: glib/spawn-multithreaded.test
TAP version 14
# random seed: R02S2feb7a8f7167cdb148da2408e126161a
1..4
# Start of gthread tests
# Child 10200 (ttl 1) exited, status 0
# Child 10201 (ttl 2) exited, status 0
ok 1 /gthread/spawn-childs
# slow test /gthread/spawn-childs executed in 2.01 secs
# Created pid: 10205 (ttl 1)
# Created pid: 10206 (ttl 2)
Executing: glib/spawn-multithreaded.test
# Child 10205 (ttl 1) exited, status 0
# Child 10206 (ttl 2) exited, status 0
ok 2 /gthread/spawn-childs-threads
# slow test /gthread/spawn-childs-threads executed in 2.02 secs
ok 3 /gthread/spawn-sync
ok 4 /gthread/spawn-async
# End of gthread tests
PASS: glib/spawn-multithreaded.test
Running test: glib/atomic-c-89.test
TAP version 14
# random seed: R02S456a00dad8a6fcce7fdd035f6519fe62
1..2
# Start of atomic tests
ok 1 /atomic/types
ok 2 /atomic/threaded
# End of atomic tests
PASS: glib/atomic-c-89.test
Running test: glib/contexts.test
TAP version 14
# random seed: R02Sc6380b5b5743fb1ce17303bf5ec09335
1..5
# Start of gio tests
# Start of contexts tests
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 1 /gio/contexts/thread-independence
ok 2 /gio/contexts/context-independence
# Start of context-specific tests
ok 3 /gio/contexts/context-specific/identity
ok 4 /gio/contexts/context-specific/emit
ok 5 /gio/contexts/context-specific/emit-and-unref
# End of context-specific tests
# End of contexts tests
# End of gio tests
PASS: glib/contexts.test
Running test: glib/utf8-performance.test
TAP version 14
# random seed: R02S840138d4039e2cc932478217c88a8421
1..36
# Start of utf8 tests
# Start of perf tests
# Start of get_char tests
# max perf:     0.4 MB/s
ok 1 /utf8/perf/get_char/ascii
# max perf:     0.9 MB/s
ok 2 /utf8/perf/get_char/latin1
# max perf:    26.7 MB/s
ok 3 /utf8/perf/get_char/cyrillic
# max perf:    39.0 MB/s
ok 4 /utf8/perf/get_char/han
# End of get_char tests
# Start of get_char-backwards tests
# max perf:     0.7 MB/s
ok 5 /utf8/perf/get_char-backwards/ascii
# max perf:     4.8 MB/s
ok 6 /utf8/perf/get_char-backwards/latin1
# max perf:    20.0 MB/s
ok 7 /utf8/perf/get_char-backwards/cyrillic
# max perf:    31.2 MB/s
ok 8 /utf8/perf/get_char-backwards/han
# End of get_char-backwards tests
# Start of get_char_validated tests
# max perf:     0.6 MB/s
ok 9 /utf8/perf/get_char_validated/ascii
# max perf:    16.8 MB/s
ok 10 /utf8/perf/get_char_validated/latin1
# max perf:    32.0 MB/s
ok 11 /utf8/perf/get_char_validated/cyrillic
# max perf:     6.0 MB/s
ok 12 /utf8/perf/get_char_validated/han
# End of get_char_validated tests
# Start of utf8_to_ucs4 tests
# max perf:     0.7 MB/s
ok 13 /utf8/perf/utf8_to_ucs4/ascii
# max perf:     4.8 MB/s
ok 14 /utf8/perf/utf8_to_ucs4/latin1
# max perf:    26.7 MB/s
ok 15 /utf8/perf/utf8_to_ucs4/cyrillic
# max perf:     6.8 MB/s
ok 16 /utf8/perf/utf8_to_ucs4/han
# End of utf8_to_ucs4 tests
# Start of utf8_to_ucs4-sized tests
# max perf:     1.2 MB/s
ok 17 /utf8/perf/utf8_to_ucs4-sized/ascii
# max perf:    16.8 MB/s
ok 18 /utf8/perf/utf8_to_ucs4-sized/latin1
# max perf:    26.7 MB/s
ok 19 /utf8/perf/utf8_to_ucs4-sized/cyrillic
# max perf:    39.0 MB/s
ok 20 /utf8/perf/utf8_to_ucs4-sized/han
# End of utf8_to_ucs4-sized tests
# Start of utf8_to_ucs4_fast tests
# max perf:     0.4 MB/s
ok 21 /utf8/perf/utf8_to_ucs4_fast/ascii
# max perf:     2.9 MB/s
ok 22 /utf8/perf/utf8_to_ucs4_fast/latin1
# max perf:    80.0 MB/s
ok 23 /utf8/perf/utf8_to_ucs4_fast/cyrillic
# max perf:    10.4 MB/s
ok 24 /utf8/perf/utf8_to_ucs4_fast/han
# End of utf8_to_ucs4_fast tests
# Start of utf8_to_ucs4_fast-sized tests
# max perf:     0.9 MB/s
ok 25 /utf8/perf/utf8_to_ucs4_fast-sized/ascii
# max perf:    22.3 MB/s
ok 26 /utf8/perf/utf8_to_ucs4_fast-sized/latin1
# max perf:    80.0 MB/s
ok 27 /utf8/perf/utf8_to_ucs4_fast-sized/cyrillic
# max perf:    78.0 MB/s
ok 28 /utf8/perf/utf8_to_ucs4_fast-sized/han
# End of utf8_to_ucs4_fast-sized tests
# Start of utf8_validate tests
# max perf:     1.3 MB/s
ok 29 /utf8/perf/utf8_validate/ascii
# max perf:    22.3 MB/s
ok 30 /utf8/perf/utf8_validate/latin1
# max perf:    80.0 MB/s
ok 31 /utf8/perf/utf8_validate/cyrillic
# max perf:    78.0 MB/s
ok 32 /utf8/perf/utf8_validate/han
# End of utf8_validate tests
# Start of utf8_validate-sized tests
# max perf:     1.3 MB/s
ok 33 /utf8/perf/utf8_validate-sized/ascii
# max perf:    33.5 MB/s
ok 34 /utf8/perf/utf8_validate-sized/latin1
# max perf:    80.0 MB/s
ok 35 /utf8/perf/utf8_validate-sized/cyrillic
# max perf:    78.0 MB/s
ok 36 /utf8/perf/utf8_validate-sized/han
# End of utf8_validate-sized tests
# End of perf tests
# End of utf8 tests
PASS: glib/utf8-performance.test
Running test: glib/gthash.test
TAP version 14
# random seed: R02S4584359160c5e6f4d877e57ab368befa
1..1
# Start of gthash tests
ok 1 /gthash/build-retrieve
# End of gthash tests
PASS: glib/gthash.test
Running test: glib/autoptr-girepository.test
TAP version 14
# random seed: R02S599922bb243b7590aa86d90e3f6b7177
1..24
# Start of autoptr tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/repository/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/repository/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/repository/.dirs/system-config1:/var/volatile/tmp/autoptr/repository/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/repository/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/repository/.dirs/system-data1:/var/volatile/tmp/autoptr/repository/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/repository/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/repository/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/repository/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 1 /autoptr/repository
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/typelib/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/typelib/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/typelib/.dirs/system-config1:/var/volatile/tmp/autoptr/typelib/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/typelib/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/typelib/.dirs/system-data1:/var/volatile/tmp/autoptr/typelib/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/typelib/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/typelib/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/typelib/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 2 /autoptr/typelib
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/base-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/base-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/base-info/.dirs/system-config1:/var/volatile/tmp/autoptr/base-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/base-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/base-info/.dirs/system-data1:/var/volatile/tmp/autoptr/base-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/base-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/base-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/base-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 3 /autoptr/base-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/arg-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/arg-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/arg-info/.dirs/system-config1:/var/volatile/tmp/autoptr/arg-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/arg-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/arg-info/.dirs/system-data1:/var/volatile/tmp/autoptr/arg-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/arg-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/arg-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/arg-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 4 /autoptr/arg-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/callable-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/callable-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/callable-info/.dirs/system-config1:/var/volatile/tmp/autoptr/callable-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/callable-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/callable-info/.dirs/system-data1:/var/volatile/tmp/autoptr/callable-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/callable-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/callable-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/callable-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 5 /autoptr/callable-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/callback-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/callback-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/callback-info/.dirs/system-config1:/var/volatile/tmp/autoptr/callback-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/callback-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/callback-info/.dirs/system-data1:/var/volatile/tmp/autoptr/callback-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/callback-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/callback-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/callback-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 6 /autoptr/callback-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/constant-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/constant-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/constant-info/.dirs/system-config1:/var/volatile/tmp/autoptr/constant-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/constant-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/constant-info/.dirs/system-data1:/var/volatile/tmp/autoptr/constant-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/constant-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/constant-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/constant-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 7 /autoptr/constant-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/enum-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/enum-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/enum-info/.dirs/system-config1:/var/volatile/tmp/autoptr/enum-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/enum-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/enum-info/.dirs/system-data1:/var/volatile/tmp/autoptr/enum-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/enum-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/enum-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/enum-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 8 /autoptr/enum-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/field-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/field-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/field-info/.dirs/system-config1:/var/volatile/tmp/autoptr/field-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/field-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/field-info/.dirs/system-data1:/var/volatile/tmp/autoptr/field-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/field-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/field-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/field-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 9 /autoptr/field-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/flags-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/flags-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/flags-info/.dirs/system-config1:/var/volatile/tmp/autoptr/flags-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/flags-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/flags-info/.dirs/system-data1:/var/volatile/tmp/autoptr/flags-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/flags-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/flags-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/flags-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 10 /autoptr/flags-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/function-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/function-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/function-info/.dirs/system-config1:/var/volatile/tmp/autoptr/function-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/function-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/function-info/.dirs/system-data1:/var/volatile/tmp/autoptr/function-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/function-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/function-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/function-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 11 /autoptr/function-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/interface-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/interface-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/interface-info/.dirs/system-config1:/var/volatile/tmp/autoptr/interface-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/interface-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/interface-info/.dirs/system-data1:/var/volatile/tmp/autoptr/interface-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/interface-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/interface-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/interface-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 12 /autoptr/interface-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/object-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/object-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/object-info/.dirs/system-config1:/var/volatile/tmp/autoptr/object-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/object-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/object-info/.dirs/system-data1:/var/volatile/tmp/autoptr/object-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/object-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/object-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/object-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 13 /autoptr/object-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/property-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/property-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/property-info/.dirs/system-config1:/var/volatile/tmp/autoptr/property-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/property-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/property-info/.dirs/system-data1:/var/volatile/tmp/autoptr/property-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/property-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/property-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/property-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 14 /autoptr/property-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/registered-type-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/registered-type-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/registered-type-info/.dirs/system-config1:/var/volatile/tmp/autoptr/registered-type-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/registered-type-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/registered-type-info/.dirs/system-data1:/var/volatile/tmp/autoptr/registered-type-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/registered-type-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/registered-type-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/registered-type-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 15 /autoptr/registered-type-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/signal-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/signal-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/signal-info/.dirs/system-config1:/var/volatile/tmp/autoptr/signal-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/signal-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/signal-info/.dirs/system-data1:/var/volatile/tmp/autoptr/signal-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/signal-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/signal-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/signal-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 16 /autoptr/signal-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/struct-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/struct-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/struct-info/.dirs/system-config1:/var/volatile/tmp/autoptr/struct-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/struct-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/struct-info/.dirs/system-data1:/var/volatile/tmp/autoptr/struct-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/struct-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/struct-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/struct-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 17 /autoptr/struct-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/type-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/type-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/type-info/.dirs/system-config1:/var/volatile/tmp/autoptr/type-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/type-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/type-info/.dirs/system-data1:/var/volatile/tmp/autoptr/type-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/type-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/type-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/type-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 18 /autoptr/type-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/union-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/union-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/union-info/.dirs/system-config1:/var/volatile/tmp/autoptr/union-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/union-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/union-info/.dirs/system-data1:/var/volatile/tmp/autoptr/union-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/union-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/union-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/union-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 19 /autoptr/union-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/value-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/value-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/value-info/.dirs/system-config1:/var/volatile/tmp/autoptr/value-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/value-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/value-info/.dirs/system-data1:/var/volatile/tmp/autoptr/value-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/value-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/value-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/value-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 20 /autoptr/value-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/autoptr/vfunc-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/autoptr/vfunc-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/autoptr/vfunc-info/.dirs/system-config1:/var/volatile/tmp/autoptr/vfunc-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/autoptr/vfunc-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/autoptr/vfunc-info/.dirs/system-data1:/var/volatile/tmp/autoptr/vfunc-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/autoptr/vfunc-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/autoptr/vfunc-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/autoptr/vfunc-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 21 /autoptr/vfunc-info
# End of autoptr tests
# Start of auto tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/auto/arg-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/auto/arg-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/auto/arg-info/.dirs/system-config1:/var/volatile/tmp/auto/arg-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/auto/arg-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/auto/arg-info/.dirs/system-data1:/var/volatile/tmp/auto/arg-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/auto/arg-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/auto/arg-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/auto/arg-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 22 /auto/arg-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/auto/type-info/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/auto/type-info/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/auto/type-info/.dirs/system-config1:/var/volatile/tmp/auto/type-info/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/auto/type-info/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/auto/type-info/.dirs/system-data1:/var/volatile/tmp/auto/type-info/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/auto/type-info/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/auto/type-info/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/auto/type-info/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 23 /auto/type-info
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/auto/function-invoker/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/auto/function-invoker/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/auto/function-invoker/.dirs/system-config1:/var/volatile/tmp/auto/function-invoker/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/auto/function-invoker/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/auto/function-invoker/.dirs/system-data1:/var/volatile/tmp/auto/function-invoker/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/auto/function-invoker/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/auto/function-invoker/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/auto/function-invoker/.dirs/runtime
# Using GI_TYPELIB_DIR = /usr/libexec/installed-tests/glib/../introspection
ok 24 /auto/function-invoker
# End of auto tests
PASS: glib/autoptr-girepository.test
Running test: glib/power-profile-monitor-portal.test
Executing: glib/power-profile-monitor-portal.test
TAP version 13
ok 1 __main__.TestPowerProfileMonitorPortal.test_power_profile_power_saver_enabled_portal # SKIP xdg-desktop-portal not available
ok 2 __main__.TestPowerProfileMonitorPortal.test_power_profile_power_saver_enabled_portal_default # SKIP xdg-desktop-portal not available
1..2
PASS: glib/power-profile-monitor-portal.test
Running test: glib/mutex.test
TAP version 14
# random seed: R02Se73b147697893e57cd168b95d9c17951
1..17
# Start of thread tests
ok 1 /thread/mutex1
ok 2 /thread/mutex2
ok 3 /thread/mutex3
ok 4 /thread/mutex4
Executing: glib/mutex.test
Executing: glib/mutex.test
ok 5 /thread/mutex5
# slow test /thread/mutex5 executed in 12.32 secs
# Start of mutex tests
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# /thread/mutex/errno summary: Validates that errno is not touched upon return
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3034
Executing: glib/mutex.test
ok 6 /thread/mutex/errno
# slow test /thread/mutex/errno executed in 1.79 secs
# Start of perf tests
# max perf: 0.018868 mips
ok 7 /thread/mutex/perf/uncontended
# Start of contended tests
# max perf: 1.000000 mips
ok 8 /thread/mutex/perf/contended/1
# max perf: 0.065217 mips
ok 9 /thread/mutex/perf/contended/2
# max perf: 1.333333 mips
ok 10 /thread/mutex/perf/contended/3
# max perf: 0.250000 mips
ok 11 /thread/mutex/perf/contended/4
# max perf: 0.090909 mips
ok 12 /thread/mutex/perf/contended/5
# max perf: 0.538462 mips
ok 13 /thread/mutex/perf/contended/6
# max perf: 0.727273 mips
ok 14 /thread/mutex/perf/contended/7
# max perf: 0.333333 mips
ok 15 /thread/mutex/perf/contended/8
# max perf: 0.769231 mips
ok 16 /thread/mutex/perf/contended/9
# max perf: 0.785714 mips
ok 17 /thread/mutex/perf/contended/10
# End of contended tests
# End of perf tests
# End of mutex tests
# End of thread tests
PASS: glib/mutex.test
Running test: glib/charset.test
TAP version 14
# random seed: R02S8b8e1874593700ec8420345421b20518
1..2
# Start of charset tests
# Test 0
# Test 1
# Test 2
# Test 3
ok 1 /charset/language_names_with_category
ok 2 /charset/language_names_with_category_async
# End of charset tests
PASS: glib/charset.test
Running test: glib/macros-c-11.test
TAP version 14
# random seed: R02Sfe3e79c6be5758f01c8a771d979b04eb
1..4
# Start of C tests
ok 1 /C/standard-11
# End of C tests
# Start of alignof tests
ok 2 /alignof/fallback
# End of alignof tests
# Start of assert tests
ok 3 /assert/static
# End of assert tests
# Start of struct tests
ok 4 /struct/sizeof_member
# End of struct tests
PASS: glib/macros-c-11.test
Running test: glib/mainloop.test
TAP version 14
# random seed: R02S00ff0946a8a75f496040d0183369675e
1..45
# Start of maincontext tests
ok 1 /maincontext/basic
# Add same-priority sources: 148
# Find each source: 22
# Remove in random order: 169
ok 2 /maincontext/nsources_same_priority
# slow test /maincontext/nsources_same_priority executed in 0.58 secs
# Add different-priority sources: 140
# Find each source: 22
# Remove in random order: 116
ok 3 /maincontext/nsources_different_priority
# slow test /maincontext/nsources_different_priority executed in 0.52 secs
# Add sources from threads: 1394
# Remove sources from threads: 298
ok 4 /maincontext/nsources_threadpool
# slow test /maincontext/nsources_threadpool executed in 1.72 secs
ok 5 /maincontext/source_finalization
# /maincontext/idle-once summary: Test g_idle_add_once() works
ok 6 /maincontext/idle-once
# /maincontext/timeout-once summary: Test g_timeout_add_once() works
ok 7 /maincontext/timeout-once
# Start of source_finalization_from_source tests
# /maincontext/source_finalization_from_source/0 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 8 /maincontext/source_finalization_from_source/0
# /maincontext/source_finalization_from_source/1 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 9 /maincontext/source_finalization_from_source/1
# /maincontext/source_finalization_from_source/2 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 10 /maincontext/source_finalization_from_source/2
# /maincontext/source_finalization_from_source/3 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 11 /maincontext/source_finalization_from_source/3
# /maincontext/source_finalization_from_source/4 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 12 /maincontext/source_finalization_from_source/4
# /maincontext/source_finalization_from_source/5 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 13 /maincontext/source_finalization_from_source/5
# /maincontext/source_finalization_from_source/6 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 14 /maincontext/source_finalization_from_source/6
# /maincontext/source_finalization_from_source/7 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 15 /maincontext/source_finalization_from_source/7
# /maincontext/source_finalization_from_source/8 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 16 /maincontext/source_finalization_from_source/8
# /maincontext/source_finalization_from_source/9 summary: Tests if freeing a GSource as part of another GSource during main context destruction works.
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/merge_requests/1353
ok 17 /maincontext/source_finalization_from_source/9
# End of source_finalization_from_source tests
# Start of source_finalization_from_dispatch tests
# /maincontext/source_finalization_from_dispatch/0 summary: Tests if freeing a GSource as part of another GSource during main context iteration works.
ok 18 /maincontext/source_finalization_from_dispatch/0
# /maincontext/source_finalization_from_dispatch/1 summary: Tests if freeing a GSource as part of another GSource during main context iteration works.
ok 19 /maincontext/source_finalization_from_dispatch/1
# /maincontext/source_finalization_from_dispatch/2 summary: Tests if freeing a GSource as part of another GSource during main context iteration works.
ok 20 /maincontext/source_finalization_from_dispatch/2
# End of source_finalization_from_dispatch tests
# End of maincontext tests
# Start of mainloop tests
ok 21 /mainloop/basic
ok 22 /mainloop/timeouts # SKIP Not running timing heavy test
ok 23 /mainloop/priorities
ok 24 /mainloop/invoke
# slow test /mainloop/invoke executed in 0.50 secs
Executing: glib/mainloop.test
ok 25 /mainloop/child_sources
# slow test /mainloop/child_sources executed in 1.23 secs
ok 26 /mainloop/recursive_child_sources
# slow test /mainloop/recursive_child_sources executed in 2.28 secs
ok 27 /mainloop/recursive_loop_child_sources
ok 28 /mainloop/swapping_child_sources
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=701283
ok 29 /mainloop/blocked_child_sources
ok 30 /mainloop/source_time
# slow test /mainloop/source_time executed in 1.00 secs
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=687098
ok 31 /mainloop/overflow
Executing: glib/mainloop.test
ok 32 /mainloop/ready-time
# slow test /mainloop/ready-time executed in 0.50 secs
ok 33 /mainloop/wakeup
ok 34 /mainloop/remove-invalid
ok 35 /mainloop/unref-while-pending
Executing: glib/mainloop.test
ok 36 /mainloop/unix-fd
# slow test /mainloop/unix-fd executed in 5.42 secs
ok 37 /mainloop/unix-fd-source
ok 38 /mainloop/source-unix-fd-api
ok 39 /mainloop/wait
ok 40 /mainloop/unix-file-poll
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/1592
ok 41 /mainloop/unix-fd-priority
ok 42 /mainloop/nfds
ok 43 /mainloop/steal-fd
# Start of ownerless-polling tests
ok 44 /mainloop/ownerless-polling/attach-first
ok 45 /mainloop/ownerless-polling/pop-first
# End of ownerless-polling tests
# End of mainloop tests
PASS: glib/mainloop.test
Running test: glib/atomic-c-17.test
TAP version 14
# random seed: R02Sa2c486d865b9448a68e1480539760c80
1..2
# Start of atomic tests
ok 1 /atomic/types
ok 2 /atomic/threaded
# End of atomic tests
PASS: glib/atomic-c-17.test
Running test: glib/deftype.test
PASS: glib/deftype.test
Running test: glib/gdbus-peer-object-manager.test
TAP version 14
# random seed: R02Sbd79bbe58c90475b9a5e6f83e14d7d73
1..2
# Start of gdbus tests
# Start of peer-object-manager tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-object-manager/normal/.dirs/runtime
ok 1 /gdbus/peer-object-manager/normal
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/system-config1:/var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/system-data1:/var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/peer-object-manager/root/.dirs/runtime
ok 2 /gdbus/peer-object-manager/root
# End of peer-object-manager tests
# End of gdbus tests
PASS: glib/gdbus-peer-object-manager.test
Running test: glib/utf8-misc.test
TAP version 14
# random seed: R02Sa8fa4b8b23a341144356dd1dc1c40ad3
1..7
# Start of utf8 tests
ok 1 /utf8/strlen
ok 2 /utf8/strncpy
ok 3 /utf8/strrchr
ok 4 /utf8/reverse
ok 5 /utf8/substring
ok 6 /utf8/make-valid
ok 7 /utf8/truncate-middle
# End of utf8 tests
PASS: glib/utf8-misc.test
Running test: glib/defaultiface.test
TAP version 14
# random seed: R02S47819943337c9bb60ae37ecc09ff865a
1..2
# Start of gobject tests
ok 1 /gobject/static-iface
ok 2 /gobject/dynamic-iface
# End of gobject tests
PASS: glib/defaultiface.test
Running test: glib/sleepy-stream.test
TAP version 14
# random seed: R02S46c3449a516f88f4c118a56cb15eefd9
1..2
# Start of filter-stream tests
ok 1 /filter-stream/input
ok 2 /filter-stream/async
# End of filter-stream tests
PASS: glib/sleepy-stream.test
Running test: glib/gdbus-message.test
TAP version 14
# random seed: R02S54710dbcc04a571f5b96c8b3abde0440
1..3
# Start of gdbus tests
# Start of message tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/message/lock/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/message/lock/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/message/lock/.dirs/system-config1:/var/volatile/tmp/gdbus/message/lock/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/message/lock/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/message/lock/.dirs/system-data1:/var/volatile/tmp/gdbus/message/lock/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/message/lock/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/message/lock/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/message/lock/.dirs/runtime
ok 1 /gdbus/message/lock
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/message/copy/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/message/copy/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/message/copy/.dirs/system-config1:/var/volatile/tmp/gdbus/message/copy/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/message/copy/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/message/copy/.dirs/system-data1:/var/volatile/tmp/gdbus/message/copy/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/message/copy/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/message/copy/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/message/copy/.dirs/runtime
ok 2 /gdbus/message/copy
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/system-config1:/var/volatile/tmp/gdbus/message/bytes-needed/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/system-data1:/var/volatile/tmp/gdbus/message/bytes-needed/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/gdbus/message/bytes-needed/.dirs/runtime
# Vector: 0
# Vector: 1
# Vector: 2
# Vector: 3
# Vector: 4
# Vector: 5
ok 3 /gdbus/message/bytes-needed
# End of message tests
# End of gdbus tests
PASS: glib/gdbus-message.test
Running test: glib/signals-refcount2.test
TAP version 14
# random seed: R02S463b98e9ed4f0601be5723b44e494d06
1..1
# Start of gobject tests
# Start of refcount tests
# init 0x555571e3d3f0
# 
# init 0x555571e36600
# 
Executing: glib/signals-refcount2.test
# dispose 0x555571e3d3f0!
# 
# dispose 0x555571e36600!
# 
ok 1 /gobject/refcount/signals
# slow test /gobject/refcount/signals executed in 5.00 secs
# End of refcount tests
# End of gobject tests
PASS: glib/signals-refcount2.test
Running test: glib/macros-c-99.test
TAP version 14
# random seed: R02S8c9cee487fe6657f3248709138b9082f
1..4
# Start of C tests
ok 1 /C/standard-99
# End of C tests
# Start of alignof tests
ok 2 /alignof/fallback
# End of alignof tests
# Start of assert tests
ok 3 /assert/static
# End of assert tests
# Start of struct tests
ok 4 /struct/sizeof_member
# End of struct tests
PASS: glib/macros-c-99.test
Running test: glib/performance.test
Executing: glib/performance.test
Executing: glib/performance.test
Executing: glib/performance.test
simple-construction: Millions of constructed objects per second: 1.606
Executing: glib/performance.test
Executing: glib/performance.test
simple-construction1: Millions of constructed objects per second: 4.524
Executing: glib/performance.test
complex-construction: Millions of constructed objects per second: 0.430
Executing: glib/performance.test
Executing: glib/performance.test
complex-construction1: Millions of constructed objects per second: 0.842
Executing: glib/performance.test
Executing: glib/performance.test
Executing: glib/performance.test
complex-construction2: Millions of constructed objects per second: 1.006
finalization: Millions of finalized objects per second: 0.259
Executing: glib/performance.test
type-check: Million type checks per second: 11.94
emit-unhandled: Emissions per second: 357312
Executing: glib/performance.test
emit-unhandled-empty: Emissions per second: 2603526
emit-unhandled-generic: Emissions per second: 578306
emit-unhandled-generic-empty: Emissions per second: 2585387
Executing: glib/performance.test
emit-unhandled-args: Emissions per second: 291714
emit-handled: Emissions per second: 260120
Executing: glib/performance.test
emit-handled-empty: Emissions per second: 281250
emit-handled-generic: Emissions per second: 264193
emit-handled-generic-empty: Emissions per second: 485302
Executing: glib/performance.test
emit-handled-args: Emissions per second: 220588
notify-unhandled: Notify (unhandled) per second: 2090761
Executing: glib/performance.test
notify-by-pspec-unhandled: Notify (unhandled) per second: 6807281
notify-handled: Notify per second: 144895
Executing: glib/performance.test
notify-by-pspec-handled: Notify per second: 155453
property-set: Property set per second: 1167464
Executing: glib/performance.test
property-set-signaled: Property set per second: 195887
property-get: Property get per second: 1084649
Executing: glib/performance.test
refcount: Million refs+unref per second: 2.69
refcount-1: Million refs+unref per second: 6.52
refcount-toggle: Million refs+unref per second: 3.89
PASS: glib/performance.test
Running test: glib/file-thumbnail.test
TAP version 14
# random seed: R02Sfd854a44e862d5e8906b00f405ea36d6
1..7
# Start of file-thumbnail tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file-thumbnail/fail/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file-thumbnail/fail/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file-thumbnail/fail/.dirs/system-config1:/var/volatile/tmp/file-thumbnail/fail/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file-thumbnail/fail/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file-thumbnail/fail/.dirs/system-data1:/var/volatile/tmp/file-thumbnail/fail/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file-thumbnail/fail/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file-thumbnail/fail/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file-thumbnail/fail/.dirs/runtime
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/fail/.dirs/cache/thumbnails/fail/gnome-thumbnail-factory/f098bcae74f8241ee3835bded7284cdd.png
ok 1 /file-thumbnail/fail
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/system-config1:/var/volatile/tmp/file-thumbnail/size-priority/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/system-data1:/var/volatile/tmp/file-thumbnail/size-priority/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file-thumbnail/size-priority/.dirs/runtime
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/size-priority/.dirs/cache/thumbnails/fail/gnome-thumbnail-factory/f098bcae74f8241ee3835bded7284cdd.png
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/size-priority/.dirs/cache/thumbnails/normal/f098bcae74f8241ee3835bded7284cdd.png
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/size-priority/.dirs/cache/thumbnails/large/f098bcae74f8241ee3835bded7284cdd.png
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/size-priority/.dirs/cache/thumbnails/x-large/f098bcae74f8241ee3835bded7284cdd.png
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/size-priority/.dirs/cache/thumbnails/xx-large/f098bcae74f8241ee3835bded7284cdd.png
ok 2 /file-thumbnail/size-priority
# Start of valid tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/system-config1:/var/volatile/tmp/file-thumbnail/valid/normal/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/system-data1:/var/volatile/tmp/file-thumbnail/valid/normal/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/runtime
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/valid/normal/.dirs/cache/thumbnails/normal/f098bcae74f8241ee3835bded7284cdd.png
ok 3 /file-thumbnail/valid/normal
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/system-config1:/var/volatile/tmp/file-thumbnail/valid/large/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/system-data1:/var/volatile/tmp/file-thumbnail/valid/large/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file-thumbnail/valid/large/.dirs/runtime
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/valid/large/.dirs/cache/thumbnails/large/f098bcae74f8241ee3835bded7284cdd.png
ok 4 /file-thumbnail/valid/large
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/system-config1:/var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/system-data1:/var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/runtime
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/valid/x-large/.dirs/cache/thumbnails/x-large/f098bcae74f8241ee3835bded7284cdd.png
ok 5 /file-thumbnail/valid/x-large
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/system-config1:/var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/system-data1:/var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/runtime
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/valid/xx-large/.dirs/cache/thumbnails/xx-large/f098bcae74f8241ee3835bded7284cdd.png
ok 6 /file-thumbnail/valid/xx-large
# End of valid tests
# Start of unknown tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/system-config1:/var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/system-data1:/var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/runtime
# Created test thumbnail at /var/volatile/tmp/file-thumbnail/unknown/super-large/.dirs/cache/thumbnails/super-large/f098bcae74f8241ee3835bded7284cdd.png
ok 7 /file-thumbnail/unknown/super-large
# End of unknown tests
# End of file-thumbnail tests
PASS: glib/file-thumbnail.test
Running test: glib/buffered-input-stream.test
TAP version 14
# random seed: R02S4379c597a51640a69804cc2ef7e24b2f
1..10
# Start of buffered-input-stream tests
ok 1 /buffered-input-stream/peek
ok 2 /buffered-input-stream/peek-buffer
ok 3 /buffered-input-stream/set-buffer-size
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=562393
ok 4 /buffered-input-stream/read-byte
ok 5 /buffered-input-stream/read
ok 6 /buffered-input-stream/read-async
ok 7 /buffered-input-stream/skip
ok 8 /buffered-input-stream/skip-async
ok 9 /buffered-input-stream/seek
# End of buffered-input-stream tests
# Start of filter-input-stream tests
ok 10 /filter-input-stream/close
# End of filter-input-stream tests
PASS: glib/buffered-input-stream.test
Running test: glib/properties-refcount4.test
TAP version 14
# random seed: R02S36cef8a231fe246b01e4180c7c78a769
1..1
# Start of gobject tests
# Start of refcount tests
ok 1 /gobject/refcount/properties-4
# End of refcount tests
# End of gobject tests
PASS: glib/properties-refcount4.test
Running test: glib/init.test
TAP version 14
# random seed: R02S795b0934ddccd9d61a5f669ae8b400dd
1..2
# Start of thread tests
# Start of deprecated tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/thread/deprecated/init/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/thread/deprecated/init/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/thread/deprecated/init/.dirs/system-config1:/var/volatile/tmp/thread/deprecated/init/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/thread/deprecated/init/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/thread/deprecated/init/.dirs/system-data1:/var/volatile/tmp/thread/deprecated/init/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/thread/deprecated/init/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/thread/deprecated/init/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/thread/deprecated/init/.dirs/runtime
ok 1 /thread/deprecated/init
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/system-config1:/var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/system-data1:/var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/thread/deprecated/init-with-errorcheck-mutexes/.dirs/runtime
ok 2 /thread/deprecated/init-with-errorcheck-mutexes
# End of deprecated tests
# End of thread tests
PASS: glib/init.test
Running test: glib/gsubprocess.test
TAP version 14
# random seed: R02S286865f7817e3497ecf74418d260b880
1..84
# Start of gsubprocess tests
ok 1 /gsubprocess/noop
ok 2 /gsubprocess/noop-all-to-null
ok 3 /gsubprocess/noop-no-wait
ok 4 /gsubprocess/noop-stdin-inherit
ok 5 /gsubprocess/search-path
ok 6 /gsubprocess/search-path-from-envp
Executing: glib/gsubprocess.test
ok 7 /gsubprocess/signal
# slow test /gsubprocess/signal executed in 3.05 secs
ok 8 /gsubprocess/exit1
ok 9 /gsubprocess/echo1
ok 10 /gsubprocess/echo-merged
ok 11 /gsubprocess/cat-utf8
ok 12 /gsubprocess/cat-eof
# slow test /gsubprocess/cat-eof executed in 1.01 secs
Executing: glib/gsubprocess.test
ok 13 /gsubprocess/multi1
# slow test /gsubprocess/multi1 executed in 3.03 secs
ok 14 /gsubprocess/communicate
ok 15 /gsubprocess/terminate
# slow test /gsubprocess/terminate executed in 2.85 secs
Executing: glib/gsubprocess.test
ok 16 /gsubprocess/fail-initialization
ok 17 /gsubprocess/env
ok 18 /gsubprocess/cwd
ok 19 /gsubprocess/launcher-close
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 20 /gsubprocess/stdout-file
ok 21 /gsubprocess/stdout-fd
ok 22 /gsubprocess/child-setup
# GLib-DEBUG: setenv()/putenv() are not thread-safe and should not be used after threads are created
# GLib-DEBUG: setenv()/putenv() are not thread-safe and should not be used after threads are created
ok 23 /gsubprocess/launcher-environment
# Start of exit1 tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=786456
ok 24 /gsubprocess/exit1/cancel
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=786456
ok 25 /gsubprocess/exit1/cancel_in_cb
# End of exit1 tests
# Start of communicate tests
ok 26 /gsubprocess/communicate/cancelled
ok 27 /gsubprocess/communicate/async
ok 28 /gsubprocess/communicate/utf8
# hello world
ok 29 /gsubprocess/communicate/no-pipes
ok 30 /gsubprocess/communicate/separate-stderr
ok 31 /gsubprocess/communicate/stdout-only
# hello world
ok 32 /gsubprocess/communicate/stderr-only
ok 33 /gsubprocess/communicate/stdout-silence
ok 34 /gsubprocess/communicate/nothing
# Start of async tests
ok 35 /gsubprocess/communicate/async/cancelled
# hello world
ok 36 /gsubprocess/communicate/async/no-pipes
ok 37 /gsubprocess/communicate/async/separate-stderr
ok 38 /gsubprocess/communicate/async/stdout-only
# hello world
ok 39 /gsubprocess/communicate/async/stderr-only
ok 40 /gsubprocess/communicate/async/stdout-silence
# Start of cancelled tests
ok 41 /gsubprocess/communicate/async/cancelled/no-pipes
ok 42 /gsubprocess/communicate/async/cancelled/separate-stderr
ok 43 /gsubprocess/communicate/async/cancelled/stdout-only
ok 44 /gsubprocess/communicate/async/cancelled/stderr-only
ok 45 /gsubprocess/communicate/async/cancelled/stdout-silence
# End of cancelled tests
# End of async tests
# Start of utf8 tests
ok 46 /gsubprocess/communicate/utf8/cancelled
ok 47 /gsubprocess/communicate/utf8/async
# hello world
ok 48 /gsubprocess/communicate/utf8/no-pipes
ok 49 /gsubprocess/communicate/utf8/separate-stderr
ok 50 /gsubprocess/communicate/utf8/stdout-only
# hello world
ok 51 /gsubprocess/communicate/utf8/stderr-only
ok 52 /gsubprocess/communicate/utf8/stdout-silence
ok 53 /gsubprocess/communicate/utf8/invalid
# Start of async tests
ok 54 /gsubprocess/communicate/utf8/async/cancelled
# hello world
ok 55 /gsubprocess/communicate/utf8/async/no-pipes
ok 56 /gsubprocess/communicate/utf8/async/separate-stderr
ok 57 /gsubprocess/communicate/utf8/async/stdout-only
# hello world
ok 58 /gsubprocess/communicate/utf8/async/stderr-only
ok 59 /gsubprocess/communicate/utf8/async/stdout-silence
ok 60 /gsubprocess/communicate/utf8/async/invalid
# Start of cancelled tests
ok 61 /gsubprocess/communicate/utf8/async/cancelled/no-pipes
ok 62 /gsubprocess/communicate/utf8/async/cancelled/separate-stderr
ok 63 /gsubprocess/communicate/utf8/async/cancelled/stdout-only
ok 64 /gsubprocess/communicate/utf8/async/cancelled/stderr-only
ok 65 /gsubprocess/communicate/utf8/async/cancelled/stdout-silence
# End of cancelled tests
# End of async tests
# Start of cancelled tests
ok 66 /gsubprocess/communicate/utf8/cancelled/no-pipes
ok 67 /gsubprocess/communicate/utf8/cancelled/separate-stderr
ok 68 /gsubprocess/communicate/utf8/cancelled/stdout-only
ok 69 /gsubprocess/communicate/utf8/cancelled/stderr-only
ok 70 /gsubprocess/communicate/utf8/cancelled/stdout-silence
# End of cancelled tests
# End of utf8 tests
# Start of cancelled tests
ok 71 /gsubprocess/communicate/cancelled/no-pipes
ok 72 /gsubprocess/communicate/cancelled/separate-stderr
ok 73 /gsubprocess/communicate/cancelled/stdout-only
ok 74 /gsubprocess/communicate/cancelled/stderr-only
ok 75 /gsubprocess/communicate/cancelled/stdout-silence
# End of cancelled tests
# End of communicate tests
# Start of env tests
# GLib-DEBUG: setenv()/putenv() are not thread-safe and should not be used after threads are created
# GLib-DEBUG: setenv()/putenv() are not thread-safe and should not be used after threads are created
ok 76 /gsubprocess/env/inherit
# End of env tests
# Start of pass-fd tests
ok 77 /gsubprocess/pass-fd/basic
ok 78 /gsubprocess/pass-fd/empty-child-setup
ok 79 /gsubprocess/pass-fd/inherit-fds
# End of pass-fd tests
# Start of fd-conflation tests
ok 80 /gsubprocess/fd-conflation/basic
ok 81 /gsubprocess/fd-conflation/empty-child-setup
ok 82 /gsubprocess/fd-conflation/inherit-fds
ok 83 /gsubprocess/fd-conflation/child-err-report-fd
# End of fd-conflation tests
# Start of exit-status tests
# /gsubprocess/exit-status/trapped summary: Test that exit status is reported correctly for ptrace()d child processes
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3433
ok 84 /gsubprocess/exit-status/trapped
# End of exit-status tests
# End of gsubprocess tests
PASS: glib/gsubprocess.test
Running test: glib/cxx-17.test
TAP version 14
# random seed: R02Sca7bd08e66afcff2b61b6010e5db7706
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx-17.test
Running test: glib/testing-nonfatal.test
TAP version 14
# random seed: R02Sa0cef6b19522a98548e728117a4c14db
**
GLib:ERROR:../glib-2.84.2/glib/tests/testing-nonfatal.c:26:main: assertion failed ("We can survive this!" == "Or maybe not?"): ("We can survive this!" == "Or maybe not?")
# GLib:ERROR:../glib-2.84.2/glib/tests/testing-nonfatal.c:26:main: assertion failed ("We can survive this!" == "Or maybe not?"): ("We can survive this!" == "Or maybe not?")
PASS: glib/testing-nonfatal.test
Running test: glib/rcbox.test
TAP version 14
# random seed: R02S9910b7c3fd2dacbb1f3420cc27008ffd
1..8
# Start of rcbox tests
ok 1 /rcbox/new
# global_point = 0x5555658e2dc0
ok 2 /rcbox/release-full
# global_point_a = 0x5555658e2dc0
# global_point_b = 0x5555658e2e90
ok 3 /rcbox/dup
ok 4 /rcbox/alignment
# End of rcbox tests
# Start of atomic-rcbox tests
ok 5 /atomic-rcbox/new
# global_point = 0x5555658e2e90
ok 6 /atomic-rcbox/release-full
# global_point_a = 0x5555658e2e90
# global_point_b = 0x5555658e2dc0
ok 7 /atomic-rcbox/dup
ok 8 /atomic-rcbox/alignment
# End of atomic-rcbox tests
PASS: glib/rcbox.test
Running test: glib/signals.test
TAP version 14
# random seed: R02S8b3eb1b8e6dfc1f0891dc8ab1207c5f5
1..31
# Start of gobject tests
# Start of signals tests
ok 1 /gobject/signals/all-types
ok 2 /gobject/signals/variant
ok 3 /gobject/signals/destroy-target-object
ok 4 /gobject/signals/generic-marshaller-1
ok 5 /gobject/signals/generic-marshaller-2
ok 6 /gobject/signals/generic-marshaller-enum-return-signed
ok 7 /gobject/signals/generic-marshaller-enum-return-unsigned
ok 8 /gobject/signals/generic-marshaller-int-return
ok 9 /gobject/signals/generic-marshaller-uint-return
ok 10 /gobject/signals/generic-marshaller-interface-return
ok 11 /gobject/signals/custom-marshaller
ok 12 /gobject/signals/connect
ok 13 /gobject/signals/emission-hook
ok 14 /gobject/signals/emitv
ok 15 /gobject/signals/accumulator
# Signal: accumulator-class-first
# Signal: accumulator-class-last
# Signal: accumulator-class-cleanup
# Signal: accumulator-class-first-last
# Signal: accumulator-class-first-last-cleanup
# Signal: accumulator-class-last-cleanup
ok 16 /gobject/signals/accumulator-class
ok 17 /gobject/signals/introspection
ok 18 /gobject/signals/block-handler
ok 19 /gobject/signals/stop-emission
ok 20 /gobject/signals/invocation-hint
ok 21 /gobject/signals/test-disconnection-wrong-object
ok 22 /gobject/signals/clear-signal-handler
# /gobject/signals/lookup summary: Test that g_signal_lookup() works with a variety of inputs.
ok 23 /gobject/signals/lookup
# /gobject/signals/parse-name summary: Test that g_signal_parse_name() works with a variety of inputs.
ok 24 /gobject/signals/parse-name
ok 25 /gobject/signals/is-valid-name
ok 26 /gobject/signals/weak-ref-disconnect
# Start of lookup tests
# /gobject/signals/lookup/invalid summary: Test that g_signal_lookup() emits a warning if looking up an invalid signal name.
ok 27 /gobject/signals/lookup/invalid
# End of lookup tests
# Start of parse-name tests
# /gobject/signals/parse-name/invalid summary: Test that g_signal_parse_name() ignores a variety of invalid inputs.
# Parser input: 
# Parser input: 7zip
# Parser input: invalid:signal
# Parser input: simple-detailed::
# Parser input: simple-detailed:
# Parser input: :
# Parser input: ::
# Parser input: :valid-detail
# Parser input: ::valid-detail
ok 28 /gobject/signals/parse-name/invalid
# End of parse-name tests
# Start of invalid-name tests
# /gobject/signals/invalid-name/colon summary: Check that g_signal_new() rejects invalid signal names.
ok 29 /gobject/signals/invalid-name/colon
# /gobject/signals/invalid-name/first-char summary: Check that g_signal_new() rejects invalid signal names.
ok 30 /gobject/signals/invalid-name/first-char
# /gobject/signals/invalid-name/empty summary: Check that g_signal_new() rejects invalid signal names.
ok 31 /gobject/signals/invalid-name/empty
# End of invalid-name tests
# End of signals tests
# End of gobject tests
PASS: glib/signals.test
Running test: glib/ifaceproperties.test
TAP version 14
# random seed: R02S6444c42510a44029082f53880037a2e7
1..7
# Start of interface tests
# Start of properties tests
ok 1 /interface/properties/set
ok 2 /interface/properties/notify
ok 3 /interface/properties/find-overridden
ok 4 /interface/properties/list-overridden
ok 5 /interface/properties/find-interface
ok 6 /interface/properties/list-interface
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=637738
ok 7 /interface/properties/not-overridden
# End of properties tests
# End of interface tests
PASS: glib/ifaceproperties.test
Running test: glib/strvbuilder.test
TAP version 14
# random seed: R02Sda3a7eff6eae0d40f1fd6fb08fcf29cd
1..7
# Start of strvbuilder tests
ok 1 /strvbuilder/empty
ok 2 /strvbuilder/add
ok 3 /strvbuilder/addv
ok 4 /strvbuilder/add_many
ok 5 /strvbuilder/take
ok 6 /strvbuilder/ref
ok 7 /strvbuilder/unref_to_strv
# End of strvbuilder tests
PASS: glib/strvbuilder.test
Running test: glib/g-file-info-filesystem-readonly.test
TAP version 14
# random seed: R02Sfd5cb3a7b089feda1a0ab4a19f33cbad
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=787731
1..2
# Start of g-file-info-filesystem-readonly tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/system-config1:/var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/system-data1:/var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro/.dirs/runtime
ok 1 /g-file-info-filesystem-readonly/test-fs-ro # SKIP 'bindfs' and 'fusermount' commands are needed to run this test
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/system-config1:/var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/system-data1:/var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor/.dirs/runtime
ok 2 /g-file-info-filesystem-readonly/test-fs-ro-with-mount-monitor # SKIP 'bindfs' and 'fusermount' commands are needed to run this test
# End of g-file-info-filesystem-readonly tests
PASS: glib/g-file-info-filesystem-readonly.test
Running test: glib/keyfile.test
TAP version 14
# random seed: R02Sc743b70aae14f664183778ab62374411
1..36
# Start of keyfile tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/line-ends/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/line-ends/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/line-ends/.dirs/system-config1:/var/volatile/tmp/keyfile/line-ends/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/line-ends/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/line-ends/.dirs/system-data1:/var/volatile/tmp/keyfile/line-ends/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/line-ends/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/line-ends/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/line-ends/.dirs/runtime
ok 1 /keyfile/line-ends
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/whitespace/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/whitespace/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/whitespace/.dirs/system-config1:/var/volatile/tmp/keyfile/whitespace/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/whitespace/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/whitespace/.dirs/system-data1:/var/volatile/tmp/keyfile/whitespace/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/whitespace/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/whitespace/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/whitespace/.dirs/runtime
ok 2 /keyfile/whitespace
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/comments/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/comments/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/comments/.dirs/system-config1:/var/volatile/tmp/keyfile/comments/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/comments/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/comments/.dirs/system-data1:/var/volatile/tmp/keyfile/comments/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/comments/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/comments/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/comments/.dirs/runtime
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3047
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/104
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/3047
ok 3 /keyfile/comments
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/listing/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/listing/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/listing/.dirs/system-config1:/var/volatile/tmp/keyfile/listing/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/listing/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/listing/.dirs/system-data1:/var/volatile/tmp/keyfile/listing/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/listing/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/listing/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/listing/.dirs/runtime
ok 4 /keyfile/listing
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/string/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/string/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/string/.dirs/system-config1:/var/volatile/tmp/keyfile/string/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/string/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/string/.dirs/system-data1:/var/volatile/tmp/keyfile/string/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/string/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/string/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/string/.dirs/runtime
ok 5 /keyfile/string
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/boolean/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/boolean/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/boolean/.dirs/system-config1:/var/volatile/tmp/keyfile/boolean/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/boolean/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/boolean/.dirs/system-data1:/var/volatile/tmp/keyfile/boolean/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/boolean/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/boolean/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/boolean/.dirs/runtime
ok 6 /keyfile/boolean
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/number/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/number/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/number/.dirs/system-config1:/var/volatile/tmp/keyfile/number/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/number/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/number/.dirs/system-data1:/var/volatile/tmp/keyfile/number/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/number/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/number/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/number/.dirs/runtime
ok 7 /keyfile/number
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/locale-string/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/locale-string/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/locale-string/.dirs/system-config1:/var/volatile/tmp/keyfile/locale-string/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/locale-string/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/locale-string/.dirs/system-data1:/var/volatile/tmp/keyfile/locale-string/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/locale-string/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/locale-string/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/locale-string/.dirs/runtime
ok 8 /keyfile/locale-string
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/lists/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/lists/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/lists/.dirs/system-config1:/var/volatile/tmp/keyfile/lists/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/lists/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/lists/.dirs/system-data1:/var/volatile/tmp/keyfile/lists/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/lists/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/lists/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/lists/.dirs/runtime
ok 9 /keyfile/lists
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/lists-set-get/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/lists-set-get/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/lists-set-get/.dirs/system-config1:/var/volatile/tmp/keyfile/lists-set-get/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/lists-set-get/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/lists-set-get/.dirs/system-data1:/var/volatile/tmp/keyfile/lists-set-get/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/lists-set-get/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/lists-set-get/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/lists-set-get/.dirs/runtime
ok 10 /keyfile/lists-set-get
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/group-remove/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/group-remove/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/group-remove/.dirs/system-config1:/var/volatile/tmp/keyfile/group-remove/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/group-remove/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/group-remove/.dirs/system-data1:/var/volatile/tmp/keyfile/group-remove/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/group-remove/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/group-remove/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/group-remove/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=165887
ok 11 /keyfile/group-remove
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/key-remove/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/key-remove/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/key-remove/.dirs/system-config1:/var/volatile/tmp/keyfile/key-remove/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/key-remove/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/key-remove/.dirs/system-data1:/var/volatile/tmp/keyfile/key-remove/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/key-remove/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/key-remove/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/key-remove/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=165980
ok 12 /keyfile/key-remove
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/groups/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/groups/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/groups/.dirs/system-config1:/var/volatile/tmp/keyfile/groups/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/groups/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/groups/.dirs/system-data1:/var/volatile/tmp/keyfile/groups/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/groups/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/groups/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/groups/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=316309
ok 13 /keyfile/groups
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/system-config1:/var/volatile/tmp/keyfile/duplicate-keys/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/system-data1:/var/volatile/tmp/keyfile/duplicate-keys/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/duplicate-keys/.dirs/runtime
ok 14 /keyfile/duplicate-keys
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/system-config1:/var/volatile/tmp/keyfile/duplicate-groups/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/system-data1:/var/volatile/tmp/keyfile/duplicate-groups/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/duplicate-groups/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=157877
ok 15 /keyfile/duplicate-groups
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/system-config1:/var/volatile/tmp/keyfile/duplicate-groups2/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/system-data1:/var/volatile/tmp/keyfile/duplicate-groups2/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/duplicate-groups2/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=385910
ok 16 /keyfile/duplicate-groups2
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/group-names/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/group-names/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/group-names/.dirs/system-config1:/var/volatile/tmp/keyfile/group-names/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/group-names/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/group-names/.dirs/system-data1:/var/volatile/tmp/keyfile/group-names/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/group-names/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/group-names/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/group-names/.dirs/runtime
ok 17 /keyfile/group-names
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/key-names/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/key-names/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/key-names/.dirs/system-config1:/var/volatile/tmp/keyfile/key-names/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/key-names/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/key-names/.dirs/system-data1:/var/volatile/tmp/keyfile/key-names/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/key-names/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/key-names/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/key-names/.dirs/runtime
ok 18 /keyfile/key-names
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/reload/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/reload/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/reload/.dirs/system-config1:/var/volatile/tmp/keyfile/reload/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/reload/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/reload/.dirs/system-data1:/var/volatile/tmp/keyfile/reload/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/reload/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/reload/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/reload/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=420686
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2927
ok 19 /keyfile/reload
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/int64/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/int64/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/int64/.dirs/system-config1:/var/volatile/tmp/keyfile/int64/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/int64/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/int64/.dirs/system-data1:/var/volatile/tmp/keyfile/int64/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/int64/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/int64/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/int64/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=614864
ok 20 /keyfile/int64
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/load/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/load/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/load/.dirs/system-config1:/var/volatile/tmp/keyfile/load/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/load/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/load/.dirs/system-data1:/var/volatile/tmp/keyfile/load/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/load/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/load/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/load/.dirs/runtime
ok 21 /keyfile/load
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/save/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/save/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/save/.dirs/system-config1:/var/volatile/tmp/keyfile/save/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/save/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/save/.dirs/system-data1:/var/volatile/tmp/keyfile/save/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/save/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/save/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/save/.dirs/runtime
ok 22 /keyfile/save
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/load-fail/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/load-fail/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/load-fail/.dirs/system-config1:/var/volatile/tmp/keyfile/load-fail/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/load-fail/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/load-fail/.dirs/system-data1:/var/volatile/tmp/keyfile/load-fail/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/load-fail/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/load-fail/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/load-fail/.dirs/runtime
ok 23 /keyfile/load-fail
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/non-utf8/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/non-utf8/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/non-utf8/.dirs/system-config1:/var/volatile/tmp/keyfile/non-utf8/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/non-utf8/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/non-utf8/.dirs/system-data1:/var/volatile/tmp/keyfile/non-utf8/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/non-utf8/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/non-utf8/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/non-utf8/.dirs/runtime
ok 24 /keyfile/non-utf8
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/page-boundary/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/page-boundary/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/page-boundary/.dirs/system-config1:/var/volatile/tmp/keyfile/page-boundary/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/page-boundary/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/page-boundary/.dirs/system-data1:/var/volatile/tmp/keyfile/page-boundary/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/page-boundary/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/page-boundary/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/page-boundary/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=640695
ok 25 /keyfile/page-boundary
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/ref/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/ref/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/ref/.dirs/system-config1:/var/volatile/tmp/keyfile/ref/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/ref/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/ref/.dirs/system-data1:/var/volatile/tmp/keyfile/ref/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/ref/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/ref/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/ref/.dirs/runtime
ok 26 /keyfile/ref
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/replace-value/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/replace-value/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/replace-value/.dirs/system-config1:/var/volatile/tmp/keyfile/replace-value/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/replace-value/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/replace-value/.dirs/system-data1:/var/volatile/tmp/keyfile/replace-value/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/replace-value/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/replace-value/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/replace-value/.dirs/runtime
ok 27 /keyfile/replace-value
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/list-separator/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/list-separator/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/list-separator/.dirs/system-config1:/var/volatile/tmp/keyfile/list-separator/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/list-separator/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/list-separator/.dirs/system-data1:/var/volatile/tmp/keyfile/list-separator/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/list-separator/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/list-separator/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/list-separator/.dirs/runtime
ok 28 /keyfile/list-separator
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/empty-string/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/empty-string/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/empty-string/.dirs/system-config1:/var/volatile/tmp/keyfile/empty-string/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/empty-string/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/empty-string/.dirs/system-data1:/var/volatile/tmp/keyfile/empty-string/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/empty-string/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/empty-string/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/empty-string/.dirs/runtime
ok 29 /keyfile/empty-string
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/limbo/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/limbo/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/limbo/.dirs/system-config1:/var/volatile/tmp/keyfile/limbo/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/limbo/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/limbo/.dirs/system-data1:/var/volatile/tmp/keyfile/limbo/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/limbo/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/limbo/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/limbo/.dirs/runtime
ok 30 /keyfile/limbo
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/utf8/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/utf8/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/utf8/.dirs/system-config1:/var/volatile/tmp/keyfile/utf8/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/utf8/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/utf8/.dirs/system-data1:/var/volatile/tmp/keyfile/utf8/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/utf8/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/utf8/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/utf8/.dirs/runtime
# Testing invalid encoding ?non-UTF-8?
# Testing invalid encoding ?UTF?
# Testing invalid encoding ?UTF-9?
ok 31 /keyfile/utf8
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/roundtrip/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/roundtrip/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/roundtrip/.dirs/system-config1:/var/volatile/tmp/keyfile/roundtrip/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/roundtrip/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/roundtrip/.dirs/system-data1:/var/volatile/tmp/keyfile/roundtrip/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/roundtrip/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/roundtrip/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/roundtrip/.dirs/runtime
ok 32 /keyfile/roundtrip
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/bytes/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/bytes/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/bytes/.dirs/system-config1:/var/volatile/tmp/keyfile/bytes/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/bytes/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/bytes/.dirs/system-data1:/var/volatile/tmp/keyfile/bytes/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/bytes/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/bytes/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/bytes/.dirs/runtime
ok 33 /keyfile/bytes
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/get-locale/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/get-locale/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/get-locale/.dirs/system-config1:/var/volatile/tmp/keyfile/get-locale/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/get-locale/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/get-locale/.dirs/system-data1:/var/volatile/tmp/keyfile/get-locale/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/get-locale/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/get-locale/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/get-locale/.dirs/runtime
ok 34 /keyfile/get-locale
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/system-config1:/var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/system-data1:/var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/free-when-not-last-ref/.dirs/runtime
ok 35 /keyfile/free-when-not-last-ref
# Start of locale-string tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/system-config1:/var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/system-data1:/var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/keyfile/locale-string/multiple-loads/.dirs/runtime
# /keyfile/locale-string/multiple-loads summary: Check that loading with translations multiple times works
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2361
ok 36 /keyfile/locale-string/multiple-loads
# End of locale-string tests
# End of keyfile tests
PASS: glib/keyfile.test
Running test: glib/thread-deprecated.test
TAP version 14
# random seed: R02Sad7b34b0db8e17028b65b179a0f2c39d
1..6
# Start of thread tests
ok 1 /thread/mutex
ok 2 /thread/static-rec-mutex
Executing: glib/thread-deprecated.test
ok 3 /thread/static-private
# slow test /thread/static-private executed in 4.21 secs
Executing: glib/thread-deprecated.test
ok 4 /thread/static-rw-lock
# slow test /thread/static-rw-lock executed in 5.01 secs
ok 5 /thread/once
Executing: glib/thread-deprecated.test
Executing: glib/thread-deprecated.test
ok 6 /thread/rerun-all
# slow test /thread/rerun-all executed in 9.84 secs
# End of thread tests
PASS: glib/thread-deprecated.test
Running test: glib/srvtarget.test
TAP version 14
# random seed: R02Scbab08bd2aa9d9ca6aebff1d1bb03631
1..1
# Start of srvtarget tests
ok 1 /srvtarget/srv-target-ordering
# slow test /srvtarget/srv-target-ordering executed in 2.40 secs
# End of srvtarget tests
PASS: glib/srvtarget.test
Running test: glib/signals-refcount3.test
TAP version 14
# random seed: R02Sfd9cd3bc9ac7a036a46b1d425dc35acd
1..1
# Start of gobject tests
# Start of refcount tests
# init 0x55558c0d83f0
# 
# init 0x55558c0d1600
# 
Executing: glib/signals-refcount3.test
# dispose 0x55558c0d83f0!
# 
# dispose 0x55558c0d1600!
# 
ok 1 /gobject/refcount/signals
# slow test /gobject/refcount/signals executed in 5.00 secs
# End of refcount tests
# End of gobject tests
PASS: glib/signals-refcount3.test
Running test: glib/file.test
TAP version 14
# random seed: R02Sd63602700e479fe51d8f5785d5132dd5
1..55
# Start of file tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/basic/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/basic/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/basic/.dirs/system-config1:/var/volatile/tmp/file/basic/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/basic/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/basic/.dirs/system-data1:/var/volatile/tmp/file/basic/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/basic/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/basic/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/basic/.dirs/runtime
# GLib-GIO-DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
ok 1 /file/basic
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/build-filename/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/build-filename/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/build-filename/.dirs/system-config1:/var/volatile/tmp/file/build-filename/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/build-filename/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/build-filename/.dirs/system-data1:/var/volatile/tmp/file/build-filename/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/build-filename/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/build-filename/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/build-filename/.dirs/runtime
ok 2 /file/build-filename
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/build-filenamev/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/build-filenamev/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/build-filenamev/.dirs/system-config1:/var/volatile/tmp/file/build-filenamev/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/build-filenamev/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/build-filenamev/.dirs/system-data1:/var/volatile/tmp/file/build-filenamev/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/build-filenamev/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/build-filenamev/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/build-filenamev/.dirs/runtime
ok 3 /file/build-filenamev
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/parent/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/parent/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/parent/.dirs/system-config1:/var/volatile/tmp/file/parent/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/parent/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/parent/.dirs/system-data1:/var/volatile/tmp/file/parent/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/parent/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/parent/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/parent/.dirs/runtime
ok 4 /file/parent
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/child/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/child/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/child/.dirs/system-config1:/var/volatile/tmp/file/child/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/child/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/child/.dirs/system-data1:/var/volatile/tmp/file/child/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/child/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/child/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/child/.dirs/runtime
ok 5 /file/child
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/empty-path/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/empty-path/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/empty-path/.dirs/system-config1:/var/volatile/tmp/file/empty-path/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/empty-path/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/empty-path/.dirs/system-data1:/var/volatile/tmp/file/empty-path/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/empty-path/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/empty-path/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/empty-path/.dirs/runtime
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2328
# /file/empty-path summary: Check that creating a file with an empty path results in errors
ok 6 /file/empty-path
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/type/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/type/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/type/.dirs/system-config1:/var/volatile/tmp/file/type/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/type/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/type/.dirs/system-data1:/var/volatile/tmp/file/type/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/type/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/type/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/type/.dirs/runtime
ok 7 /file/type
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/parse-name/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/parse-name/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/parse-name/.dirs/system-config1:/var/volatile/tmp/file/parse-name/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/parse-name/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/parse-name/.dirs/system-data1:/var/volatile/tmp/file/parse-name/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/parse-name/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/parse-name/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/parse-name/.dirs/runtime
ok 8 /file/parse-name
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/replace-load/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/replace-load/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/replace-load/.dirs/system-config1:/var/volatile/tmp/file/replace-load/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/replace-load/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/replace-load/.dirs/system-data1:/var/volatile/tmp/file/replace-load/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/replace-load/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/replace-load/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/replace-load/.dirs/runtime
ok 9 /file/replace-load
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/replace-cancel/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/replace-cancel/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/replace-cancel/.dirs/system-config1:/var/volatile/tmp/file/replace-cancel/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/replace-cancel/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/replace-cancel/.dirs/system-data1:/var/volatile/tmp/file/replace-cancel/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/replace-cancel/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/replace-cancel/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/replace-cancel/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/629301
ok 10 /file/replace-cancel
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/replace-symlink/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/replace-symlink/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/replace-symlink/.dirs/system-config1:/var/volatile/tmp/file/replace-symlink/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/replace-symlink/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/replace-symlink/.dirs/system-data1:/var/volatile/tmp/file/replace-symlink/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/replace-symlink/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/replace-symlink/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/replace-symlink/.dirs/runtime
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2325
# /file/replace-symlink summary: Test that G_FILE_CREATE_REPLACE_DESTINATION doesn?t follow symlinks
# Using temporary directory /var/volatile/tmp/g_file_replace_symlink_I97572
ok 11 /file/replace-symlink
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-new-tmp/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-new-tmp/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-new-tmp/.dirs/system-config1:/var/volatile/tmp/file/async-new-tmp/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-new-tmp/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-new-tmp/.dirs/system-data1:/var/volatile/tmp/file/async-new-tmp/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-new-tmp/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-new-tmp/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-new-tmp/.dirs/runtime
ok 12 /file/async-new-tmp
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/system-config1:/var/volatile/tmp/file/async-new-tmp-dir/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/system-data1:/var/volatile/tmp/file/async-new-tmp-dir/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-new-tmp-dir/.dirs/runtime
ok 13 /file/async-new-tmp-dir
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-delete/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-delete/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-delete/.dirs/system-config1:/var/volatile/tmp/file/async-delete/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-delete/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-delete/.dirs/system-data1:/var/volatile/tmp/file/async-delete/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-delete/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-delete/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-delete/.dirs/runtime
ok 14 /file/async-delete
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-make-symlink/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-make-symlink/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-make-symlink/.dirs/system-config1:/var/volatile/tmp/file/async-make-symlink/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-make-symlink/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-make-symlink/.dirs/system-data1:/var/volatile/tmp/file/async-make-symlink/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-make-symlink/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-make-symlink/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-make-symlink/.dirs/runtime
ok 15 /file/async-make-symlink
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/copy-preserve-mode/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/copy-preserve-mode/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/copy-preserve-mode/.dirs/system-config1:/var/volatile/tmp/file/copy-preserve-mode/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/copy-preserve-mode/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/copy-preserve-mode/.dirs/system-data1:/var/volatile/tmp/file/copy-preserve-mode/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/copy-preserve-mode/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/copy-preserve-mode/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/copy-preserve-mode/.dirs/runtime
# Current umask: 18
# Vector 0
# Vector 1
# Vector 2
# Vector 3
# Vector 4
# Vector 5
# Vector 6
# Vector 7
# Vector 8
# Vector 9
# Vector 10
ok 16 /file/copy-preserve-mode
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/copy-async-with-closures/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/copy-async-with-closures/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/copy-async-with-closures/.dirs/system-config1:/var/volatile/tmp/file/copy-async-with-closures/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/copy-async-with-closures/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/copy-async-with-closures/.dirs/system-data1:/var/volatile/tmp/file/copy-async-with-closures/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/copy-async-with-closures/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/copy-async-with-closures/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/copy-async-with-closures/.dirs/runtime
ok 17 /file/copy-async-with-closures
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/measure/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/measure/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/measure/.dirs/system-config1:/var/volatile/tmp/file/measure/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/measure/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/measure/.dirs/system-data1:/var/volatile/tmp/file/measure/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/measure/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/measure/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/measure/.dirs/runtime
ok 18 /file/measure
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/measure-async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/measure-async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/measure-async/.dirs/system-config1:/var/volatile/tmp/file/measure-async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/measure-async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/measure-async/.dirs/system-data1:/var/volatile/tmp/file/measure-async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/measure-async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/measure-async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/measure-async/.dirs/runtime
ok 19 /file/measure-async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/load-bytes/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/load-bytes/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/load-bytes/.dirs/system-config1:/var/volatile/tmp/file/load-bytes/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/load-bytes/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/load-bytes/.dirs/system-data1:/var/volatile/tmp/file/load-bytes/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/load-bytes/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/load-bytes/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/load-bytes/.dirs/runtime
ok 20 /file/load-bytes
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/load-bytes-async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/load-bytes-async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/load-bytes-async/.dirs/system-config1:/var/volatile/tmp/file/load-bytes-async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/load-bytes-async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/load-bytes-async/.dirs/system-data1:/var/volatile/tmp/file/load-bytes-async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/load-bytes-async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/load-bytes-async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/load-bytes-async/.dirs/runtime
ok 21 /file/load-bytes-async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/load-bytes-4gb/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/load-bytes-4gb/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/load-bytes-4gb/.dirs/system-config1:/var/volatile/tmp/file/load-bytes-4gb/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/load-bytes-4gb/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/load-bytes-4gb/.dirs/system-data1:/var/volatile/tmp/file/load-bytes-4gb/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/load-bytes-4gb/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/load-bytes-4gb/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/load-bytes-4gb/.dirs/runtime
ok 22 /file/load-bytes-4gb # SKIP Skipping slow >4GB file test
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/load-contents-4gb/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/load-contents-4gb/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/load-contents-4gb/.dirs/system-config1:/var/volatile/tmp/file/load-contents-4gb/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/load-contents-4gb/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/load-contents-4gb/.dirs/system-data1:/var/volatile/tmp/file/load-contents-4gb/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/load-contents-4gb/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/load-contents-4gb/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/load-contents-4gb/.dirs/runtime
ok 23 /file/load-contents-4gb # SKIP Skipping slow >4GB file test
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/system-config1:/var/volatile/tmp/file/load-contents-4gb-async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/system-data1:/var/volatile/tmp/file/load-contents-4gb-async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/load-contents-4gb-async/.dirs/runtime
ok 24 /file/load-contents-4gb-async # SKIP Skipping slow >4GB file test
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/.dirs/system-config1:/var/volatile/tmp/file/writev/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/.dirs/system-data1:/var/volatile/tmp/file/writev/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/.dirs/runtime
ok 25 /file/writev
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/system-config1:/var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/system-data1:/var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/build-attribute-list-for-copy/.dirs/runtime
# Attributes for copy: standard::size,time::modified,time::modified-nsec,time::modified-usec,unix::mode,xattr::*
# Attributes for copy: standard::size,time::modified,time::modified-nsec,time::modified-usec,xattr::*
# Attributes for copy: standard::size,time::access,time::access-nsec,time::access-usec,time::modified,time::modified-nsec,time::modified-usec,unix::gid,unix::mode,unix::uid,xattr::*,xattr-sys::*
# Attributes for copy: standard::size,time::access,time::access-nsec,time::access-usec,time::modified,time::modified-nsec,time::modified-usec,unix::gid,unix::uid,xattr::*,xattr-sys::*
# Attributes for copy: standard::size,time::access,time::access-nsec,time::access-usec,unix::gid,unix::mode,unix::uid,xattr::*,xattr-sys::*
# Attributes for copy: standard::size,xattr::*
# Attributes for copy: standard::size,unix::mode,xattr::*
ok 26 /file/build-attribute-list-for-copy
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/move_async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/move_async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/move_async/.dirs/system-config1:/var/volatile/tmp/file/move_async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/move_async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/move_async/.dirs/system-data1:/var/volatile/tmp/file/move_async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/move_async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/move_async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/move_async/.dirs/runtime
ok 27 /file/move_async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/move-async-with-closures/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/move-async-with-closures/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/move-async-with-closures/.dirs/system-config1:/var/volatile/tmp/file/move-async-with-closures/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/move-async-with-closures/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/move-async-with-closures/.dirs/system-data1:/var/volatile/tmp/file/move-async-with-closures/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/move-async-with-closures/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/move-async-with-closures/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/move-async-with-closures/.dirs/runtime
ok 28 /file/move-async-with-closures
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/system-config1:/var/volatile/tmp/file/query-zero-length-content-type/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/system-data1:/var/volatile/tmp/file/query-zero-length-content-type/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/query-zero-length-content-type/.dirs/runtime
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=755795
# /file/query-zero-length-content-type summary: empty files should always be considered application/x-zerosize
ok 29 /file/query-zero-length-content-type
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/query-default-handler-file/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/query-default-handler-file/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/query-default-handler-file/.dirs/system-config1:/var/volatile/tmp/file/query-default-handler-file/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/query-default-handler-file/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/query-default-handler-file/.dirs/system-data1:/var/volatile/tmp/file/query-default-handler-file/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/query-default-handler-file/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/query-default-handler-file/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/query-default-handler-file/.dirs/runtime
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file/.dirs/data/applications
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file/.dirs/config
ok 30 /file/query-default-handler-file
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/system-config1:/var/volatile/tmp/file/query-default-handler-file-async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/system-data1:/var/volatile/tmp/file/query-default-handler-file-async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/runtime
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file-async/.dirs/data/applications
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file-async/.dirs/config
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/file/query-default-handler-file/.dirs/config to /var/volatile/tmp/file/query-default-handler-file-async/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file-async/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-file-async/.dirs/config
ok 31 /file/query-default-handler-file-async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/query-default-handler-uri/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/query-default-handler-uri/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/query-default-handler-uri/.dirs/system-config1:/var/volatile/tmp/file/query-default-handler-uri/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/query-default-handler-uri/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/query-default-handler-uri/.dirs/system-data1:/var/volatile/tmp/file/query-default-handler-uri/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/query-default-handler-uri/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/query-default-handler-uri/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/query-default-handler-uri/.dirs/runtime
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri/.dirs/data/applications
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri/.dirs/config
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/file/query-default-handler-file-async/.dirs/config to /var/volatile/tmp/file/query-default-handler-uri/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri/.dirs/config
ok 32 /file/query-default-handler-uri
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/system-config1:/var/volatile/tmp/file/query-default-handler-uri-async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/system-data1:/var/volatile/tmp/file/query-default-handler-uri-async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/runtime
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/data/applications
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/config
# GLib-GIO-DEBUG: desktop_file_dirs_lock: Resetting desktop app info dirs from /var/volatile/tmp/file/query-default-handler-uri/.dirs/config to /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/config
# GLib-GIO-DEBUG: ensure_dir: Ensuring /var/volatile/tmp/file/query-default-handler-uri-async/.dirs/config
ok 33 /file/query-default-handler-uri-async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/enumerator-cancellation/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/enumerator-cancellation/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/enumerator-cancellation/.dirs/system-config1:/var/volatile/tmp/file/enumerator-cancellation/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/enumerator-cancellation/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/enumerator-cancellation/.dirs/system-data1:/var/volatile/tmp/file/enumerator-cancellation/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/enumerator-cancellation/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/enumerator-cancellation/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/enumerator-cancellation/.dirs/runtime
ok 34 /file/enumerator-cancellation
# Start of async-create-delete tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-create-delete/0/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-create-delete/0/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-create-delete/0/.dirs/system-config1:/var/volatile/tmp/file/async-create-delete/0/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-create-delete/0/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-create-delete/0/.dirs/system-data1:/var/volatile/tmp/file/async-create-delete/0/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-create-delete/0/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-create-delete/0/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-create-delete/0/.dirs/runtime
ok 35 /file/async-create-delete/0
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-create-delete/1/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-create-delete/1/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-create-delete/1/.dirs/system-config1:/var/volatile/tmp/file/async-create-delete/1/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-create-delete/1/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-create-delete/1/.dirs/system-data1:/var/volatile/tmp/file/async-create-delete/1/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-create-delete/1/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-create-delete/1/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-create-delete/1/.dirs/runtime
ok 36 /file/async-create-delete/1
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-create-delete/10/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-create-delete/10/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-create-delete/10/.dirs/system-config1:/var/volatile/tmp/file/async-create-delete/10/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-create-delete/10/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-create-delete/10/.dirs/system-data1:/var/volatile/tmp/file/async-create-delete/10/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-create-delete/10/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-create-delete/10/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-create-delete/10/.dirs/runtime
ok 37 /file/async-create-delete/10
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-create-delete/25/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-create-delete/25/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-create-delete/25/.dirs/system-config1:/var/volatile/tmp/file/async-create-delete/25/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-create-delete/25/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-create-delete/25/.dirs/system-data1:/var/volatile/tmp/file/async-create-delete/25/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-create-delete/25/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-create-delete/25/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-create-delete/25/.dirs/runtime
ok 38 /file/async-create-delete/25
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/async-create-delete/4096/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/async-create-delete/4096/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/async-create-delete/4096/.dirs/system-config1:/var/volatile/tmp/file/async-create-delete/4096/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/async-create-delete/4096/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/async-create-delete/4096/.dirs/system-data1:/var/volatile/tmp/file/async-create-delete/4096/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/async-create-delete/4096/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/async-create-delete/4096/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/async-create-delete/4096/.dirs/runtime
ok 39 /file/async-create-delete/4096
# End of async-create-delete tests
# Start of replace-symlink tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/system-config1:/var/volatile/tmp/file/replace-symlink/using-etag/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/system-data1:/var/volatile/tmp/file/replace-symlink/using-etag/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/replace-symlink/using-etag/.dirs/runtime
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/2417
# /file/replace-symlink/using-etag summary: Test that ETag checks work when replacing a file through a symlink
# Using temporary directory /var/volatile/tmp/g_file_replace_symlink_using_etag_F86V72
Executing: glib/file.test
ok 40 /file/replace-symlink/using-etag
# slow test /file/replace-symlink/using-etag executed in 2.00 secs
# End of replace-symlink tests
# Start of replace tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/replace/write-only/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/replace/write-only/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/replace/write-only/.dirs/system-config1:/var/volatile/tmp/file/replace/write-only/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/replace/write-only/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/replace/write-only/.dirs/system-data1:/var/volatile/tmp/file/replace/write-only/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/replace/write-only/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/replace/write-only/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/replace/write-only/.dirs/runtime
# /file/replace/write-only summary: Test various situations for g_file_replace()
# Current umask: 18
# Test 0, using temporary directory /var/volatile/tmp/g_file_replace_ZY8V72
# Test 1, using temporary directory /var/volatile/tmp/g_file_replace_V5DW72
# Test 2, using temporary directory /var/volatile/tmp/g_file_replace_FSCW72
# Test 3, using temporary directory /var/volatile/tmp/g_file_replace_I7GW72
# Test 4, using temporary directory /var/volatile/tmp/g_file_replace_O4EW72
# Test 5, using temporary directory /var/volatile/tmp/g_file_replace_Z0XX72
# Test 6, using temporary directory /var/volatile/tmp/g_file_replace_TDWX72
# Test 7, using temporary directory /var/volatile/tmp/g_file_replace_0TXX72
# Test 8, using temporary directory /var/volatile/tmp/g_file_replace_A21X72
# Test 9, using temporary directory /var/volatile/tmp/g_file_replace_INZX72
# Test 10, using temporary directory /var/volatile/tmp/g_file_replace_210X72
# Test 11, using temporary directory /var/volatile/tmp/g_file_replace_NI5X72
# Test 12, using temporary directory /var/volatile/tmp/g_file_replace_JA3X72
# Test 13, using temporary directory /var/volatile/tmp/g_file_replace_363X72
# Test 14, using temporary directory /var/volatile/tmp/g_file_replace_2P8X72
# Test 15, using temporary directory /var/volatile/tmp/g_file_replace_P46X72
# Test 16, using temporary directory /var/volatile/tmp/g_file_replace_FGBY72
# Test 17, using temporary directory /var/volatile/tmp/g_file_replace_EL9X72
# Test 18, using temporary directory /var/volatile/tmp/g_file_replace_R2DY72
# Test 19, using temporary directory /var/volatile/tmp/g_file_replace_Q7EY72
# Test 20, using temporary directory /var/volatile/tmp/g_file_replace_TBDY72
# Test 21, using temporary directory /var/volatile/tmp/g_file_replace_RNHY72
# Test 22, using temporary directory /var/volatile/tmp/g_file_replace_WFKY72
# Test 23, using temporary directory /var/volatile/tmp/g_file_replace_V7KY72
# Test 24, using temporary directory /var/volatile/tmp/g_file_replace_1N8W72
# Test 25, using temporary directory /var/volatile/tmp/g_file_replace_Z49W72
# Test 26, using temporary directory /var/volatile/tmp/g_file_replace_217W72
# Test 27, using temporary directory /var/volatile/tmp/g_file_replace_38BX72
# Test 28, using temporary directory /var/volatile/tmp/g_file_replace_989W72
# Test 29, using temporary directory /var/volatile/tmp/g_file_replace_XLBX72
# Test 30, using temporary directory /var/volatile/tmp/g_file_replace_PUFX72
# Test 31, using temporary directory /var/volatile/tmp/g_file_replace_0LDX72
# Test 32, using temporary directory /var/volatile/tmp/g_file_replace_1WEX72
# Test 33, using temporary directory /var/volatile/tmp/g_file_replace_HBJX72
# Test 34, using temporary directory /var/volatile/tmp/g_file_replace_T4GX72
# Test 35, using temporary directory /var/volatile/tmp/g_file_replace_I0HX72
# Test 36, using temporary directory /var/volatile/tmp/g_file_replace_2EMX72
# Test 37, using temporary directory /var/volatile/tmp/g_file_replace_ITKX72
# Test 38, using temporary directory /var/volatile/tmp/g_file_replace_Z2OX72
# Test 39, using temporary directory /var/volatile/tmp/g_file_replace_N6MX72
# Test 40, using temporary directory /var/volatile/tmp/g_file_replace_XEOX72
# Test 41, using temporary directory /var/volatile/tmp/g_file_replace_APSX72
# Test 42, using temporary directory /var/volatile/tmp/g_file_replace_NPQX72
# Test 43, using temporary directory /var/volatile/tmp/g_file_replace_11UX72
# Test 44, using temporary directory /var/volatile/tmp/g_file_replace_HETX72
# Test 45, using temporary directory /var/volatile/tmp/g_file_replace_N4TX72
# Test 46, using temporary directory /var/volatile/tmp/g_file_replace_UWCZ72
# Test 47, using temporary directory /var/volatile/tmp/g_file_replace_CPDZ72
# Test 48, using temporary directory /var/volatile/tmp/g_file_replace_TIBZ72
# We do not have CAP_DAC_OVERRIDE or equivalent
ok 41 /file/replace/write-only
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/replace/read-write/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/replace/read-write/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/replace/read-write/.dirs/system-config1:/var/volatile/tmp/file/replace/read-write/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/replace/read-write/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/replace/read-write/.dirs/system-data1:/var/volatile/tmp/file/replace/read-write/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/replace/read-write/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/replace/read-write/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/replace/read-write/.dirs/runtime
# /file/replace/read-write summary: Test various situations for g_file_replace()
# Current umask: 18
# Test 0, using temporary directory /var/volatile/tmp/g_file_replace_9IEZ72
# Test 1, using temporary directory /var/volatile/tmp/g_file_replace_7PFZ72
# Test 2, using temporary directory /var/volatile/tmp/g_file_replace_RVHZ72
# Test 3, using temporary directory /var/volatile/tmp/g_file_replace_G9LZ72
# Test 4, using temporary directory /var/volatile/tmp/g_file_replace_S7MZ72
# Test 5, using temporary directory /var/volatile/tmp/g_file_replace_7WKZ72
# Test 6, using temporary directory /var/volatile/tmp/g_file_replace_ZZLZ72
# Test 7, using temporary directory /var/volatile/tmp/g_file_replace_CGQZ72
# Test 8, using temporary directory /var/volatile/tmp/g_file_replace_DBOZ72
# Test 9, using temporary directory /var/volatile/tmp/g_file_replace_80OZ72
# Test 10, using temporary directory /var/volatile/tmp/g_file_replace_UFTZ72
# Test 11, using temporary directory /var/volatile/tmp/g_file_replace_1IRZ72
# Test 12, using temporary directory /var/volatile/tmp/g_file_replace_BDSZ72
# Test 13, using temporary directory /var/volatile/tmp/g_file_replace_KGWZ72
# Test 14, using temporary directory /var/volatile/tmp/g_file_replace_OLUZ72
# Test 15, using temporary directory /var/volatile/tmp/g_file_replace_82YZ72
# Test 16, using temporary directory /var/volatile/tmp/g_file_replace_Z5WZ72
# Test 17, using temporary directory /var/volatile/tmp/g_file_replace_ICYZ72
# Test 18, using temporary directory /var/volatile/tmp/g_file_replace_J8NY72
# Test 19, using temporary directory /var/volatile/tmp/g_file_replace_Q4LY72
# Test 20, using temporary directory /var/volatile/tmp/g_file_replace_C9MY72
# Test 21, using temporary directory /var/volatile/tmp/g_file_replace_SSRY72
# Test 22, using temporary directory /var/volatile/tmp/g_file_replace_MXPY72
# Test 23, using temporary directory /var/volatile/tmp/g_file_replace_CUTY72
# Test 24, using temporary directory /var/volatile/tmp/g_file_replace_E1UY72
# Test 25, using temporary directory /var/volatile/tmp/g_file_replace_K1SY72
# Test 26, using temporary directory /var/volatile/tmp/g_file_replace_23WY72
# Test 27, using temporary directory /var/volatile/tmp/g_file_replace_EZXY72
# Test 28, using temporary directory /var/volatile/tmp/g_file_replace_XUVY72
# Test 29, using temporary directory /var/volatile/tmp/g_file_replace_BA0Y72
# Test 30, using temporary directory /var/volatile/tmp/g_file_replace_G90Y72
# Test 31, using temporary directory /var/volatile/tmp/g_file_replace_ETYY72
# Test 32, using temporary directory /var/volatile/tmp/g_file_replace_KYZY72
# Test 33, using temporary directory /var/volatile/tmp/g_file_replace_LF4Y72
# Test 34, using temporary directory /var/volatile/tmp/g_file_replace_331Y72
# Test 35, using temporary directory /var/volatile/tmp/g_file_replace_8X2Y72
# Test 36, using temporary directory /var/volatile/tmp/g_file_replace_CC7Y72
# Test 37, using temporary directory /var/volatile/tmp/g_file_replace_OG5Y72
# Test 38, using temporary directory /var/volatile/tmp/g_file_replace_2U9Y72
# Test 39, using temporary directory /var/volatile/tmp/g_file_replace_SZAZ72
# Test 40, using temporary directory /var/volatile/tmp/g_file_replace_208Y72
# Test 41, using temporary directory /var/volatile/tmp/g_file_replace_HTR072
# Test 42, using temporary directory /var/volatile/tmp/g_file_replace_SPP072
# Test 43, using temporary directory /var/volatile/tmp/g_file_replace_5SQ072
# Test 44, using temporary directory /var/volatile/tmp/g_file_replace_UBV072
# Test 45, using temporary directory /var/volatile/tmp/g_file_replace_JVS072
# Test 46, using temporary directory /var/volatile/tmp/g_file_replace_XVT072
# Test 47, using temporary directory /var/volatile/tmp/g_file_replace_NVX072
# Test 48, using temporary directory /var/volatile/tmp/g_file_replace_4SY072
# We do not have CAP_DAC_OVERRIDE or equivalent
ok 42 /file/replace/read-write
# End of replace tests
# Start of copy tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/copy/progress/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/copy/progress/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/copy/progress/.dirs/system-config1:/var/volatile/tmp/file/copy/progress/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/copy/progress/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/copy/progress/.dirs/system-data1:/var/volatile/tmp/file/copy/progress/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/copy/progress/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/copy/progress/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/copy/progress/.dirs/runtime
ok 43 /file/copy/progress
# End of copy tests
# Start of writev tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/system-config1:/var/volatile/tmp/file/writev/no-bytes-written/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/system-data1:/var/volatile/tmp/file/writev/no-bytes-written/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/no-bytes-written/.dirs/runtime
ok 44 /file/writev/no-bytes-written
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/no-vectors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/no-vectors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/no-vectors/.dirs/system-config1:/var/volatile/tmp/file/writev/no-vectors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/no-vectors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/no-vectors/.dirs/system-data1:/var/volatile/tmp/file/writev/no-vectors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/no-vectors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/no-vectors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/no-vectors/.dirs/runtime
ok 45 /file/writev/no-vectors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/empty-vectors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/empty-vectors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/empty-vectors/.dirs/system-config1:/var/volatile/tmp/file/writev/empty-vectors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/empty-vectors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/empty-vectors/.dirs/system-data1:/var/volatile/tmp/file/writev/empty-vectors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/empty-vectors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/empty-vectors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/empty-vectors/.dirs/runtime
ok 46 /file/writev/empty-vectors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/system-config1:/var/volatile/tmp/file/writev/too-big-vectors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/system-data1:/var/volatile/tmp/file/writev/too-big-vectors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/too-big-vectors/.dirs/runtime
ok 47 /file/writev/too-big-vectors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/async/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/async/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/async/.dirs/system-config1:/var/volatile/tmp/file/writev/async/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/async/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/async/.dirs/system-data1:/var/volatile/tmp/file/writev/async/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/async/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/async/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/async/.dirs/runtime
ok 48 /file/writev/async
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/async_all/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/async_all/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/async_all/.dirs/system-config1:/var/volatile/tmp/file/writev/async_all/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/async_all/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/async_all/.dirs/system-data1:/var/volatile/tmp/file/writev/async_all/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/async_all/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/async_all/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/async_all/.dirs/runtime
ok 49 /file/writev/async_all
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/system-config1:/var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/system-data1:/var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/async_all-empty-vectors/.dirs/runtime
ok 50 /file/writev/async_all-empty-vectors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/system-config1:/var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/system-data1:/var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/async_all-no-vectors/.dirs/runtime
ok 51 /file/writev/async_all-no-vectors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/system-config1:/var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/system-data1:/var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/async_all-to-big-vectors/.dirs/runtime
ok 52 /file/writev/async_all-to-big-vectors
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/system-config1:/var/volatile/tmp/file/writev/async_all-cancellation/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/system-data1:/var/volatile/tmp/file/writev/async_all-cancellation/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/writev/async_all-cancellation/.dirs/runtime
ok 53 /file/writev/async_all-cancellation
# End of writev tests
# Start of from-uri tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/system-config1:/var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/system-data1:/var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/from-uri/ignores-query-string/.dirs/runtime
ok 54 /file/from-uri/ignores-query-string
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/system-config1:/var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/system-data1:/var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/file/from-uri/ignores-fragment/.dirs/runtime
ok 55 /file/from-uri/ignores-fragment
# End of from-uri tests
# End of file tests
PASS: glib/file.test
Running test: glib/dir.test
TAP version 14
# random seed: R02Sd293da5ebdd39ce94d0fac82c081ce64
1..3
# Start of dir tests
ok 1 /dir/read
ok 2 /dir/nonexisting
# /dir/refcounting summary: Test refcounting interactions with g_dir_close()
ok 3 /dir/refcounting
# End of dir tests
PASS: glib/dir.test
Running test: glib/gi-inspect-typelib.py.test
TAP version 13
ok 1 __main__.TestGIInspectTypelibCommandLine.test_help
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp5s3962xa
# Running: ['/usr/bin/gi-inspect-typelib', '--help']
# Return code: 0
# Output:
#  Usage:
#   gi-inspect-typelib [OPTION…] NAMESPACE - Inspect GI typelib
# 
# Help Options:
#   -h, --help                    Show help options
# 
# Application Options:
#   --typelib-version=VERSION     Typelib version to inspect
#   --print-shlibs                List the shared libraries the typelib requires
#   --print-typelibs              List other typelibs the inspected typelib requires
# Error:
ok 2 __main__.TestGIInspectTypelibCommandLine.test_invalid_typelib
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp7y0exp41
# Running: ['/usr/bin/gi-inspect-typelib', '--print-typelibs', '--print-shlibs', 'AnInvalidNameSpace']
# Return code: 1
# Output:
#  
# Error:
#  Failed to load typelib: Typelib file for namespace 'AnInvalidNameSpace' (any version) not found
ok 3 __main__.TestGIInspectTypelibCommandLine.test_no_args
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp25ejnmty
# Running: ['/usr/bin/gi-inspect-typelib']
# Return code: 1
# Output:
#  
# Error:
#  Please specify exactly one namespace
ok 4 __main__.TestGIInspectTypelibForGLibTypelib.test_print_shlibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmpmt45m6zu
# Running: ['/usr/bin/gi-inspect-typelib', '--print-shlibs', 'GLib', '--typelib-version=2.0']
# Return code: 0
# Output:
#  shlib: libgobject-2.0.so.0
# shlib: libglib-2.0.so.0
# Error:
ok 5 __main__.TestGIInspectTypelibForGLibTypelib.test_print_typelibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmpwzjvhddm
# Running: ['/usr/bin/gi-inspect-typelib', '--print-typelibs', 'GLib', '--typelib-version=2.0']
# Return code: 0
# Output:
#  
# Error:
ok 6 __main__.TestGIInspectTypelibForGLibTypelib.test_print_typelibs_and_shlibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmpcy059wt4
# Running: ['/usr/bin/gi-inspect-typelib', '--print-typelibs', '--print-shlibs', 'GLib', '--typelib-version=2.0']
# Return code: 0
# Output:
#  shlib: libgobject-2.0.so.0
# shlib: libglib-2.0.so.0
# Error:
ok 7 __main__.TestGIInspectTypelibForGObjectTypelib.test_print_shlibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmpz6gjwwax
# Running: ['/usr/bin/gi-inspect-typelib', '--print-shlibs', 'GObject', '--typelib-version=2.0']
# Return code: 0
# Output:
#  shlib: libgobject-2.0.so.0
# Error:
ok 8 __main__.TestGIInspectTypelibForGObjectTypelib.test_print_typelibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp47tnqn0_
# Running: ['/usr/bin/gi-inspect-typelib', '--print-typelibs', 'GObject', '--typelib-version=2.0']
# Return code: 0
# Output:
#  typelib: GLib-2.0
# Error:
ok 9 __main__.TestGIInspectTypelibForGObjectTypelib.test_print_typelibs_and_shlibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp6n6zioho
# Running: ['/usr/bin/gi-inspect-typelib', '--print-typelibs', '--print-shlibs', 'GObject', '--typelib-version=2.0']
# Return code: 0
# Output:
#  shlib: libgobject-2.0.so.0
# typelib: GLib-2.0
# Error:
ok 10 __main__.TestGIInspectTypelibForGioTypelib.test_print_shlibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp3676nxku
# Running: ['/usr/bin/gi-inspect-typelib', '--print-shlibs', 'Gio', '--typelib-version=2.0']
# Return code: 0
# Output:
#  shlib: libgio-2.0.so.0
# Error:
ok 11 __main__.TestGIInspectTypelibForGioTypelib.test_print_typelibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp6cbwehf4
# Running: ['/usr/bin/gi-inspect-typelib', '--print-typelibs', 'Gio', '--typelib-version=2.0']
# Return code: 0
# Output:
#  typelib: GObject-2.0
# typelib: GLib-2.0
# typelib: GModule-2.0
# Error:
ok 12 __main__.TestGIInspectTypelibForGioTypelib.test_print_typelibs_and_shlibs
# gi-inspect-typelib: /usr/bin/gi-inspect-typelib
# tmpdir: /tmp/tmp7e9xovww
# Running: ['/usr/bin/gi-inspect-typelib', '--print-typelibs', '--print-shlibs', 'Gio', '--typelib-version=2.0']
# Return code: 0
# Output:
#  shlib: libgio-2.0.so.0
# typelib: GObject-2.0
# typelib: GLib-2.0
# typelib: GModule-2.0
# Error:
1..12
PASS: glib/gi-inspect-typelib.py.test
Running test: glib/properties-refcount3.test
TAP version 14
# random seed: R02S081991b554a4d06e4f73f25b0b888feb
1..1
# Start of gobject tests
# Start of refcount tests
Executing: glib/properties-refcount3.test
Executing: glib/properties-refcount3.test
Executing: glib/properties-refcount3.test
Executing: glib/properties-refcount3.test
Executing: glib/properties-refcount3.test
Executing: glib/properties-refcount3.test
# 
# stopping
# 
# stopped
# 
# 4024637 148190
# 
ok 1 /gobject/refcount/properties-3
# slow test /gobject/refcount/properties-3 executed in 30.00 secs
# End of refcount tests
# End of gobject tests
PASS: glib/properties-refcount3.test
Running test: glib/socket-listener.test
TAP version 14
# random seed: R02S0991a23565df2d91a3844109f2687714
1..1
# Start of socket-listener tests
ok 1 /socket-listener/event-signal
# End of socket-listener tests
PASS: glib/socket-listener.test
Running test: glib/override.test
TAP version 14
# random seed: R02Se78d9425ab59c061706fb57b6c02e3ca
1..1
# Start of gobject tests
# *** emitting foo on a TestA instance
#     Expecting: TestA::foo,TestI::foo
#     Got: TestA::foo,TestI::foo
# *** emitting bar on a TestA instance
#     Expecting: TestA::bar
#     Got: TestA::bar
# *** emitting baz on a TestA instance
#     Expecting: TestA::baz
#     Got: TestA::baz
# *** emitting foo on a TestB instance
#     Expecting: TestB::foo,TestA::foo,TestI::foo
#     Got: TestB::foo,TestA::foo,TestI::foo
# *** emitting bar on a TestB instance
#     Expecting: TestB::bar,TestA::bar
#     Got: TestB::bar,TestA::bar
# *** emitting baz on a TestB instance
#     Expecting: TestB::baz,TestA::baz
#     Got: TestB::baz,TestA::baz
# *** emitting foo on a TestC instance
#     Expecting: TestC::foo,TestB::foo,TestA::foo,TestI::foo
#     Got: TestC::foo,TestB::foo,TestA::foo,TestI::foo
# *** emitting bar on a TestC instance
#     Expecting: TestC::bar,TestB::bar,TestA::bar
#     Got: TestC::bar,TestB::bar,TestA::bar
# *** emitting baz on a TestC instance
#     Expecting: TestC::baz,TestB::baz,TestA::baz
#     Got: TestC::baz,TestB::baz,TestA::baz
ok 1 /gobject/override
# End of gobject tests
PASS: glib/override.test
Running test: glib/base64.test
TAP version 14
# random seed: R02Sa85d567655c2b7c83bf239881a2d5792
1..28
# Start of base64 tests
ok 1 /base64/encode
ok 2 /base64/decode
ok 3 /base64/decode-inplace
ok 4 /base64/encode-decode
# Start of full tests
ok 5 /base64/full/1
ok 6 /base64/full/2
ok 7 /base64/full/3
ok 8 /base64/full/4
# End of full tests
# Start of encode tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1698
ok 9 /base64/encode/empty
# Start of incremental tests
# Start of small-block tests
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=780066
ok 10 /base64/encode/incremental/small-block/1
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=780066
ok 11 /base64/encode/incremental/small-block/2
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=780066
ok 12 /base64/encode/incremental/small-block/3
# Bug Reference: https://bugzilla.gnome.org/show_bug.cgi?id=780066
ok 13 /base64/encode/incremental/small-block/4
# End of small-block tests
# End of incremental tests
# End of encode tests
# Start of incremental tests
# Start of nobreak tests
ok 14 /base64/incremental/nobreak/1
ok 15 /base64/incremental/nobreak/2
ok 16 /base64/incremental/nobreak/3
ok 17 /base64/incremental/nobreak/4-a
ok 18 /base64/incremental/nobreak/4-b
ok 19 /base64/incremental/nobreak/4-c
# End of nobreak tests
# Start of break tests
ok 20 /base64/incremental/break/1
ok 21 /base64/incremental/break/2
ok 22 /base64/incremental/break/3
# End of break tests
# Start of smallblock tests
ok 23 /base64/incremental/smallblock/1
ok 24 /base64/incremental/smallblock/2
ok 25 /base64/incremental/smallblock/3
ok 26 /base64/incremental/smallblock/4
# End of smallblock tests
# End of incremental tests
# Start of decode tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/issues/1698
ok 27 /base64/decode/empty
# End of decode tests
# Start of encode-decode tests
# Vector 0: 
# Vector 1: f
# Vector 2: fo
# Vector 3: foo
# Vector 4: foob
# Vector 5: fooba
# Vector 6: foobar
ok 28 /base64/encode-decode/rfc4648
# End of encode-decode tests
# End of base64 tests
PASS: glib/base64.test
Running test: glib/cxx.test
TAP version 14
# random seed: R02Sdc7cdad32907509780784ab6bb10b5f1
1..2
# Start of gtask tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 1 /gtask/name
# Start of name tests
# GLib-GIO-DEBUG: GTask some other name (source object: (nil), source tag: (nil)) finalized without ever returning (using g_task_return_*()). This potentially indicates a bug in the program.
ok 2 /gtask/name/macro-wrapper
# End of name tests
# End of gtask tests
PASS: glib/cxx.test
Running test: glib/properties-refcount2.test
TAP version 14
# random seed: R02S8ead45ddeb5cdfe253f368d7f636dc69
1..1
# Start of gobject tests
# Start of refcount tests
# init 0x55556078e450
# 
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/properties-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/properties-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
Executing: glib/properties-refcount2.test
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# .
# dispose 0x55556078e450!
# 
ok 1 /gobject/refcount/properties-2
# slow test /gobject/refcount/properties-2 executed in 13.74 secs
# End of refcount tests
# End of gobject tests
PASS: glib/properties-refcount2.test
Running test: glib/references.test
TAP version 14
# random seed: R02S54a3128a961274674f850181af6fba16
1..1
# Start of gobject tests
ok 1 /gobject/references
# End of gobject tests
PASS: glib/references.test
Running test: glib/signals-refcount1.test
TAP version 14
# random seed: R02Sb800f8a3344e542096b1e13129ca2cce
1..1
# Start of gobject tests
# Start of refcount tests
# init 0x5555574493f0
# 
# init 0x555557442600
# 
Executing: glib/signals-refcount1.test
# dispose 0x5555574493f0!
# 
# dispose 0x555557442600!
# 
ok 1 /gobject/refcount/signals
# slow test /gobject/refcount/signals executed in 5.00 secs
# End of refcount tests
# End of gobject tests
PASS: glib/signals-refcount1.test
Running test: glib/dynamictype.test
TAP version 14
# random seed: R02S5cc3033696930e81eaf8f470f3e6afb7
1..2
# Start of gobject tests
ok 1 /gobject/dynamic-type
# Start of dynamic-type tests
# Bug Reference: https://gitlab.gnome.org/GNOME/glib/-/issues/623
ok 2 /gobject/dynamic-type/query
# End of dynamic-type tests
# End of gobject tests
PASS: glib/dynamictype.test
Running test: glib/dump.test
TAP version 14
# random seed: R02Sd79559a2df319b0cddbd4969448cae98
1..4
# Start of dump tests
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/dump/empty-file/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/dump/empty-file/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/dump/empty-file/.dirs/system-config1:/var/volatile/tmp/dump/empty-file/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/dump/empty-file/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/dump/empty-file/.dirs/system-data1:/var/volatile/tmp/dump/empty-file/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/dump/empty-file/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/dump/empty-file/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/dump/empty-file/.dirs/runtime
ok 1 /dump/empty-file
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/dump/missing-get-type/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/dump/missing-get-type/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/dump/missing-get-type/.dirs/system-config1:/var/volatile/tmp/dump/missing-get-type/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/dump/missing-get-type/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/dump/missing-get-type/.dirs/system-data1:/var/volatile/tmp/dump/missing-get-type/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/dump/missing-get-type/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/dump/missing-get-type/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/dump/missing-get-type/.dirs/runtime
Invalid GType function: 'does_not_exist_get_type'
ok 2 /dump/missing-get-type
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/dump/missing-quark/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/dump/missing-quark/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/dump/missing-quark/.dirs/system-config1:/var/volatile/tmp/dump/missing-quark/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/dump/missing-quark/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/dump/missing-quark/.dirs/system-data1:/var/volatile/tmp/dump/missing-quark/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/dump/missing-quark/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/dump/missing-quark/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/dump/missing-quark/.dirs/runtime
Invalid error quark function: 'does_not_exist_error'
ok 3 /dump/missing-quark
# GLib-DEBUG: g_set_user_dirs: Setting HOME to /var/volatile/tmp/dump/basic/.dirs/home
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CACHE_HOME to /var/volatile/tmp/dump/basic/.dirs/cache
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_DIRS to /var/volatile/tmp/dump/basic/.dirs/system-config1:/var/volatile/tmp/dump/basic/.dirs/system-config2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_CONFIG_HOME to /var/volatile/tmp/dump/basic/.dirs/config
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_DIRS to /var/volatile/tmp/dump/basic/.dirs/system-data1:/var/volatile/tmp/dump/basic/.dirs/system-data2
# GLib-DEBUG: g_set_user_dirs: Setting XDG_DATA_HOME to /var/volatile/tmp/dump/basic/.dirs/data
# GLib-DEBUG: g_set_user_dirs: Setting XDG_STATE_HOME to /var/volatile/tmp/dump/basic/.dirs/state
# GLib-DEBUG: g_set_user_dirs: Setting XDG_RUNTIME_DIR to /var/volatile/tmp/dump/basic/.dirs/runtime
ok 4 /dump/basic
# End of dump tests
PASS: glib/dump.test
SUMMARY: total=291; passed=289; skipped=1; failed=1; user=901.8s; system=390.9s; maxrss=453148
FAIL: glib/gvariant.test (Child process killed by signal 9)

ERROR: Exit status is 2
DURATION: 1117
