--- GLib-2.0-master.gir	2015-09-02 15:19:32.900920519 +0100
+++ GLib-2.0-nullability.gir	2015-09-02 15:22:52.733216294 +0100
@@ -634,7 +634,11 @@
             <doc xml:space="preserve">comparison function</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">data to pass to @compare_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -755,7 +759,7 @@
       <method name="pop" c:identifier="g_async_queue_pop" introspectable="0">
         <doc xml:space="preserve">Pops data from the @queue. If @queue is empty, this function
 blocks until data becomes available.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -773,7 +777,7 @@
 blocks until data becomes available.
 
 This function must be called while holding the @queue's lock.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -794,7 +798,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">@data to push into the @queue</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -815,7 +822,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="item" transfer-ownership="none">
+          <parameter name="item"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -837,7 +847,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="item" transfer-ownership="none">
+          <parameter name="item"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -864,7 +877,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the @data to push into the @queue</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -872,7 +888,11 @@
             <doc xml:space="preserve">the #GCompareDataFunc is used to sort @queue</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @func.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -905,7 +925,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the @data to push into the @queue</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -913,7 +936,11 @@
             <doc xml:space="preserve">the #GCompareDataFunc is used to sort @queue</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @func.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -931,7 +958,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">@data to push into the @queue</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -980,7 +1010,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="item" transfer-ownership="none">
+          <parameter name="item"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -1000,7 +1033,10 @@
             <doc xml:space="preserve">a #GAsyncQueue</doc>
             <type name="AsyncQueue" c:type="GAsyncQueue*"/>
           </instance-parameter>
-          <parameter name="item" transfer-ownership="none">
+          <parameter name="item"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -1043,7 +1079,11 @@
             <doc xml:space="preserve">the #GCompareDataFunc is used to sort @queue</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data passed to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -1074,7 +1114,11 @@
             <doc xml:space="preserve">the #GCompareDataFunc is used to sort @queue</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data passed to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -1092,7 +1136,7 @@
 To easily calculate @end_time, a combination of g_get_current_time()
 and g_time_val_add() can be used.</doc>
         <doc-deprecated xml:space="preserve">use g_async_queue_timeout_pop().</doc-deprecated>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue or %NULL, when no data is
     received before @end_time.</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -1122,7 +1166,7 @@
 
 This function must be called while holding the @queue's lock.</doc>
         <doc-deprecated xml:space="preserve">use g_async_queue_timeout_pop_unlocked().</doc-deprecated>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue or %NULL, when no data is
     received before @end_time.</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -1145,7 +1189,7 @@
 @timeout microseconds, or until data becomes available.
 
 If no data is received before the timeout, %NULL is returned.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue or %NULL, when no data is
     received before the timeout.</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -1170,7 +1214,7 @@
 If no data is received before the timeout, %NULL is returned.
 
 This function must be called while holding the @queue's lock.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue or %NULL, when no data is
     received before the timeout.</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -1191,7 +1235,7 @@
               introspectable="0">
         <doc xml:space="preserve">Tries to pop data from the @queue. If no data is available,
 %NULL is returned.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue or %NULL, when no data is
     available immediately.</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -1210,7 +1254,7 @@
 %NULL is returned.
 
 This function must be called while holding the @queue's lock.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">data from the queue or %NULL, when no data is
     available immediately.</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -2841,7 +2885,11 @@
             <doc xml:space="preserve">comparison function</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">data to pass to @compare_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -3020,7 +3068,10 @@
             <doc xml:space="preserve">the function to call to release the data</doc>
             <type name="DestroyNotify" c:type="GDestroyNotify"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data to pass to @free_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -3219,8 +3270,8 @@
 g_bytes_new_take() or g_byte_array_free_to_bytes(). In all other cases the
 data is copied.</doc>
         <return-value transfer-ownership="full">
-          <doc xml:space="preserve">a pointer to the same byte data, which should
-         be freed with g_free()</doc>
+          <doc xml:space="preserve">a pointer to the same byte data,
+         which should be freed with g_free()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
         <parameters>
@@ -3462,7 +3513,11 @@
     in a platform-specific manner</doc>
           <type name="gint" c:type="gint"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data passed to g_child_watch_add()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -3479,15 +3534,25 @@
         <type name="gint" c:type="gint"/>
       </return-value>
       <parameters>
-        <parameter name="a" transfer-ownership="none">
+        <parameter name="a"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a value</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
-        <parameter name="b" transfer-ownership="none">
+        <parameter name="b"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a value to compare with</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -3504,11 +3569,17 @@
         <type name="gint" c:type="gint"/>
       </return-value>
       <parameters>
-        <parameter name="a" transfer-ownership="none">
+        <parameter name="a"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a value</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
-        <parameter name="b" transfer-ownership="none">
+        <parameter name="b"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a value to compare with</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -3810,7 +3881,10 @@
           <doc xml:space="preserve">A pointer to the data which should be copied</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">Additional data</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -3863,11 +3937,18 @@
           <doc xml:space="preserve">the #GQuark id to identifying the data element.</doc>
           <type name="Quark" c:type="GQuark"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the data element.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data passed to g_dataset_foreach().</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -6031,7 +6112,10 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the data element.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -6179,16 +6263,23 @@
 What this means depends on the context, it could just be
 incrementing the reference count, if @data is a ref-counted
 object.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">a duplicate of data</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the data to duplicate</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="1">
           <doc xml:space="preserve">user data that was specified in g_datalist_id_dup_data()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -6207,11 +6298,17 @@
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="a" transfer-ownership="none">
+        <parameter name="a"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a value</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
-        <parameter name="b" transfer-ownership="none">
+        <parameter name="b"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a value to compare with</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -6360,7 +6457,7 @@
                               transfer-ownership="none"
                               nullable="1"
                               allow-none="1">
-            <doc xml:space="preserve">a #GError or %NULL</doc>
+            <doc xml:space="preserve">a #GError</doc>
             <type name="Error" c:type="const GError*"/>
           </instance-parameter>
           <parameter name="domain" transfer-ownership="none">
@@ -6621,7 +6718,10 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a data pointer</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -6634,11 +6734,18 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the element's data</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="1">
           <doc xml:space="preserve">user data passed to g_list_foreach() or g_slist_foreach()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -6853,15 +6960,25 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="value" transfer-ownership="none">
+        <parameter name="value"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the value corresponding to the key</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data passed to g_hash_table_foreach()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -6888,15 +7005,25 @@
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="value" transfer-ownership="none">
+        <parameter name="value"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the value associated with the key</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data passed to g_hash_table_remove()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -6938,7 +7065,10 @@
         <type name="guint" c:type="guint"/>
       </return-value>
       <parameters>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -6972,7 +7102,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">a key to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -6994,7 +7127,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">a key to check</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -7037,7 +7173,7 @@
 to use additional or different data structures for reverse lookups
 (keep in mind that an O(n) find/foreach operation issued for all n
 values in a hash table ends up needing O(n*n) operations).</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">The value of the first key/value pair is returned,
     for which @predicate evaluates to %TRUE. If no pair with the
     requested property is found, %NULL is returned.</doc>
@@ -7055,7 +7191,11 @@
             <doc xml:space="preserve">function to test the key/value pairs for a certain property</doc>
             <type name="HRFunc" c:type="GHRFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -7088,7 +7228,11 @@
             <doc xml:space="preserve">the function to call for each key/value pair</doc>
             <type name="HFunc" c:type="GHFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -7121,7 +7265,11 @@
             <doc xml:space="preserve">the function to call for each key/value pair</doc>
             <type name="HRFunc" c:type="GHRFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -7153,7 +7301,11 @@
             <doc xml:space="preserve">the function to call for each key/value pair</doc>
             <type name="HRFunc" c:type="GHRFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -7283,11 +7435,17 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">a key to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the value to associate with the key</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -7300,7 +7458,7 @@
 distinguish between a key that is not present and one which is present
 and has the value %NULL. If you need this distinction, use
 g_hash_table_lookup_extended().</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the associated value, or %NULL if the key is not found</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -7312,7 +7470,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to look up</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -7340,7 +7501,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="lookup_key" transfer-ownership="none">
+          <parameter name="lookup_key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to look up</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -7348,14 +7512,18 @@
                      transfer-ownership="none"
                      nullable="1"
                      allow-none="1">
-            <doc xml:space="preserve">return location for the original key, or %NULL</doc>
+            <doc xml:space="preserve">return location for the original key</doc>
             <type name="gpointer" c:type="gpointer*"/>
           </parameter>
           <parameter name="value"
-                     transfer-ownership="none"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
                      nullable="1"
+                     optional="1"
                      allow-none="1">
-            <doc xml:space="preserve">return location for the value associated with the key, or %NULL</doc>
+            <doc xml:space="preserve">return location for the value associated
+with the key</doc>
             <type name="gpointer" c:type="gpointer*"/>
           </parameter>
         </parameters>
@@ -7490,7 +7658,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -7538,11 +7709,17 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">a key to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the value to associate with the key</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -7579,7 +7756,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -7709,17 +7889,23 @@
             <type name="HashTableIter" c:type="GHashTableIter*"/>
           </instance-parameter>
           <parameter name="key"
-                     transfer-ownership="none"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
                      nullable="1"
+                     optional="1"
                      allow-none="1">
-            <doc xml:space="preserve">a location to store the key, or %NULL</doc>
+            <doc xml:space="preserve">a location to store the key</doc>
             <type name="gpointer" c:type="gpointer*"/>
           </parameter>
           <parameter name="value"
-                     transfer-ownership="none"
+                     direction="out"
+                     caller-allocates="0"
+                     transfer-ownership="full"
                      nullable="1"
+                     optional="1"
                      allow-none="1">
-            <doc xml:space="preserve">a location to store the value, or %NULL</doc>
+            <doc xml:space="preserve">a location to store the value</doc>
             <type name="gpointer" c:type="gpointer*"/>
           </parameter>
         </parameters>
