]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
girwriter: Write instance-parameter elements
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 18 Jan 2021 14:38:51 +0000 (15:38 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 18 Jan 2021 14:38:51 +0000 (15:38 +0100)
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1128

codegen/valagirwriter.vala
tests/girwriter/GirTest-1.0.gir-expected

index 14f0819a0fd29ea6ae6d850c8f105b6878816339..0ad27ed24a0d4132fbf54dcfa06587fa9daf8a03 100644 (file)
@@ -1069,16 +1069,16 @@ public class Vala.GIRWriter : CodeVisitor {
        private void write_implicit_params (DataType? type, ref int index, bool has_array_length, string? name, ParameterDirection direction) {
                if (type is ArrayType && has_array_length) {
                        for (var i = 0; i < ((ArrayType) type).rank; i++) {
-                               write_param_or_return (((ArrayType) type).length_type, true, ref index, has_array_length, "%s_length%i".printf (name, i + 1), null, direction);
+                               write_param_or_return (((ArrayType) type).length_type, "parameter", ref index, has_array_length, "%s_length%i".printf (name, i + 1), null, direction);
                        }
                } else if (type is DelegateType) {
                        var deleg_type = (DelegateType) type;
                        if (deleg_type.delegate_symbol.has_target) {
                                var data_type = new PointerType (new VoidType ());
-                               write_param_or_return (data_type, true, ref index, false, "%s_target".printf (name), null, direction);
+                               write_param_or_return (data_type, "parameter", ref index, false, "%s_target".printf (name), null, direction);
                                if (deleg_type.is_disposable ()) {
                                        var notify_type = new DelegateType (context.root.scope.lookup ("GLib").scope.lookup ("DestroyNotify") as Delegate);
-                                       write_param_or_return (notify_type, true, ref index, false, "%s_target_destroy_notify".printf (name), null, direction);
+                                       write_param_or_return (notify_type, "parameter", ref index, false, "%s_target_destroy_notify".printf (name), null, direction);
                                }
                        }
                }
@@ -1135,17 +1135,13 @@ public class Vala.GIRWriter : CodeVisitor {
                buffer.append_printf ("</%s>\n", tag_type);
        }
 
-       private void write_params_and_return (List<Parameter> params, List<TypeParameter>? type_params, DataType? return_type, bool return_array_length, string? return_comment = null, bool constructor = false, DataType? instance_type = null, bool user_data = false) {
+       private void write_params_and_return (List<Parameter> params, List<TypeParameter>? type_params, DataType? return_type, bool return_array_length, string? return_comment = null, bool constructor = false, Parameter? instance_param = null, bool user_data = false) {
                int last_index = 0;
                bool ret_is_struct = return_type != null && return_type.is_real_non_null_struct_type ();
 
-               if (params.size != 0 || instance_type != null || (return_type is ArrayType && return_array_length) || (return_type is DelegateType) || ret_is_struct) {
+               if (params.size != 0 || (return_type is ArrayType && return_array_length) || (return_type is DelegateType) || ret_is_struct) {
                        int index = 0;
 
-                       if (instance_type != null) {
-                               index++;
-                       }
-
                        foreach (Parameter param in params) {
                                index++;
 
@@ -1165,19 +1161,25 @@ public class Vala.GIRWriter : CodeVisitor {
                }
 
                if (return_type != null && !ret_is_struct) {
-                       write_param_or_return (return_type, false, ref last_index, return_array_length, null, return_comment, ParameterDirection.IN, constructor);
+                       write_param_or_return (return_type, "return-value", ref last_index, return_array_length, null, return_comment, ParameterDirection.IN, constructor);
                } else if (ret_is_struct) {
-                       write_param_or_return (new VoidType (), false, ref last_index, false, null, return_comment, ParameterDirection.IN);
+                       write_param_or_return (new VoidType (), "return-value", ref last_index, false, null, return_comment, ParameterDirection.IN);
                }
 
-               if (params.size != 0 || (type_params != null && type_params.size > 0) || instance_type != null || (return_type is ArrayType && return_array_length) || (return_type is DelegateType) || ret_is_struct) {
+               if (params.size != 0 || (type_params != null && type_params.size > 0) || instance_param != null || (return_type is ArrayType && return_array_length) || (return_type is DelegateType) || ret_is_struct) {
                        write_indent ();
                        buffer.append_printf ("<parameters>\n");
                        indent++;
                        int index = 0;
 
-                       if (instance_type != null) {
-                               write_param_or_return (instance_type, true, ref index, false, "self");
+                       if (instance_param != null) {
+                               var type = instance_param.variable_type.copy ();
+                               unowned Struct? st = type.type_symbol as Struct;
+                               if (st != null && !st.is_simple_type ()) {
+                                       type.nullable = true;
+                               }
+                               int skip = 0;
+                               write_param_or_return (type, "instance-parameter", ref skip, false, "self");
                        }
 
                        if (type_params != null) {
@@ -1188,14 +1190,14 @@ public class Vala.GIRWriter : CodeVisitor {
                        }
 
                        foreach (Parameter param in params) {
-                               write_param_or_return (param.variable_type, true, ref index, get_ccode_array_length (param), param.name, get_parameter_comment (param), param.direction, false, false, param.ellipsis || param.params_array);
+                               write_param_or_return (param.variable_type, "parameter", ref index, get_ccode_array_length (param), param.name, get_parameter_comment (param), param.direction, false, false, param.ellipsis || param.params_array);
 
                                write_implicit_params (param.variable_type, ref index, get_ccode_array_length (param), param.name, param.direction);
                        }
 
                        if (ret_is_struct) {
                                // struct returns are converted to parameters
-                               write_param_or_return (return_type, true, ref index, false, "result", return_comment, ParameterDirection.OUT, constructor, true);
+                               write_param_or_return (return_type, "parameter", ref index, false, "result", return_comment, ParameterDirection.OUT, constructor, true);
                        } else {
                                write_implicit_params (return_type, ref index, return_array_length, "result", ParameterDirection.OUT);
                        }
@@ -1363,12 +1365,7 @@ public class Vala.GIRWriter : CodeVisitor {
                        write_doc (get_method_comment (m));
                }
 
-               DataType instance_type = null;
-               if (instance) {
-                       instance_type = SemanticAnalyzer.get_data_type_for_symbol (m.parent_symbol);
-               }
-
-               write_params_and_return (params, m.get_type_parameters (), return_type, get_ccode_array_length (m), return_comment, false, instance_type);
+               write_params_and_return (params, m.get_type_parameters (), return_type, get_ccode_array_length (m), return_comment, false, m.this_parameter);
 
                indent--;
                write_indent ();
@@ -1513,9 +1510,8 @@ public class Vala.GIRWriter : CodeVisitor {
        }
 
 
-       private void write_param_or_return (DataType? type, bool is_parameter, ref int index, bool has_array_length, string? name = null, string? comment = null, ParameterDirection direction = ParameterDirection.IN, bool constructor = false, bool caller_allocates = false, bool ellipsis = false) {
+       private void write_param_or_return (DataType? type, string tag, ref int index, bool has_array_length, string? name = null, string? comment = null, ParameterDirection direction = ParameterDirection.IN, bool constructor = false, bool caller_allocates = false, bool ellipsis = false) {
                write_indent ();
-               string tag = is_parameter ? "parameter" : "return-value";
                buffer.append_printf ("<%s", tag);
                if (ellipsis) {
                        name = "...";
@@ -1555,7 +1551,7 @@ public class Vala.GIRWriter : CodeVisitor {
                }
 
                if (delegate_type != null && delegate_type.delegate_symbol.has_target) {
-                       int closure_index = is_parameter ?
+                       int closure_index = tag == "parameter" ?
                                index + 1 : (type.value_owned ? index - 1 : index);
                        buffer.append_printf (" closure=\"%i\"", closure_index);
                        if (delegate_type.is_called_once) {
@@ -1580,7 +1576,7 @@ public class Vala.GIRWriter : CodeVisitor {
                } else if (type != null) {
                        int length_param_index = -1;
                        if (has_array_length) {
-                               length_param_index = is_parameter ? index + 1 : index;
+                               length_param_index = tag == "parameter" ? index + 1 : index;
                        }
                        write_type (type, length_param_index, direction);
                }
index 06105bbaf0dbdf23fa2bf34eb071984823a8e3e7..75a6c51d063ecea9a269fc603b7296134e000b8a 100644 (file)
                        <return-value transfer-ownership="none">
                                <type name="utf8" c:type="const gchar*"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.TypeTest" c:type="GirTestTypeTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <method name="set_some_property" c:identifier="gir_test_typetest_set_some_property">
                        <return-value transfer-ownership="none">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.TypeTest" c:type="GirTestTypeTest*"/>
+                               </instance-parameter>
                                <parameter name="value" transfer-ownership="none">
                                        <type name="utf8" c:type="const gchar*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" direction="out" transfer-ownership="full">
                                        <type name="gint8" c:type="gint8*"/>
                                </parameter>
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <method name="method_varargs" c:identifier="gir_test_object_test_method_varargs" introspectable="0">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="array" transfer-ownership="none">
                                        <array length="1" c:type="gint*">
                                                <type name="gint" c:type="gint"/>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="array" direction="inout" transfer-ownership="full">
                                        <array length="1" c:type="gint**">
                                                <type name="gint" c:type="gint"/>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="array" direction="out" transfer-ownership="full">
                                        <array length="1" c:type="gint**">
                                                <type name="gint" c:type="gint"/>
                                </array>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="result_length1" direction="out" transfer-ownership="none">
                                        <type name="gint" c:type="gint*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param1" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                </array>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param1" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="array" direction="out" transfer-ownership="full">
                                        <array length="1" c:type="gchar***">
                                                <type name="utf8" c:type="gchar*"/>
                                </array>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="result_length1" direction="out" transfer-ownership="none">
                                        <type name="gint" c:type="gint*"/>
                                </parameter>
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <method name="delegate_return" c:identifier="gir_test_object_test_delegate_return">
                        <return-value transfer-ownership="none" closure="0" scope="notified" destroy="1">
                                <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="result_target" direction="out" transfer-ownership="none" allow-none="1">
                                        <type name="gpointer" c:type="void**"/>
                                </parameter>
                                <type name="GirTest.DelegateTest" c:type="GirTestDelegateTest"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="i1" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                </array>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="i1" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="GLib.EqualFunc" c:type="GEqualFunc"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                        </parameters>
                </method>
                <method name="container_return" c:identifier="gir_test_object_test_container_return">
                                </array>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="result_length1" direction="out" transfer-ownership="none">
                                        <type name="gint" c:type="gint*"/>
                                </parameter>
                                        <type name="utf8" c:type="const gchar*"/>
                                </array>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <method name="coroutine_async" c:identifier="gir_test_object_test_coroutine_async">
                        <return-value transfer-ownership="none">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async">
                                        <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async">
                                        <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async">
                                        <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="i1" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="i1" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <method name="method_throw" c:identifier="gir_test_object_test_method_throw" throws="1">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <virtual-method name="method_throw" invoker="method_throw" throws="1">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </virtual-method>
                <method name="method_with_default" c:identifier="gir_test_object_test_method_with_default">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="i" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <property name="some-property" writable="1" construct="1">
                        <type name="utf8" c:type="gchar*"/>
                        <return-value transfer-ownership="none">
                                <type name="utf8" c:type="const gchar*"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <method name="set_some_property" c:identifier="gir_test_object_test_set_some_property">
                        <return-value transfer-ownership="none">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="value" transfer-ownership="none">
                                        <type name="utf8" c:type="const gchar*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="value" transfer-ownership="none">
                                        <type name="utf8" c:type="const gchar*"/>
                                </parameter>
                        <return-value transfer-ownership="none">
                                <type name="utf8" c:type="const gchar*"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <method name="set_skipped_property" c:identifier="gir_test_object_test_set_skipped_property" introspectable="0">
                        <return-value transfer-ownership="none">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="value" transfer-ownership="none">
                                        <type name="utf8" c:type="const gchar*"/>
                                </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint8" c:type="gint8"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint8" c:type="gint8"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
-                                       </parameter>
-                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
+                                       </instance-parameter>
+                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async">
                                                <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                        </parameter>
                                        <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="_res_" transfer-ownership="none">
                                                <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="i1" transfer-ownership="none">
                                                <type name="gint" c:type="gint"/>
                                        </parameter>
-                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async">
+                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
                                                <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                        </parameter>
                                        <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="_res_" transfer-ownership="none">
                                                <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                </parameters>
                        </callback>
                </field>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
+                                       <instance-parameter name="self" transfer-ownership="none">
+                                               <type name="GirTest.ObjectTest" c:type="GirTestObjectTest*"/>
+                                       </instance-parameter>
                                        <parameter name="i1" transfer-ownership="none">
                                                <type name="gint" c:type="gint"/>
                                        </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" direction="inout" transfer-ownership="full">
                                        <type name="gint8" c:type="gint8*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" direction="inout" transfer-ownership="full">
                                        <type name="gint8" c:type="gint8*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" direction="out" transfer-ownership="full">
                                        <type name="gint8" c:type="gint8*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" direction="out" transfer-ownership="full">
                                        <type name="gint8" c:type="gint8*"/>
                                </parameter>
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <virtual-method name="method_throw" invoker="method_throw" throws="1">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </virtual-method>
                <method name="method_valist" c:identifier="gir_test_abstract_object_test_method_valist" introspectable="0">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint8" c:type="gint8"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" direction="inout" transfer-ownership="full">
                                                <type name="gint8" c:type="gint8*"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" direction="out" transfer-ownership="full">
                                                <type name="gint8" c:type="gint8*"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                </parameters>
                        </callback>
                </field>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint" c:type="gint"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint" c:type="gint"/>
                                        </parameter>
-                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async">
+                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
                                                <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                        </parameter>
                                        <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="_res_" transfer-ownership="none">
                                                <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.AbstractObjectTest" c:type="GirTestAbstractObjectTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint8" c:type="gint8"/>
                                        </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.GenericsTest" c:type="GirTestGenericsTest*">
+                                               <type name="gpointer" c:type="gpointer"/>
+                                               <type name="gpointer" c:type="gpointer"/>
+                                       </type>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none" allow-none="1">
                                        <type name="gpointer" c:type="gpointer"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.GenericsObjectTest" c:type="GirTestGenericsObjectTest*">
+                                               <type name="gpointer" c:type="gpointer"/>
+                                               <type name="gpointer" c:type="gpointer"/>
+                                       </type>
+                               </instance-parameter>
                                <parameter name="k_type" transfer-ownership="none">
                                        <type name="GType" c:type="GType"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint8" c:type="gint8"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async">
                                        <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async">
                                        <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="param" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="_res_" transfer-ownership="none">
                                        <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                </parameter>
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <virtual-method name="internal_method" invoker="internal_method">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </virtual-method>
                <property name="property" writable="1" construct="1">
                        <type name="gint" c:type="gint"/>
                        <return-value transfer-ownership="none">
                                <type name="gint" c:type="gint"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
                <virtual-method name="get_property" invoker="get_property">
                        <return-value transfer-ownership="none">
                                <type name="gint" c:type="gint"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
+                       </parameters>
                </virtual-method>
                <method name="set_property" c:identifier="gir_test_interface_test_set_property">
                        <return-value transfer-ownership="none">
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="value" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                <type name="none" c:type="void"/>
                        </return-value>
                        <parameters>
+                               <instance-parameter name="self" transfer-ownership="none">
+                                       <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
+                               </instance-parameter>
                                <parameter name="value" transfer-ownership="none">
                                        <type name="gint" c:type="gint"/>
                                </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint8" c:type="gint8"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
-                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
+                                       </instance-parameter>
+                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="1" scope="async">
                                                <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                        </parameter>
                                        <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="_res_" transfer-ownership="none">
                                                <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint" c:type="gint"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="param" transfer-ownership="none">
                                                <type name="gint" c:type="gint"/>
                                        </parameter>
-                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="3" scope="async">
+                                       <parameter name="_callback_" transfer-ownership="none" allow-none="1" closure="2" scope="async">
                                                <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
                                        </parameter>
                                        <parameter name="_callback__target" transfer-ownership="none" allow-none="1">
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="_res_" transfer-ownership="none">
                                                <type name="Gio.AsyncResult" c:type="GAsyncResult*"/>
                                        </parameter>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                </parameters>
                        </callback>
                </field>
                                        <type name="gint" c:type="gint"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                </parameters>
                        </callback>
                </field>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="value" transfer-ownership="none">
                                                <type name="gint" c:type="gint"/>
                                        </parameter>
                                        <type name="utf8" c:type="const gchar*"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                </parameters>
                        </callback>
                </field>
                                        <type name="none" c:type="void"/>
                                </return-value>
                                <parameters>
-                                       <parameter name="self" transfer-ownership="none">
+                                       <instance-parameter name="self" transfer-ownership="none">
                                                <type name="GirTest.InterfaceTest" c:type="GirTestInterfaceTest*"/>
-                                       </parameter>
+                                       </instance-parameter>
                                        <parameter name="value" transfer-ownership="none">
                                                <type name="utf8" c:type="const gchar*"/>
                                        </parameter>
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none" allow-none="1">
+                                       <type name="GirTest.BoxedStruct" c:type="GirTestBoxedStruct*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
        </record>
        <record name="Struct" c:type="GirTestStruct" c:symbol-prefix="struct">
                        <return-value transfer-ownership="full">
                                <type name="none" c:type="void"/>
                        </return-value>
+                       <parameters>
+                               <instance-parameter name="self" transfer-ownership="none" allow-none="1">
+                                       <type name="GirTest.Struct" c:type="GirTestStruct*"/>
+                               </instance-parameter>
+                       </parameters>
                </method>
        </record>
        <record name="SkippedStruct" c:type="GirTestSkippedStruct" c:symbol-prefix="skipped_struct" glib:type-name="GirTestSkippedStruct" glib:get-type="gir_test_skipped_struct_get_type" introspectable="0">