@@ -7772,7 +7958,10 @@
             <doc xml:space="preserve">an initialized #GHashTableIter</doc>
             <type name="HashTableIter" c:type="GHashTableIter*"/>
           </instance-parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the value to replace with</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -8095,7 +8284,11 @@
     %TRUE when the #GHook has been found</doc>
             <type name="HookFindFunc" c:type="GHookFindFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="3">
             <doc xml:space="preserve">the data to pass to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -8120,7 +8313,10 @@
     should be skipped</doc>
             <type name="gboolean" c:type="gboolean"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -8145,7 +8341,10 @@
     should be skipped</doc>
             <type name="gboolean" c:type="gboolean"/>
           </parameter>
-          <parameter name="func" transfer-ownership="none">
+          <parameter name="func"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the function to find</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -8174,7 +8373,10 @@
             <doc xml:space="preserve">the function to find</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -8248,7 +8450,10 @@
             <doc xml:space="preserve">a #GHookList</doc>
             <type name="HookList" c:type="GHookList*"/>
           </parameter>
-          <parameter name="sibling" transfer-ownership="none">
+          <parameter name="sibling"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the #GHook to insert the new #GHook before</doc>
             <type name="Hook" c:type="GHook*"/>
           </parameter>
@@ -8368,7 +8573,10 @@
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the data field of the #GHook is passed to the hook function here</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -8385,7 +8593,10 @@
           <doc xml:space="preserve">a #GHook</doc>
           <type name="Hook" c:type="GHook*"/>
         </parameter>
-        <parameter name="marshal_data" transfer-ownership="none">
+        <parameter name="marshal_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -8437,7 +8648,10 @@
           <doc xml:space="preserve">a #GHook</doc>
           <type name="Hook" c:type="GHook*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data passed to g_hook_find_func()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -8463,7 +8677,10 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the data field of the #GHook is passed to the hook function here</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -8591,7 +8808,11 @@
             <doc xml:space="preserve">the function to call for each #GHook</doc>
             <type name="HookMarshaller" c:type="GHookMarshaller"/>
           </parameter>
-          <parameter name="marshal_data" transfer-ownership="none">
+          <parameter name="marshal_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">data to pass to @marshaller</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -8620,7 +8841,11 @@
             <doc xml:space="preserve">the function to call for each #GHook</doc>
             <type name="HookCheckMarshaller" c:type="GHookCheckMarshaller"/>
           </parameter>
-          <parameter name="marshal_data" transfer-ownership="none">
+          <parameter name="marshal_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">data to pass to @marshaller</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -8637,7 +8862,10 @@
           <doc xml:space="preserve">a #GHook</doc>
           <type name="Hook" c:type="GHook*"/>
         </parameter>
-        <parameter name="marshal_data" transfer-ownership="none">
+        <parameter name="marshal_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -9782,7 +10010,10 @@
           <doc xml:space="preserve">the condition which has been satisfied</doc>
           <type name="IOCondition" c:type="GIOCondition"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data set in g_io_add_watch() or g_io_add_watch_full()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -11753,7 +11984,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -11855,7 +12089,11 @@
             <doc xml:space="preserve">a copy function used to copy every element in the list</doc>
             <type name="CopyFunc" c:type="GCopyFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to the copy function @func, or %NULL</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -11903,7 +12141,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the element data to find</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -11931,7 +12172,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">user data passed to the function</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -11978,7 +12222,11 @@
             <doc xml:space="preserve">the function to call with each element's data</doc>
             <type name="Func" c:type="GFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12057,7 +12305,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -12078,7 +12329,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12114,7 +12368,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12144,7 +12401,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12181,7 +12441,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12191,7 +12454,11 @@
     second parameter in the sort order.</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="3">
             <doc xml:space="preserve">user data to pass to comparison function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12269,7 +12536,7 @@
 This iterates over the list until it reaches the @n-th position. If you
 intend to iterate over every element, it is better to use a for-loop as
 described in the #GList introduction.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the element's data, or %NULL if the position
     is off the end of the #GList</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -12368,7 +12635,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12391,7 +12661,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data of the element to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -12417,7 +12690,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -12527,7 +12803,11 @@
             <doc xml:space="preserve">comparison function</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to comparison function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12559,7 +12839,11 @@
           <doc xml:space="preserve">the message to process</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="3">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">user data, set in g_log_set_handler()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -12830,7 +13114,10 @@
             <doc xml:space="preserve">the @source_funcs passed to g_source_new().</doc>
             <type name="SourceFuncs" c:type="GSourceFuncs*"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the user data from the callback.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12882,7 +13169,10 @@
             <doc xml:space="preserve">a #GMainContext</doc>
             <type name="MainContext" c:type="GMainContext*"/>
           </instance-parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the user_data for the callback.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12943,7 +13233,11 @@
             <doc xml:space="preserve">function to call</doc>
             <type name="SourceFunc" c:type="GSourceFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">data to pass to @function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -12984,7 +13278,11 @@
             <doc xml:space="preserve">function to call</doc>
             <type name="SourceFunc" c:type="GSourceFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">data to pass to @function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -13789,7 +14087,10 @@
             <doc xml:space="preserve">one or more #GMarkupParseFlags</doc>
             <type name="MarkupParseFlags" c:type="GMarkupParseFlags"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">user data to pass to #GMarkupParser functions</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -13922,7 +14223,7 @@
 This will either be the user_data that was provided to
 g_markup_parse_context_new() or to the most recent call
 of g_markup_parse_context_push().</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the provided user_data. The returned data belongs to
     the markup context and will be freed when
     g_markup_parse_context_free() is called.</doc>
@@ -13984,7 +14285,7 @@
 interested in invoking subparsers. Instead, it is intended to
 be used by the subparsers themselves to implement a higher-level
 interface.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the user data passed to g_markup_parse_context_push()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -14124,7 +14425,10 @@
             <doc xml:space="preserve">a #GMarkupParser</doc>
             <type name="MarkupParser" c:type="const GMarkupParser*"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">user data to pass to #GMarkupParser functions</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -14221,7 +14525,11 @@
             <parameter name="attribute_values" transfer-ownership="none">
               <type name="utf8" c:type="const gchar**"/>
             </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="4">
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       closure="4">
               <type name="gpointer" c:type="gpointer"/>
             </parameter>
           </parameters>
@@ -14239,7 +14547,11 @@
             <parameter name="element_name" transfer-ownership="none">
               <type name="utf8" c:type="const gchar*"/>
             </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="2">
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       closure="2">
               <type name="gpointer" c:type="gpointer"/>
             </parameter>
           </parameters>
@@ -14260,7 +14572,11 @@
             <parameter name="text_len" transfer-ownership="none">
               <type name="gsize" c:type="gsize"/>
             </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="3">
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       closure="3">
               <type name="gpointer" c:type="gpointer"/>
             </parameter>
           </parameters>
@@ -14281,7 +14597,11 @@
             <parameter name="text_len" transfer-ownership="none">
               <type name="gsize" c:type="gsize"/>
             </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="3">
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       closure="3">
               <type name="gpointer" c:type="gpointer"/>
             </parameter>
           </parameters>
@@ -14299,7 +14619,11 @@
             <parameter name="error" transfer-ownership="none">
               <type name="Error" c:type="GError*"/>
             </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="2">
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       closure="2">
               <type name="gpointer" c:type="gpointer"/>
             </parameter>
           </parameters>
@@ -15018,7 +15342,10 @@
             <doc xml:space="preserve">a #GNode</doc>
             <type name="Node" c:type="GNode*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -15065,7 +15392,11 @@
             <doc xml:space="preserve">the function to call for each visited node</doc>
             <type name="NodeForeachFunc" c:type="GNodeForeachFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -15104,7 +15435,11 @@
   or %NULL to use the original data.</doc>
             <type name="CopyFunc" c:type="GCopyFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">data to pass to @copy_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -15160,7 +15495,10 @@
     %G_TRAVERSE_ALL, %G_TRAVERSE_LEAVES and %G_TRAVERSE_NON_LEAVES</doc>
             <type name="TraverseFlags" c:type="GTraverseFlags"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -15184,7 +15522,10 @@
     %G_TRAVERSE_ALL, %G_TRAVERSE_LEAVES and %G_TRAVERSE_NON_LEAVES</doc>
             <type name="TraverseFlags" c:type="GTraverseFlags"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -15475,7 +15816,11 @@
             <doc xml:space="preserve">the function to call for each visited #GNode</doc>
             <type name="NodeTraverseFunc" c:type="GNodeTraverseFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="4">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -15501,7 +15846,10 @@
           <type name="Node" c:type="GNode*"/>
         </return-value>
         <parameters>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data of the new node</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -15520,7 +15868,10 @@
           <doc xml:space="preserve">a #GNode.</doc>
           <type name="Node" c:type="GNode*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data passed to g_node_children_foreach().</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -15540,7 +15891,10 @@
           <doc xml:space="preserve">a #GNode.</doc>
           <type name="Node" c:type="GNode*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data passed to g_node_traverse().</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -15618,7 +15972,7 @@
         <type name="gpointer" c:type="volatile gpointer"/>
       </field>
       <method name="impl" c:identifier="g_once_impl" introspectable="0">
-        <return-value>
+        <return-value nullable="1">
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
         <parameters>
@@ -15628,7 +15982,10 @@
           <parameter name="func" transfer-ownership="none">
             <type name="ThreadFunc" c:type="GThreadFunc"/>
           </parameter>
-          <parameter name="arg" transfer-ownership="none">
+          <parameter name="arg"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
         </parameters>
@@ -15665,7 +16022,8 @@
         </return-value>
         <parameters>
           <parameter name="location" transfer-ownership="none">
-            <doc xml:space="preserve">location of a static initializable variable containing 0</doc>
+            <doc xml:space="preserve">location of a static initializable variable
+   containing 0</doc>
             <type name="gpointer" c:type="void*"/>
           </parameter>
         </parameters>
@@ -15683,7 +16041,8 @@
         </return-value>
         <parameters>
           <parameter name="location" transfer-ownership="none">
-            <doc xml:space="preserve">location of a static initializable variable containing 0</doc>
+            <doc xml:space="preserve">location of a static initializable variable
+   containing 0</doc>
             <type name="gpointer" c:type="void*"/>
           </parameter>
           <parameter name="result" transfer-ownership="none">
@@ -15772,7 +16131,10 @@
           <doc xml:space="preserve">The value to be parsed.</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">User data added to the #GOptionGroup containing the option when it
  was created with g_option_group_new()</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -16270,7 +16632,8 @@
           <parameter name="data"
                      transfer-ownership="none"
                      nullable="1"
-                     allow-none="1">
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data to pass to @func, or %NULL</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -16439,7 +16802,10 @@
           <doc xml:space="preserve">The group to which the function belongs</doc>
           <type name="OptionGroup" c:type="GOptionGroup*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">User data added to the #GOptionGroup containing the option when it
  was created with g_option_group_new()</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -16681,7 +17047,8 @@
           <parameter name="data"
                      transfer-ownership="none"
                      nullable="1"
-                     allow-none="1">
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data to pass to @func, or %NULL</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -16745,7 +17112,10 @@
           <doc xml:space="preserve">The group to which the function belongs</doc>
           <type name="OptionGroup" c:type="GOptionGroup*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">User data added to the #GOptionGroup containing the option when it
  was created with g_option_group_new()</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -16959,7 +17329,7 @@
 If the value has not yet been set in this thread, %NULL is returned.
 Values are never copied between threads (when a new thread is
 created, for example).</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the thread-local value</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -16985,7 +17355,10 @@
             <doc xml:space="preserve">a #GPrivate</doc>
             <type name="Private" c:type="GPrivate*"/>
           </instance-parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the new value</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17005,7 +17378,10 @@
             <doc xml:space="preserve">a #GPrivate</doc>
             <type name="Private" c:type="GPrivate*"/>
           </instance-parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the new value</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17040,7 +17416,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </array>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the pointer to add</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17065,7 +17444,11 @@
             <doc xml:space="preserve">the function to call for each array element</doc>
             <type name="Func" c:type="GFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17082,7 +17465,7 @@
 If array contents point to dynamically-allocated memory, they should
 be freed separately if @free_seg is %TRUE and no #GDestroyNotify
 function has been set for @array.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the pointer array if @free_seg is %FALSE, otherwise %NULL.
     The pointer array should be freed using g_free().</doc>
           <type name="gpointer" c:type="gpointer*"/>
@@ -17120,7 +17503,10 @@
             <doc xml:space="preserve">the index to place the new element at, or -1 to append</doc>
             <type name="gint" c:type="gint"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the pointer to add.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17237,7 +17623,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </array>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the pointer to remove</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17265,7 +17654,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </array>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the pointer to remove</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17278,7 +17670,7 @@
 The following elements are moved down one place. If @array has
 a non-%NULL #GDestroyNotify function it is called for the removed
 element.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the pointer which was removed</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -17303,7 +17695,7 @@
 this function does not preserve the order of the array. But it
 is faster than g_ptr_array_remove_index(). If @array has a non-%NULL
 #GDestroyNotify function it is called for the removed element.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the pointer which was removed</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -17474,7 +17866,11 @@
             <doc xml:space="preserve">comparison function</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">data to pass to @compare_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17590,7 +17986,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data to find</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -17616,7 +18015,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">user data passed to @func</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -17645,7 +18047,11 @@
             <doc xml:space="preserve">the function to call for each element's data</doc>
             <type name="Func" c:type="GFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data to pass to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17712,7 +18118,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -17759,7 +18168,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17791,7 +18203,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17810,7 +18225,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17822,7 +18240,11 @@
     element comes before the first.</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -17868,7 +18290,7 @@
               c:identifier="g_queue_peek_head"
               introspectable="0">
         <doc xml:space="preserve">Returns the first element of the queue.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the data of the first element in the queue, or %NULL
     if the queue is empty</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -17903,7 +18325,7 @@
               version="2.4"
               introspectable="0">
         <doc xml:space="preserve">Returns the @n'th element of @queue.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the data for the @n'th element of @queue,
     or %NULL if @n is off the end of @queue</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -17946,7 +18368,7 @@
               c:identifier="g_queue_peek_tail"
               introspectable="0">
         <doc xml:space="preserve">Returns the last element of the queue.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the data of the last element in the queue, or %NULL
     if the queue is empty</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -17980,7 +18402,7 @@
               c:identifier="g_queue_pop_head"
               introspectable="0">
         <doc xml:space="preserve">Removes the first element of the queue and returns its data.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the data of the first element in the queue, or %NULL
     if the queue is empty</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -18015,7 +18437,7 @@
               version="2.4"
               introspectable="0">
         <doc xml:space="preserve">Removes the @n'th element of @queue and returns its data.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the element's data, or %NULL if @n is off the end of @queue</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -18056,7 +18478,7 @@
               c:identifier="g_queue_pop_tail"
               introspectable="0">
         <doc xml:space="preserve">Removes the last element of the queue and returns its data.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the data of the last element in the queue, or %NULL
     if the queue is empty</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -18096,7 +18518,10 @@
             <doc xml:space="preserve">a #GQueue.</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -18132,7 +18557,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -18181,7 +18609,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -18218,7 +18649,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -18237,7 +18671,10 @@
             <doc xml:space="preserve">a #GQueue</doc>
             <type name="Queue" c:type="GQueue*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -18275,7 +18712,11 @@
     a positive value if the second comes before the first.</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data passed to @compare_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -19531,7 +19972,11 @@
             <doc xml:space="preserve">a function to call for each match</doc>
             <type name="RegexEvalCallback" c:type="GRegexEvalCallback"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="5">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20351,7 +20796,11 @@
           <doc xml:space="preserve">a #GString containing the new string</doc>
           <type name="String" c:type="GString*"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data passed to g_regex_replace_eval()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -20561,7 +21010,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20653,7 +21105,11 @@
             <doc xml:space="preserve">a copy function used to copy every element in the list</doc>
             <type name="CopyFunc" c:type="GCopyFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to the copy function @func, or #NULL</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20709,7 +21165,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the element data to find</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -20737,7 +21196,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">user data passed to the function</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -20766,7 +21228,11 @@
             <doc xml:space="preserve">the function to call with each element's data</doc>
             <type name="Func" c:type="GFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20843,7 +21309,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to find</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -20864,7 +21333,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20900,7 +21372,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data to put in the newly-inserted node</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20924,7 +21399,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20955,7 +21433,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -20965,7 +21446,11 @@
     comes after the second parameter in the sort order.</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="3">
             <doc xml:space="preserve">data to pass to comparison function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -21036,7 +21521,7 @@
                 c:identifier="g_slist_nth_data"
                 introspectable="0">
         <doc xml:space="preserve">Gets the data of the element at the given position.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the element's data, or %NULL if the position
     is off the end of the #GSList</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -21106,7 +21591,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new element</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -21129,7 +21617,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data of the element to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -21155,7 +21646,10 @@
               <type name="gpointer" c:type="gpointer"/>
             </type>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -21260,7 +21754,11 @@
             <doc xml:space="preserve">comparison function</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">data to pass to comparison function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -21574,7 +22072,7 @@
         <doc xml:space="preserve">Looks up a symbol in the current scope and return its value.
 If the symbol is not bound in the current scope, %NULL is
 returned.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the value of @symbol in the current scope, or %NULL
     if @symbol is not bound in the current scope</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -21632,7 +22130,10 @@
             <doc xml:space="preserve">the symbol to add</doc>
             <type name="utf8" c:type="const gchar*"/>
           </parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the value of the symbol</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -21661,7 +22162,11 @@
             <doc xml:space="preserve">the function to call for each symbol/value pair</doc>
             <type name="HFunc" c:type="GHFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -21672,7 +22177,7 @@
               introspectable="0">
         <doc xml:space="preserve">Looks up a symbol in a scope and return its value. If the
 symbol is not bound in the scope, %NULL is returned.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the value of @symbol in the given scope, or %NULL
     if @symbol is not bound in the given scope.</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -22029,7 +22534,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new item</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22053,7 +22561,11 @@
             <doc xml:space="preserve">the function to call for each item in @seq</doc>
             <type name="Func" c:type="GFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data passed to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22162,7 +22674,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22170,7 +22685,11 @@
             <doc xml:space="preserve">the function used to compare items in the sequence</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @cmp_func.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22202,7 +22721,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data for the new item</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22211,7 +22733,11 @@
             <type name="SequenceIterCompareFunc"
                   c:type="GSequenceIterCompareFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @cmp_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22248,7 +22774,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data to lookup</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22256,7 +22785,11 @@
             <doc xml:space="preserve">the function used to compare items in the sequence</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @cmp_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22290,7 +22823,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data to lookup</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22299,7 +22835,11 @@
             <type name="SequenceIterCompareFunc"
                   c:type="GSequenceIterCompareFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @iter_cmp</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22319,7 +22859,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new item</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22355,7 +22898,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data for the new item</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22363,7 +22909,11 @@
             <doc xml:space="preserve">the function used to compare items in the sequence</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @cmp_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22400,7 +22950,10 @@
             <doc xml:space="preserve">a #GSequence</doc>
             <type name="Sequence" c:type="GSequence*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data for the new item</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22409,7 +22962,11 @@
             <type name="SequenceIterCompareFunc"
                   c:type="GSequenceIterCompareFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @iter_cmp</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22437,7 +22994,11 @@
             <doc xml:space="preserve">the function used to sort the sequence</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data passed to @cmp_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22467,7 +23028,11 @@
             <type name="SequenceIterCompareFunc"
                   c:type="GSequenceIterCompareFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data passed to @cmp_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22495,7 +23060,11 @@
             <doc xml:space="preserve">a #GFunc</doc>
             <type name="Func" c:type="GFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="3">
             <doc xml:space="preserve">user data passed to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22506,7 +23075,7 @@
                 version="2.14"
                 introspectable="0">
         <doc xml:space="preserve">Returns the data that @iter points to.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the data that @iter points to</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -22531,7 +23100,10 @@
             <doc xml:space="preserve">a #GSequenceIter</doc>
             <type name="SequenceIter" c:type="GSequenceIter*"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the data for the new item</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22683,7 +23255,10 @@
             <doc xml:space="preserve">a #GSequenceIter</doc>
             <type name="SequenceIter" c:type="GSequenceIter*"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">new data for the item</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22714,7 +23289,11 @@
             <doc xml:space="preserve">the function used to compare items in the sequence</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @cmp_func.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22745,7 +23324,11 @@
             <type name="SequenceIterCompareFunc"
                   c:type="GSequenceIterCompareFunc"/>
           </parameter>
-          <parameter name="cmp_data" transfer-ownership="none">
+          <parameter name="cmp_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data passed to @cmp_func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -22934,7 +23517,10 @@
           <doc xml:space="preserve">a #GSequenceIter</doc>
           <type name="SequenceIter" c:type="GSequenceIter*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -23573,7 +24159,11 @@
             <doc xml:space="preserve">a callback function</doc>
             <type name="SourceFunc" c:type="GSourceFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">the data to pass to callback function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -23603,7 +24193,10 @@
             <doc xml:space="preserve">the source</doc>
             <type name="Source" c:type="GSource*"/>
           </instance-parameter>
-          <parameter name="callback_data" transfer-ownership="none">
+          <parameter name="callback_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">pointer to callback data "object"</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -23804,7 +24397,10 @@
             <doc xml:space="preserve">The @source_funcs passed to g_source_new()</doc>
             <type name="SourceFuncs" c:type="GSourceFuncs*"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the user data for the callback</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -23820,7 +24416,10 @@
           <type name="gboolean" c:type="gboolean"/>
         </return-value>
         <parameters>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the user_data for the callback.</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -23902,7 +24501,11 @@
             <parameter name="func" transfer-ownership="none" closure="3">
               <type name="SourceFunc" c:type="GSourceFunc*"/>
             </parameter>
-            <parameter name="data" transfer-ownership="none">
+            <parameter name="data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       closure="3">
               <type name="gpointer" c:type="gpointer*"/>
             </parameter>
           </parameters>
@@ -23925,7 +24528,11 @@
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="user_data" transfer-ownership="none" closure="0">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="0">
           <doc xml:space="preserve">data passed to the function, set when the source was
     created with one of the above functions</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -23992,7 +24599,11 @@
             <parameter name="callback" transfer-ownership="none" closure="2">
               <type name="SourceFunc" c:type="GSourceFunc"/>
             </parameter>
-            <parameter name="user_data" transfer-ownership="none" closure="2">
+            <parameter name="user_data"
+                       transfer-ownership="none"
+                       nullable="1"
+                       allow-none="1"
+                       closure="2">
               <type name="gpointer" c:type="gpointer"/>
             </parameter>
           </parameters>
@@ -24054,7 +24665,11 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="user_data" transfer-ownership="none" closure="0">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="0">
           <doc xml:space="preserve">user data to pass to the function.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -25092,7 +25707,11 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="user_data" transfer-ownership="none" closure="0">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="0">
           <doc xml:space="preserve">the data provided when registering the test</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -25141,7 +25760,11 @@
           <doc xml:space="preserve">the test fixture</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="1">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="1">
           <doc xml:space="preserve">the data provided when registering the test</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -25233,7 +25856,11 @@
           <doc xml:space="preserve">the message to process</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="3">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">user data, set in g_test_log_set_fatal_handler()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -25452,7 +26079,11 @@
             <doc xml:space="preserve">a function to execute in the new thread</doc>
             <type name="ThreadFunc" c:type="GThreadFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">an argument to supply to the new thread</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -25484,7 +26115,11 @@
             <doc xml:space="preserve">a function to execute in the new thread</doc>
             <type name="ThreadFunc" c:type="GThreadFunc"/>
           </parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">an argument to supply to the new thread</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -25507,7 +26142,7 @@
 This will usually cause the #GThread struct and associated resources
 to be freed. Use g_thread_ref() to obtain an extra reference if you
 want to keep the GThread alive beyond the g_thread_join() call.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the return value of the thread</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -25571,7 +26206,10 @@
           <type name="none" c:type="void"/>
         </return-value>
         <parameters>
-          <parameter name="retval" transfer-ownership="none">
+          <parameter name="retval"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the return value of this thread</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -25616,12 +26254,15 @@
     <callback name="ThreadFunc" c:type="GThreadFunc" introspectable="0">
       <doc xml:space="preserve">Specifies the type of the @func functions passed to g_thread_new()
 or g_thread_try_new().</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the return value of the thread</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">data passed to the thread</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -25718,7 +26359,10 @@
             <doc xml:space="preserve">a #GThreadPool</doc>
             <type name="ThreadPool" c:type="GThreadPool*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">an unprocessed item in the pool</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -25748,7 +26392,10 @@
             <doc xml:space="preserve">a #GThreadPool</doc>
             <type name="ThreadPool" c:type="GThreadPool*"/>
           </instance-parameter>
-          <parameter name="data" transfer-ownership="none">
+          <parameter name="data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">a new task for @pool</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -25823,7 +26470,11 @@
     processed first.</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data passed to @func</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -25914,7 +26565,11 @@
             <doc xml:space="preserve">a function to execute in the threads of the new thread pool</doc>
             <type name="Func" c:type="GFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data that is handed over to @func every time it
     is called</doc>
             <type name="gpointer" c:type="gpointer"/>
@@ -26633,7 +27288,10 @@
           <doc xml:space="preserve">the untranslated string</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data specified when installing the function, e.g.
  in g_option_group_set_translate_func()</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -26670,7 +27328,7 @@
                 introspectable="0">
         <doc xml:space="preserve">Returns the element at the top of a #GTrashStack
 which may be %NULL.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the element at the top of the stack</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -26683,7 +27341,7 @@
       </function>
       <function name="pop" c:identifier="g_trash_stack_pop" introspectable="0">
         <doc xml:space="preserve">Pops a piece of memory off a #GTrashStack.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the element at the top of the stack</doc>
           <type name="gpointer" c:type="gpointer"/>
         </return-value>
@@ -26747,15 +27405,24 @@
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key of a #GTree node</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="value" transfer-ownership="none">
+        <parameter name="value"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the value corresponding to the key</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">user data passed to g_tree_traverse()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -26837,7 +27504,11 @@
     If this function returns %TRUE, the traversal is stopped.</doc>
             <type name="TraverseFunc" c:type="GTraverseFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -26879,11 +27550,17 @@
             <doc xml:space="preserve">a #GTree</doc>
             <type name="Tree" c:type="GTree*"/>
           </instance-parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the value corresponding to the key</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -26893,7 +27570,7 @@
         <doc xml:space="preserve">Gets the value corresponding to the given key. Since a #GTree is
 automatically balanced as key/value pairs are added, key lookup
 is O(log n) (where n is the number of key/value pairs in the tree).</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the value corresponding to the key, or %NULL
     if the key was not found</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -26903,7 +27580,10 @@
             <doc xml:space="preserve">a #GTree</doc>
             <type name="Tree" c:type="GTree*"/>
           </instance-parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to look up</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -26923,15 +27603,26 @@
             <doc xml:space="preserve">a #GTree</doc>
             <type name="Tree" c:type="GTree*"/>
           </instance-parameter>
-          <parameter name="lookup_key" transfer-ownership="none">
+          <parameter name="lookup_key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to look up</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
-          <parameter name="orig_key" transfer-ownership="none">
+          <parameter name="orig_key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     optional="1">
             <doc xml:space="preserve">returns the original key</doc>
             <type name="gpointer" c:type="gpointer*"/>
           </parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     optional="1">
             <doc xml:space="preserve">returns the value associated with the key</doc>
             <type name="gpointer" c:type="gpointer*"/>
           </parameter>
@@ -26985,7 +27676,10 @@
             <doc xml:space="preserve">a #GTree</doc>
             <type name="Tree" c:type="GTree*"/>
           </instance-parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -27009,11 +27703,17 @@
             <doc xml:space="preserve">a #GTree</doc>
             <type name="Tree" c:type="GTree*"/>
           </instance-parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to insert</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
-          <parameter name="value" transfer-ownership="none">
+          <parameter name="value"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the value corresponding to the key</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -27029,7 +27729,7 @@
 will proceed among the key/value pairs that have a smaller key; if
 @search_func returns 1, searching will proceed among the key/value
 pairs that have a larger key.</doc>
-        <return-value>
+        <return-value nullable="1">
           <doc xml:space="preserve">the value corresponding to the found key, or %NULL
     if the key was not found</doc>
           <type name="gpointer" c:type="gpointer"/>
@@ -27043,7 +27743,11 @@
             <doc xml:space="preserve">a function used to search the #GTree</doc>
             <type name="CompareFunc" c:type="GCompareFunc"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">the data passed as the second argument to @search_func</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -27064,7 +27768,10 @@
             <doc xml:space="preserve">a #GTree</doc>
             <type name="Tree" c:type="GTree*"/>
           </instance-parameter>
-          <parameter name="key" transfer-ownership="none">
+          <parameter name="key"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">the key to remove</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -27100,7 +27807,11 @@
   %G_PRE_ORDER and %G_POST_ORDER</doc>
             <type name="TraverseType" c:type="GTraverseType"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="2">
             <doc xml:space="preserve">user data to pass to the function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -27159,7 +27870,11 @@
             <doc xml:space="preserve">qsort()-style comparison function</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="key_compare_data" transfer-ownership="none">
+          <parameter name="key_compare_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">data to pass to comparison function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -27197,7 +27912,11 @@
             <doc xml:space="preserve">qsort()-style comparison function</doc>
             <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
           </parameter>
-          <parameter name="key_compare_data" transfer-ownership="none">
+          <parameter name="key_compare_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1"
+                     closure="1">
             <doc xml:space="preserve">data to pass to comparison function</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -28144,7 +28863,11 @@
           <doc xml:space="preserve">the IO conditions reported on @fd</doc>
           <type name="IOCondition" c:type="GIOCondition"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none" closure="2">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data passed to g_unix_fd_add()</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -28681,7 +29404,10 @@
             <doc xml:space="preserve">the #GVariantType of each element</doc>
             <type name="VariantType" c:type="const GVariantType*"/>
           </parameter>
-          <parameter name="elements" transfer-ownership="none">
+          <parameter name="elements"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">a pointer to the fixed array of contiguous elements</doc>
             <type name="gpointer" c:type="gconstpointer"/>
           </parameter>
@@ -28776,7 +29502,10 @@
             <doc xml:space="preserve">function to call when @data is no longer needed</doc>
             <type name="DestroyNotify" c:type="GDestroyNotify"/>
           </parameter>
-          <parameter name="user_data" transfer-ownership="none">
+          <parameter name="user_data"
+                     transfer-ownership="none"
+                     nullable="1"
+                     allow-none="1">
             <doc xml:space="preserve">data for @notify</doc>
             <type name="gpointer" c:type="gpointer"/>
           </parameter>
@@ -29798,7 +30527,7 @@
 %G_VARIANT_TYPE_VARIANT and it is always in little-endian order") or
 explicitly (by storing the type and/or endianness in addition to the
 serialised data).</doc>
-        <return-value transfer-ownership="none">
+        <return-value transfer-ownership="none" nullable="1">
           <doc xml:space="preserve">the serialised form of @value, or %NULL</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </return-value>
@@ -33113,9 +33842,14 @@
           <doc xml:space="preserve">the string to convert to a numeric value.</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="endptr" transfer-ownership="none">
-          <doc xml:space="preserve">if non-%NULL, it returns the character after
-          the last character used in the conversion.</doc>
+        <parameter name="endptr"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">if non-%NULL, it returns the
+          character after the last character used in the conversion.</doc>
           <type name="utf8" c:type="gchar**"/>
         </parameter>
       </parameters>
@@ -33149,9 +33883,14 @@
           <doc xml:space="preserve">the string to convert to a numeric value.</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="endptr" transfer-ownership="none">
-          <doc xml:space="preserve">if non-%NULL, it returns the character after
-          the last character used in the conversion.</doc>
+        <parameter name="endptr"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">if non-%NULL, it returns the
+          character after the last character used in the conversion.</doc>
           <type name="utf8" c:type="gchar**"/>
         </parameter>
         <parameter name="base" transfer-ownership="none">
@@ -33189,9 +33928,14 @@
           <doc xml:space="preserve">the string to convert to a numeric value.</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="endptr" transfer-ownership="none">
-          <doc xml:space="preserve">if non-%NULL, it returns the character after
-          the last character used in the conversion.</doc>
+        <parameter name="endptr"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">if non-%NULL, it returns the
+          character after the last character used in the conversion.</doc>
           <type name="utf8" c:type="gchar**"/>
         </parameter>
         <parameter name="base" transfer-ownership="none">
@@ -33426,12 +34170,16 @@
       </parameters>
     </function>
     <function name="assertion_message_expr"
-              c:identifier="g_assertion_message_expr">
+              c:identifier="g_assertion_message_expr"
+              introspectable="0">
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="domain" transfer-ownership="none">
+        <parameter name="domain"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <type name="utf8" c:type="const char*"/>
         </parameter>
         <parameter name="file" transfer-ownership="none">
@@ -33443,7 +34191,10 @@
         <parameter name="func" transfer-ownership="none">
           <type name="utf8" c:type="const char*"/>
         </parameter>
-        <parameter name="expr" transfer-ownership="none">
+        <parameter name="expr"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <type name="utf8" c:type="const char*"/>
         </parameter>
       </parameters>
@@ -33797,11 +34548,17 @@
           <doc xml:space="preserve">a pointer to a #gpointer-sized value</doc>
           <type name="gpointer" c:type="void*"/>
         </parameter>
-        <parameter name="oldval" transfer-ownership="none">
+        <parameter name="oldval"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the value to compare with</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="newval" transfer-ownership="none">
+        <parameter name="newval"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the value to conditionally replace with</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -33815,7 +34572,7 @@
 
 This call acts as a full compiler and hardware
 memory barrier (before the get).</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the value of the pointer</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -33866,7 +34623,10 @@
           <doc xml:space="preserve">a pointer to a #gpointer-sized value</doc>
           <type name="gpointer" c:type="void*"/>
         </parameter>
-        <parameter name="newval" transfer-ownership="none">
+        <parameter name="newval"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a new value to store</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -34640,7 +35400,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="ChildWatchFunc" c:type="GChildWatchFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -34695,7 +35459,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="ChildWatchFunc" c:type="GChildWatchFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -34772,7 +35540,8 @@
       </return-value>
       <parameters>
         <parameter name="pp" transfer-ownership="none">
-          <doc xml:space="preserve">a pointer to a variable, struct member etc. holding a pointer</doc>
+          <doc xml:space="preserve">a pointer to a variable, struct member etc. holding a
+   pointer</doc>
           <type name="gpointer" c:type="gpointer*"/>
         </parameter>
         <parameter name="destroy" transfer-ownership="none" scope="async">
@@ -35183,7 +35952,11 @@
           <doc xml:space="preserve">the function to call for each data element.</doc>
           <type name="DataForeachFunc" c:type="GDataForeachFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data to pass to the function.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -35194,7 +35967,7 @@
               introspectable="0">
       <doc xml:space="preserve">Gets a data element, using its string identifier. This is slower than
 g_datalist_id_get_data() because it compares strings.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the data element, or %NULL if it is not found.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -35242,7 +36015,7 @@
 
 This function can be useful to avoid races when multiple
 threads are using the same datalist and the same key.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the result of calling @dup_func on the value
     associated with @key_id in @datalist, or %NULL if not set.
     If @dup_func is %NULL, the value is returned unmodified.</doc>
@@ -35268,7 +36041,8 @@
         <parameter name="user_data"
                    transfer-ownership="none"
                    nullable="1"
-                   allow-none="1">
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">passed as user_data to @dup_func</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -35278,7 +36052,7 @@
               c:identifier="g_datalist_id_get_data"
               introspectable="0">
       <doc xml:space="preserve">Retrieves the data element corresponding to @key_id.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the data element, or %NULL if it is not found.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -35298,7 +36072,7 @@
               introspectable="0">
       <doc xml:space="preserve">Removes an element, without calling its destroy notification
 function.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the data previously stored at @key_id, or %NULL if none.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -35505,7 +36279,11 @@
           <doc xml:space="preserve">the function to call for each data element.</doc>
           <type name="DataForeachFunc" c:type="GDataForeachFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">user data to pass to the function.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -35515,7 +36293,7 @@
               c:identifier="g_dataset_id_get_data"
               introspectable="0">
       <doc xml:space="preserve">Gets the data element corresponding to a #GQuark.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the data element corresponding to the #GQuark, or %NULL if
          it is not found.</doc>
         <type name="gpointer" c:type="gpointer"/>
@@ -35536,7 +36314,7 @@
               introspectable="0">
       <doc xml:space="preserve">Removes an element, without calling its destroy notification
 function.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the data previously stored at @key_id, or %NULL if none.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -35569,7 +36347,10 @@
           <doc xml:space="preserve">the #GQuark id to identify the data element.</doc>
           <type name="Quark" c:type="GQuark"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the data element.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -36595,9 +37376,11 @@
                    direction="out"
                    caller-allocates="0"
                    transfer-ownership="full"
+                   nullable="1"
                    optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">Location to store hostname for the URI, or %NULL.
+          <doc xml:space="preserve">Location to store hostname for the
+           URI.
            If there is no hostname in the URI, %NULL will be
            stored in this location.</doc>
           <type name="utf8" c:type="gchar**"/>
@@ -36703,7 +37486,12 @@
                 for the @len parameter is unsafe)</doc>
           <type name="gssize" c:type="gssize"/>
         </parameter>
-        <parameter name="bytes_read" transfer-ownership="none">
+        <parameter name="bytes_read"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
           <doc xml:space="preserve">location to store the number of bytes in the
                 input string that were successfully converted, or %NULL.
                 Even if the conversion was successful, this may be
@@ -36714,9 +37502,14 @@
                 input sequence.</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
-        <parameter name="bytes_written" transfer-ownership="none">
-          <doc xml:space="preserve">the number of bytes stored in the output buffer (not
-                including the terminating nul).</doc>
+        <parameter name="bytes_written"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">the number of bytes stored in the output
+                buffer (not including the terminating nul).</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
       </parameters>
@@ -37433,7 +38226,10 @@
             <type name="gpointer" c:type="gpointer"/>
           </type>
         </parameter>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key to insert</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -37456,7 +38252,10 @@
             <type name="gpointer" c:type="gpointer"/>
           </type>
         </parameter>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key to check</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -37507,11 +38306,17 @@
             <type name="gpointer" c:type="gpointer"/>
           </type>
         </parameter>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key to insert</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="value" transfer-ownership="none">
+        <parameter name="value"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the value to associate with the key</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -37540,7 +38345,10 @@
             <type name="gpointer" c:type="gpointer"/>
           </type>
         </parameter>
-        <parameter name="lookup_key" transfer-ownership="none">
+        <parameter name="lookup_key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the key to look up</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -37548,14 +38356,18 @@
                    transfer-ownership="none"
                    nullable="1"
                    allow-none="1">
-          <doc xml:space="preserve">return location for the original key, or %NULL</doc>
+          <doc xml:space="preserve">return location for the original key</doc>
           <type name="gpointer" c:type="gpointer*"/>
         </parameter>
         <parameter name="value"
-                   transfer-ownership="none"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
                    nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">return location for the value associated with the key, or %NULL</doc>
+          <doc xml:space="preserve">return location for the value associated
+with the key</doc>
           <type name="gpointer" c:type="gpointer*"/>
         </parameter>
       </parameters>
@@ -37581,7 +38393,10 @@
             <type name="gpointer" c:type="gpointer"/>
           </type>
         </parameter>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the key to remove</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -37632,11 +38447,17 @@
             <type name="gpointer" c:type="gpointer"/>
           </type>
         </parameter>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a key to insert</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
-        <parameter name="value" transfer-ownership="none">
+        <parameter name="value"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the value to associate with the key</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -37677,7 +38498,10 @@
             <type name="gpointer" c:type="gpointer"/>
           </type>
         </parameter>
-        <parameter name="key" transfer-ownership="none">
+        <parameter name="key"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the key to remove</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -37790,7 +38614,10 @@
           <doc xml:space="preserve">a #GHookList</doc>
           <type name="HookList" c:type="GHookList*"/>
         </parameter>
-        <parameter name="sibling" transfer-ownership="none">
+        <parameter name="sibling"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the #GHook to insert the new #GHook before</doc>
           <type name="Hook" c:type="GHook*"/>
         </parameter>
@@ -37999,7 +38826,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="1">
           <doc xml:space="preserve">data to pass to @function.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38038,7 +38869,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38059,7 +38894,10 @@
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the data for the idle source's callback.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38224,7 +39062,11 @@
           <doc xml:space="preserve">the function to call when the condition is satisfied</doc>
           <type name="IOFunc" c:type="GIOFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">user data to pass to @func</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38264,7 +39106,11 @@
           <doc xml:space="preserve">the function to call when the condition is satisfied</doc>
           <type name="IOFunc" c:type="GIOFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
           <doc xml:space="preserve">user data to pass to @func</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38372,7 +39218,12 @@
                 for the @len parameter is unsafe)</doc>
           <type name="gssize" c:type="gssize"/>
         </parameter>
-        <parameter name="bytes_read" transfer-ownership="none">
+        <parameter name="bytes_read"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
           <doc xml:space="preserve">location to store the number of bytes in the
                 input string that were successfully converted, or %NULL.
                 Even if the conversion was successful, this may be
@@ -38383,9 +39234,14 @@
                 input sequence.</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
-        <parameter name="bytes_written" transfer-ownership="none">
-          <doc xml:space="preserve">the number of bytes stored in the output buffer (not
-                including the terminating nul).</doc>
+        <parameter name="bytes_written"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">the number of bytes stored in the output
+                buffer (not including the terminating nul).</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
       </parameters>
@@ -38412,7 +39268,12 @@
                 for the @len parameter is unsafe)</doc>
           <type name="gssize" c:type="gssize"/>
         </parameter>
-        <parameter name="bytes_read" transfer-ownership="none">
+        <parameter name="bytes_read"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
           <doc xml:space="preserve">location to store the number of bytes in the
                 input string that were successfully converted, or %NULL.
                 Even if the conversion was successful, this may be
@@ -38423,9 +39284,14 @@
                 input sequence.</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
-        <parameter name="bytes_written" transfer-ownership="none">
-          <doc xml:space="preserve">the number of bytes stored in the output buffer (not
-                including the terminating nul).</doc>
+        <parameter name="bytes_written"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">the number of bytes stored in the output
+                buffer (not including the terminating nul).</doc>
           <type name="gsize" c:type="gsize*"/>
         </parameter>
       </parameters>
@@ -38443,8 +39309,12 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="log_domain" transfer-ownership="none">
-          <doc xml:space="preserve">the log domain, usually #G_LOG_DOMAIN</doc>
+        <parameter name="log_domain"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve">the log domain, usually #G_LOG_DOMAIN, or %NULL
+for the default</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
         <parameter name="log_level" transfer-ownership="none">
@@ -38489,19 +39359,29 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="log_domain" transfer-ownership="none">
-          <doc xml:space="preserve">the log domain of the message</doc>
+        <parameter name="log_domain"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve">the log domain of the message, or %NULL for the
+default "" application domain</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
         <parameter name="log_level" transfer-ownership="none">
           <doc xml:space="preserve">the level of the message</doc>
           <type name="LogLevelFlags" c:type="GLogLevelFlags"/>
         </parameter>
-        <parameter name="message" transfer-ownership="none">
+        <parameter name="message"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the message</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="unused_data" transfer-ownership="none">
+        <parameter name="unused_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">data passed from g_log() which is unused</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38563,7 +39443,11 @@
           <doc xml:space="preserve">the log handler function</doc>
           <type name="LogFunc" c:type="GLogFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="1">
           <doc xml:space="preserve">data passed to the log handler</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38642,7 +39526,11 @@
           <doc xml:space="preserve">the log handler function</doc>
           <type name="LogFunc" c:type="GLogFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">data passed to the log handler</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38681,7 +39569,11 @@
           <doc xml:space="preserve">the log handler function</doc>
           <type name="LogFunc" c:type="GLogFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">data passed to the log handler</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -38704,8 +39596,12 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="log_domain" transfer-ownership="none">
-          <doc xml:space="preserve">the log domain</doc>
+        <parameter name="log_domain"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
+          <doc xml:space="preserve">the log domain, or %NULL for the default ""
+application domain</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
         <parameter name="log_level" transfer-ownership="none">
@@ -38890,7 +39786,7 @@
     <function name="malloc" c:identifier="g_malloc" introspectable="0">
       <doc xml:space="preserve">Allocates @n_bytes bytes of memory.
 If @n_bytes is 0 it returns %NULL.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">a pointer to the allocated memory</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -38904,7 +39800,7 @@
     <function name="malloc0" c:identifier="g_malloc0" introspectable="0">
       <doc xml:space="preserve">Allocates @n_bytes bytes of memory, initialized to 0's.
 If @n_bytes is 0 it returns %NULL.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">a pointer to the allocated memory</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -38921,7 +39817,7 @@
               introspectable="0">
       <doc xml:space="preserve">This function is similar to g_malloc0(), allocating (@n_blocks * @n_block_bytes) bytes,
 but care is taken to detect possible overflow during multiplication.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">a pointer to the allocated memory</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -38942,7 +39838,7 @@
               introspectable="0">
       <doc xml:space="preserve">This function is similar to g_malloc(), allocating (@n_blocks * @n_block_bytes) bytes,
 but care is taken to detect possible overflow during multiplication.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">a pointer to the allocated memory</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -39176,13 +40072,16 @@
     <function name="memdup" c:identifier="g_memdup" introspectable="0">
       <doc xml:space="preserve">Allocates @byte_size bytes of memory, and copies @byte_size bytes into it
 from @mem. If @mem is %NULL it returns %NULL.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">a pointer to the newly-allocated copy of the memory, or %NULL if @mem
  is %NULL.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
       <parameters>
-        <parameter name="mem" transfer-ownership="none">
+        <parameter name="mem"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the memory to copy.</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -39449,7 +40348,8 @@
       </return-value>
       <parameters>
         <parameter name="location" transfer-ownership="none">
-          <doc xml:space="preserve">location of a static initializable variable containing 0</doc>
+          <doc xml:space="preserve">location of a static initializable variable
+   containing 0</doc>
           <type name="gpointer" c:type="void*"/>
         </parameter>
       </parameters>
@@ -39468,7 +40368,8 @@
       </return-value>
       <parameters>
         <parameter name="location" transfer-ownership="none">
-          <doc xml:space="preserve">location of a static initializable variable containing 0</doc>
+          <doc xml:space="preserve">location of a static initializable variable
+   containing 0</doc>
           <type name="gpointer" c:type="void*"/>
         </parameter>
         <parameter name="result" transfer-ownership="none">
@@ -39815,10 +40716,13 @@
       </return-value>
       <parameters>
         <parameter name="err"
-                   transfer-ownership="none"
+                   direction="inout"
+                   caller-allocates="0"
+                   transfer-ownership="full"
                    nullable="1"
-                   allow-none="1">
-          <doc xml:space="preserve">a return location for a #GError, or %NULL</doc>
+                   allow-none="1"
+                   optional="1">
+          <doc xml:space="preserve">a return location for a #GError</doc>
           <type name="Error" c:type="GError**"/>
         </parameter>
         <parameter name="format" transfer-ownership="none">
@@ -39929,6 +40833,8 @@
       <doc xml:space="preserve">If @dest is %NULL, free @src; otherwise, moves @src into *@dest.
 The error variable @dest points to must be %NULL.
 
+@src must be non-%NULL.
+
 Note that @src is no longer valid after this call. If you want
 to keep using the same GError*, you need to set it to %NULL
 after calling this function on it.</doc>
@@ -39936,11 +40842,17 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="dest" transfer-ownership="none">
+        <parameter name="dest"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   nullable="1"
+                   optional="1"
+                   allow-none="1">
           <doc xml:space="preserve">error return location</doc>
           <type name="Error" c:type="GError**"/>
         </parameter>
-        <parameter name="src" transfer-ownership="none">
+        <parameter name="src" transfer-ownership="full">
           <doc xml:space="preserve">error to move into the return location</doc>
           <type name="Error" c:type="GError*"/>
         </parameter>
@@ -40002,7 +40914,11 @@
           <doc xml:space="preserve">function to compare elements</doc>
           <type name="CompareDataFunc" c:type="GCompareDataFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
           <doc xml:space="preserve">data to pass to @compare_func</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -40158,7 +41074,7 @@
 have been moved. @mem may be %NULL, in which case it's considered to
 have zero-length. @n_bytes may be 0, in which case %NULL will be returned
 and @mem will be freed unless it is %NULL.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the new address of the allocated memory</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -40182,7 +41098,7 @@
               introspectable="0">
       <doc xml:space="preserve">This function is similar to g_realloc(), allocating (@n_blocks * @n_block_bytes) bytes,
 but care is taken to detect possible overflow during multiplication.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the new address of the allocated memory</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -40408,18 +41324,25 @@
       </return-value>
     </function>
     <function name="return_if_fail_warning"
-              c:identifier="g_return_if_fail_warning">
+              c:identifier="g_return_if_fail_warning"
+              introspectable="0">
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="log_domain" transfer-ownership="none">
+        <parameter name="log_domain"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <type name="utf8" c:type="const char*"/>
         </parameter>
         <parameter name="pretty_function" transfer-ownership="none">
           <type name="utf8" c:type="const char*"/>
         </parameter>
-        <parameter name="expression" transfer-ownership="none">
+        <parameter name="expression"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <type name="utf8" c:type="const char*"/>
         </parameter>
       </parameters>
@@ -40551,7 +41474,10 @@
           <doc xml:space="preserve">a #GSequenceIter</doc>
           <type name="SequenceIter" c:type="GSequenceIter*"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">new data for the item</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -40609,10 +41535,12 @@
       </return-value>
       <parameters>
         <parameter name="err"
-                   transfer-ownership="none"
-                   nullable="1"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">a return location for a #GError, or %NULL</doc>
+          <doc xml:space="preserve">a return location for a #GError</doc>
           <type name="Error" c:type="GError**"/>
         </parameter>
         <parameter name="domain" transfer-ownership="none">
@@ -40646,10 +41574,12 @@
       </return-value>
       <parameters>
         <parameter name="err"
-                   transfer-ownership="none"
-                   nullable="1"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="full"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">a return location for a #GError, or %NULL</doc>
+          <doc xml:space="preserve">a return location for a #GError</doc>
           <type name="Error" c:type="GError**"/>
         </parameter>
         <parameter name="domain" transfer-ownership="none">
@@ -40794,7 +41724,7 @@
                    transfer-ownership="full"
                    optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">return location for number of args, or %NULL</doc>
+          <doc xml:space="preserve">return location for number of args</doc>
           <type name="gint" c:type="gint*"/>
         </parameter>
         <parameter name="argvp"
@@ -40804,7 +41734,7 @@
                    optional="1"
                    allow-none="1">
           <doc xml:space="preserve">return
-  location for array of args, or %NULL</doc>
+  location for array of args</doc>
           <array length="1" zero-terminated="1" c:type="gchar***">
             <type name="utf8" c:type="gchar**"/>
           </array>
@@ -40875,8 +41805,9 @@
 Note that the underlying slice allocation mechanism can
 be changed with the [`G_SLICE=always-malloc`][G_SLICE]
 environment variable.</doc>
-      <return-value>
-        <doc xml:space="preserve">a pointer to the allocated memory block</doc>
+      <return-value nullable="1">
+        <doc xml:space="preserve">a pointer to the allocated memory block, which will be %NULL if and
+   only if @mem_size is 0</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
       <parameters>
@@ -40894,8 +41825,9 @@
 the returned memory to 0. Note that the underlying slice allocation
 mechanism can be changed with the [`G_SLICE=always-malloc`][G_SLICE]
 environment variable.</doc>
-      <return-value>
-        <doc xml:space="preserve">a pointer to the allocated block</doc>
+      <return-value nullable="1">
+        <doc xml:space="preserve">a pointer to the allocated block, which will be %NULL if and only
+   if @mem_size is 0</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
       <parameters>
@@ -40910,9 +41842,12 @@
               version="2.14"
               introspectable="0">
       <doc xml:space="preserve">Allocates a block of memory from the slice allocator
-and copies @block_size bytes into it from @mem_block.</doc>
-      <return-value>
-        <doc xml:space="preserve">a pointer to the allocated memory block</doc>
+and copies @block_size bytes into it from @mem_block.
+
+@mem_block must be non-%NULL if @block_size is non-zero.</doc>
+      <return-value nullable="1">
+        <doc xml:space="preserve">a pointer to the allocated memory block, which will be %NULL if and
+   only if @mem_size is 0</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
       <parameters>
@@ -40920,7 +41855,10 @@
           <doc xml:space="preserve">the number of bytes to allocate</doc>
           <type name="gsize" c:type="gsize"/>
         </parameter>
-        <parameter name="mem_block" transfer-ownership="none">
+        <parameter name="mem_block"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the memory to copy</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -40933,7 +41871,9 @@
 g_slice_alloc0() and the @block_size has to match the size
 specified upon allocation. Note that the exact release behaviour
 can be changed with the [`G_DEBUG=gc-friendly`][G_DEBUG] environment
-variable, also see [`G_SLICE`][G_SLICE] for related debugging options.</doc>
+variable, also see [`G_SLICE`][G_SLICE] for related debugging options.
+
+If @mem_block is %NULL, this function does nothing.</doc>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -40942,7 +41882,10 @@
           <doc xml:space="preserve">the size of the block</doc>
           <type name="gsize" c:type="gsize"/>
         </parameter>
-        <parameter name="mem_block" transfer-ownership="none">
+        <parameter name="mem_block"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a pointer to the block to free</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -40959,7 +41902,9 @@
 field in each block is passed as third argument.
 Note that the exact release behaviour can be changed with the
 [`G_DEBUG=gc-friendly`][G_DEBUG] environment variable, also see
-[`G_SLICE`][G_SLICE] for related debugging options.</doc>
+[`G_SLICE`][G_SLICE] for related debugging options.
+
+If @mem_chain is %NULL, this function does nothing.</doc>
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
@@ -40968,7 +41913,10 @@
           <doc xml:space="preserve">the size of the blocks</doc>
           <type name="gsize" c:type="gsize"/>
         </parameter>
-        <parameter name="mem_chain" transfer-ownership="none">
+        <parameter name="mem_chain"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a pointer to the first block of the chain</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -41112,7 +42060,10 @@
           <doc xml:space="preserve">The @source_funcs passed to g_source_new()</doc>
           <type name="SourceFuncs" c:type="GSourceFuncs*"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the user data for the callback</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -41129,7 +42080,10 @@
         <type name="gboolean" c:type="gboolean"/>
       </return-value>
       <parameters>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the user_data for the callback.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -41244,7 +42198,11 @@
           <doc xml:space="preserve">function to run in the child just before exec()</doc>
           <type name="SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
           <doc xml:space="preserve">user data for @child_setup</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -41451,7 +42409,11 @@
           <doc xml:space="preserve">function to run in the child just before exec()</doc>
           <type name="SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
           <doc xml:space="preserve">user data for @child_setup</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -41720,7 +42682,11 @@
           <doc xml:space="preserve">function to run in the child just before exec()</doc>
           <type name="SpawnChildSetupFunc" c:type="GSpawnChildSetupFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="5">
           <doc xml:space="preserve">user data for @child_setup</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -42262,7 +43228,10 @@
         <type name="utf8" c:type="gchar*"/>
       </return-value>
       <parameters>
-        <parameter name="str" transfer-ownership="none">
+        <parameter name="str"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the string to duplicate</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
@@ -42322,14 +43291,17 @@
 the new array should be freed by first freeing each string, then
 the array itself. g_strfreev() does this for you. If called
 on a %NULL value, g_strdupv() simply returns %NULL.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">a new %NULL-terminated array of strings.</doc>
         <array c:type="gchar**">
           <type name="utf8"/>
         </array>
       </return-value>
       <parameters>
-        <parameter name="str_array" transfer-ownership="none">
+        <parameter name="str_array"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a %NULL-terminated array of strings</doc>
           <type name="utf8" c:type="gchar**"/>
         </parameter>
@@ -42374,7 +43346,10 @@
           <doc xml:space="preserve">a string to escape</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="exceptions" transfer-ownership="none">
+        <parameter name="exceptions"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a string of characters not to escape in @source</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
@@ -42389,7 +43364,10 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="str_array" transfer-ownership="none">
+        <parameter name="str_array"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a %NULL-terminated array of strings to free</doc>
           <type name="utf8" c:type="gchar**"/>
         </parameter>
@@ -42407,7 +43385,7 @@
                    nullable="1"
                    allow-none="1">
           <doc xml:space="preserve">the initial text to copy into the string, or %NULL to
-start with an empty string.</doc>
+start with an empty string</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
       </parameters>
@@ -42890,9 +43868,14 @@
           <doc xml:space="preserve">the string to convert to a numeric value.</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="endptr" transfer-ownership="none">
-          <doc xml:space="preserve">if non-%NULL, it returns the character after
-          the last character used in the conversion.</doc>
+        <parameter name="endptr"
+                   direction="out"
+                   caller-allocates="0"
+                   transfer-ownership="none"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">if non-%NULL, it returns the
+          character after the last character used in the conversion.</doc>
           <type name="utf8" c:type="gchar**"/>
         </parameter>
       </parameters>
@@ -42974,7 +43957,10 @@
           <doc xml:space="preserve">/-separated test case path name for the test.</doc>
           <type name="utf8" c:type="const char*"/>
         </parameter>
-        <parameter name="test_data" transfer-ownership="none">
+        <parameter name="test_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">Test data argument for the test function.</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -42997,7 +43983,10 @@
           <doc xml:space="preserve">/-separated test case path name for the test.</doc>
           <type name="utf8" c:type="const char*"/>
         </parameter>
-        <parameter name="test_data" transfer-ownership="none">
+        <parameter name="test_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">Test data argument for the test function.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -43054,7 +44043,10 @@
         <parameter name="data_size" transfer-ownership="none">
           <type name="gsize" c:type="gsize"/>
         </parameter>
-        <parameter name="test_data" transfer-ownership="none">
+        <parameter name="test_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
         <parameter name="data_setup" transfer-ownership="none">
@@ -43203,7 +44195,10 @@
           <doc xml:space="preserve">the size of the fixture data structure</doc>
           <type name="gsize" c:type="gsize"/>
         </parameter>
-        <parameter name="test_data" transfer-ownership="none">
+        <parameter name="test_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">test data argument for the test functions</doc>
           <type name="gpointer" c:type="gconstpointer"/>
         </parameter>
@@ -43497,7 +44492,11 @@
           <doc xml:space="preserve">the log handler function.</doc>
           <type name="TestLogFatalFunc" c:type="GTestLogFatalFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="1">
           <doc xml:space="preserve">data passed to the log handler.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -43603,7 +44602,10 @@
           <doc xml:space="preserve">Destroy callback for teardown phase.</doc>
           <type name="DestroyNotify" c:type="GDestroyNotify"/>
         </parameter>
-        <parameter name="destroy_data" transfer-ownership="none">
+        <parameter name="destroy_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">Destroy callback data.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -43619,7 +44621,10 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="gfree_pointer" transfer-ownership="none">
+        <parameter name="gfree_pointer"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the pointer to be stored.</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -44037,7 +45042,10 @@
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="retval" transfer-ownership="none">
+        <parameter name="retval"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">the return value of this thread</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -44233,7 +45241,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -44289,7 +45301,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -44340,7 +45356,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -44408,7 +45428,11 @@
           <doc xml:space="preserve">function to call</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="data" transfer-ownership="none">
+        <parameter name="data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -44506,7 +45530,7 @@
     <function name="try_malloc" c:identifier="g_try_malloc" introspectable="0">
       <doc xml:space="preserve">Attempts to allocate @n_bytes, and returns %NULL on failure.
 Contrast with g_malloc(), which aborts the program on failure.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the allocated memory, or %NULL.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -44523,7 +45547,7 @@
               introspectable="0">
       <doc xml:space="preserve">Attempts to allocate @n_bytes, initialized to 0's, and returns %NULL on
 failure. Contrast with g_malloc0(), which aborts the program on failure.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the allocated memory, or %NULL</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -44540,7 +45564,7 @@
               introspectable="0">
       <doc xml:space="preserve">This function is similar to g_try_malloc0(), allocating (@n_blocks * @n_block_bytes) bytes,
 but care is taken to detect possible overflow during multiplication.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the allocated memory, or %NULL</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -44561,7 +45585,7 @@
               introspectable="0">
       <doc xml:space="preserve">This function is similar to g_try_malloc(), allocating (@n_blocks * @n_block_bytes) bytes,
 but care is taken to detect possible overflow during multiplication.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the allocated memory, or %NULL.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -44584,7 +45608,7 @@
 on failure.
 
 If @mem is %NULL, behaves the same as g_try_malloc().</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the allocated memory, or %NULL.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -44608,7 +45632,7 @@
               introspectable="0">
       <doc xml:space="preserve">This function is similar to g_try_realloc(), allocating (@n_blocks * @n_block_bytes) bytes,
 but care is taken to detect possible overflow during multiplication.</doc>
-      <return-value>
+      <return-value nullable="1">
         <doc xml:space="preserve">the allocated memory, or %NULL.</doc>
         <type name="gpointer" c:type="gpointer"/>
       </return-value>
@@ -44650,21 +45674,25 @@
           <type name="glong" c:type="glong"/>
         </parameter>
         <parameter name="items_read"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of bytes read,
-    or %NULL. If an error occurs then the index of the invalid input
-    is stored here.</doc>
+          <doc xml:space="preserve">location to store number of
+    bytes read, or %NULL. If an error occurs then the index of the invalid
+    input is stored here.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
         <parameter name="items_written"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of #gunichar2
-    written, or %NULL. The value stored here does not include the
-    trailing 0.</doc>
+          <doc xml:space="preserve">location to store number
+    of #gunichar2  written, or %NULL. The value stored here does not include
+    the trailing 0.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
       </parameters>
@@ -44690,19 +45718,21 @@
           <type name="glong" c:type="glong"/>
         </parameter>
         <parameter name="items_read"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of characters
-    read, or %NULL.</doc>
+          <doc xml:space="preserve">location to store number of
+    characters read, or %NULL.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
         <parameter name="items_written"
-                   transfer-ownership="none"
-                   nullable="1"
-                   allow-none="1">
-          <doc xml:space="preserve">location to store number of bytes
-    written or %NULL. The value here stored does not include the
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none">
+          <doc xml:space="preserve">location to store number
+    of bytes written or %NULL. The value here stored does not include the
     trailing 0 byte.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
@@ -45230,10 +46260,15 @@
           <doc xml:space="preserve">a Unicode character code</doc>
           <type name="gunichar" c:type="gunichar"/>
         </parameter>
-        <parameter name="outbuf" transfer-ownership="none">
-          <doc xml:space="preserve">output buffer, must have at least 6 bytes of space.
-      If %NULL, the length will be computed and returned
-      and nothing will be written to @outbuf.</doc>
+        <parameter name="outbuf"
+                   direction="out"
+                   caller-allocates="1"
+                   transfer-ownership="none"
+                   optional="1"
+                   allow-none="1">
+          <doc xml:space="preserve">output buffer, must have at
+      least 6 bytes of space. If %NULL, the length will be computed and
+      returned and nothing will be written to @outbuf.</doc>
           <type name="utf8" c:type="gchar*"/>
         </parameter>
       </parameters>
@@ -45459,7 +46494,11 @@
           <doc xml:space="preserve">a #GPollFDFunc</doc>
           <type name="UnixFDSourceFunc" c:type="GUnixFDSourceFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -45499,7 +46538,11 @@
           <doc xml:space="preserve">a #GUnixFDSourceFunc</doc>
           <type name="UnixFDSourceFunc" c:type="GUnixFDSourceFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="4">
           <doc xml:space="preserve">data to pass to @function</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -45601,7 +46644,11 @@
           <doc xml:space="preserve">Callback</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="2">
           <doc xml:space="preserve">Data for @handler</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -45636,7 +46683,11 @@
           <doc xml:space="preserve">Callback</doc>
           <type name="SourceFunc" c:type="GSourceFunc"/>
         </parameter>
-        <parameter name="user_data" transfer-ownership="none">
+        <parameter name="user_data"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1"
+                   closure="3">
           <doc xml:space="preserve">Data for @handler</doc>
           <type name="gpointer" c:type="gpointer"/>
         </parameter>
@@ -45916,22 +46967,26 @@
           <type name="glong" c:type="glong"/>
         </parameter>
         <parameter name="items_read"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of words read,
-    or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
-    returned in case @str contains a trailing partial character. If
+          <doc xml:space="preserve">location to store number of
+    words read, or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will
+    be returned in case @str contains a trailing partial character. If
     an error occurs then the index of the invalid input is stored here.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
         <parameter name="items_written"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of characters
-    written, or %NULL. The value stored here does not include the trailing
-    0 character.</doc>
+          <doc xml:space="preserve">location to store number
+    of characters written, or %NULL. The value stored here does not include
+    the trailing 0 character.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
       </parameters>
@@ -45967,21 +47022,26 @@
           <type name="glong" c:type="glong"/>
         </parameter>
         <parameter name="items_read"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of words read,
-    or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
-    returned in case @str contains a trailing partial character. If
+          <doc xml:space="preserve">location to store number of
+    words read, or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will
+    be returned in case @str contains a trailing partial character. If
     an error occurs then the index of the invalid input is stored here.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
         <parameter name="items_written"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of bytes written,
-    or %NULL. The value stored here does not include the trailing 0 byte.</doc>
+          <doc xml:space="preserve">location to store number
+    of bytes written, or %NULL. The value stored here does not include the
+    trailing 0 byte.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
       </parameters>
@@ -46108,7 +47168,10 @@
           <doc xml:space="preserve">a pointer to a position within a UTF-8 encoded string</doc>
           <type name="utf8" c:type="const gchar*"/>
         </parameter>
-        <parameter name="end" transfer-ownership="none">
+        <parameter name="end"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <doc xml:space="preserve">a pointer to the byte following the end of the string,
     or %NULL to indicate that the string is nul-terminated</doc>
           <type name="utf8" c:type="const gchar*"/>
@@ -46517,10 +47580,13 @@
           <type name="glong" c:type="glong"/>
         </parameter>
         <parameter name="items_read"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of bytes read, or %NULL.
+          <doc xml:space="preserve">location to store number of
+   bytes read, or %NULL.
     If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
     returned in case @str contains a trailing partial
     character. If an error occurs then the index of the
@@ -46528,12 +47594,14 @@
           <type name="glong" c:type="glong*"/>
         </parameter>
         <parameter name="items_written"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of characters
-    written or %NULL. The value here stored does not include the
-    trailing 0 character.</doc>
+          <doc xml:space="preserve">location to store number
+    of characters written or %NULL. The value here stored does not include
+    the trailing 0 character.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
       </parameters>
@@ -46560,11 +47628,13 @@
           <type name="glong" c:type="glong"/>
         </parameter>
         <parameter name="items_written"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store the number of
-    characters in the result, or %NULL.</doc>
+          <doc xml:space="preserve">location to store the
+    number of characters in the result, or %NULL.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
       </parameters>
@@ -46589,22 +47659,26 @@
           <type name="glong" c:type="glong"/>
         </parameter>
         <parameter name="items_read"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of bytes read,
-    or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will be
-    returned in case @str contains a trailing partial character. If
+          <doc xml:space="preserve">location to store number of
+    bytes read, or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will
+    be returned in case @str contains a trailing partial character. If
     an error occurs then the index of the invalid input is stored here.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
         <parameter name="items_written"
+                   direction="out"
+                   caller-allocates="1"
                    transfer-ownership="none"
-                   nullable="1"
+                   optional="1"
                    allow-none="1">
-          <doc xml:space="preserve">location to store number of #gunichar2
-    written, or %NULL. The value stored here does not include the
-    trailing 0.</doc>
+          <doc xml:space="preserve">location to store number
+    of #gunichar2 written, or %NULL. The value stored here does not include
+    the trailing 0.</doc>
           <type name="glong" c:type="glong*"/>
         </parameter>
       </parameters>
@@ -47054,12 +48128,17 @@
         </parameter>
       </parameters>
     </function>
-    <function name="warn_message" c:identifier="g_warn_message">
+    <function name="warn_message"
+              c:identifier="g_warn_message"
+              introspectable="0">
       <return-value transfer-ownership="none">
         <type name="none" c:type="void"/>
       </return-value>
       <parameters>
-        <parameter name="domain" transfer-ownership="none">
+        <parameter name="domain"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <type name="utf8" c:type="const char*"/>
         </parameter>
         <parameter name="file" transfer-ownership="none">
@@ -47071,7 +48150,10 @@
         <parameter name="func" transfer-ownership="none">
           <type name="utf8" c:type="const char*"/>
         </parameter>
-        <parameter name="warnexpr" transfer-ownership="none">
+        <parameter name="warnexpr"
+                   transfer-ownership="none"
+                   nullable="1"
+                   allow-none="1">
           <type name="utf8" c:type="const char*"/>
         </parameter>
       </parameters>
