/* valagtypemodule.c generated by valac, the Vala compiler
 * generated from valagtypemodule.vala, do not modify */

/* valagtypemodule.vala
 *
 * Copyright (C) 2006-2010  Jürg Billeter
 * Copyright (C) 2006-2008  Raffaele Sandrini
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.

 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.

 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 * Author:
 * 	Jürg Billeter <j@bitron.ch>
 *	Raffaele Sandrini <raffaele@sandrini.ch>
 */

#include <glib.h>
#include <glib-object.h>
#include "valacodegen.h"
#include <vala.h>
#include <valaccode.h>
#include <valagee.h>
#include <stdlib.h>
#include <string.h>

#define _g_free0(var) (var = (g_free (var), NULL))
#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
#define _vala_typeregister_function_unref0(var) ((var == NULL) ? NULL : (var = (vala_typeregister_function_unref (var), NULL)))
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
#define _vala_ccode_declarator_suffix_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_declarator_suffix_unref (var), NULL)))
#define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
#define _vala_ccode_base_module_emit_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_base_module_emit_context_unref (var), NULL)))
#define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))


static gpointer vala_gtype_module_parent_class = NULL;

static ValaCCodeParameter* vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map);
static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space);
static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space);
static void vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct);
static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self, ValaClass* cl, ValaCCodeFile* decl_space);
static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl);
static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_base_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_class_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_interface_init_function (ValaGTypeModule* self, ValaClass* cl, ValaInterface* iface);
static void vala_gtype_module_add_instance_init_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_add_finalize_function (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_real_generate_class_init (ValaGTypeModule* self, ValaClass* cl);
static void vala_gtype_module_real_end_instance_init (ValaGTypeModule* self, ValaClass* cl);
static ValaCCodeExpression* vala_gtype_module_cast_method_pointer (ValaGTypeModule* self, ValaMethod* m, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type, gint direction);
static void vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self, const gchar* base_name, const gchar* return_type, ValaCCodeExpression* expression, ValaTypeParameter* p, ValaClass* cl, ValaInterface* iface);
static ValaCCodeExpression* vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self, ValaPropertyAccessor* acc, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type);
static ValaCCodeExpression* vala_gtype_module_real_get_param_spec_cexpression (ValaCCodeBaseModule* base, ValaProperty* prop);
static ValaCCodeExpression* vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base, ValaProperty* prop);
static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space);
static void vala_gtype_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface);
static void vala_gtype_module_add_interface_base_init_function (ValaGTypeModule* self, ValaInterface* iface);
static void vala_gtype_module_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st);
static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en);
static void vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr);
static void vala_gtype_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop);
static void vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name);


static ValaCCodeParameter* vala_gtype_module_real_generate_parameter (ValaCCodeMethodModule* base, ValaParameter* param, ValaCCodeFile* decl_space, ValaMap* cparam_map, ValaMap* carg_map) {
	ValaGTypeModule * self;
	ValaCCodeParameter* result = NULL;
	ValaParameter* _tmp0_;
	ValaDataType* _tmp1_;
	ValaDataType* _tmp2_;
	ValaParameter* _tmp8_;
	ValaDataType* _tmp9_;
	ValaDataType* _tmp10_;
	ValaCCodeFile* _tmp11_;
	gchar* ctypename = NULL;
	ValaParameter* _tmp12_;
	ValaDataType* _tmp13_;
	ValaDataType* _tmp14_;
	gchar* _tmp15_;
	ValaParameter* _tmp16_;
	ValaParameterDirection _tmp17_;
	ValaParameterDirection _tmp18_;
	ValaCCodeParameter* cparam = NULL;
	ValaParameter* _tmp21_;
	const gchar* _tmp22_;
	const gchar* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	const gchar* _tmp26_;
	ValaCCodeParameter* _tmp27_;
	ValaCCodeParameter* _tmp28_;
	ValaParameter* _tmp29_;
	gboolean _tmp30_;
	gboolean _tmp31_;
	ValaMap* _tmp33_;
	ValaParameter* _tmp34_;
	gdouble _tmp35_;
	gint _tmp36_;
	ValaCCodeParameter* _tmp37_;
	ValaMap* _tmp38_;
	self = (ValaGTypeModule*) base;
	g_return_val_if_fail (param != NULL, NULL);
	g_return_val_if_fail (decl_space != NULL, NULL);
	g_return_val_if_fail (cparam_map != NULL, NULL);
	_tmp0_ = param;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_OBJECT_TYPE)) {
		ValaParameter* _tmp3_;
		ValaCCodeFile* _tmp4_;
		ValaMap* _tmp5_;
		ValaMap* _tmp6_;
		ValaCCodeParameter* _tmp7_;
		_tmp3_ = param;
		_tmp4_ = decl_space;
		_tmp5_ = cparam_map;
		_tmp6_ = carg_map;
		_tmp7_ = VALA_CCODE_METHOD_MODULE_CLASS (vala_gtype_module_parent_class)->generate_parameter ((ValaCCodeMethodModule*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp3_, _tmp4_, _tmp5_, _tmp6_);
		result = _tmp7_;
		return result;
	}
	_tmp8_ = param;
	_tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = decl_space;
	vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp10_, _tmp11_);
	_tmp12_ = param;
	_tmp13_ = vala_variable_get_variable_type ((ValaVariable*) _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_get_ccode_name ((ValaCodeNode*) _tmp14_);
	ctypename = _tmp15_;
	_tmp16_ = param;
	_tmp17_ = vala_parameter_get_direction (_tmp16_);
	_tmp18_ = _tmp17_;
	if (_tmp18_ != VALA_PARAMETER_DIRECTION_IN) {
		const gchar* _tmp19_;
		gchar* _tmp20_;
		_tmp19_ = ctypename;
		_tmp20_ = g_strdup_printf ("%s *", _tmp19_);
		_g_free0 (ctypename);
		ctypename = _tmp20_;
	}
	_tmp21_ = param;
	_tmp22_ = vala_symbol_get_name ((ValaSymbol*) _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = ctypename;
	_tmp27_ = vala_ccode_parameter_new (_tmp25_, _tmp26_);
	_tmp28_ = _tmp27_;
	_g_free0 (_tmp25_);
	cparam = _tmp28_;
	_tmp29_ = param;
	_tmp30_ = vala_parameter_get_format_arg (_tmp29_);
	_tmp31_ = _tmp30_;
	if (_tmp31_) {
		ValaCCodeParameter* _tmp32_;
		_tmp32_ = cparam;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp32_, VALA_CCODE_MODIFIERS_FORMAT_ARG);
	}
	_tmp33_ = cparam_map;
	_tmp34_ = param;
	_tmp35_ = vala_get_ccode_pos (_tmp34_);
	_tmp36_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp35_, FALSE);
	_tmp37_ = cparam;
	vala_map_set (_tmp33_, (gpointer) ((gintptr) _tmp36_), _tmp37_);
	_tmp38_ = carg_map;
	if (_tmp38_ != NULL) {
		ValaMap* _tmp39_;
		ValaParameter* _tmp40_;
		gdouble _tmp41_;
		gint _tmp42_;
		ValaParameter* _tmp43_;
		const gchar* _tmp44_;
		const gchar* _tmp45_;
		ValaCCodeExpression* _tmp46_;
		ValaCCodeExpression* _tmp47_;
		_tmp39_ = carg_map;
		_tmp40_ = param;
		_tmp41_ = vala_get_ccode_pos (_tmp40_);
		_tmp42_ = vala_ccode_base_module_get_param_pos ((ValaCCodeBaseModule*) self, _tmp41_, FALSE);
		_tmp43_ = param;
		_tmp44_ = vala_symbol_get_name ((ValaSymbol*) _tmp43_);
		_tmp45_ = _tmp44_;
		_tmp46_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp45_);
		_tmp47_ = _tmp46_;
		vala_map_set (_tmp39_, (gpointer) ((gintptr) _tmp42_), _tmp47_);
		_vala_ccode_node_unref0 (_tmp47_);
	}
	result = cparam;
	_g_free0 (ctypename);
	return result;
}


static void vala_gtype_module_real_generate_class_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space) {
	ValaGTypeModule * self;
	ValaCCodeFile* _tmp0_;
	ValaClass* _tmp1_;
	ValaClass* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gboolean _tmp5_;
	gboolean _tmp6_;
	ValaClass* _tmp7_;
	ValaClass* _tmp8_;
	ValaClass* _tmp9_;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp14_;
	gboolean _tmp15_;
	gboolean _tmp16_;
	gboolean _tmp17_ = FALSE;
	gboolean _tmp18_;
	gboolean is_fundamental = FALSE;
	gboolean is_gsource = FALSE;
	ValaClass* _tmp22_;
	ValaClass* _tmp23_;
	ValaClass* _tmp24_;
	ValaClass* _tmp25_;
	gboolean _tmp26_;
	gboolean _tmp119_ = FALSE;
	gboolean _tmp120_ = FALSE;
	ValaClass* _tmp121_;
	gboolean _tmp122_;
	gboolean _tmp123_;
	gboolean _tmp154_;
	gboolean _tmp324_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (cl != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = cl;
	_tmp2_ = cl;
	_tmp3_ = vala_get_ccode_name ((ValaCodeNode*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	if (_tmp6_) {
		return;
	}
	_tmp7_ = cl;
	_tmp8_ = vala_class_get_base_class (_tmp7_);
	_tmp9_ = _tmp8_;
	if (_tmp9_ != NULL) {
		ValaClass* _tmp10_;
		ValaClass* _tmp11_;
		ValaClass* _tmp12_;
		ValaCCodeFile* _tmp13_;
		_tmp10_ = cl;
		_tmp11_ = vala_class_get_base_class (_tmp10_);
		_tmp12_ = _tmp11_;
		_tmp13_ = decl_space;
		vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp12_, _tmp13_);
	}
	_tmp14_ = cl;
	_tmp15_ = vala_class_get_is_compact (_tmp14_);
	_tmp16_ = _tmp15_;
	is_gtypeinstance = !_tmp16_;
	_tmp18_ = is_gtypeinstance;
	if (_tmp18_) {
		ValaClass* _tmp19_;
		ValaClass* _tmp20_;
		ValaClass* _tmp21_;
		_tmp19_ = cl;
		_tmp20_ = vala_class_get_base_class (_tmp19_);
		_tmp21_ = _tmp20_;
		_tmp17_ = _tmp21_ == NULL;
	} else {
		_tmp17_ = FALSE;
	}
	is_fundamental = _tmp17_;
	_tmp22_ = cl;
	_tmp23_ = vala_class_get_base_class (_tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = ((ValaCCodeBaseModule*) self)->gsource_type;
	is_gsource = _tmp24_ == _tmp25_;
	_tmp26_ = is_gtypeinstance;
	if (_tmp26_) {
		ValaCCodeFile* _tmp27_;
		ValaCCodeNewline* _tmp28_;
		ValaCCodeNewline* _tmp29_;
		gchar* macro = NULL;
		ValaClass* _tmp30_;
		gchar* _tmp31_;
		gchar* _tmp32_;
		gchar* _tmp33_;
		gchar* _tmp34_;
		ValaCCodeFile* _tmp35_;
		ValaClass* _tmp36_;
		gchar* _tmp37_;
		gchar* _tmp38_;
		const gchar* _tmp39_;
		ValaCCodeMacroReplacement* _tmp40_;
		ValaCCodeMacroReplacement* _tmp41_;
		ValaClass* _tmp42_;
		gchar* _tmp43_;
		gchar* _tmp44_;
		ValaClass* _tmp45_;
		gchar* _tmp46_;
		gchar* _tmp47_;
		gchar* _tmp48_;
		ValaCCodeFile* _tmp49_;
		ValaClass* _tmp50_;
		gchar* _tmp51_;
		gchar* _tmp52_;
		gchar* _tmp53_;
		gchar* _tmp54_;
		const gchar* _tmp55_;
		ValaCCodeMacroReplacement* _tmp56_;
		ValaCCodeMacroReplacement* _tmp57_;
		ValaClass* _tmp58_;
		gchar* _tmp59_;
		gchar* _tmp60_;
		ValaClass* _tmp61_;
		gchar* _tmp62_;
		gchar* _tmp63_;
		gchar* _tmp64_;
		ValaCCodeFile* _tmp65_;
		ValaClass* _tmp66_;
		gchar* _tmp67_;
		gchar* _tmp68_;
		gchar* _tmp69_;
		gchar* _tmp70_;
		const gchar* _tmp71_;
		ValaCCodeMacroReplacement* _tmp72_;
		ValaCCodeMacroReplacement* _tmp73_;
		ValaClass* _tmp74_;
		gchar* _tmp75_;
		gchar* _tmp76_;
		gchar* _tmp77_;
		ValaCCodeFile* _tmp78_;
		ValaClass* _tmp79_;
		gchar* _tmp80_;
		gchar* _tmp81_;
		gchar* _tmp82_;
		gchar* _tmp83_;
		const gchar* _tmp84_;
		ValaCCodeMacroReplacement* _tmp85_;
		ValaCCodeMacroReplacement* _tmp86_;
		ValaClass* _tmp87_;
		gchar* _tmp88_;
		gchar* _tmp89_;
		gchar* _tmp90_;
		ValaCCodeFile* _tmp91_;
		ValaClass* _tmp92_;
		gchar* _tmp93_;
		gchar* _tmp94_;
		gchar* _tmp95_;
		gchar* _tmp96_;
		const gchar* _tmp97_;
		ValaCCodeMacroReplacement* _tmp98_;
		ValaCCodeMacroReplacement* _tmp99_;
		ValaClass* _tmp100_;
		gchar* _tmp101_;
		gchar* _tmp102_;
		ValaClass* _tmp103_;
		gchar* _tmp104_;
		gchar* _tmp105_;
		gchar* _tmp106_;
		ValaCCodeFile* _tmp107_;
		ValaClass* _tmp108_;
		gchar* _tmp109_;
		gchar* _tmp110_;
		gchar* _tmp111_;
		gchar* _tmp112_;
		const gchar* _tmp113_;
		ValaCCodeMacroReplacement* _tmp114_;
		ValaCCodeMacroReplacement* _tmp115_;
		ValaCCodeFile* _tmp116_;
		ValaCCodeNewline* _tmp117_;
		ValaCCodeNewline* _tmp118_;
		_tmp27_ = decl_space;
		_tmp28_ = vala_ccode_newline_new ();
		_tmp29_ = _tmp28_;
		vala_ccode_file_add_type_declaration (_tmp27_, (ValaCCodeNode*) _tmp29_);
		_vala_ccode_node_unref0 (_tmp29_);
		_tmp30_ = cl;
		_tmp31_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp30_, NULL);
		_tmp32_ = _tmp31_;
		_tmp33_ = g_strdup_printf ("(%s_get_type ())", _tmp32_);
		_tmp34_ = _tmp33_;
		_g_free0 (_tmp32_);
		macro = _tmp34_;
		_tmp35_ = decl_space;
		_tmp36_ = cl;
		_tmp37_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp36_);
		_tmp38_ = _tmp37_;
		_tmp39_ = macro;
		_tmp40_ = vala_ccode_macro_replacement_new (_tmp38_, _tmp39_);
		_tmp41_ = _tmp40_;
		vala_ccode_file_add_type_declaration (_tmp35_, (ValaCCodeNode*) _tmp41_);
		_vala_ccode_node_unref0 (_tmp41_);
		_g_free0 (_tmp38_);
		_tmp42_ = cl;
		_tmp43_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp42_);
		_tmp44_ = _tmp43_;
		_tmp45_ = cl;
		_tmp46_ = vala_get_ccode_name ((ValaCodeNode*) _tmp45_);
		_tmp47_ = _tmp46_;
		_tmp48_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp44_, _tmp47_);
		_g_free0 (macro);
		macro = _tmp48_;
		_g_free0 (_tmp47_);
		_g_free0 (_tmp44_);
		_tmp49_ = decl_space;
		_tmp50_ = cl;
		_tmp51_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp50_, NULL);
		_tmp52_ = _tmp51_;
		_tmp53_ = g_strdup_printf ("%s(obj)", _tmp52_);
		_tmp54_ = _tmp53_;
		_tmp55_ = macro;
		_tmp56_ = vala_ccode_macro_replacement_new (_tmp54_, _tmp55_);
		_tmp57_ = _tmp56_;
		vala_ccode_file_add_type_declaration (_tmp49_, (ValaCCodeNode*) _tmp57_);
		_vala_ccode_node_unref0 (_tmp57_);
		_g_free0 (_tmp54_);
		_g_free0 (_tmp52_);
		_tmp58_ = cl;
		_tmp59_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp58_);
		_tmp60_ = _tmp59_;
		_tmp61_ = cl;
		_tmp62_ = vala_get_ccode_name ((ValaCodeNode*) _tmp61_);
		_tmp63_ = _tmp62_;
		_tmp64_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_CAST ((klass), %s, %sClass))", _tmp60_, _tmp63_);
		_g_free0 (macro);
		macro = _tmp64_;
		_g_free0 (_tmp63_);
		_g_free0 (_tmp60_);
		_tmp65_ = decl_space;
		_tmp66_ = cl;
		_tmp67_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp66_, NULL);
		_tmp68_ = _tmp67_;
		_tmp69_ = g_strdup_printf ("%s_CLASS(klass)", _tmp68_);
		_tmp70_ = _tmp69_;
		_tmp71_ = macro;
		_tmp72_ = vala_ccode_macro_replacement_new (_tmp70_, _tmp71_);
		_tmp73_ = _tmp72_;
		vala_ccode_file_add_type_declaration (_tmp65_, (ValaCCodeNode*) _tmp73_);
		_vala_ccode_node_unref0 (_tmp73_);
		_g_free0 (_tmp70_);
		_g_free0 (_tmp68_);
		_tmp74_ = cl;
		_tmp75_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp74_);
		_tmp76_ = _tmp75_;
		_tmp77_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp76_);
		_g_free0 (macro);
		macro = _tmp77_;
		_g_free0 (_tmp76_);
		_tmp78_ = decl_space;
		_tmp79_ = cl;
		_tmp80_ = vala_get_ccode_type_check_function ((ValaTypeSymbol*) _tmp79_);
		_tmp81_ = _tmp80_;
		_tmp82_ = g_strdup_printf ("%s(obj)", _tmp81_);
		_tmp83_ = _tmp82_;
		_tmp84_ = macro;
		_tmp85_ = vala_ccode_macro_replacement_new (_tmp83_, _tmp84_);
		_tmp86_ = _tmp85_;
		vala_ccode_file_add_type_declaration (_tmp78_, (ValaCCodeNode*) _tmp86_);
		_vala_ccode_node_unref0 (_tmp86_);
		_g_free0 (_tmp83_);
		_g_free0 (_tmp81_);
		_tmp87_ = cl;
		_tmp88_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp87_);
		_tmp89_ = _tmp88_;
		_tmp90_ = g_strdup_printf ("(G_TYPE_CHECK_CLASS_TYPE ((klass), %s))", _tmp89_);
		_g_free0 (macro);
		macro = _tmp90_;
		_g_free0 (_tmp89_);
		_tmp91_ = decl_space;
		_tmp92_ = cl;
		_tmp93_ = vala_get_ccode_type_check_function ((ValaTypeSymbol*) _tmp92_);
		_tmp94_ = _tmp93_;
		_tmp95_ = g_strdup_printf ("%s_CLASS(klass)", _tmp94_);
		_tmp96_ = _tmp95_;
		_tmp97_ = macro;
		_tmp98_ = vala_ccode_macro_replacement_new (_tmp96_, _tmp97_);
		_tmp99_ = _tmp98_;
		vala_ccode_file_add_type_declaration (_tmp91_, (ValaCCodeNode*) _tmp99_);
		_vala_ccode_node_unref0 (_tmp99_);
		_g_free0 (_tmp96_);
		_g_free0 (_tmp94_);
		_tmp100_ = cl;
		_tmp101_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp100_);
		_tmp102_ = _tmp101_;
		_tmp103_ = cl;
		_tmp104_ = vala_get_ccode_name ((ValaCodeNode*) _tmp103_);
		_tmp105_ = _tmp104_;
		_tmp106_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_CLASS ((obj), %s, %sClass))", _tmp102_, _tmp105_);
		_g_free0 (macro);
		macro = _tmp106_;
		_g_free0 (_tmp105_);
		_g_free0 (_tmp102_);
		_tmp107_ = decl_space;
		_tmp108_ = cl;
		_tmp109_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp108_, NULL);
		_tmp110_ = _tmp109_;
		_tmp111_ = g_strdup_printf ("%s_GET_CLASS(obj)", _tmp110_);
		_tmp112_ = _tmp111_;
		_tmp113_ = macro;
		_tmp114_ = vala_ccode_macro_replacement_new (_tmp112_, _tmp113_);
		_tmp115_ = _tmp114_;
		vala_ccode_file_add_type_declaration (_tmp107_, (ValaCCodeNode*) _tmp115_);
		_vala_ccode_node_unref0 (_tmp115_);
		_g_free0 (_tmp112_);
		_g_free0 (_tmp110_);
		_tmp116_ = decl_space;
		_tmp117_ = vala_ccode_newline_new ();
		_tmp118_ = _tmp117_;
		vala_ccode_file_add_type_declaration (_tmp116_, (ValaCCodeNode*) _tmp118_);
		_vala_ccode_node_unref0 (_tmp118_);
		_g_free0 (macro);
	}
	_tmp121_ = cl;
	_tmp122_ = vala_class_get_is_compact (_tmp121_);
	_tmp123_ = _tmp122_;
	if (_tmp123_) {
		ValaClass* _tmp124_;
		ValaClass* _tmp125_;
		ValaClass* _tmp126_;
		_tmp124_ = cl;
		_tmp125_ = vala_class_get_base_class (_tmp124_);
		_tmp126_ = _tmp125_;
		_tmp120_ = _tmp126_ != NULL;
	} else {
		_tmp120_ = FALSE;
	}
	if (_tmp120_) {
		gboolean _tmp127_;
		_tmp127_ = is_gsource;
		_tmp119_ = !_tmp127_;
	} else {
		_tmp119_ = FALSE;
	}
	if (_tmp119_) {
		ValaCCodeFile* _tmp128_;
		ValaClass* _tmp129_;
		ValaClass* _tmp130_;
		ValaClass* _tmp131_;
		gchar* _tmp132_;
		gchar* _tmp133_;
		ValaClass* _tmp134_;
		gchar* _tmp135_;
		gchar* _tmp136_;
		ValaCCodeVariableDeclarator* _tmp137_;
		ValaCCodeVariableDeclarator* _tmp138_;
		ValaCCodeTypeDefinition* _tmp139_;
		ValaCCodeTypeDefinition* _tmp140_;
		_tmp128_ = decl_space;
		_tmp129_ = cl;
		_tmp130_ = vala_class_get_base_class (_tmp129_);
		_tmp131_ = _tmp130_;
		_tmp132_ = vala_get_ccode_name ((ValaCodeNode*) _tmp131_);
		_tmp133_ = _tmp132_;
		_tmp134_ = cl;
		_tmp135_ = vala_get_ccode_name ((ValaCodeNode*) _tmp134_);
		_tmp136_ = _tmp135_;
		_tmp137_ = vala_ccode_variable_declarator_new (_tmp136_, NULL, NULL);
		_tmp138_ = _tmp137_;
		_tmp139_ = vala_ccode_type_definition_new (_tmp133_, (ValaCCodeDeclarator*) _tmp138_);
		_tmp140_ = _tmp139_;
		vala_ccode_file_add_type_declaration (_tmp128_, (ValaCCodeNode*) _tmp140_);
		_vala_ccode_node_unref0 (_tmp140_);
		_vala_ccode_node_unref0 (_tmp138_);
		_g_free0 (_tmp136_);
		_g_free0 (_tmp133_);
	} else {
		ValaCCodeFile* _tmp141_;
		ValaClass* _tmp142_;
		gchar* _tmp143_;
		gchar* _tmp144_;
		gchar* _tmp145_;
		gchar* _tmp146_;
		ValaClass* _tmp147_;
		gchar* _tmp148_;
		gchar* _tmp149_;
		ValaCCodeVariableDeclarator* _tmp150_;
		ValaCCodeVariableDeclarator* _tmp151_;
		ValaCCodeTypeDefinition* _tmp152_;
		ValaCCodeTypeDefinition* _tmp153_;
		_tmp141_ = decl_space;
		_tmp142_ = cl;
		_tmp143_ = vala_get_ccode_name ((ValaCodeNode*) _tmp142_);
		_tmp144_ = _tmp143_;
		_tmp145_ = g_strdup_printf ("struct _%s", _tmp144_);
		_tmp146_ = _tmp145_;
		_tmp147_ = cl;
		_tmp148_ = vala_get_ccode_name ((ValaCodeNode*) _tmp147_);
		_tmp149_ = _tmp148_;
		_tmp150_ = vala_ccode_variable_declarator_new (_tmp149_, NULL, NULL);
		_tmp151_ = _tmp150_;
		_tmp152_ = vala_ccode_type_definition_new (_tmp146_, (ValaCCodeDeclarator*) _tmp151_);
		_tmp153_ = _tmp152_;
		vala_ccode_file_add_type_declaration (_tmp141_, (ValaCCodeNode*) _tmp153_);
		_vala_ccode_node_unref0 (_tmp153_);
		_vala_ccode_node_unref0 (_tmp151_);
		_g_free0 (_tmp149_);
		_g_free0 (_tmp146_);
		_g_free0 (_tmp144_);
	}
	_tmp154_ = is_fundamental;
	if (_tmp154_) {
		ValaCCodeFunction* ref_fun = NULL;
		ValaClass* _tmp155_;
		gchar* _tmp156_;
		gchar* _tmp157_;
		gchar* _tmp158_;
		gchar* _tmp159_;
		ValaCCodeFunction* _tmp160_;
		ValaCCodeFunction* _tmp161_;
		ValaCCodeFunction* unref_fun = NULL;
		ValaClass* _tmp162_;
		gchar* _tmp163_;
		gchar* _tmp164_;
		gchar* _tmp165_;
		gchar* _tmp166_;
		ValaCCodeFunction* _tmp167_;
		ValaCCodeFunction* _tmp168_;
		ValaClass* _tmp169_;
		gboolean _tmp170_;
		ValaCCodeFunction* _tmp182_;
		ValaCCodeParameter* _tmp183_;
		ValaCCodeParameter* _tmp184_;
		ValaCCodeFunction* _tmp185_;
		ValaCCodeParameter* _tmp186_;
		ValaCCodeParameter* _tmp187_;
		ValaCCodeFile* _tmp188_;
		ValaCCodeFunction* _tmp189_;
		ValaCCodeFile* _tmp190_;
		ValaCCodeFunction* _tmp191_;
		gchar* function_name = NULL;
		ValaClass* _tmp192_;
		gchar* _tmp193_;
		ValaCCodeFunction* function = NULL;
		const gchar* _tmp194_;
		ValaCCodeFunction* _tmp195_;
		ValaCCodeFunction* _tmp196_;
		ValaCCodeParameter* _tmp197_;
		ValaCCodeParameter* _tmp198_;
		ValaCCodeFunction* _tmp199_;
		ValaCCodeParameter* _tmp200_;
		ValaCCodeParameter* _tmp201_;
		ValaCCodeFunction* _tmp202_;
		ValaCCodeParameter* _tmp203_;
		ValaCCodeParameter* _tmp204_;
		ValaCCodeFunction* _tmp205_;
		ValaCCodeParameter* _tmp206_;
		ValaCCodeParameter* _tmp207_;
		ValaCCodeFunction* _tmp208_;
		ValaCCodeParameter* _tmp209_;
		ValaCCodeParameter* _tmp210_;
		ValaClass* _tmp211_;
		gboolean _tmp212_;
		ValaCCodeFile* _tmp222_;
		ValaCCodeFunction* _tmp223_;
		ValaClass* _tmp224_;
		gchar* _tmp225_;
		gchar* _tmp226_;
		ValaCCodeFunction* _tmp227_;
		ValaCCodeFunction* _tmp228_;
		ValaCCodeParameter* _tmp229_;
		ValaCCodeParameter* _tmp230_;
		ValaCCodeFunction* _tmp231_;
		ValaCCodeParameter* _tmp232_;
		ValaCCodeParameter* _tmp233_;
		ValaClass* _tmp234_;
		gboolean _tmp235_;
		ValaCCodeFile* _tmp245_;
		ValaCCodeFunction* _tmp246_;
		ValaClass* _tmp247_;
		gchar* _tmp248_;
		gchar* _tmp249_;
		ValaCCodeFunction* _tmp250_;
		ValaCCodeFunction* _tmp251_;
		ValaCCodeParameter* _tmp252_;
		ValaCCodeParameter* _tmp253_;
		ValaCCodeFunction* _tmp254_;
		ValaCCodeParameter* _tmp255_;
		ValaCCodeParameter* _tmp256_;
		ValaClass* _tmp257_;
		gboolean _tmp258_;
		ValaCCodeFile* _tmp268_;
		ValaCCodeFunction* _tmp269_;
		ValaClass* _tmp270_;
		gchar* _tmp271_;
		gchar* _tmp272_;
		ValaCCodeFunction* _tmp273_;
		ValaCCodeFunction* _tmp274_;
		ValaCCodeParameter* _tmp275_;
		ValaCCodeParameter* _tmp276_;
		ValaClass* _tmp277_;
		gboolean _tmp278_;
		ValaCCodeFile* _tmp288_;
		ValaCCodeFunction* _tmp289_;
		_tmp155_ = cl;
		_tmp156_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp155_);
		_tmp157_ = _tmp156_;
		_tmp158_ = g_strdup_printf ("%sref", _tmp157_);
		_tmp159_ = _tmp158_;
		_tmp160_ = vala_ccode_function_new (_tmp159_, "gpointer");
		_tmp161_ = _tmp160_;
		_g_free0 (_tmp159_);
		_g_free0 (_tmp157_);
		ref_fun = _tmp161_;
		_tmp162_ = cl;
		_tmp163_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp162_);
		_tmp164_ = _tmp163_;
		_tmp165_ = g_strdup_printf ("%sunref", _tmp164_);
		_tmp166_ = _tmp165_;
		_tmp167_ = vala_ccode_function_new (_tmp166_, "void");
		_tmp168_ = _tmp167_;
		_g_free0 (_tmp166_);
		_g_free0 (_tmp164_);
		unref_fun = _tmp168_;
		_tmp169_ = cl;
		_tmp170_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp169_);
		if (_tmp170_) {
			ValaCCodeFunction* _tmp171_;
			ValaCCodeFunction* _tmp172_;
			_tmp171_ = ref_fun;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp171_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp172_ = unref_fun;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp172_, VALA_CCODE_MODIFIERS_STATIC);
		} else {
			gboolean _tmp173_ = FALSE;
			ValaCodeContext* _tmp174_;
			ValaCodeContext* _tmp175_;
			gboolean _tmp176_;
			gboolean _tmp177_;
			_tmp174_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp175_ = _tmp174_;
			_tmp176_ = vala_code_context_get_hide_internal (_tmp175_);
			_tmp177_ = _tmp176_;
			if (_tmp177_) {
				ValaClass* _tmp178_;
				gboolean _tmp179_;
				_tmp178_ = cl;
				_tmp179_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp178_);
				_tmp173_ = _tmp179_;
			} else {
				_tmp173_ = FALSE;
			}
			if (_tmp173_) {
				ValaCCodeFunction* _tmp180_;
				ValaCCodeFunction* _tmp181_;
				_tmp180_ = ref_fun;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp180_, VALA_CCODE_MODIFIERS_INTERNAL);
				_tmp181_ = unref_fun;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp181_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp182_ = ref_fun;
		_tmp183_ = vala_ccode_parameter_new ("instance", "gpointer");
		_tmp184_ = _tmp183_;
		vala_ccode_function_add_parameter (_tmp182_, _tmp184_);
		_vala_ccode_node_unref0 (_tmp184_);
		_tmp185_ = unref_fun;
		_tmp186_ = vala_ccode_parameter_new ("instance", "gpointer");
		_tmp187_ = _tmp186_;
		vala_ccode_function_add_parameter (_tmp185_, _tmp187_);
		_vala_ccode_node_unref0 (_tmp187_);
		_tmp188_ = decl_space;
		_tmp189_ = ref_fun;
		vala_ccode_file_add_function_declaration (_tmp188_, _tmp189_);
		_tmp190_ = decl_space;
		_tmp191_ = unref_fun;
		vala_ccode_file_add_function_declaration (_tmp190_, _tmp191_);
		_tmp192_ = cl;
		_tmp193_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp192_, "param_spec_");
		function_name = _tmp193_;
		_tmp194_ = function_name;
		_tmp195_ = vala_ccode_function_new (_tmp194_, "GParamSpec*");
		function = _tmp195_;
		_tmp196_ = function;
		_tmp197_ = vala_ccode_parameter_new ("name", "const gchar*");
		_tmp198_ = _tmp197_;
		vala_ccode_function_add_parameter (_tmp196_, _tmp198_);
		_vala_ccode_node_unref0 (_tmp198_);
		_tmp199_ = function;
		_tmp200_ = vala_ccode_parameter_new ("nick", "const gchar*");
		_tmp201_ = _tmp200_;
		vala_ccode_function_add_parameter (_tmp199_, _tmp201_);
		_vala_ccode_node_unref0 (_tmp201_);
		_tmp202_ = function;
		_tmp203_ = vala_ccode_parameter_new ("blurb", "const gchar*");
		_tmp204_ = _tmp203_;
		vala_ccode_function_add_parameter (_tmp202_, _tmp204_);
		_vala_ccode_node_unref0 (_tmp204_);
		_tmp205_ = function;
		_tmp206_ = vala_ccode_parameter_new ("object_type", "GType");
		_tmp207_ = _tmp206_;
		vala_ccode_function_add_parameter (_tmp205_, _tmp207_);
		_vala_ccode_node_unref0 (_tmp207_);
		_tmp208_ = function;
		_tmp209_ = vala_ccode_parameter_new ("flags", "GParamFlags");
		_tmp210_ = _tmp209_;
		vala_ccode_function_add_parameter (_tmp208_, _tmp210_);
		_vala_ccode_node_unref0 (_tmp210_);
		_tmp211_ = cl;
		_tmp212_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp211_);
		if (_tmp212_) {
			ValaCCodeFunction* _tmp213_;
			_tmp213_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp213_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
		} else {
			gboolean _tmp214_ = FALSE;
			ValaCodeContext* _tmp215_;
			ValaCodeContext* _tmp216_;
			gboolean _tmp217_;
			gboolean _tmp218_;
			_tmp215_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp216_ = _tmp215_;
			_tmp217_ = vala_code_context_get_hide_internal (_tmp216_);
			_tmp218_ = _tmp217_;
			if (_tmp218_) {
				ValaClass* _tmp219_;
				gboolean _tmp220_;
				_tmp219_ = cl;
				_tmp220_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp219_);
				_tmp214_ = _tmp220_;
			} else {
				_tmp214_ = FALSE;
			}
			if (_tmp214_) {
				ValaCCodeFunction* _tmp221_;
				_tmp221_ = function;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp221_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp222_ = decl_space;
		_tmp223_ = function;
		vala_ccode_file_add_function_declaration (_tmp222_, _tmp223_);
		_tmp224_ = cl;
		_tmp225_ = vala_get_ccode_set_value_function ((ValaCodeNode*) _tmp224_);
		_tmp226_ = _tmp225_;
		_tmp227_ = vala_ccode_function_new (_tmp226_, "void");
		_vala_ccode_node_unref0 (function);
		function = _tmp227_;
		_g_free0 (_tmp226_);
		_tmp228_ = function;
		_tmp229_ = vala_ccode_parameter_new ("value", "GValue*");
		_tmp230_ = _tmp229_;
		vala_ccode_function_add_parameter (_tmp228_, _tmp230_);
		_vala_ccode_node_unref0 (_tmp230_);
		_tmp231_ = function;
		_tmp232_ = vala_ccode_parameter_new ("v_object", "gpointer");
		_tmp233_ = _tmp232_;
		vala_ccode_function_add_parameter (_tmp231_, _tmp233_);
		_vala_ccode_node_unref0 (_tmp233_);
		_tmp234_ = cl;
		_tmp235_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp234_);
		if (_tmp235_) {
			ValaCCodeFunction* _tmp236_;
			_tmp236_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp236_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
		} else {
			gboolean _tmp237_ = FALSE;
			ValaCodeContext* _tmp238_;
			ValaCodeContext* _tmp239_;
			gboolean _tmp240_;
			gboolean _tmp241_;
			_tmp238_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp239_ = _tmp238_;
			_tmp240_ = vala_code_context_get_hide_internal (_tmp239_);
			_tmp241_ = _tmp240_;
			if (_tmp241_) {
				ValaClass* _tmp242_;
				gboolean _tmp243_;
				_tmp242_ = cl;
				_tmp243_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp242_);
				_tmp237_ = _tmp243_;
			} else {
				_tmp237_ = FALSE;
			}
			if (_tmp237_) {
				ValaCCodeFunction* _tmp244_;
				_tmp244_ = function;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp244_, VALA_CCODE_MODIFIERS_INTERNAL | VALA_CCODE_MODIFIERS_UNUSED);
			}
		}
		_tmp245_ = decl_space;
		_tmp246_ = function;
		vala_ccode_file_add_function_declaration (_tmp245_, _tmp246_);
		_tmp247_ = cl;
		_tmp248_ = vala_get_ccode_take_value_function ((ValaCodeNode*) _tmp247_);
		_tmp249_ = _tmp248_;
		_tmp250_ = vala_ccode_function_new (_tmp249_, "void");
		_vala_ccode_node_unref0 (function);
		function = _tmp250_;
		_g_free0 (_tmp249_);
		_tmp251_ = function;
		_tmp252_ = vala_ccode_parameter_new ("value", "GValue*");
		_tmp253_ = _tmp252_;
		vala_ccode_function_add_parameter (_tmp251_, _tmp253_);
		_vala_ccode_node_unref0 (_tmp253_);
		_tmp254_ = function;
		_tmp255_ = vala_ccode_parameter_new ("v_object", "gpointer");
		_tmp256_ = _tmp255_;
		vala_ccode_function_add_parameter (_tmp254_, _tmp256_);
		_vala_ccode_node_unref0 (_tmp256_);
		_tmp257_ = cl;
		_tmp258_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp257_);
		if (_tmp258_) {
			ValaCCodeFunction* _tmp259_;
			_tmp259_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp259_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
		} else {
			gboolean _tmp260_ = FALSE;
			ValaCodeContext* _tmp261_;
			ValaCodeContext* _tmp262_;
			gboolean _tmp263_;
			gboolean _tmp264_;
			_tmp261_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp262_ = _tmp261_;
			_tmp263_ = vala_code_context_get_hide_internal (_tmp262_);
			_tmp264_ = _tmp263_;
			if (_tmp264_) {
				ValaClass* _tmp265_;
				gboolean _tmp266_;
				_tmp265_ = cl;
				_tmp266_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp265_);
				_tmp260_ = _tmp266_;
			} else {
				_tmp260_ = FALSE;
			}
			if (_tmp260_) {
				ValaCCodeFunction* _tmp267_;
				_tmp267_ = function;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp267_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp268_ = decl_space;
		_tmp269_ = function;
		vala_ccode_file_add_function_declaration (_tmp268_, _tmp269_);
		_tmp270_ = cl;
		_tmp271_ = vala_get_ccode_get_value_function ((ValaCodeNode*) _tmp270_);
		_tmp272_ = _tmp271_;
		_tmp273_ = vala_ccode_function_new (_tmp272_, "gpointer");
		_vala_ccode_node_unref0 (function);
		function = _tmp273_;
		_g_free0 (_tmp272_);
		_tmp274_ = function;
		_tmp275_ = vala_ccode_parameter_new ("value", "const GValue*");
		_tmp276_ = _tmp275_;
		vala_ccode_function_add_parameter (_tmp274_, _tmp276_);
		_vala_ccode_node_unref0 (_tmp276_);
		_tmp277_ = cl;
		_tmp278_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp277_);
		if (_tmp278_) {
			ValaCCodeFunction* _tmp279_;
			_tmp279_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp279_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_UNUSED);
		} else {
			gboolean _tmp280_ = FALSE;
			ValaCodeContext* _tmp281_;
			ValaCodeContext* _tmp282_;
			gboolean _tmp283_;
			gboolean _tmp284_;
			_tmp281_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp282_ = _tmp281_;
			_tmp283_ = vala_code_context_get_hide_internal (_tmp282_);
			_tmp284_ = _tmp283_;
			if (_tmp284_) {
				ValaClass* _tmp285_;
				gboolean _tmp286_;
				_tmp285_ = cl;
				_tmp286_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp285_);
				_tmp280_ = _tmp286_;
			} else {
				_tmp280_ = FALSE;
			}
			if (_tmp280_) {
				ValaCCodeFunction* _tmp287_;
				_tmp287_ = function;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp287_, VALA_CCODE_MODIFIERS_INTERNAL | VALA_CCODE_MODIFIERS_UNUSED);
			}
		}
		_tmp288_ = decl_space;
		_tmp289_ = function;
		vala_ccode_file_add_function_declaration (_tmp288_, _tmp289_);
		_vala_ccode_node_unref0 (function);
		_g_free0 (function_name);
		_vala_ccode_node_unref0 (unref_fun);
		_vala_ccode_node_unref0 (ref_fun);
	} else {
		gboolean _tmp290_ = FALSE;
		gboolean _tmp291_;
		_tmp291_ = is_gtypeinstance;
		if (!_tmp291_) {
			gboolean _tmp292_;
			_tmp292_ = is_gsource;
			_tmp290_ = !_tmp292_;
		} else {
			_tmp290_ = FALSE;
		}
		if (_tmp290_) {
			ValaClass* _tmp293_;
			ValaClass* _tmp294_;
			ValaClass* _tmp295_;
			_tmp293_ = cl;
			_tmp294_ = vala_class_get_base_class (_tmp293_);
			_tmp295_ = _tmp294_;
			if (_tmp295_ == NULL) {
				ValaCCodeFunction* function = NULL;
				ValaClass* _tmp296_;
				gchar* _tmp297_;
				gchar* _tmp298_;
				gchar* _tmp299_;
				gchar* _tmp300_;
				ValaCCodeFunction* _tmp301_;
				ValaCCodeFunction* _tmp302_;
				ValaClass* _tmp303_;
				gboolean _tmp304_;
				ValaCCodeFunction* _tmp314_;
				ValaClass* _tmp315_;
				gchar* _tmp316_;
				gchar* _tmp317_;
				gchar* _tmp318_;
				gchar* _tmp319_;
				ValaCCodeParameter* _tmp320_;
				ValaCCodeParameter* _tmp321_;
				ValaCCodeFile* _tmp322_;
				ValaCCodeFunction* _tmp323_;
				_tmp296_ = cl;
				_tmp297_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp296_);
				_tmp298_ = _tmp297_;
				_tmp299_ = g_strdup_printf ("%sfree", _tmp298_);
				_tmp300_ = _tmp299_;
				_tmp301_ = vala_ccode_function_new (_tmp300_, "void");
				_tmp302_ = _tmp301_;
				_g_free0 (_tmp300_);
				_g_free0 (_tmp298_);
				function = _tmp302_;
				_tmp303_ = cl;
				_tmp304_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp303_);
				if (_tmp304_) {
					ValaCCodeFunction* _tmp305_;
					_tmp305_ = function;
					vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp305_, VALA_CCODE_MODIFIERS_STATIC);
				} else {
					gboolean _tmp306_ = FALSE;
					ValaCodeContext* _tmp307_;
					ValaCodeContext* _tmp308_;
					gboolean _tmp309_;
					gboolean _tmp310_;
					_tmp307_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
					_tmp308_ = _tmp307_;
					_tmp309_ = vala_code_context_get_hide_internal (_tmp308_);
					_tmp310_ = _tmp309_;
					if (_tmp310_) {
						ValaClass* _tmp311_;
						gboolean _tmp312_;
						_tmp311_ = cl;
						_tmp312_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp311_);
						_tmp306_ = _tmp312_;
					} else {
						_tmp306_ = FALSE;
					}
					if (_tmp306_) {
						ValaCCodeFunction* _tmp313_;
						_tmp313_ = function;
						vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp313_, VALA_CCODE_MODIFIERS_INTERNAL);
					}
				}
				_tmp314_ = function;
				_tmp315_ = cl;
				_tmp316_ = vala_get_ccode_name ((ValaCodeNode*) _tmp315_);
				_tmp317_ = _tmp316_;
				_tmp318_ = g_strdup_printf ("%s *", _tmp317_);
				_tmp319_ = _tmp318_;
				_tmp320_ = vala_ccode_parameter_new ("self", _tmp319_);
				_tmp321_ = _tmp320_;
				vala_ccode_function_add_parameter (_tmp314_, _tmp321_);
				_vala_ccode_node_unref0 (_tmp321_);
				_g_free0 (_tmp319_);
				_g_free0 (_tmp317_);
				_tmp322_ = decl_space;
				_tmp323_ = function;
				vala_ccode_file_add_function_declaration (_tmp322_, _tmp323_);
				_vala_ccode_node_unref0 (function);
			}
		}
	}
	_tmp324_ = is_gtypeinstance;
	if (_tmp324_) {
		ValaCCodeFile* _tmp325_;
		ValaClass* _tmp326_;
		gchar* _tmp327_;
		gchar* _tmp328_;
		gchar* _tmp329_;
		gchar* _tmp330_;
		ValaClass* _tmp331_;
		gchar* _tmp332_;
		gchar* _tmp333_;
		gchar* _tmp334_;
		gchar* _tmp335_;
		ValaCCodeVariableDeclarator* _tmp336_;
		ValaCCodeVariableDeclarator* _tmp337_;
		ValaCCodeTypeDefinition* _tmp338_;
		ValaCCodeTypeDefinition* _tmp339_;
		ValaClassRegisterFunction* type_fun = NULL;
		ValaClass* _tmp340_;
		ValaCodeContext* _tmp341_;
		ValaCodeContext* _tmp342_;
		ValaClassRegisterFunction* _tmp343_;
		ValaClassRegisterFunction* _tmp344_;
		gboolean _tmp345_;
		ValaCCodeFile* _tmp346_;
		ValaClassRegisterFunction* _tmp347_;
		ValaCCodeFragment* _tmp348_;
		ValaCCodeFragment* _tmp349_;
		_tmp325_ = decl_space;
		_tmp326_ = cl;
		_tmp327_ = vala_get_ccode_name ((ValaCodeNode*) _tmp326_);
		_tmp328_ = _tmp327_;
		_tmp329_ = g_strdup_printf ("struct _%sClass", _tmp328_);
		_tmp330_ = _tmp329_;
		_tmp331_ = cl;
		_tmp332_ = vala_get_ccode_name ((ValaCodeNode*) _tmp331_);
		_tmp333_ = _tmp332_;
		_tmp334_ = g_strdup_printf ("%sClass", _tmp333_);
		_tmp335_ = _tmp334_;
		_tmp336_ = vala_ccode_variable_declarator_new (_tmp335_, NULL, NULL);
		_tmp337_ = _tmp336_;
		_tmp338_ = vala_ccode_type_definition_new (_tmp330_, (ValaCCodeDeclarator*) _tmp337_);
		_tmp339_ = _tmp338_;
		vala_ccode_file_add_type_declaration (_tmp325_, (ValaCCodeNode*) _tmp339_);
		_vala_ccode_node_unref0 (_tmp339_);
		_vala_ccode_node_unref0 (_tmp337_);
		_g_free0 (_tmp335_);
		_g_free0 (_tmp333_);
		_g_free0 (_tmp330_);
		_g_free0 (_tmp328_);
		_tmp340_ = cl;
		_tmp341_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp342_ = _tmp341_;
		_tmp343_ = vala_class_register_function_new (_tmp340_, _tmp342_);
		type_fun = _tmp343_;
		_tmp344_ = type_fun;
		_tmp345_ = ((ValaCCodeBaseModule*) self)->in_plugin;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp344_, _tmp345_, TRUE);
		_tmp346_ = decl_space;
		_tmp347_ = type_fun;
		_tmp348_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp347_);
		_tmp349_ = _tmp348_;
		vala_ccode_file_add_type_member_declaration (_tmp346_, (ValaCCodeNode*) _tmp349_);
		_vala_ccode_node_unref0 (_tmp349_);
		_vala_typeregister_function_unref0 (type_fun);
	}
}


static gpointer _vala_code_node_ref0 (gpointer self) {
	return self ? vala_code_node_ref (self) : NULL;
}


static void vala_gtype_module_real_generate_class_struct_declaration (ValaCCodeBaseModule* base, ValaClass* cl, ValaCCodeFile* decl_space) {
	ValaGTypeModule * self;
	ValaCCodeFile* _tmp0_;
	ValaClass* _tmp1_;
	ValaClass* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gboolean _tmp7_;
	gboolean _tmp8_;
	ValaClass* _tmp9_;
	ValaClass* _tmp10_;
	ValaClass* _tmp11_;
	ValaClass* _tmp34_;
	ValaCCodeFile* _tmp35_;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp36_;
	gboolean _tmp37_;
	gboolean _tmp38_;
	gboolean _tmp39_ = FALSE;
	gboolean _tmp40_;
	gboolean is_fundamental = FALSE;
	gboolean is_gsource = FALSE;
	ValaClass* _tmp44_;
	ValaClass* _tmp45_;
	ValaClass* _tmp46_;
	ValaClass* _tmp47_;
	ValaCCodeStruct* instance_struct = NULL;
	ValaClass* _tmp48_;
	gchar* _tmp49_;
	gchar* _tmp50_;
	gchar* _tmp51_;
	gchar* _tmp52_;
	ValaCCodeStruct* _tmp53_;
	ValaCCodeStruct* _tmp54_;
	ValaCCodeStruct* type_struct = NULL;
	ValaClass* _tmp55_;
	gchar* _tmp56_;
	gchar* _tmp57_;
	gchar* _tmp58_;
	gchar* _tmp59_;
	ValaCCodeStruct* _tmp60_;
	ValaCCodeStruct* _tmp61_;
	ValaClass* _tmp62_;
	ValaClass* _tmp63_;
	ValaClass* _tmp64_;
	gboolean _tmp75_ = FALSE;
	gboolean _tmp76_ = FALSE;
	ValaClass* _tmp77_;
	gboolean _tmp78_;
	gboolean _tmp79_;
	gboolean _tmp89_;
	gboolean _tmp478_ = FALSE;
	gboolean _tmp479_ = FALSE;
	ValaClass* _tmp480_;
	gboolean _tmp481_;
	gboolean _tmp482_;
	gboolean _tmp489_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (cl != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = cl;
	_tmp2_ = cl;
	_tmp3_ = vala_get_ccode_name ((ValaCodeNode*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = g_strdup_printf ("struct _%s", _tmp4_);
	_tmp6_ = _tmp5_;
	_tmp7_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp6_);
	_tmp8_ = _tmp7_;
	_g_free0 (_tmp6_);
	_g_free0 (_tmp4_);
	if (_tmp8_) {
		return;
	}
	_tmp9_ = cl;
	_tmp10_ = vala_class_get_base_class (_tmp9_);
	_tmp11_ = _tmp10_;
	if (_tmp11_ != NULL) {
		ValaClass* _tmp12_;
		ValaClass* _tmp13_;
		ValaClass* _tmp14_;
		ValaCCodeFile* _tmp15_;
		_tmp12_ = cl;
		_tmp13_ = vala_class_get_base_class (_tmp12_);
		_tmp14_ = _tmp13_;
		_tmp15_ = decl_space;
		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp14_, _tmp15_);
	}
	{
		ValaList* _base_type_list = NULL;
		ValaClass* _tmp16_;
		ValaList* _tmp17_;
		gint _base_type_size = 0;
		ValaList* _tmp18_;
		gint _tmp19_;
		gint _tmp20_;
		gint _base_type_index = 0;
		_tmp16_ = cl;
		_tmp17_ = vala_class_get_base_types (_tmp16_);
		_base_type_list = _tmp17_;
		_tmp18_ = _base_type_list;
		_tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
		_tmp20_ = _tmp19_;
		_base_type_size = _tmp20_;
		_base_type_index = -1;
		while (TRUE) {
			gint _tmp21_;
			gint _tmp22_;
			gint _tmp23_;
			ValaDataType* base_type = NULL;
			ValaList* _tmp24_;
			gint _tmp25_;
			gpointer _tmp26_;
			ValaInterface* iface = NULL;
			ValaDataType* _tmp27_;
			ValaTypeSymbol* _tmp28_;
			ValaTypeSymbol* _tmp29_;
			ValaInterface* _tmp30_;
			ValaInterface* _tmp31_;
			_tmp21_ = _base_type_index;
			_base_type_index = _tmp21_ + 1;
			_tmp22_ = _base_type_index;
			_tmp23_ = _base_type_size;
			if (!(_tmp22_ < _tmp23_)) {
				break;
			}
			_tmp24_ = _base_type_list;
			_tmp25_ = _base_type_index;
			_tmp26_ = vala_list_get (_tmp24_, _tmp25_);
			base_type = (ValaDataType*) _tmp26_;
			_tmp27_ = base_type;
			_tmp28_ = vala_data_type_get_data_type (_tmp27_);
			_tmp29_ = _tmp28_;
			_tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp29_) : NULL);
			iface = _tmp30_;
			_tmp31_ = iface;
			if (_tmp31_ != NULL) {
				ValaInterface* _tmp32_;
				ValaCCodeFile* _tmp33_;
				_tmp32_ = iface;
				_tmp33_ = decl_space;
				vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp32_, _tmp33_);
			}
			_vala_code_node_unref0 (iface);
			_vala_code_node_unref0 (base_type);
		}
		_vala_iterable_unref0 (_base_type_list);
	}
	_tmp34_ = cl;
	_tmp35_ = decl_space;
	vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp34_, _tmp35_);
	_tmp36_ = cl;
	_tmp37_ = vala_class_get_is_compact (_tmp36_);
	_tmp38_ = _tmp37_;
	is_gtypeinstance = !_tmp38_;
	_tmp40_ = is_gtypeinstance;
	if (_tmp40_) {
		ValaClass* _tmp41_;
		ValaClass* _tmp42_;
		ValaClass* _tmp43_;
		_tmp41_ = cl;
		_tmp42_ = vala_class_get_base_class (_tmp41_);
		_tmp43_ = _tmp42_;
		_tmp39_ = _tmp43_ == NULL;
	} else {
		_tmp39_ = FALSE;
	}
	is_fundamental = _tmp39_;
	_tmp44_ = cl;
	_tmp45_ = vala_class_get_base_class (_tmp44_);
	_tmp46_ = _tmp45_;
	_tmp47_ = ((ValaCCodeBaseModule*) self)->gsource_type;
	is_gsource = _tmp46_ == _tmp47_;
	_tmp48_ = cl;
	_tmp49_ = vala_get_ccode_name ((ValaCodeNode*) _tmp48_);
	_tmp50_ = _tmp49_;
	_tmp51_ = g_strdup_printf ("_%s", _tmp50_);
	_tmp52_ = _tmp51_;
	_tmp53_ = vala_ccode_struct_new (_tmp52_);
	_tmp54_ = _tmp53_;
	_g_free0 (_tmp52_);
	_g_free0 (_tmp50_);
	instance_struct = _tmp54_;
	_tmp55_ = cl;
	_tmp56_ = vala_get_ccode_name ((ValaCodeNode*) _tmp55_);
	_tmp57_ = _tmp56_;
	_tmp58_ = g_strdup_printf ("_%sClass", _tmp57_);
	_tmp59_ = _tmp58_;
	_tmp60_ = vala_ccode_struct_new (_tmp59_);
	_tmp61_ = _tmp60_;
	_g_free0 (_tmp59_);
	_g_free0 (_tmp57_);
	type_struct = _tmp61_;
	_tmp62_ = cl;
	_tmp63_ = vala_class_get_base_class (_tmp62_);
	_tmp64_ = _tmp63_;
	if (_tmp64_ != NULL) {
		ValaCCodeStruct* _tmp65_;
		ValaClass* _tmp66_;
		ValaClass* _tmp67_;
		ValaClass* _tmp68_;
		gchar* _tmp69_;
		gchar* _tmp70_;
		_tmp65_ = instance_struct;
		_tmp66_ = cl;
		_tmp67_ = vala_class_get_base_class (_tmp66_);
		_tmp68_ = _tmp67_;
		_tmp69_ = vala_get_ccode_name ((ValaCodeNode*) _tmp68_);
		_tmp70_ = _tmp69_;
		vala_ccode_struct_add_field (_tmp65_, _tmp70_, "parent_instance", 0, NULL);
		_g_free0 (_tmp70_);
	} else {
		gboolean _tmp71_;
		_tmp71_ = is_fundamental;
		if (_tmp71_) {
			ValaCCodeFile* _tmp72_;
			ValaCCodeStruct* _tmp73_;
			ValaCCodeStruct* _tmp74_;
			_tmp72_ = decl_space;
			vala_ccode_file_add_include (_tmp72_, "glib-object.h", FALSE);
			_tmp73_ = instance_struct;
			vala_ccode_struct_add_field (_tmp73_, "GTypeInstance", "parent_instance", 0, NULL);
			_tmp74_ = instance_struct;
			vala_ccode_struct_add_field (_tmp74_, "volatile int", "ref_count", 0, NULL);
		}
	}
	_tmp77_ = cl;
	_tmp78_ = vala_class_get_is_compact (_tmp77_);
	_tmp79_ = _tmp78_;
	if (_tmp79_) {
		ValaClass* _tmp80_;
		ValaClass* _tmp81_;
		ValaClass* _tmp82_;
		_tmp80_ = cl;
		_tmp81_ = vala_class_get_base_class (_tmp80_);
		_tmp82_ = _tmp81_;
		_tmp76_ = _tmp82_ == NULL;
	} else {
		_tmp76_ = FALSE;
	}
	if (_tmp76_) {
		ValaClass* _tmp83_;
		ValaList* _tmp84_;
		ValaList* _tmp85_;
		gint _tmp86_;
		gint _tmp87_;
		_tmp83_ = cl;
		_tmp84_ = vala_class_get_fields (_tmp83_);
		_tmp85_ = _tmp84_;
		_tmp86_ = vala_collection_get_size ((ValaCollection*) _tmp85_);
		_tmp87_ = _tmp86_;
		_tmp75_ = _tmp87_ == 0;
		_vala_iterable_unref0 (_tmp85_);
	} else {
		_tmp75_ = FALSE;
	}
	if (_tmp75_) {
		ValaCCodeStruct* _tmp88_;
		_tmp88_ = instance_struct;
		vala_ccode_struct_add_field (_tmp88_, "int", "dummy", 0, NULL);
	}
	_tmp89_ = is_gtypeinstance;
	if (_tmp89_) {
		ValaCCodeFile* _tmp90_;
		ValaCCodeStruct* _tmp91_;
		const gchar* _tmp92_;
		const gchar* _tmp93_;
		gchar* _tmp94_;
		gchar* _tmp95_;
		ValaClass* _tmp96_;
		gchar* _tmp97_;
		gchar* _tmp98_;
		gchar* _tmp99_;
		gchar* _tmp100_;
		ValaCCodeVariableDeclarator* _tmp101_;
		ValaCCodeVariableDeclarator* _tmp102_;
		ValaCCodeTypeDefinition* _tmp103_;
		ValaCCodeTypeDefinition* _tmp104_;
		ValaCCodeStruct* _tmp105_;
		ValaClass* _tmp106_;
		gchar* _tmp107_;
		gchar* _tmp108_;
		gchar* _tmp109_;
		gchar* _tmp110_;
		gboolean _tmp111_;
		gboolean _tmp121_;
		_tmp90_ = decl_space;
		_tmp91_ = instance_struct;
		_tmp92_ = vala_ccode_struct_get_name (_tmp91_);
		_tmp93_ = _tmp92_;
		_tmp94_ = g_strdup_printf ("struct %sPrivate", _tmp93_);
		_tmp95_ = _tmp94_;
		_tmp96_ = cl;
		_tmp97_ = vala_get_ccode_name ((ValaCodeNode*) _tmp96_);
		_tmp98_ = _tmp97_;
		_tmp99_ = g_strdup_printf ("%sPrivate", _tmp98_);
		_tmp100_ = _tmp99_;
		_tmp101_ = vala_ccode_variable_declarator_new (_tmp100_, NULL, NULL);
		_tmp102_ = _tmp101_;
		_tmp103_ = vala_ccode_type_definition_new (_tmp95_, (ValaCCodeDeclarator*) _tmp102_);
		_tmp104_ = _tmp103_;
		vala_ccode_file_add_type_declaration (_tmp90_, (ValaCCodeNode*) _tmp104_);
		_vala_ccode_node_unref0 (_tmp104_);
		_vala_ccode_node_unref0 (_tmp102_);
		_g_free0 (_tmp100_);
		_g_free0 (_tmp98_);
		_g_free0 (_tmp95_);
		_tmp105_ = instance_struct;
		_tmp106_ = cl;
		_tmp107_ = vala_get_ccode_name ((ValaCodeNode*) _tmp106_);
		_tmp108_ = _tmp107_;
		_tmp109_ = g_strdup_printf ("%sPrivate *", _tmp108_);
		_tmp110_ = _tmp109_;
		vala_ccode_struct_add_field (_tmp105_, _tmp110_, "priv", 0, NULL);
		_g_free0 (_tmp110_);
		_g_free0 (_tmp108_);
		_tmp111_ = is_fundamental;
		if (_tmp111_) {
			ValaCCodeStruct* _tmp112_;
			_tmp112_ = type_struct;
			vala_ccode_struct_add_field (_tmp112_, "GTypeClass", "parent_class", 0, NULL);
		} else {
			ValaCCodeStruct* _tmp113_;
			ValaClass* _tmp114_;
			ValaClass* _tmp115_;
			ValaClass* _tmp116_;
			gchar* _tmp117_;
			gchar* _tmp118_;
			gchar* _tmp119_;
			gchar* _tmp120_;
			_tmp113_ = type_struct;
			_tmp114_ = cl;
			_tmp115_ = vala_class_get_base_class (_tmp114_);
			_tmp116_ = _tmp115_;
			_tmp117_ = vala_get_ccode_name ((ValaCodeNode*) _tmp116_);
			_tmp118_ = _tmp117_;
			_tmp119_ = g_strdup_printf ("%sClass", _tmp118_);
			_tmp120_ = _tmp119_;
			vala_ccode_struct_add_field (_tmp113_, _tmp120_, "parent_class", 0, NULL);
			_g_free0 (_tmp120_);
			_g_free0 (_tmp118_);
		}
		_tmp121_ = is_fundamental;
		if (_tmp121_) {
			ValaCCodeStruct* _tmp122_;
			ValaClass* _tmp123_;
			gchar* _tmp124_;
			gchar* _tmp125_;
			gchar* _tmp126_;
			gchar* _tmp127_;
			_tmp122_ = type_struct;
			_tmp123_ = cl;
			_tmp124_ = vala_get_ccode_name ((ValaCodeNode*) _tmp123_);
			_tmp125_ = _tmp124_;
			_tmp126_ = g_strdup_printf ("(*finalize) (%s *self)", _tmp125_);
			_tmp127_ = _tmp126_;
			vala_ccode_struct_add_field (_tmp122_, "void", _tmp127_, 0, NULL);
			_g_free0 (_tmp127_);
			_g_free0 (_tmp125_);
		}
	}
	{
		ValaList* _m_list = NULL;
		ValaClass* _tmp128_;
		ValaList* _tmp129_;
		gint _m_size = 0;
		ValaList* _tmp130_;
		gint _tmp131_;
		gint _tmp132_;
		gint _m_index = 0;
		_tmp128_ = cl;
		_tmp129_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp128_);
		_m_list = _tmp129_;
		_tmp130_ = _m_list;
		_tmp131_ = vala_collection_get_size ((ValaCollection*) _tmp130_);
		_tmp132_ = _tmp131_;
		_m_size = _tmp132_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp133_;
			gint _tmp134_;
			gint _tmp135_;
			ValaMethod* m = NULL;
			ValaList* _tmp136_;
			gint _tmp137_;
			gpointer _tmp138_;
			ValaMethod* _tmp139_;
			ValaCCodeFile* _tmp140_;
			ValaCCodeStruct* _tmp141_;
			_tmp133_ = _m_index;
			_m_index = _tmp133_ + 1;
			_tmp134_ = _m_index;
			_tmp135_ = _m_size;
			if (!(_tmp134_ < _tmp135_)) {
				break;
			}
			_tmp136_ = _m_list;
			_tmp137_ = _m_index;
			_tmp138_ = vala_list_get (_tmp136_, _tmp137_);
			m = (ValaMethod*) _tmp138_;
			_tmp139_ = m;
			_tmp140_ = decl_space;
			_tmp141_ = type_struct;
			vala_gtype_module_generate_virtual_method_declaration (self, _tmp139_, _tmp140_, _tmp141_);
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	{
		ValaList* _sig_list = NULL;
		ValaClass* _tmp142_;
		ValaList* _tmp143_;
		gint _sig_size = 0;
		ValaList* _tmp144_;
		gint _tmp145_;
		gint _tmp146_;
		gint _sig_index = 0;
		_tmp142_ = cl;
		_tmp143_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp142_);
		_sig_list = _tmp143_;
		_tmp144_ = _sig_list;
		_tmp145_ = vala_collection_get_size ((ValaCollection*) _tmp144_);
		_tmp146_ = _tmp145_;
		_sig_size = _tmp146_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp147_;
			gint _tmp148_;
			gint _tmp149_;
			ValaSignal* sig = NULL;
			ValaList* _tmp150_;
			gint _tmp151_;
			gpointer _tmp152_;
			ValaSignal* _tmp153_;
			ValaMethod* _tmp154_;
			ValaMethod* _tmp155_;
			_tmp147_ = _sig_index;
			_sig_index = _tmp147_ + 1;
			_tmp148_ = _sig_index;
			_tmp149_ = _sig_size;
			if (!(_tmp148_ < _tmp149_)) {
				break;
			}
			_tmp150_ = _sig_list;
			_tmp151_ = _sig_index;
			_tmp152_ = vala_list_get (_tmp150_, _tmp151_);
			sig = (ValaSignal*) _tmp152_;
			_tmp153_ = sig;
			_tmp154_ = vala_signal_get_default_handler (_tmp153_);
			_tmp155_ = _tmp154_;
			if (_tmp155_ != NULL) {
				ValaSignal* _tmp156_;
				ValaMethod* _tmp157_;
				ValaMethod* _tmp158_;
				ValaCCodeFile* _tmp159_;
				ValaCCodeStruct* _tmp160_;
				_tmp156_ = sig;
				_tmp157_ = vala_signal_get_default_handler (_tmp156_);
				_tmp158_ = _tmp157_;
				_tmp159_ = decl_space;
				_tmp160_ = type_struct;
				vala_gtype_module_generate_virtual_method_declaration (self, _tmp158_, _tmp159_, _tmp160_);
			}
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaClass* _tmp161_;
		ValaList* _tmp162_;
		gint _prop_size = 0;
		ValaList* _tmp163_;
		gint _tmp164_;
		gint _tmp165_;
		gint _prop_index = 0;
		_tmp161_ = cl;
		_tmp162_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp161_);
		_prop_list = _tmp162_;
		_tmp163_ = _prop_list;
		_tmp164_ = vala_collection_get_size ((ValaCollection*) _tmp163_);
		_tmp165_ = _tmp164_;
		_prop_size = _tmp165_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp166_;
			gint _tmp167_;
			gint _tmp168_;
			ValaProperty* prop = NULL;
			ValaList* _tmp169_;
			gint _tmp170_;
			gpointer _tmp171_;
			gboolean _tmp172_ = FALSE;
			ValaProperty* _tmp173_;
			gboolean _tmp174_;
			gboolean _tmp175_;
			ValaProperty* _tmp179_;
			ValaDataType* _tmp180_;
			ValaDataType* _tmp181_;
			ValaCCodeFile* _tmp182_;
			ValaObjectTypeSymbol* t = NULL;
			ValaProperty* _tmp183_;
			ValaSymbol* _tmp184_;
			ValaSymbol* _tmp185_;
			ValaObjectTypeSymbol* _tmp186_;
			ValaObjectType* this_type = NULL;
			ValaObjectTypeSymbol* _tmp187_;
			ValaObjectType* _tmp188_;
			ValaCCodeParameter* cselfparam = NULL;
			ValaObjectType* _tmp189_;
			gchar* _tmp190_;
			gchar* _tmp191_;
			ValaCCodeParameter* _tmp192_;
			ValaCCodeParameter* _tmp193_;
			ValaProperty* _tmp194_;
			ValaPropertyAccessor* _tmp195_;
			ValaPropertyAccessor* _tmp196_;
			ValaProperty* _tmp269_;
			ValaPropertyAccessor* _tmp270_;
			ValaPropertyAccessor* _tmp271_;
			_tmp166_ = _prop_index;
			_prop_index = _tmp166_ + 1;
			_tmp167_ = _prop_index;
			_tmp168_ = _prop_size;
			if (!(_tmp167_ < _tmp168_)) {
				break;
			}
			_tmp169_ = _prop_list;
			_tmp170_ = _prop_index;
			_tmp171_ = vala_list_get (_tmp169_, _tmp170_);
			prop = (ValaProperty*) _tmp171_;
			_tmp173_ = prop;
			_tmp174_ = vala_property_get_is_abstract (_tmp173_);
			_tmp175_ = _tmp174_;
			if (!_tmp175_) {
				ValaProperty* _tmp176_;
				gboolean _tmp177_;
				gboolean _tmp178_;
				_tmp176_ = prop;
				_tmp177_ = vala_property_get_is_virtual (_tmp176_);
				_tmp178_ = _tmp177_;
				_tmp172_ = !_tmp178_;
			} else {
				_tmp172_ = FALSE;
			}
			if (_tmp172_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp179_ = prop;
			_tmp180_ = vala_property_get_property_type (_tmp179_);
			_tmp181_ = _tmp180_;
			_tmp182_ = decl_space;
			vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp181_, _tmp182_);
			_tmp183_ = prop;
			_tmp184_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp183_);
			_tmp185_ = _tmp184_;
			_tmp186_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp185_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
			t = _tmp186_;
			_tmp187_ = t;
			_tmp188_ = vala_object_type_new (_tmp187_);
			this_type = _tmp188_;
			_tmp189_ = this_type;
			_tmp190_ = vala_get_ccode_name ((ValaCodeNode*) _tmp189_);
			_tmp191_ = _tmp190_;
			_tmp192_ = vala_ccode_parameter_new ("self", _tmp191_);
			_tmp193_ = _tmp192_;
			_g_free0 (_tmp191_);
			cselfparam = _tmp193_;
			_tmp194_ = prop;
			_tmp195_ = vala_property_get_get_accessor (_tmp194_);
			_tmp196_ = _tmp195_;
			if (_tmp196_ != NULL) {
				ValaCCodeFunctionDeclarator* vdeclarator = NULL;
				ValaProperty* _tmp197_;
				const gchar* _tmp198_;
				const gchar* _tmp199_;
				gchar* _tmp200_;
				gchar* _tmp201_;
				ValaCCodeFunctionDeclarator* _tmp202_;
				ValaCCodeFunctionDeclarator* _tmp203_;
				ValaCCodeFunctionDeclarator* _tmp204_;
				ValaCCodeParameter* _tmp205_;
				gchar* creturn_type = NULL;
				ValaProperty* _tmp206_;
				ValaDataType* _tmp207_;
				ValaDataType* _tmp208_;
				gboolean _tmp209_;
				ValaArrayType* array_type = NULL;
				ValaProperty* _tmp230_;
				ValaDataType* _tmp231_;
				ValaDataType* _tmp232_;
				ValaArrayType* _tmp233_;
				ValaArrayType* _tmp234_;
				ValaCCodeDeclaration* vdecl = NULL;
				const gchar* _tmp263_;
				ValaCCodeDeclaration* _tmp264_;
				ValaCCodeDeclaration* _tmp265_;
				ValaCCodeFunctionDeclarator* _tmp266_;
				ValaCCodeStruct* _tmp267_;
				ValaCCodeDeclaration* _tmp268_;
				_tmp197_ = prop;
				_tmp198_ = vala_symbol_get_name ((ValaSymbol*) _tmp197_);
				_tmp199_ = _tmp198_;
				_tmp200_ = g_strdup_printf ("get_%s", _tmp199_);
				_tmp201_ = _tmp200_;
				_tmp202_ = vala_ccode_function_declarator_new (_tmp201_);
				_tmp203_ = _tmp202_;
				_g_free0 (_tmp201_);
				vdeclarator = _tmp203_;
				_tmp204_ = vdeclarator;
				_tmp205_ = cselfparam;
				vala_ccode_function_declarator_add_parameter (_tmp204_, _tmp205_);
				_tmp206_ = prop;
				_tmp207_ = vala_property_get_property_type (_tmp206_);
				_tmp208_ = _tmp207_;
				_tmp209_ = vala_data_type_is_real_non_null_struct_type (_tmp208_);
				if (_tmp209_) {
					ValaCCodeParameter* cvalueparam = NULL;
					ValaProperty* _tmp210_;
					ValaPropertyAccessor* _tmp211_;
					ValaPropertyAccessor* _tmp212_;
					ValaDataType* _tmp213_;
					ValaDataType* _tmp214_;
					gchar* _tmp215_;
					gchar* _tmp216_;
					gchar* _tmp217_;
					gchar* _tmp218_;
					ValaCCodeParameter* _tmp219_;
					ValaCCodeParameter* _tmp220_;
					ValaCCodeFunctionDeclarator* _tmp221_;
					ValaCCodeParameter* _tmp222_;
					gchar* _tmp223_;
					_tmp210_ = prop;
					_tmp211_ = vala_property_get_get_accessor (_tmp210_);
					_tmp212_ = _tmp211_;
					_tmp213_ = vala_property_accessor_get_value_type (_tmp212_);
					_tmp214_ = _tmp213_;
					_tmp215_ = vala_get_ccode_name ((ValaCodeNode*) _tmp214_);
					_tmp216_ = _tmp215_;
					_tmp217_ = g_strdup_printf ("%s *", _tmp216_);
					_tmp218_ = _tmp217_;
					_tmp219_ = vala_ccode_parameter_new ("result", _tmp218_);
					_tmp220_ = _tmp219_;
					_g_free0 (_tmp218_);
					_g_free0 (_tmp216_);
					cvalueparam = _tmp220_;
					_tmp221_ = vdeclarator;
					_tmp222_ = cvalueparam;
					vala_ccode_function_declarator_add_parameter (_tmp221_, _tmp222_);
					_tmp223_ = g_strdup ("void");
					_g_free0 (creturn_type);
					creturn_type = _tmp223_;
					_vala_ccode_node_unref0 (cvalueparam);
				} else {
					ValaProperty* _tmp224_;
					ValaPropertyAccessor* _tmp225_;
					ValaPropertyAccessor* _tmp226_;
					ValaDataType* _tmp227_;
					ValaDataType* _tmp228_;
					gchar* _tmp229_;
					_tmp224_ = prop;
					_tmp225_ = vala_property_get_get_accessor (_tmp224_);
					_tmp226_ = _tmp225_;
					_tmp227_ = vala_property_accessor_get_value_type (_tmp226_);
					_tmp228_ = _tmp227_;
					_tmp229_ = vala_get_ccode_name ((ValaCodeNode*) _tmp228_);
					_g_free0 (creturn_type);
					creturn_type = _tmp229_;
				}
				_tmp230_ = prop;
				_tmp231_ = vala_property_get_property_type (_tmp230_);
				_tmp232_ = _tmp231_;
				_tmp233_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp232_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp232_) : NULL);
				array_type = _tmp233_;
				_tmp234_ = array_type;
				if (_tmp234_ != NULL) {
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp235_ = FALSE;
							_tmp235_ = TRUE;
							while (TRUE) {
								gint _tmp237_;
								ValaArrayType* _tmp238_;
								gint _tmp239_;
								gint _tmp240_;
								ValaCCodeFunctionDeclarator* _tmp241_;
								gint _tmp242_;
								gchar* _tmp243_;
								gchar* _tmp244_;
								ValaCCodeParameter* _tmp245_;
								ValaCCodeParameter* _tmp246_;
								if (!_tmp235_) {
									gint _tmp236_;
									_tmp236_ = dim;
									dim = _tmp236_ + 1;
								}
								_tmp235_ = FALSE;
								_tmp237_ = dim;
								_tmp238_ = array_type;
								_tmp239_ = vala_array_type_get_rank (_tmp238_);
								_tmp240_ = _tmp239_;
								if (!(_tmp237_ <= _tmp240_)) {
									break;
								}
								_tmp241_ = vdeclarator;
								_tmp242_ = dim;
								_tmp243_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp242_);
								_tmp244_ = _tmp243_;
								_tmp245_ = vala_ccode_parameter_new (_tmp244_, "int*");
								_tmp246_ = _tmp245_;
								vala_ccode_function_declarator_add_parameter (_tmp241_, _tmp246_);
								_vala_ccode_node_unref0 (_tmp246_);
								_g_free0 (_tmp244_);
							}
						}
					}
				} else {
					gboolean _tmp247_ = FALSE;
					ValaProperty* _tmp248_;
					ValaDataType* _tmp249_;
					ValaDataType* _tmp250_;
					_tmp248_ = prop;
					_tmp249_ = vala_property_get_property_type (_tmp248_);
					_tmp250_ = _tmp249_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp250_, VALA_TYPE_DELEGATE_TYPE)) {
						ValaProperty* _tmp251_;
						ValaDataType* _tmp252_;
						ValaDataType* _tmp253_;
						ValaDelegate* _tmp254_;
						ValaDelegate* _tmp255_;
						gboolean _tmp256_;
						gboolean _tmp257_;
						_tmp251_ = prop;
						_tmp252_ = vala_property_get_property_type (_tmp251_);
						_tmp253_ = _tmp252_;
						_tmp254_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp253_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
						_tmp255_ = _tmp254_;
						_tmp256_ = vala_delegate_get_has_target (_tmp255_);
						_tmp257_ = _tmp256_;
						_tmp247_ = _tmp257_;
					} else {
						_tmp247_ = FALSE;
					}
					if (_tmp247_) {
						ValaCCodeFunctionDeclarator* _tmp258_;
						gchar* _tmp259_;
						gchar* _tmp260_;
						ValaCCodeParameter* _tmp261_;
						ValaCCodeParameter* _tmp262_;
						_tmp258_ = vdeclarator;
						_tmp259_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "result");
						_tmp260_ = _tmp259_;
						_tmp261_ = vala_ccode_parameter_new (_tmp260_, "gpointer*");
						_tmp262_ = _tmp261_;
						vala_ccode_function_declarator_add_parameter (_tmp258_, _tmp262_);
						_vala_ccode_node_unref0 (_tmp262_);
						_g_free0 (_tmp260_);
					}
				}
				_tmp263_ = creturn_type;
				_tmp264_ = vala_ccode_declaration_new (_tmp263_);
				vdecl = _tmp264_;
				_tmp265_ = vdecl;
				_tmp266_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp265_, (ValaCCodeDeclarator*) _tmp266_);
				_tmp267_ = type_struct;
				_tmp268_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp267_, _tmp268_);
				_vala_ccode_node_unref0 (vdecl);
				_vala_code_node_unref0 (array_type);
				_g_free0 (creturn_type);
				_vala_ccode_node_unref0 (vdeclarator);
			}
			_tmp269_ = prop;
			_tmp270_ = vala_property_get_set_accessor (_tmp269_);
			_tmp271_ = _tmp270_;
			if (_tmp271_ != NULL) {
				ValaCCodeParameter* cvalueparam = NULL;
				ValaProperty* _tmp272_;
				ValaDataType* _tmp273_;
				ValaDataType* _tmp274_;
				gboolean _tmp275_;
				ValaCCodeFunctionDeclarator* vdeclarator = NULL;
				ValaProperty* _tmp294_;
				const gchar* _tmp295_;
				const gchar* _tmp296_;
				gchar* _tmp297_;
				gchar* _tmp298_;
				ValaCCodeFunctionDeclarator* _tmp299_;
				ValaCCodeFunctionDeclarator* _tmp300_;
				ValaCCodeFunctionDeclarator* _tmp301_;
				ValaCCodeParameter* _tmp302_;
				ValaCCodeFunctionDeclarator* _tmp303_;
				ValaCCodeParameter* _tmp304_;
				ValaArrayType* array_type = NULL;
				ValaProperty* _tmp305_;
				ValaDataType* _tmp306_;
				ValaDataType* _tmp307_;
				ValaArrayType* _tmp308_;
				ValaArrayType* _tmp309_;
				ValaCCodeDeclaration* vdecl = NULL;
				ValaCCodeDeclaration* _tmp338_;
				ValaCCodeDeclaration* _tmp339_;
				ValaCCodeFunctionDeclarator* _tmp340_;
				ValaCCodeStruct* _tmp341_;
				ValaCCodeDeclaration* _tmp342_;
				_tmp272_ = prop;
				_tmp273_ = vala_property_get_property_type (_tmp272_);
				_tmp274_ = _tmp273_;
				_tmp275_ = vala_data_type_is_real_non_null_struct_type (_tmp274_);
				if (_tmp275_) {
					ValaProperty* _tmp276_;
					ValaPropertyAccessor* _tmp277_;
					ValaPropertyAccessor* _tmp278_;
					ValaDataType* _tmp279_;
					ValaDataType* _tmp280_;
					gchar* _tmp281_;
					gchar* _tmp282_;
					gchar* _tmp283_;
					gchar* _tmp284_;
					ValaCCodeParameter* _tmp285_;
					_tmp276_ = prop;
					_tmp277_ = vala_property_get_set_accessor (_tmp276_);
					_tmp278_ = _tmp277_;
					_tmp279_ = vala_property_accessor_get_value_type (_tmp278_);
					_tmp280_ = _tmp279_;
					_tmp281_ = vala_get_ccode_name ((ValaCodeNode*) _tmp280_);
					_tmp282_ = _tmp281_;
					_tmp283_ = g_strdup_printf ("%s *", _tmp282_);
					_tmp284_ = _tmp283_;
					_tmp285_ = vala_ccode_parameter_new ("value", _tmp284_);
					_vala_ccode_node_unref0 (cvalueparam);
					cvalueparam = _tmp285_;
					_g_free0 (_tmp284_);
					_g_free0 (_tmp282_);
				} else {
					ValaProperty* _tmp286_;
					ValaPropertyAccessor* _tmp287_;
					ValaPropertyAccessor* _tmp288_;
					ValaDataType* _tmp289_;
					ValaDataType* _tmp290_;
					gchar* _tmp291_;
					gchar* _tmp292_;
					ValaCCodeParameter* _tmp293_;
					_tmp286_ = prop;
					_tmp287_ = vala_property_get_set_accessor (_tmp286_);
					_tmp288_ = _tmp287_;
					_tmp289_ = vala_property_accessor_get_value_type (_tmp288_);
					_tmp290_ = _tmp289_;
					_tmp291_ = vala_get_ccode_name ((ValaCodeNode*) _tmp290_);
					_tmp292_ = _tmp291_;
					_tmp293_ = vala_ccode_parameter_new ("value", _tmp292_);
					_vala_ccode_node_unref0 (cvalueparam);
					cvalueparam = _tmp293_;
					_g_free0 (_tmp292_);
				}
				_tmp294_ = prop;
				_tmp295_ = vala_symbol_get_name ((ValaSymbol*) _tmp294_);
				_tmp296_ = _tmp295_;
				_tmp297_ = g_strdup_printf ("set_%s", _tmp296_);
				_tmp298_ = _tmp297_;
				_tmp299_ = vala_ccode_function_declarator_new (_tmp298_);
				_tmp300_ = _tmp299_;
				_g_free0 (_tmp298_);
				vdeclarator = _tmp300_;
				_tmp301_ = vdeclarator;
				_tmp302_ = cselfparam;
				vala_ccode_function_declarator_add_parameter (_tmp301_, _tmp302_);
				_tmp303_ = vdeclarator;
				_tmp304_ = cvalueparam;
				vala_ccode_function_declarator_add_parameter (_tmp303_, _tmp304_);
				_tmp305_ = prop;
				_tmp306_ = vala_property_get_property_type (_tmp305_);
				_tmp307_ = _tmp306_;
				_tmp308_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp307_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp307_) : NULL);
				array_type = _tmp308_;
				_tmp309_ = array_type;
				if (_tmp309_ != NULL) {
					{
						gint dim = 0;
						dim = 1;
						{
							gboolean _tmp310_ = FALSE;
							_tmp310_ = TRUE;
							while (TRUE) {
								gint _tmp312_;
								ValaArrayType* _tmp313_;
								gint _tmp314_;
								gint _tmp315_;
								ValaCCodeFunctionDeclarator* _tmp316_;
								gint _tmp317_;
								gchar* _tmp318_;
								gchar* _tmp319_;
								ValaCCodeParameter* _tmp320_;
								ValaCCodeParameter* _tmp321_;
								if (!_tmp310_) {
									gint _tmp311_;
									_tmp311_ = dim;
									dim = _tmp311_ + 1;
								}
								_tmp310_ = FALSE;
								_tmp312_ = dim;
								_tmp313_ = array_type;
								_tmp314_ = vala_array_type_get_rank (_tmp313_);
								_tmp315_ = _tmp314_;
								if (!(_tmp312_ <= _tmp315_)) {
									break;
								}
								_tmp316_ = vdeclarator;
								_tmp317_ = dim;
								_tmp318_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", _tmp317_);
								_tmp319_ = _tmp318_;
								_tmp320_ = vala_ccode_parameter_new (_tmp319_, "int");
								_tmp321_ = _tmp320_;
								vala_ccode_function_declarator_add_parameter (_tmp316_, _tmp321_);
								_vala_ccode_node_unref0 (_tmp321_);
								_g_free0 (_tmp319_);
							}
						}
					}
				} else {
					gboolean _tmp322_ = FALSE;
					ValaProperty* _tmp323_;
					ValaDataType* _tmp324_;
					ValaDataType* _tmp325_;
					_tmp323_ = prop;
					_tmp324_ = vala_property_get_property_type (_tmp323_);
					_tmp325_ = _tmp324_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp325_, VALA_TYPE_DELEGATE_TYPE)) {
						ValaProperty* _tmp326_;
						ValaDataType* _tmp327_;
						ValaDataType* _tmp328_;
						ValaDelegate* _tmp329_;
						ValaDelegate* _tmp330_;
						gboolean _tmp331_;
						gboolean _tmp332_;
						_tmp326_ = prop;
						_tmp327_ = vala_property_get_property_type (_tmp326_);
						_tmp328_ = _tmp327_;
						_tmp329_ = vala_delegate_type_get_delegate_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp328_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
						_tmp330_ = _tmp329_;
						_tmp331_ = vala_delegate_get_has_target (_tmp330_);
						_tmp332_ = _tmp331_;
						_tmp322_ = _tmp332_;
					} else {
						_tmp322_ = FALSE;
					}
					if (_tmp322_) {
						ValaCCodeFunctionDeclarator* _tmp333_;
						gchar* _tmp334_;
						gchar* _tmp335_;
						ValaCCodeParameter* _tmp336_;
						ValaCCodeParameter* _tmp337_;
						_tmp333_ = vdeclarator;
						_tmp334_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, "value");
						_tmp335_ = _tmp334_;
						_tmp336_ = vala_ccode_parameter_new (_tmp335_, "gpointer");
						_tmp337_ = _tmp336_;
						vala_ccode_function_declarator_add_parameter (_tmp333_, _tmp337_);
						_vala_ccode_node_unref0 (_tmp337_);
						_g_free0 (_tmp335_);
					}
				}
				_tmp338_ = vala_ccode_declaration_new ("void");
				vdecl = _tmp338_;
				_tmp339_ = vdecl;
				_tmp340_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp339_, (ValaCCodeDeclarator*) _tmp340_);
				_tmp341_ = type_struct;
				_tmp342_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp341_, _tmp342_);
				_vala_ccode_node_unref0 (vdecl);
				_vala_code_node_unref0 (array_type);
				_vala_ccode_node_unref0 (vdeclarator);
				_vala_ccode_node_unref0 (cvalueparam);
			}
			_vala_ccode_node_unref0 (cselfparam);
			_vala_code_node_unref0 (this_type);
			_vala_code_node_unref0 (t);
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	{
		ValaList* _f_list = NULL;
		ValaClass* _tmp343_;
		ValaList* _tmp344_;
		gint _f_size = 0;
		ValaList* _tmp345_;
		gint _tmp346_;
		gint _tmp347_;
		gint _f_index = 0;
		_tmp343_ = cl;
		_tmp344_ = vala_class_get_fields (_tmp343_);
		_f_list = _tmp344_;
		_tmp345_ = _f_list;
		_tmp346_ = vala_collection_get_size ((ValaCollection*) _tmp345_);
		_tmp347_ = _tmp346_;
		_f_size = _tmp347_;
		_f_index = -1;
		while (TRUE) {
			gint _tmp348_;
			gint _tmp349_;
			gint _tmp350_;
			ValaField* f = NULL;
			ValaList* _tmp351_;
			gint _tmp352_;
			gpointer _tmp353_;
			ValaField* _tmp354_;
			ValaSymbolAccessibility _tmp355_;
			ValaSymbolAccessibility _tmp356_;
			_tmp348_ = _f_index;
			_f_index = _tmp348_ + 1;
			_tmp349_ = _f_index;
			_tmp350_ = _f_size;
			if (!(_tmp349_ < _tmp350_)) {
				break;
			}
			_tmp351_ = _f_list;
			_tmp352_ = _f_index;
			_tmp353_ = vala_list_get (_tmp351_, _tmp352_);
			f = (ValaField*) _tmp353_;
			_tmp354_ = f;
			_tmp355_ = vala_symbol_get_access ((ValaSymbol*) _tmp354_);
			_tmp356_ = _tmp355_;
			if (_tmp356_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
				ValaCCodeModifiers _tmp357_ = 0;
				ValaField* _tmp358_;
				gboolean _tmp359_;
				gboolean _tmp360_;
				ValaCCodeModifiers _tmp361_ = 0;
				ValaField* _tmp362_;
				ValaVersionAttribute* _tmp363_;
				ValaVersionAttribute* _tmp364_;
				gboolean _tmp365_;
				gboolean _tmp366_;
				ValaCCodeModifiers modifiers = 0;
				ValaField* _tmp367_;
				ValaMemberBinding _tmp368_;
				ValaMemberBinding _tmp369_;
				_tmp358_ = f;
				_tmp359_ = vala_field_get_is_volatile (_tmp358_);
				_tmp360_ = _tmp359_;
				if (_tmp360_) {
					_tmp357_ = VALA_CCODE_MODIFIERS_VOLATILE;
				} else {
					_tmp357_ = 0;
				}
				_tmp362_ = f;
				_tmp363_ = vala_symbol_get_version ((ValaSymbol*) _tmp362_);
				_tmp364_ = _tmp363_;
				_tmp365_ = vala_version_attribute_get_deprecated (_tmp364_);
				_tmp366_ = _tmp365_;
				if (_tmp366_) {
					_tmp361_ = VALA_CCODE_MODIFIERS_DEPRECATED;
				} else {
					_tmp361_ = 0;
				}
				modifiers = _tmp357_ | _tmp361_;
				_tmp367_ = f;
				_tmp368_ = vala_field_get_binding (_tmp367_);
				_tmp369_ = _tmp368_;
				if (_tmp369_ == VALA_MEMBER_BINDING_INSTANCE) {
					ValaField* _tmp370_;
					ValaDataType* _tmp371_;
					ValaDataType* _tmp372_;
					ValaCCodeFile* _tmp373_;
					ValaCCodeStruct* _tmp374_;
					ValaField* _tmp375_;
					ValaDataType* _tmp376_;
					ValaDataType* _tmp377_;
					gchar* _tmp378_;
					gchar* _tmp379_;
					ValaField* _tmp380_;
					gchar* _tmp381_;
					gchar* _tmp382_;
					ValaCCodeModifiers _tmp383_;
					ValaField* _tmp384_;
					ValaDataType* _tmp385_;
					ValaDataType* _tmp386_;
					ValaCCodeDeclaratorSuffix* _tmp387_;
					ValaCCodeDeclaratorSuffix* _tmp388_;
					gboolean _tmp389_ = FALSE;
					ValaField* _tmp390_;
					ValaDataType* _tmp391_;
					ValaDataType* _tmp392_;
					_tmp370_ = f;
					_tmp371_ = vala_variable_get_variable_type ((ValaVariable*) _tmp370_);
					_tmp372_ = _tmp371_;
					_tmp373_ = decl_space;
					vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp372_, _tmp373_);
					_tmp374_ = instance_struct;
					_tmp375_ = f;
					_tmp376_ = vala_variable_get_variable_type ((ValaVariable*) _tmp375_);
					_tmp377_ = _tmp376_;
					_tmp378_ = vala_get_ccode_name ((ValaCodeNode*) _tmp377_);
					_tmp379_ = _tmp378_;
					_tmp380_ = f;
					_tmp381_ = vala_get_ccode_name ((ValaCodeNode*) _tmp380_);
					_tmp382_ = _tmp381_;
					_tmp383_ = modifiers;
					_tmp384_ = f;
					_tmp385_ = vala_variable_get_variable_type ((ValaVariable*) _tmp384_);
					_tmp386_ = _tmp385_;
					_tmp387_ = vala_ccode_base_module_get_ccode_declarator_suffix ((ValaCCodeBaseModule*) self, _tmp386_);
					_tmp388_ = _tmp387_;
					vala_ccode_struct_add_field (_tmp374_, _tmp379_, _tmp382_, _tmp383_, _tmp388_);
					_vala_ccode_declarator_suffix_unref0 (_tmp388_);
					_g_free0 (_tmp382_);
					_g_free0 (_tmp379_);
					_tmp390_ = f;
					_tmp391_ = vala_variable_get_variable_type ((ValaVariable*) _tmp390_);
					_tmp392_ = _tmp391_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp392_, VALA_TYPE_ARRAY_TYPE)) {
						ValaField* _tmp393_;
						gboolean _tmp394_;
						_tmp393_ = f;
						_tmp394_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp393_);
						_tmp389_ = _tmp394_;
					} else {
						_tmp389_ = FALSE;
					}
					if (_tmp389_) {
						ValaArrayType* array_type = NULL;
						ValaField* _tmp395_;
						ValaDataType* _tmp396_;
						ValaDataType* _tmp397_;
						ValaArrayType* _tmp398_;
						ValaArrayType* _tmp399_;
						gboolean _tmp400_;
						gboolean _tmp401_;
						_tmp395_ = f;
						_tmp396_ = vala_variable_get_variable_type ((ValaVariable*) _tmp395_);
						_tmp397_ = _tmp396_;
						_tmp398_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp397_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
						array_type = _tmp398_;
						_tmp399_ = array_type;
						_tmp400_ = vala_array_type_get_fixed_length (_tmp399_);
						_tmp401_ = _tmp400_;
						if (!_tmp401_) {
							ValaDataType* len_type = NULL;
							ValaDataType* _tmp402_;
							ValaDataType* _tmp403_;
							gboolean _tmp426_ = FALSE;
							ValaArrayType* _tmp427_;
							gint _tmp428_;
							gint _tmp429_;
							_tmp402_ = ((ValaCCodeBaseModule*) self)->int_type;
							_tmp403_ = vala_data_type_copy (_tmp402_);
							len_type = _tmp403_;
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp404_ = FALSE;
									_tmp404_ = TRUE;
									while (TRUE) {
										gint _tmp406_;
										ValaArrayType* _tmp407_;
										gint _tmp408_;
										gint _tmp409_;
										gchar* length_cname = NULL;
										ValaField* _tmp410_;
										gchar* _tmp411_;
										gchar* _tmp412_;
										gboolean _tmp413_;
										ValaCCodeStruct* _tmp421_;
										ValaDataType* _tmp422_;
										gchar* _tmp423_;
										gchar* _tmp424_;
										const gchar* _tmp425_;
										if (!_tmp404_) {
											gint _tmp405_;
											_tmp405_ = dim;
											dim = _tmp405_ + 1;
										}
										_tmp404_ = FALSE;
										_tmp406_ = dim;
										_tmp407_ = array_type;
										_tmp408_ = vala_array_type_get_rank (_tmp407_);
										_tmp409_ = _tmp408_;
										if (!(_tmp406_ <= _tmp409_)) {
											break;
										}
										_tmp410_ = f;
										_tmp411_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp410_);
										_tmp412_ = _tmp411_;
										_tmp413_ = _tmp412_ != NULL;
										_g_free0 (_tmp412_);
										if (_tmp413_) {
											ValaField* _tmp414_;
											gchar* _tmp415_;
											_tmp414_ = f;
											_tmp415_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp414_);
											_g_free0 (length_cname);
											length_cname = _tmp415_;
										} else {
											ValaField* _tmp416_;
											gchar* _tmp417_;
											gchar* _tmp418_;
											gint _tmp419_;
											gchar* _tmp420_;
											_tmp416_ = f;
											_tmp417_ = vala_get_ccode_name ((ValaCodeNode*) _tmp416_);
											_tmp418_ = _tmp417_;
											_tmp419_ = dim;
											_tmp420_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp418_, _tmp419_);
											_g_free0 (length_cname);
											length_cname = _tmp420_;
											_g_free0 (_tmp418_);
										}
										_tmp421_ = instance_struct;
										_tmp422_ = len_type;
										_tmp423_ = vala_get_ccode_name ((ValaCodeNode*) _tmp422_);
										_tmp424_ = _tmp423_;
										_tmp425_ = length_cname;
										vala_ccode_struct_add_field (_tmp421_, _tmp424_, _tmp425_, 0, NULL);
										_g_free0 (_tmp424_);
										_g_free0 (length_cname);
									}
								}
							}
							_tmp427_ = array_type;
							_tmp428_ = vala_array_type_get_rank (_tmp427_);
							_tmp429_ = _tmp428_;
							if (_tmp429_ == 1) {
								ValaField* _tmp430_;
								gboolean _tmp431_;
								_tmp430_ = f;
								_tmp431_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp430_);
								_tmp426_ = _tmp431_;
							} else {
								_tmp426_ = FALSE;
							}
							if (_tmp426_) {
								ValaCCodeStruct* _tmp432_;
								ValaDataType* _tmp433_;
								gchar* _tmp434_;
								gchar* _tmp435_;
								ValaField* _tmp436_;
								gchar* _tmp437_;
								gchar* _tmp438_;
								gchar* _tmp439_;
								gchar* _tmp440_;
								_tmp432_ = instance_struct;
								_tmp433_ = len_type;
								_tmp434_ = vala_get_ccode_name ((ValaCodeNode*) _tmp433_);
								_tmp435_ = _tmp434_;
								_tmp436_ = f;
								_tmp437_ = vala_get_ccode_name ((ValaCodeNode*) _tmp436_);
								_tmp438_ = _tmp437_;
								_tmp439_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp438_);
								_tmp440_ = _tmp439_;
								vala_ccode_struct_add_field (_tmp432_, _tmp435_, _tmp440_, 0, NULL);
								_g_free0 (_tmp440_);
								_g_free0 (_tmp438_);
								_g_free0 (_tmp435_);
							}
							_vala_code_node_unref0 (len_type);
						}
						_vala_code_node_unref0 (array_type);
					} else {
						ValaField* _tmp441_;
						ValaDataType* _tmp442_;
						ValaDataType* _tmp443_;
						_tmp441_ = f;
						_tmp442_ = vala_variable_get_variable_type ((ValaVariable*) _tmp441_);
						_tmp443_ = _tmp442_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp443_, VALA_TYPE_DELEGATE_TYPE)) {
							ValaDelegateType* delegate_type = NULL;
							ValaField* _tmp444_;
							ValaDataType* _tmp445_;
							ValaDataType* _tmp446_;
							ValaDelegateType* _tmp447_;
							ValaDelegateType* _tmp448_;
							ValaDelegate* _tmp449_;
							ValaDelegate* _tmp450_;
							gboolean _tmp451_;
							gboolean _tmp452_;
							_tmp444_ = f;
							_tmp445_ = vala_variable_get_variable_type ((ValaVariable*) _tmp444_);
							_tmp446_ = _tmp445_;
							_tmp447_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp446_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
							delegate_type = _tmp447_;
							_tmp448_ = delegate_type;
							_tmp449_ = vala_delegate_type_get_delegate_symbol (_tmp448_);
							_tmp450_ = _tmp449_;
							_tmp451_ = vala_delegate_get_has_target (_tmp450_);
							_tmp452_ = _tmp451_;
							if (_tmp452_) {
								ValaCCodeStruct* _tmp453_;
								ValaField* _tmp454_;
								gchar* _tmp455_;
								gchar* _tmp456_;
								ValaDelegateType* _tmp457_;
								gboolean _tmp458_;
								_tmp453_ = instance_struct;
								_tmp454_ = f;
								_tmp455_ = vala_get_ccode_delegate_target_name ((ValaVariable*) _tmp454_);
								_tmp456_ = _tmp455_;
								vala_ccode_struct_add_field (_tmp453_, "gpointer", _tmp456_, 0, NULL);
								_g_free0 (_tmp456_);
								_tmp457_ = delegate_type;
								_tmp458_ = vala_data_type_is_disposable ((ValaDataType*) _tmp457_);
								if (_tmp458_) {
									ValaCCodeStruct* _tmp459_;
									ValaField* _tmp460_;
									gchar* _tmp461_;
									gchar* _tmp462_;
									gchar* _tmp463_;
									gchar* _tmp464_;
									_tmp459_ = instance_struct;
									_tmp460_ = f;
									_tmp461_ = vala_get_ccode_name ((ValaCodeNode*) _tmp460_);
									_tmp462_ = _tmp461_;
									_tmp463_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp462_);
									_tmp464_ = _tmp463_;
									vala_ccode_struct_add_field (_tmp459_, "GDestroyNotify", _tmp464_, 0, NULL);
									_g_free0 (_tmp464_);
									_g_free0 (_tmp462_);
								}
							}
							_vala_code_node_unref0 (delegate_type);
						}
					}
				} else {
					ValaField* _tmp465_;
					ValaMemberBinding _tmp466_;
					ValaMemberBinding _tmp467_;
					_tmp465_ = f;
					_tmp466_ = vala_field_get_binding (_tmp465_);
					_tmp467_ = _tmp466_;
					if (_tmp467_ == VALA_MEMBER_BINDING_CLASS) {
						ValaCCodeStruct* _tmp468_;
						ValaField* _tmp469_;
						ValaDataType* _tmp470_;
						ValaDataType* _tmp471_;
						gchar* _tmp472_;
						gchar* _tmp473_;
						ValaField* _tmp474_;
						gchar* _tmp475_;
						gchar* _tmp476_;
						ValaCCodeModifiers _tmp477_;
						_tmp468_ = type_struct;
						_tmp469_ = f;
						_tmp470_ = vala_variable_get_variable_type ((ValaVariable*) _tmp469_);
						_tmp471_ = _tmp470_;
						_tmp472_ = vala_get_ccode_name ((ValaCodeNode*) _tmp471_);
						_tmp473_ = _tmp472_;
						_tmp474_ = f;
						_tmp475_ = vala_get_ccode_name ((ValaCodeNode*) _tmp474_);
						_tmp476_ = _tmp475_;
						_tmp477_ = modifiers;
						vala_ccode_struct_add_field (_tmp468_, _tmp473_, _tmp476_, _tmp477_, NULL);
						_g_free0 (_tmp476_);
						_g_free0 (_tmp473_);
					}
				}
			}
			_vala_code_node_unref0 (f);
		}
		_vala_iterable_unref0 (_f_list);
	}
	_tmp480_ = cl;
	_tmp481_ = vala_class_get_is_compact (_tmp480_);
	_tmp482_ = _tmp481_;
	if (!_tmp482_) {
		_tmp479_ = TRUE;
	} else {
		ValaClass* _tmp483_;
		ValaClass* _tmp484_;
		ValaClass* _tmp485_;
		_tmp483_ = cl;
		_tmp484_ = vala_class_get_base_class (_tmp483_);
		_tmp485_ = _tmp484_;
		_tmp479_ = _tmp485_ == NULL;
	}
	if (_tmp479_) {
		_tmp478_ = TRUE;
	} else {
		gboolean _tmp486_;
		_tmp486_ = is_gsource;
		_tmp478_ = _tmp486_;
	}
	if (_tmp478_) {
		ValaCCodeFile* _tmp487_;
		ValaCCodeStruct* _tmp488_;
		_tmp487_ = decl_space;
		_tmp488_ = instance_struct;
		vala_ccode_file_add_type_definition (_tmp487_, (ValaCCodeNode*) _tmp488_);
	}
	_tmp489_ = is_gtypeinstance;
	if (_tmp489_) {
		ValaCCodeFile* _tmp490_;
		ValaCCodeStruct* _tmp491_;
		_tmp490_ = decl_space;
		_tmp491_ = type_struct;
		vala_ccode_file_add_type_definition (_tmp490_, (ValaCCodeNode*) _tmp491_);
	}
	_vala_ccode_node_unref0 (type_struct);
	_vala_ccode_node_unref0 (instance_struct);
}


static void vala_gtype_module_real_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct) {
	gboolean _tmp0_ = FALSE;
	ValaMethod* _tmp1_;
	gboolean _tmp2_;
	gboolean _tmp3_;
	ValaDataType* creturn_type = NULL;
	ValaMethod* _tmp7_;
	ValaDataType* _tmp8_;
	ValaDataType* _tmp9_;
	ValaDataType* _tmp10_;
	ValaMethod* _tmp11_;
	ValaDataType* _tmp12_;
	ValaDataType* _tmp13_;
	gboolean _tmp14_;
	ValaCCodeFunctionDeclarator* vdeclarator = NULL;
	ValaMethod* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	ValaCCodeFunctionDeclarator* _tmp19_;
	ValaCCodeFunctionDeclarator* _tmp20_;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp21_;
	GEqualFunc _tmp22_;
	GEqualFunc _tmp23_;
	ValaHashMap* _tmp24_;
	ValaMethod* _tmp25_;
	gboolean _tmp26_;
	gboolean _tmp27_;
	ValaMethod* _tmp39_;
	ValaVersionAttribute* _tmp40_;
	ValaVersionAttribute* _tmp41_;
	gboolean _tmp42_;
	gboolean _tmp43_;
	ValaMethod* _tmp48_;
	ValaCCodeFile* _tmp49_;
	ValaHashMap* _tmp50_;
	ValaCCodeFunction* _tmp51_;
	ValaCCodeFunction* _tmp52_;
	ValaCCodeFunctionDeclarator* _tmp53_;
	ValaCCodeDeclaration* vdecl = NULL;
	ValaDataType* _tmp54_;
	gchar* _tmp55_;
	gchar* _tmp56_;
	ValaCCodeDeclaration* _tmp57_;
	ValaCCodeDeclaration* _tmp58_;
	ValaCCodeDeclaration* _tmp59_;
	ValaCCodeFunctionDeclarator* _tmp60_;
	ValaCCodeStruct* _tmp61_;
	ValaCCodeDeclaration* _tmp62_;
	g_return_if_fail (m != NULL);
	g_return_if_fail (decl_space != NULL);
	g_return_if_fail (type_struct != NULL);
	_tmp1_ = m;
	_tmp2_ = vala_method_get_is_abstract (_tmp1_);
	_tmp3_ = _tmp2_;
	if (!_tmp3_) {
		ValaMethod* _tmp4_;
		gboolean _tmp5_;
		gboolean _tmp6_;
		_tmp4_ = m;
		_tmp5_ = vala_method_get_is_virtual (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = !_tmp6_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		return;
	}
	_tmp7_ = m;
	_tmp8_ = vala_callable_get_return_type ((ValaCallable*) _tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = _vala_code_node_ref0 (_tmp9_);
	creturn_type = _tmp10_;
	_tmp11_ = m;
	_tmp12_ = vala_callable_get_return_type ((ValaCallable*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_data_type_is_real_non_null_struct_type (_tmp13_);
	if (_tmp14_) {
		ValaVoidType* _tmp15_;
		_tmp15_ = vala_void_type_new (NULL);
		_vala_code_node_unref0 (creturn_type);
		creturn_type = (ValaDataType*) _tmp15_;
	}
	_tmp16_ = m;
	_tmp17_ = vala_get_ccode_vfunc_name (_tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_function_declarator_new (_tmp18_);
	_tmp20_ = _tmp19_;
	_g_free0 (_tmp18_);
	vdeclarator = _tmp20_;
	_tmp21_ = g_direct_hash;
	_tmp22_ = g_direct_equal;
	_tmp23_ = g_direct_equal;
	_tmp24_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp21_, _tmp22_, _tmp23_);
	cparam_map = _tmp24_;
	_tmp25_ = m;
	_tmp26_ = vala_method_get_printf_format (_tmp25_);
	_tmp27_ = _tmp26_;
	if (_tmp27_) {
		ValaCCodeFunctionDeclarator* _tmp28_;
		ValaCCodeFunctionDeclarator* _tmp29_;
		ValaCCodeModifiers _tmp30_;
		ValaCCodeModifiers _tmp31_;
		_tmp28_ = vdeclarator;
		_tmp29_ = vdeclarator;
		_tmp30_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp29_);
		_tmp31_ = _tmp30_;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp29_, _tmp31_ | VALA_CCODE_MODIFIERS_PRINTF);
	} else {
		ValaMethod* _tmp32_;
		gboolean _tmp33_;
		gboolean _tmp34_;
		_tmp32_ = m;
		_tmp33_ = vala_method_get_scanf_format (_tmp32_);
		_tmp34_ = _tmp33_;
		if (_tmp34_) {
			ValaCCodeFunctionDeclarator* _tmp35_;
			ValaCCodeFunctionDeclarator* _tmp36_;
			ValaCCodeModifiers _tmp37_;
			ValaCCodeModifiers _tmp38_;
			_tmp35_ = vdeclarator;
			_tmp36_ = vdeclarator;
			_tmp37_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp36_);
			_tmp38_ = _tmp37_;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp36_, _tmp38_ | VALA_CCODE_MODIFIERS_SCANF);
		}
	}
	_tmp39_ = m;
	_tmp40_ = vala_symbol_get_version ((ValaSymbol*) _tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = vala_version_attribute_get_deprecated (_tmp41_);
	_tmp43_ = _tmp42_;
	if (_tmp43_) {
		ValaCCodeFunctionDeclarator* _tmp44_;
		ValaCCodeFunctionDeclarator* _tmp45_;
		ValaCCodeModifiers _tmp46_;
		ValaCCodeModifiers _tmp47_;
		_tmp44_ = vdeclarator;
		_tmp45_ = vdeclarator;
		_tmp46_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp45_);
		_tmp47_ = _tmp46_;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp45_, _tmp47_ | VALA_CCODE_MODIFIERS_DEPRECATED);
	}
	_tmp48_ = m;
	_tmp49_ = decl_space;
	_tmp50_ = cparam_map;
	_tmp51_ = vala_ccode_function_new ("fake", "void");
	_tmp52_ = _tmp51_;
	_tmp53_ = vdeclarator;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp48_, _tmp49_, (ValaMap*) _tmp50_, _tmp52_, _tmp53_, NULL, NULL, 3);
	_vala_ccode_node_unref0 (_tmp52_);
	_tmp54_ = creturn_type;
	_tmp55_ = vala_get_ccode_name ((ValaCodeNode*) _tmp54_);
	_tmp56_ = _tmp55_;
	_tmp57_ = vala_ccode_declaration_new (_tmp56_);
	_tmp58_ = _tmp57_;
	_g_free0 (_tmp56_);
	vdecl = _tmp58_;
	_tmp59_ = vdecl;
	_tmp60_ = vdeclarator;
	vala_ccode_declaration_add_declarator (_tmp59_, (ValaCCodeDeclarator*) _tmp60_);
	_tmp61_ = type_struct;
	_tmp62_ = vdecl;
	vala_ccode_struct_add_declaration (_tmp61_, _tmp62_);
	_vala_ccode_node_unref0 (vdecl);
	_vala_map_unref0 (cparam_map);
	_vala_ccode_node_unref0 (vdeclarator);
	_vala_code_node_unref0 (creturn_type);
}


void vala_gtype_module_generate_virtual_method_declaration (ValaGTypeModule* self, ValaMethod* m, ValaCCodeFile* decl_space, ValaCCodeStruct* type_struct) {
	g_return_if_fail (self != NULL);
	VALA_GTYPE_MODULE_GET_CLASS (self)->generate_virtual_method_declaration (self, m, decl_space, type_struct);
}


static void vala_gtype_module_generate_class_private_declaration (ValaGTypeModule* self, ValaClass* cl, ValaCCodeFile* decl_space) {
	ValaCCodeFile* _tmp0_;
	ValaClass* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gboolean _tmp6_;
	gboolean _tmp7_;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp8_;
	gboolean _tmp9_;
	gboolean _tmp10_;
	gboolean has_class_locks = FALSE;
	ValaCCodeStruct* instance_priv_struct = NULL;
	ValaClass* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	ValaCCodeStruct* _tmp16_;
	ValaCCodeStruct* _tmp17_;
	ValaCCodeStruct* type_priv_struct = NULL;
	ValaClass* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	ValaCCodeStruct* _tmp23_;
	ValaCCodeStruct* _tmp24_;
	gboolean _tmp25_;
	gboolean _tmp262_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = cl;
	_tmp2_ = vala_get_ccode_name ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%sPrivate", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_file_add_declaration (_tmp0_, _tmp5_);
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	if (_tmp7_) {
		return;
	}
	_tmp8_ = cl;
	_tmp9_ = vala_class_get_is_compact (_tmp8_);
	_tmp10_ = _tmp9_;
	is_gtypeinstance = !_tmp10_;
	has_class_locks = FALSE;
	_tmp11_ = cl;
	_tmp12_ = vala_get_ccode_name ((ValaCodeNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strdup_printf ("_%sPrivate", _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = vala_ccode_struct_new (_tmp15_);
	_tmp17_ = _tmp16_;
	_g_free0 (_tmp15_);
	_g_free0 (_tmp13_);
	instance_priv_struct = _tmp17_;
	_tmp18_ = cl;
	_tmp19_ = vala_get_ccode_name ((ValaCodeNode*) _tmp18_);
	_tmp20_ = _tmp19_;
	_tmp21_ = g_strdup_printf ("_%sClassPrivate", _tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_struct_new (_tmp22_);
	_tmp24_ = _tmp23_;
	_g_free0 (_tmp22_);
	_g_free0 (_tmp20_);
	type_priv_struct = _tmp24_;
	_tmp25_ = is_gtypeinstance;
	if (_tmp25_) {
		{
			ValaList* _type_param_list = NULL;
			ValaClass* _tmp26_;
			ValaList* _tmp27_;
			gint _type_param_size = 0;
			ValaList* _tmp28_;
			gint _tmp29_;
			gint _tmp30_;
			gint _type_param_index = 0;
			_tmp26_ = cl;
			_tmp27_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp26_);
			_type_param_list = _tmp27_;
			_tmp28_ = _type_param_list;
			_tmp29_ = vala_collection_get_size ((ValaCollection*) _tmp28_);
			_tmp30_ = _tmp29_;
			_type_param_size = _tmp30_;
			_type_param_index = -1;
			while (TRUE) {
				gint _tmp31_;
				gint _tmp32_;
				gint _tmp33_;
				ValaTypeParameter* type_param = NULL;
				ValaList* _tmp34_;
				gint _tmp35_;
				gpointer _tmp36_;
				gchar* func_name = NULL;
				ValaTypeParameter* _tmp37_;
				const gchar* _tmp38_;
				const gchar* _tmp39_;
				gchar* _tmp40_;
				gchar* _tmp41_;
				gchar* _tmp42_;
				ValaCCodeStruct* _tmp43_;
				const gchar* _tmp44_;
				ValaTypeParameter* _tmp45_;
				const gchar* _tmp46_;
				const gchar* _tmp47_;
				gchar* _tmp48_;
				gchar* _tmp49_;
				gchar* _tmp50_;
				ValaCCodeStruct* _tmp51_;
				const gchar* _tmp52_;
				ValaTypeParameter* _tmp53_;
				const gchar* _tmp54_;
				const gchar* _tmp55_;
				gchar* _tmp56_;
				gchar* _tmp57_;
				gchar* _tmp58_;
				ValaCCodeStruct* _tmp59_;
				const gchar* _tmp60_;
				_tmp31_ = _type_param_index;
				_type_param_index = _tmp31_ + 1;
				_tmp32_ = _type_param_index;
				_tmp33_ = _type_param_size;
				if (!(_tmp32_ < _tmp33_)) {
					break;
				}
				_tmp34_ = _type_param_list;
				_tmp35_ = _type_param_index;
				_tmp36_ = vala_list_get (_tmp34_, _tmp35_);
				type_param = (ValaTypeParameter*) _tmp36_;
				_tmp37_ = type_param;
				_tmp38_ = vala_symbol_get_name ((ValaSymbol*) _tmp37_);
				_tmp39_ = _tmp38_;
				_tmp40_ = g_utf8_strdown (_tmp39_, (gssize) -1);
				_tmp41_ = _tmp40_;
				_tmp42_ = g_strdup_printf ("%s_type", _tmp41_);
				_g_free0 (func_name);
				func_name = _tmp42_;
				_g_free0 (_tmp41_);
				_tmp43_ = instance_priv_struct;
				_tmp44_ = func_name;
				vala_ccode_struct_add_field (_tmp43_, "GType", _tmp44_, 0, NULL);
				_tmp45_ = type_param;
				_tmp46_ = vala_symbol_get_name ((ValaSymbol*) _tmp45_);
				_tmp47_ = _tmp46_;
				_tmp48_ = g_utf8_strdown (_tmp47_, (gssize) -1);
				_tmp49_ = _tmp48_;
				_tmp50_ = g_strdup_printf ("%s_dup_func", _tmp49_);
				_g_free0 (func_name);
				func_name = _tmp50_;
				_g_free0 (_tmp49_);
				_tmp51_ = instance_priv_struct;
				_tmp52_ = func_name;
				vala_ccode_struct_add_field (_tmp51_, "GBoxedCopyFunc", _tmp52_, 0, NULL);
				_tmp53_ = type_param;
				_tmp54_ = vala_symbol_get_name ((ValaSymbol*) _tmp53_);
				_tmp55_ = _tmp54_;
				_tmp56_ = g_utf8_strdown (_tmp55_, (gssize) -1);
				_tmp57_ = _tmp56_;
				_tmp58_ = g_strdup_printf ("%s_destroy_func", _tmp57_);
				_g_free0 (func_name);
				func_name = _tmp58_;
				_g_free0 (_tmp57_);
				_tmp59_ = instance_priv_struct;
				_tmp60_ = func_name;
				vala_ccode_struct_add_field (_tmp59_, "GDestroyNotify", _tmp60_, 0, NULL);
				_g_free0 (func_name);
				_vala_code_node_unref0 (type_param);
			}
			_vala_iterable_unref0 (_type_param_list);
		}
	}
	{
		ValaList* _f_list = NULL;
		ValaClass* _tmp61_;
		ValaList* _tmp62_;
		gint _f_size = 0;
		ValaList* _tmp63_;
		gint _tmp64_;
		gint _tmp65_;
		gint _f_index = 0;
		_tmp61_ = cl;
		_tmp62_ = vala_class_get_fields (_tmp61_);
		_f_list = _tmp62_;
		_tmp63_ = _f_list;
		_tmp64_ = vala_collection_get_size ((ValaCollection*) _tmp63_);
		_tmp65_ = _tmp64_;
		_f_size = _tmp65_;
		_f_index = -1;
		while (TRUE) {
			gint _tmp66_;
			gint _tmp67_;
			gint _tmp68_;
			ValaField* f = NULL;
			ValaList* _tmp69_;
			gint _tmp70_;
			gpointer _tmp71_;
			ValaCCodeModifiers _tmp72_ = 0;
			ValaField* _tmp73_;
			gboolean _tmp74_;
			gboolean _tmp75_;
			ValaCCodeModifiers _tmp76_ = 0;
			ValaField* _tmp77_;
			ValaVersionAttribute* _tmp78_;
			ValaVersionAttribute* _tmp79_;
			gboolean _tmp80_;
			gboolean _tmp81_;
			ValaCCodeModifiers modifiers = 0;
			ValaField* _tmp82_;
			ValaMemberBinding _tmp83_;
			ValaMemberBinding _tmp84_;
			_tmp66_ = _f_index;
			_f_index = _tmp66_ + 1;
			_tmp67_ = _f_index;
			_tmp68_ = _f_size;
			if (!(_tmp67_ < _tmp68_)) {
				break;
			}
			_tmp69_ = _f_list;
			_tmp70_ = _f_index;
			_tmp71_ = vala_list_get (_tmp69_, _tmp70_);
			f = (ValaField*) _tmp71_;
			_tmp73_ = f;
			_tmp74_ = vala_field_get_is_volatile (_tmp73_);
			_tmp75_ = _tmp74_;
			if (_tmp75_) {
				_tmp72_ = VALA_CCODE_MODIFIERS_VOLATILE;
			} else {
				_tmp72_ = 0;
			}
			_tmp77_ = f;
			_tmp78_ = vala_symbol_get_version ((ValaSymbol*) _tmp77_);
			_tmp79_ = _tmp78_;
			_tmp80_ = vala_version_attribute_get_deprecated (_tmp79_);
			_tmp81_ = _tmp80_;
			if (_tmp81_) {
				_tmp76_ = VALA_CCODE_MODIFIERS_DEPRECATED;
			} else {
				_tmp76_ = 0;
			}
			modifiers = _tmp72_ | _tmp76_;
			_tmp82_ = f;
			_tmp83_ = vala_field_get_binding (_tmp82_);
			_tmp84_ = _tmp83_;
			if (_tmp84_ == VALA_MEMBER_BINDING_INSTANCE) {
				ValaField* _tmp85_;
				ValaSymbolAccessibility _tmp86_;
				ValaSymbolAccessibility _tmp87_;
				ValaField* _tmp183_;
				gboolean _tmp184_;
				_tmp85_ = f;
				_tmp86_ = vala_symbol_get_access ((ValaSymbol*) _tmp85_);
				_tmp87_ = _tmp86_;
				if (_tmp87_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
					ValaField* _tmp88_;
					ValaDataType* _tmp89_;
					ValaDataType* _tmp90_;
					ValaCCodeFile* _tmp91_;
					ValaCCodeStruct* _tmp92_;
					ValaField* _tmp93_;
					ValaDataType* _tmp94_;
					ValaDataType* _tmp95_;
					gchar* _tmp96_;
					gchar* _tmp97_;
					ValaField* _tmp98_;
					gchar* _tmp99_;
					gchar* _tmp100_;
					ValaCCodeModifiers _tmp101_;
					ValaField* _tmp102_;
					ValaDataType* _tmp103_;
					ValaDataType* _tmp104_;
					ValaCCodeDeclaratorSuffix* _tmp105_;
					ValaCCodeDeclaratorSuffix* _tmp106_;
					gboolean _tmp107_ = FALSE;
					ValaField* _tmp108_;
					ValaDataType* _tmp109_;
					ValaDataType* _tmp110_;
					_tmp88_ = f;
					_tmp89_ = vala_variable_get_variable_type ((ValaVariable*) _tmp88_);
					_tmp90_ = _tmp89_;
					_tmp91_ = decl_space;
					vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp90_, _tmp91_);
					_tmp92_ = instance_priv_struct;
					_tmp93_ = f;
					_tmp94_ = vala_variable_get_variable_type ((ValaVariable*) _tmp93_);
					_tmp95_ = _tmp94_;
					_tmp96_ = vala_get_ccode_name ((ValaCodeNode*) _tmp95_);
					_tmp97_ = _tmp96_;
					_tmp98_ = f;
					_tmp99_ = vala_get_ccode_name ((ValaCodeNode*) _tmp98_);
					_tmp100_ = _tmp99_;
					_tmp101_ = modifiers;
					_tmp102_ = f;
					_tmp103_ = vala_variable_get_variable_type ((ValaVariable*) _tmp102_);
					_tmp104_ = _tmp103_;
					_tmp105_ = vala_ccode_base_module_get_ccode_declarator_suffix ((ValaCCodeBaseModule*) self, _tmp104_);
					_tmp106_ = _tmp105_;
					vala_ccode_struct_add_field (_tmp92_, _tmp97_, _tmp100_, _tmp101_, _tmp106_);
					_vala_ccode_declarator_suffix_unref0 (_tmp106_);
					_g_free0 (_tmp100_);
					_g_free0 (_tmp97_);
					_tmp108_ = f;
					_tmp109_ = vala_variable_get_variable_type ((ValaVariable*) _tmp108_);
					_tmp110_ = _tmp109_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp110_, VALA_TYPE_ARRAY_TYPE)) {
						ValaField* _tmp111_;
						gboolean _tmp112_;
						_tmp111_ = f;
						_tmp112_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp111_);
						_tmp107_ = _tmp112_;
					} else {
						_tmp107_ = FALSE;
					}
					if (_tmp107_) {
						ValaArrayType* array_type = NULL;
						ValaField* _tmp113_;
						ValaDataType* _tmp114_;
						ValaDataType* _tmp115_;
						ValaArrayType* _tmp116_;
						ValaDataType* len_type = NULL;
						ValaDataType* _tmp117_;
						ValaDataType* _tmp118_;
						ValaArrayType* _tmp119_;
						gboolean _tmp120_;
						gboolean _tmp121_;
						_tmp113_ = f;
						_tmp114_ = vala_variable_get_variable_type ((ValaVariable*) _tmp113_);
						_tmp115_ = _tmp114_;
						_tmp116_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp115_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
						array_type = _tmp116_;
						_tmp117_ = ((ValaCCodeBaseModule*) self)->int_type;
						_tmp118_ = vala_data_type_copy (_tmp117_);
						len_type = _tmp118_;
						_tmp119_ = array_type;
						_tmp120_ = vala_array_type_get_fixed_length (_tmp119_);
						_tmp121_ = _tmp120_;
						if (!_tmp121_) {
							gboolean _tmp144_ = FALSE;
							ValaArrayType* _tmp145_;
							gint _tmp146_;
							gint _tmp147_;
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp122_ = FALSE;
									_tmp122_ = TRUE;
									while (TRUE) {
										gint _tmp124_;
										ValaArrayType* _tmp125_;
										gint _tmp126_;
										gint _tmp127_;
										gchar* length_cname = NULL;
										ValaField* _tmp128_;
										gchar* _tmp129_;
										gchar* _tmp130_;
										gboolean _tmp131_;
										ValaCCodeStruct* _tmp139_;
										ValaDataType* _tmp140_;
										gchar* _tmp141_;
										gchar* _tmp142_;
										const gchar* _tmp143_;
										if (!_tmp122_) {
											gint _tmp123_;
											_tmp123_ = dim;
											dim = _tmp123_ + 1;
										}
										_tmp122_ = FALSE;
										_tmp124_ = dim;
										_tmp125_ = array_type;
										_tmp126_ = vala_array_type_get_rank (_tmp125_);
										_tmp127_ = _tmp126_;
										if (!(_tmp124_ <= _tmp127_)) {
											break;
										}
										_tmp128_ = f;
										_tmp129_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp128_);
										_tmp130_ = _tmp129_;
										_tmp131_ = _tmp130_ != NULL;
										_g_free0 (_tmp130_);
										if (_tmp131_) {
											ValaField* _tmp132_;
											gchar* _tmp133_;
											_tmp132_ = f;
											_tmp133_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp132_);
											_g_free0 (length_cname);
											length_cname = _tmp133_;
										} else {
											ValaField* _tmp134_;
											gchar* _tmp135_;
											gchar* _tmp136_;
											gint _tmp137_;
											gchar* _tmp138_;
											_tmp134_ = f;
											_tmp135_ = vala_get_ccode_name ((ValaCodeNode*) _tmp134_);
											_tmp136_ = _tmp135_;
											_tmp137_ = dim;
											_tmp138_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp136_, _tmp137_);
											_g_free0 (length_cname);
											length_cname = _tmp138_;
											_g_free0 (_tmp136_);
										}
										_tmp139_ = instance_priv_struct;
										_tmp140_ = len_type;
										_tmp141_ = vala_get_ccode_name ((ValaCodeNode*) _tmp140_);
										_tmp142_ = _tmp141_;
										_tmp143_ = length_cname;
										vala_ccode_struct_add_field (_tmp139_, _tmp142_, _tmp143_, 0, NULL);
										_g_free0 (_tmp142_);
										_g_free0 (length_cname);
									}
								}
							}
							_tmp145_ = array_type;
							_tmp146_ = vala_array_type_get_rank (_tmp145_);
							_tmp147_ = _tmp146_;
							if (_tmp147_ == 1) {
								ValaField* _tmp148_;
								gboolean _tmp149_;
								_tmp148_ = f;
								_tmp149_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp148_);
								_tmp144_ = _tmp149_;
							} else {
								_tmp144_ = FALSE;
							}
							if (_tmp144_) {
								ValaCCodeStruct* _tmp150_;
								ValaDataType* _tmp151_;
								gchar* _tmp152_;
								gchar* _tmp153_;
								ValaField* _tmp154_;
								gchar* _tmp155_;
								gchar* _tmp156_;
								gchar* _tmp157_;
								gchar* _tmp158_;
								_tmp150_ = instance_priv_struct;
								_tmp151_ = len_type;
								_tmp152_ = vala_get_ccode_name ((ValaCodeNode*) _tmp151_);
								_tmp153_ = _tmp152_;
								_tmp154_ = f;
								_tmp155_ = vala_get_ccode_name ((ValaCodeNode*) _tmp154_);
								_tmp156_ = _tmp155_;
								_tmp157_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp156_);
								_tmp158_ = _tmp157_;
								vala_ccode_struct_add_field (_tmp150_, _tmp153_, _tmp158_, 0, NULL);
								_g_free0 (_tmp158_);
								_g_free0 (_tmp156_);
								_g_free0 (_tmp153_);
							}
						}
						_vala_code_node_unref0 (len_type);
						_vala_code_node_unref0 (array_type);
					} else {
						ValaField* _tmp159_;
						ValaDataType* _tmp160_;
						ValaDataType* _tmp161_;
						_tmp159_ = f;
						_tmp160_ = vala_variable_get_variable_type ((ValaVariable*) _tmp159_);
						_tmp161_ = _tmp160_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp161_, VALA_TYPE_DELEGATE_TYPE)) {
							ValaDelegateType* delegate_type = NULL;
							ValaField* _tmp162_;
							ValaDataType* _tmp163_;
							ValaDataType* _tmp164_;
							ValaDelegateType* _tmp165_;
							ValaDelegateType* _tmp166_;
							ValaDelegate* _tmp167_;
							ValaDelegate* _tmp168_;
							gboolean _tmp169_;
							gboolean _tmp170_;
							_tmp162_ = f;
							_tmp163_ = vala_variable_get_variable_type ((ValaVariable*) _tmp162_);
							_tmp164_ = _tmp163_;
							_tmp165_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp164_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
							delegate_type = _tmp165_;
							_tmp166_ = delegate_type;
							_tmp167_ = vala_delegate_type_get_delegate_symbol (_tmp166_);
							_tmp168_ = _tmp167_;
							_tmp169_ = vala_delegate_get_has_target (_tmp168_);
							_tmp170_ = _tmp169_;
							if (_tmp170_) {
								ValaCCodeStruct* _tmp171_;
								ValaField* _tmp172_;
								gchar* _tmp173_;
								gchar* _tmp174_;
								ValaDelegateType* _tmp175_;
								gboolean _tmp176_;
								_tmp171_ = instance_priv_struct;
								_tmp172_ = f;
								_tmp173_ = vala_get_ccode_delegate_target_name ((ValaVariable*) _tmp172_);
								_tmp174_ = _tmp173_;
								vala_ccode_struct_add_field (_tmp171_, "gpointer", _tmp174_, 0, NULL);
								_g_free0 (_tmp174_);
								_tmp175_ = delegate_type;
								_tmp176_ = vala_data_type_is_disposable ((ValaDataType*) _tmp175_);
								if (_tmp176_) {
									ValaCCodeStruct* _tmp177_;
									ValaField* _tmp178_;
									gchar* _tmp179_;
									gchar* _tmp180_;
									gchar* _tmp181_;
									gchar* _tmp182_;
									_tmp177_ = instance_priv_struct;
									_tmp178_ = f;
									_tmp179_ = vala_get_ccode_name ((ValaCodeNode*) _tmp178_);
									_tmp180_ = _tmp179_;
									_tmp181_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp180_);
									_tmp182_ = _tmp181_;
									vala_ccode_struct_add_field (_tmp177_, "GDestroyNotify", _tmp182_, 0, NULL);
									_g_free0 (_tmp182_);
									_g_free0 (_tmp180_);
								}
							}
							_vala_code_node_unref0 (delegate_type);
						}
					}
				}
				_tmp183_ = f;
				_tmp184_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp183_);
				if (_tmp184_) {
					ValaClass* _tmp185_;
					ValaCCodeStruct* _tmp186_;
					ValaStruct* _tmp187_;
					gchar* _tmp188_;
					gchar* _tmp189_;
					ValaField* _tmp190_;
					gchar* _tmp191_;
					gchar* _tmp192_;
					gchar* _tmp193_;
					gchar* _tmp194_;
					_tmp185_ = cl;
					vala_class_set_has_private_fields (_tmp185_, TRUE);
					_tmp186_ = instance_priv_struct;
					_tmp187_ = ((ValaCCodeBaseModule*) self)->mutex_type;
					_tmp188_ = vala_get_ccode_name ((ValaCodeNode*) _tmp187_);
					_tmp189_ = _tmp188_;
					_tmp190_ = f;
					_tmp191_ = vala_get_ccode_name ((ValaCodeNode*) _tmp190_);
					_tmp192_ = _tmp191_;
					_tmp193_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp192_);
					_tmp194_ = _tmp193_;
					vala_ccode_struct_add_field (_tmp186_, _tmp189_, _tmp194_, 0, NULL);
					_g_free0 (_tmp194_);
					_g_free0 (_tmp192_);
					_g_free0 (_tmp189_);
				}
			} else {
				ValaField* _tmp195_;
				ValaMemberBinding _tmp196_;
				ValaMemberBinding _tmp197_;
				_tmp195_ = f;
				_tmp196_ = vala_field_get_binding (_tmp195_);
				_tmp197_ = _tmp196_;
				if (_tmp197_ == VALA_MEMBER_BINDING_CLASS) {
					ValaField* _tmp198_;
					ValaSymbolAccessibility _tmp199_;
					ValaSymbolAccessibility _tmp200_;
					ValaField* _tmp211_;
					gboolean _tmp212_;
					_tmp198_ = f;
					_tmp199_ = vala_symbol_get_access ((ValaSymbol*) _tmp198_);
					_tmp200_ = _tmp199_;
					if (_tmp200_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
						ValaCCodeStruct* _tmp201_;
						ValaField* _tmp202_;
						ValaDataType* _tmp203_;
						ValaDataType* _tmp204_;
						gchar* _tmp205_;
						gchar* _tmp206_;
						ValaField* _tmp207_;
						gchar* _tmp208_;
						gchar* _tmp209_;
						ValaCCodeModifiers _tmp210_;
						_tmp201_ = type_priv_struct;
						_tmp202_ = f;
						_tmp203_ = vala_variable_get_variable_type ((ValaVariable*) _tmp202_);
						_tmp204_ = _tmp203_;
						_tmp205_ = vala_get_ccode_name ((ValaCodeNode*) _tmp204_);
						_tmp206_ = _tmp205_;
						_tmp207_ = f;
						_tmp208_ = vala_get_ccode_name ((ValaCodeNode*) _tmp207_);
						_tmp209_ = _tmp208_;
						_tmp210_ = modifiers;
						vala_ccode_struct_add_field (_tmp201_, _tmp206_, _tmp209_, _tmp210_, NULL);
						_g_free0 (_tmp209_);
						_g_free0 (_tmp206_);
					}
					_tmp211_ = f;
					_tmp212_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp211_);
					if (_tmp212_) {
						ValaCCodeStruct* _tmp213_;
						ValaStruct* _tmp214_;
						gchar* _tmp215_;
						gchar* _tmp216_;
						ValaField* _tmp217_;
						gchar* _tmp218_;
						gchar* _tmp219_;
						gchar* _tmp220_;
						gchar* _tmp221_;
						has_class_locks = TRUE;
						_tmp213_ = type_priv_struct;
						_tmp214_ = ((ValaCCodeBaseModule*) self)->mutex_type;
						_tmp215_ = vala_get_ccode_name ((ValaCodeNode*) _tmp214_);
						_tmp216_ = _tmp215_;
						_tmp217_ = f;
						_tmp218_ = vala_get_ccode_name ((ValaCodeNode*) _tmp217_);
						_tmp219_ = _tmp218_;
						_tmp220_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp219_);
						_tmp221_ = _tmp220_;
						vala_ccode_struct_add_field (_tmp213_, _tmp216_, _tmp221_, 0, NULL);
						_g_free0 (_tmp221_);
						_g_free0 (_tmp219_);
						_g_free0 (_tmp216_);
					}
				}
			}
			_vala_code_node_unref0 (f);
		}
		_vala_iterable_unref0 (_f_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaClass* _tmp222_;
		ValaList* _tmp223_;
		gint _prop_size = 0;
		ValaList* _tmp224_;
		gint _tmp225_;
		gint _tmp226_;
		gint _prop_index = 0;
		_tmp222_ = cl;
		_tmp223_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp222_);
		_prop_list = _tmp223_;
		_tmp224_ = _prop_list;
		_tmp225_ = vala_collection_get_size ((ValaCollection*) _tmp224_);
		_tmp226_ = _tmp225_;
		_prop_size = _tmp226_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp227_;
			gint _tmp228_;
			gint _tmp229_;
			ValaProperty* prop = NULL;
			ValaList* _tmp230_;
			gint _tmp231_;
			gpointer _tmp232_;
			ValaProperty* _tmp233_;
			ValaMemberBinding _tmp234_;
			ValaMemberBinding _tmp235_;
			_tmp227_ = _prop_index;
			_prop_index = _tmp227_ + 1;
			_tmp228_ = _prop_index;
			_tmp229_ = _prop_size;
			if (!(_tmp228_ < _tmp229_)) {
				break;
			}
			_tmp230_ = _prop_list;
			_tmp231_ = _prop_index;
			_tmp232_ = vala_list_get (_tmp230_, _tmp231_);
			prop = (ValaProperty*) _tmp232_;
			_tmp233_ = prop;
			_tmp234_ = vala_property_get_binding (_tmp233_);
			_tmp235_ = _tmp234_;
			if (_tmp235_ == VALA_MEMBER_BINDING_INSTANCE) {
				ValaProperty* _tmp236_;
				gboolean _tmp237_;
				_tmp236_ = prop;
				_tmp237_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp236_);
				if (_tmp237_) {
					ValaClass* _tmp238_;
					ValaCCodeStruct* _tmp239_;
					ValaStruct* _tmp240_;
					gchar* _tmp241_;
					gchar* _tmp242_;
					ValaProperty* _tmp243_;
					const gchar* _tmp244_;
					const gchar* _tmp245_;
					gchar* _tmp246_;
					gchar* _tmp247_;
					_tmp238_ = cl;
					vala_class_set_has_private_fields (_tmp238_, TRUE);
					_tmp239_ = instance_priv_struct;
					_tmp240_ = ((ValaCCodeBaseModule*) self)->mutex_type;
					_tmp241_ = vala_get_ccode_name ((ValaCodeNode*) _tmp240_);
					_tmp242_ = _tmp241_;
					_tmp243_ = prop;
					_tmp244_ = vala_symbol_get_name ((ValaSymbol*) _tmp243_);
					_tmp245_ = _tmp244_;
					_tmp246_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp245_);
					_tmp247_ = _tmp246_;
					vala_ccode_struct_add_field (_tmp239_, _tmp242_, _tmp247_, 0, NULL);
					_g_free0 (_tmp247_);
					_g_free0 (_tmp242_);
				}
			} else {
				ValaProperty* _tmp248_;
				ValaMemberBinding _tmp249_;
				ValaMemberBinding _tmp250_;
				_tmp248_ = prop;
				_tmp249_ = vala_property_get_binding (_tmp248_);
				_tmp250_ = _tmp249_;
				if (_tmp250_ == VALA_MEMBER_BINDING_CLASS) {
					ValaProperty* _tmp251_;
					gboolean _tmp252_;
					_tmp251_ = prop;
					_tmp252_ = vala_lockable_get_lock_used ((ValaLockable*) _tmp251_);
					if (_tmp252_) {
						ValaCCodeStruct* _tmp253_;
						ValaStruct* _tmp254_;
						gchar* _tmp255_;
						gchar* _tmp256_;
						ValaProperty* _tmp257_;
						const gchar* _tmp258_;
						const gchar* _tmp259_;
						gchar* _tmp260_;
						gchar* _tmp261_;
						has_class_locks = TRUE;
						_tmp253_ = type_priv_struct;
						_tmp254_ = ((ValaCCodeBaseModule*) self)->mutex_type;
						_tmp255_ = vala_get_ccode_name ((ValaCodeNode*) _tmp254_);
						_tmp256_ = _tmp255_;
						_tmp257_ = prop;
						_tmp258_ = vala_symbol_get_name ((ValaSymbol*) _tmp257_);
						_tmp259_ = _tmp258_;
						_tmp260_ = vala_ccode_base_module_get_symbol_lock_name ((ValaCCodeBaseModule*) self, _tmp259_);
						_tmp261_ = _tmp260_;
						vala_ccode_struct_add_field (_tmp253_, _tmp256_, _tmp261_, 0, NULL);
						_g_free0 (_tmp261_);
						_g_free0 (_tmp256_);
					}
				}
			}
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp262_ = is_gtypeinstance;
	if (_tmp262_) {
		gboolean _tmp263_ = FALSE;
		ValaClass* _tmp264_;
		gboolean _tmp265_;
		gboolean _tmp266_;
		gboolean _tmp283_ = FALSE;
		ValaClass* _tmp284_;
		gboolean _tmp285_;
		gboolean _tmp286_;
		gboolean _tmp311_ = FALSE;
		ValaClass* _tmp312_;
		gboolean _tmp313_;
		gboolean _tmp314_;
		_tmp264_ = cl;
		_tmp265_ = vala_class_get_has_class_private_fields (_tmp264_);
		_tmp266_ = _tmp265_;
		if (_tmp266_) {
			_tmp263_ = TRUE;
		} else {
			gboolean _tmp267_;
			_tmp267_ = has_class_locks;
			_tmp263_ = _tmp267_;
		}
		if (_tmp263_) {
			ValaCCodeFile* _tmp268_;
			ValaCCodeStruct* _tmp269_;
			const gchar* _tmp270_;
			const gchar* _tmp271_;
			gchar* _tmp272_;
			gchar* _tmp273_;
			ValaClass* _tmp274_;
			gchar* _tmp275_;
			gchar* _tmp276_;
			gchar* _tmp277_;
			gchar* _tmp278_;
			ValaCCodeVariableDeclarator* _tmp279_;
			ValaCCodeVariableDeclarator* _tmp280_;
			ValaCCodeTypeDefinition* _tmp281_;
			ValaCCodeTypeDefinition* _tmp282_;
			_tmp268_ = decl_space;
			_tmp269_ = type_priv_struct;
			_tmp270_ = vala_ccode_struct_get_name (_tmp269_);
			_tmp271_ = _tmp270_;
			_tmp272_ = g_strdup_printf ("struct %s", _tmp271_);
			_tmp273_ = _tmp272_;
			_tmp274_ = cl;
			_tmp275_ = vala_get_ccode_name ((ValaCodeNode*) _tmp274_);
			_tmp276_ = _tmp275_;
			_tmp277_ = g_strdup_printf ("%sClassPrivate", _tmp276_);
			_tmp278_ = _tmp277_;
			_tmp279_ = vala_ccode_variable_declarator_new (_tmp278_, NULL, NULL);
			_tmp280_ = _tmp279_;
			_tmp281_ = vala_ccode_type_definition_new (_tmp273_, (ValaCCodeDeclarator*) _tmp280_);
			_tmp282_ = _tmp281_;
			vala_ccode_file_add_type_declaration (_tmp268_, (ValaCCodeNode*) _tmp282_);
			_vala_ccode_node_unref0 (_tmp282_);
			_vala_ccode_node_unref0 (_tmp280_);
			_g_free0 (_tmp278_);
			_g_free0 (_tmp276_);
			_g_free0 (_tmp273_);
		}
		_tmp284_ = cl;
		_tmp285_ = vala_class_get_has_private_fields (_tmp284_);
		_tmp286_ = _tmp285_;
		if (_tmp286_) {
			_tmp283_ = TRUE;
		} else {
			ValaClass* _tmp287_;
			ValaList* _tmp288_;
			ValaList* _tmp289_;
			gint _tmp290_;
			gint _tmp291_;
			_tmp287_ = cl;
			_tmp288_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp287_);
			_tmp289_ = _tmp288_;
			_tmp290_ = vala_collection_get_size ((ValaCollection*) _tmp289_);
			_tmp291_ = _tmp290_;
			_tmp283_ = _tmp291_ > 0;
			_vala_iterable_unref0 (_tmp289_);
		}
		if (_tmp283_) {
			ValaCCodeFile* _tmp292_;
			ValaCCodeStruct* _tmp293_;
			gchar* macro = NULL;
			ValaClass* _tmp294_;
			gchar* _tmp295_;
			gchar* _tmp296_;
			ValaClass* _tmp297_;
			gchar* _tmp298_;
			gchar* _tmp299_;
			gchar* _tmp300_;
			gchar* _tmp301_;
			ValaCCodeFile* _tmp302_;
			ValaClass* _tmp303_;
			gchar* _tmp304_;
			gchar* _tmp305_;
			gchar* _tmp306_;
			gchar* _tmp307_;
			const gchar* _tmp308_;
			ValaCCodeMacroReplacement* _tmp309_;
			ValaCCodeMacroReplacement* _tmp310_;
			_tmp292_ = decl_space;
			_tmp293_ = instance_priv_struct;
			vala_ccode_file_add_type_definition (_tmp292_, (ValaCCodeNode*) _tmp293_);
			_tmp294_ = cl;
			_tmp295_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp294_);
			_tmp296_ = _tmp295_;
			_tmp297_ = cl;
			_tmp298_ = vala_get_ccode_name ((ValaCodeNode*) _tmp297_);
			_tmp299_ = _tmp298_;
			_tmp300_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_PRIVATE ((o), %s, %sPrivate))", _tmp296_, _tmp299_);
			_tmp301_ = _tmp300_;
			_g_free0 (_tmp299_);
			_g_free0 (_tmp296_);
			macro = _tmp301_;
			_tmp302_ = decl_space;
			_tmp303_ = cl;
			_tmp304_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp303_, NULL);
			_tmp305_ = _tmp304_;
			_tmp306_ = g_strdup_printf ("%s_GET_PRIVATE(o)", _tmp305_);
			_tmp307_ = _tmp306_;
			_tmp308_ = macro;
			_tmp309_ = vala_ccode_macro_replacement_new (_tmp307_, _tmp308_);
			_tmp310_ = _tmp309_;
			vala_ccode_file_add_type_member_declaration (_tmp302_, (ValaCCodeNode*) _tmp310_);
			_vala_ccode_node_unref0 (_tmp310_);
			_g_free0 (_tmp307_);
			_g_free0 (_tmp305_);
			_g_free0 (macro);
		}
		_tmp312_ = cl;
		_tmp313_ = vala_class_get_has_class_private_fields (_tmp312_);
		_tmp314_ = _tmp313_;
		if (_tmp314_) {
			_tmp311_ = TRUE;
		} else {
			gboolean _tmp315_;
			_tmp315_ = has_class_locks;
			_tmp311_ = _tmp315_;
		}
		if (_tmp311_) {
			ValaCCodeFile* _tmp316_;
			ValaCCodeStruct* _tmp317_;
			gchar* macro = NULL;
			ValaClass* _tmp318_;
			gchar* _tmp319_;
			gchar* _tmp320_;
			ValaClass* _tmp321_;
			gchar* _tmp322_;
			gchar* _tmp323_;
			gchar* _tmp324_;
			gchar* _tmp325_;
			ValaCCodeFile* _tmp326_;
			ValaClass* _tmp327_;
			gchar* _tmp328_;
			gchar* _tmp329_;
			gchar* _tmp330_;
			gchar* _tmp331_;
			const gchar* _tmp332_;
			ValaCCodeMacroReplacement* _tmp333_;
			ValaCCodeMacroReplacement* _tmp334_;
			_tmp316_ = decl_space;
			_tmp317_ = type_priv_struct;
			vala_ccode_file_add_type_member_declaration (_tmp316_, (ValaCCodeNode*) _tmp317_);
			_tmp318_ = cl;
			_tmp319_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp318_);
			_tmp320_ = _tmp319_;
			_tmp321_ = cl;
			_tmp322_ = vala_get_ccode_name ((ValaCodeNode*) _tmp321_);
			_tmp323_ = _tmp322_;
			_tmp324_ = g_strdup_printf ("(G_TYPE_CLASS_GET_PRIVATE (klass, %s, %sClassPrivate))", _tmp320_, _tmp323_);
			_tmp325_ = _tmp324_;
			_g_free0 (_tmp323_);
			_g_free0 (_tmp320_);
			macro = _tmp325_;
			_tmp326_ = decl_space;
			_tmp327_ = cl;
			_tmp328_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp327_, NULL);
			_tmp329_ = _tmp328_;
			_tmp330_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE(klass)", _tmp329_);
			_tmp331_ = _tmp330_;
			_tmp332_ = macro;
			_tmp333_ = vala_ccode_macro_replacement_new (_tmp331_, _tmp332_);
			_tmp334_ = _tmp333_;
			vala_ccode_file_add_type_member_declaration (_tmp326_, (ValaCCodeNode*) _tmp334_);
			_vala_ccode_node_unref0 (_tmp334_);
			_g_free0 (_tmp331_);
			_g_free0 (_tmp329_);
			_g_free0 (macro);
		}
	} else {
		ValaClass* _tmp335_;
		gboolean _tmp336_;
		gboolean _tmp337_;
		_tmp335_ = cl;
		_tmp336_ = vala_class_get_has_private_fields (_tmp335_);
		_tmp337_ = _tmp336_;
		if (_tmp337_) {
			ValaClass* _tmp338_;
			ValaSourceReference* _tmp339_;
			ValaSourceReference* _tmp340_;
			_tmp338_ = cl;
			_tmp339_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp338_);
			_tmp340_ = _tmp339_;
			vala_report_error (_tmp340_, "Private fields not supported in compact classes");
		}
	}
	_vala_ccode_node_unref0 (type_priv_struct);
	_vala_ccode_node_unref0 (instance_priv_struct);
}


static gpointer _vala_ccode_node_ref0 (gpointer self) {
	return self ? vala_ccode_node_ref (self) : NULL;
}


static gpointer _vala_ccode_base_module_emit_context_ref0 (gpointer self) {
	return self ? vala_ccode_base_module_emit_context_ref (self) : NULL;
}


static void vala_gtype_module_real_visit_class (ValaCodeVisitor* base, ValaClass* cl) {
	ValaGTypeModule * self;
	ValaClass* _tmp0_;
	ValaCCodeBaseModuleEmitContext* _tmp1_;
	ValaCCodeBaseModuleEmitContext* _tmp2_;
	ValaClass* _tmp3_;
	ValaSourceReference* _tmp4_;
	ValaSourceReference* _tmp5_;
	ValaCCodeStruct* old_param_spec_struct = NULL;
	ValaCCodeStruct* _tmp6_;
	ValaCCodeStruct* _tmp7_;
	ValaCCodeEnum* old_prop_enum = NULL;
	ValaCCodeEnum* _tmp8_;
	ValaCCodeEnum* _tmp9_;
	ValaCCodeEnum* old_signal_enum = NULL;
	ValaCCodeEnum* _tmp10_;
	ValaCCodeEnum* _tmp11_;
	ValaCCodeBaseModuleEmitContext* old_class_init_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp12_;
	ValaCCodeBaseModuleEmitContext* _tmp13_;
	ValaCCodeBaseModuleEmitContext* old_base_init_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp14_;
	ValaCCodeBaseModuleEmitContext* _tmp15_;
	ValaCCodeBaseModuleEmitContext* old_class_finalize_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp16_;
	ValaCCodeBaseModuleEmitContext* _tmp17_;
	ValaCCodeBaseModuleEmitContext* old_base_finalize_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp18_;
	ValaCCodeBaseModuleEmitContext* _tmp19_;
	ValaCCodeBaseModuleEmitContext* old_instance_init_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp20_;
	ValaCCodeBaseModuleEmitContext* _tmp21_;
	ValaCCodeBaseModuleEmitContext* old_instance_finalize_context = NULL;
	ValaCCodeBaseModuleEmitContext* _tmp22_;
	ValaCCodeBaseModuleEmitContext* _tmp23_;
	gboolean is_gtypeinstance = FALSE;
	ValaClass* _tmp24_;
	gboolean _tmp25_;
	gboolean _tmp26_;
	gboolean _tmp27_ = FALSE;
	gboolean _tmp28_;
	gboolean is_gobject = FALSE;
	gboolean _tmp32_ = FALSE;
	gboolean _tmp33_;
	gboolean is_fundamental = FALSE;
	ValaClass* _tmp37_;
	gchar* _tmp38_;
	gchar* _tmp39_;
	gint _tmp40_;
	gint _tmp41_;
	gboolean _tmp42_;
	ValaCCodeEnum* _tmp52_;
	ValaCCodeEnum* _tmp53_;
	ValaClass* _tmp54_;
	gchar* _tmp55_;
	gchar* _tmp56_;
	gchar* _tmp57_;
	gchar* _tmp58_;
	ValaCCodeEnumValue* _tmp59_;
	ValaCCodeEnumValue* _tmp60_;
	ValaCCodeEnum* _tmp61_;
	ValaClass* _tmp62_;
	ValaCCodeBaseModuleEmitContext* _tmp63_;
	ValaClass* _tmp64_;
	ValaCCodeBaseModuleEmitContext* _tmp65_;
	ValaClass* _tmp66_;
	ValaCCodeBaseModuleEmitContext* _tmp67_;
	ValaClass* _tmp68_;
	ValaCCodeBaseModuleEmitContext* _tmp69_;
	ValaClass* _tmp70_;
	ValaCCodeBaseModuleEmitContext* _tmp71_;
	ValaClass* _tmp72_;
	ValaCCodeBaseModuleEmitContext* _tmp73_;
	ValaClass* _tmp74_;
	ValaCCodeFile* _tmp75_;
	ValaClass* _tmp76_;
	ValaCCodeFile* _tmp77_;
	gchar* last_prop = NULL;
	ValaClass* _tmp78_;
	gchar* _tmp79_;
	gchar* _tmp80_;
	gchar* _tmp81_;
	gchar* _tmp82_;
	gboolean _tmp83_;
	ValaClass* _tmp106_;
	gboolean _tmp107_;
	ValaClass* _tmp110_;
	gboolean _tmp111_;
	gboolean _tmp114_;
	ValaClass* _tmp131_;
	gboolean _tmp132_;
	ValaCCodeStruct* _tmp467_;
	ValaCCodeStruct* _tmp468_;
	ValaCCodeEnum* _tmp469_;
	ValaCCodeEnum* _tmp470_;
	ValaCCodeEnum* _tmp471_;
	ValaCCodeEnum* _tmp472_;
	ValaCCodeBaseModuleEmitContext* _tmp473_;
	ValaCCodeBaseModuleEmitContext* _tmp474_;
	ValaCCodeBaseModuleEmitContext* _tmp475_;
	ValaCCodeBaseModuleEmitContext* _tmp476_;
	ValaCCodeBaseModuleEmitContext* _tmp477_;
	ValaCCodeBaseModuleEmitContext* _tmp478_;
	ValaCCodeBaseModuleEmitContext* _tmp479_;
	ValaCCodeBaseModuleEmitContext* _tmp480_;
	ValaCCodeBaseModuleEmitContext* _tmp481_;
	ValaCCodeBaseModuleEmitContext* _tmp482_;
	ValaCCodeBaseModuleEmitContext* _tmp483_;
	ValaCCodeBaseModuleEmitContext* _tmp484_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp2_);
	_vala_ccode_base_module_emit_context_unref0 (_tmp2_);
	_tmp3_ = cl;
	_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
	_tmp5_ = _tmp4_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
	_tmp6_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
	_tmp7_ = _vala_ccode_node_ref0 (_tmp6_);
	old_param_spec_struct = _tmp7_;
	_tmp8_ = ((ValaCCodeBaseModule*) self)->prop_enum;
	_tmp9_ = _vala_ccode_node_ref0 (_tmp8_);
	old_prop_enum = _tmp9_;
	_tmp10_ = ((ValaCCodeBaseModule*) self)->signal_enum;
	_tmp11_ = _vala_ccode_node_ref0 (_tmp10_);
	old_signal_enum = _tmp11_;
	_tmp12_ = ((ValaCCodeBaseModule*) self)->class_init_context;
	_tmp13_ = _vala_ccode_base_module_emit_context_ref0 (_tmp12_);
	old_class_init_context = _tmp13_;
	_tmp14_ = ((ValaCCodeBaseModule*) self)->base_init_context;
	_tmp15_ = _vala_ccode_base_module_emit_context_ref0 (_tmp14_);
	old_base_init_context = _tmp15_;
	_tmp16_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	_tmp17_ = _vala_ccode_base_module_emit_context_ref0 (_tmp16_);
	old_class_finalize_context = _tmp17_;
	_tmp18_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
	_tmp19_ = _vala_ccode_base_module_emit_context_ref0 (_tmp18_);
	old_base_finalize_context = _tmp19_;
	_tmp20_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	_tmp21_ = _vala_ccode_base_module_emit_context_ref0 (_tmp20_);
	old_instance_init_context = _tmp21_;
	_tmp22_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
	_tmp23_ = _vala_ccode_base_module_emit_context_ref0 (_tmp22_);
	old_instance_finalize_context = _tmp23_;
	_tmp24_ = cl;
	_tmp25_ = vala_class_get_is_compact (_tmp24_);
	_tmp26_ = _tmp25_;
	is_gtypeinstance = !_tmp26_;
	_tmp28_ = is_gtypeinstance;
	if (_tmp28_) {
		ValaClass* _tmp29_;
		ValaTypeSymbol* _tmp30_;
		gboolean _tmp31_;
		_tmp29_ = cl;
		_tmp30_ = ((ValaCCodeBaseModule*) self)->gobject_type;
		_tmp31_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp29_, _tmp30_);
		_tmp27_ = _tmp31_;
	} else {
		_tmp27_ = FALSE;
	}
	is_gobject = _tmp27_;
	_tmp33_ = is_gtypeinstance;
	if (_tmp33_) {
		ValaClass* _tmp34_;
		ValaClass* _tmp35_;
		ValaClass* _tmp36_;
		_tmp34_ = cl;
		_tmp35_ = vala_class_get_base_class (_tmp34_);
		_tmp36_ = _tmp35_;
		_tmp32_ = _tmp36_ == NULL;
	} else {
		_tmp32_ = FALSE;
	}
	is_fundamental = _tmp32_;
	_tmp37_ = cl;
	_tmp38_ = vala_get_ccode_name ((ValaCodeNode*) _tmp37_);
	_tmp39_ = _tmp38_;
	_tmp40_ = strlen (_tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = _tmp41_ < 3;
	_g_free0 (_tmp39_);
	if (_tmp42_) {
		ValaClass* _tmp43_;
		ValaClass* _tmp44_;
		ValaSourceReference* _tmp45_;
		ValaSourceReference* _tmp46_;
		ValaClass* _tmp47_;
		gchar* _tmp48_;
		gchar* _tmp49_;
		gchar* _tmp50_;
		gchar* _tmp51_;
		_tmp43_ = cl;
		vala_code_node_set_error ((ValaCodeNode*) _tmp43_, TRUE);
		_tmp44_ = cl;
		_tmp45_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp44_);
		_tmp46_ = _tmp45_;
		_tmp47_ = cl;
		_tmp48_ = vala_get_ccode_name ((ValaCodeNode*) _tmp47_);
		_tmp49_ = _tmp48_;
		_tmp50_ = g_strdup_printf ("Class name `%s' is too short", _tmp49_);
		_tmp51_ = _tmp50_;
		vala_report_error (_tmp46_, _tmp51_);
		_g_free0 (_tmp51_);
		_g_free0 (_tmp49_);
		_vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
		_vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
		_vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
		_vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
		_vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
		_vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
		_vala_ccode_node_unref0 (old_signal_enum);
		_vala_ccode_node_unref0 (old_prop_enum);
		_vala_ccode_node_unref0 (old_param_spec_struct);
		return;
	}
	_tmp52_ = vala_ccode_enum_new (NULL);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
	((ValaCCodeBaseModule*) self)->prop_enum = _tmp52_;
	_tmp53_ = ((ValaCCodeBaseModule*) self)->prop_enum;
	_tmp54_ = cl;
	_tmp55_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp54_, NULL);
	_tmp56_ = _tmp55_;
	_tmp57_ = g_strdup_printf ("%s_0_PROPERTY", _tmp56_);
	_tmp58_ = _tmp57_;
	_tmp59_ = vala_ccode_enum_value_new (_tmp58_, NULL);
	_tmp60_ = _tmp59_;
	vala_ccode_enum_add_value (_tmp53_, _tmp60_);
	_vala_ccode_node_unref0 (_tmp60_);
	_g_free0 (_tmp58_);
	_g_free0 (_tmp56_);
	_tmp61_ = vala_ccode_enum_new (NULL);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
	((ValaCCodeBaseModule*) self)->signal_enum = _tmp61_;
	_tmp62_ = cl;
	_tmp63_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp62_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
	((ValaCCodeBaseModule*) self)->class_init_context = _tmp63_;
	_tmp64_ = cl;
	_tmp65_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp64_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
	((ValaCCodeBaseModule*) self)->base_init_context = _tmp65_;
	_tmp66_ = cl;
	_tmp67_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp66_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
	((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp67_;
	_tmp68_ = cl;
	_tmp69_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp68_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
	((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp69_;
	_tmp70_ = cl;
	_tmp71_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp70_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
	((ValaCCodeBaseModule*) self)->instance_init_context = _tmp71_;
	_tmp72_ = cl;
	_tmp73_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp72_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
	((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp73_;
	_tmp74_ = cl;
	_tmp75_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp74_, _tmp75_);
	_tmp76_ = cl;
	_tmp77_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_gtype_module_generate_class_private_declaration (self, _tmp76_, _tmp77_);
	_tmp78_ = cl;
	_tmp79_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp78_, NULL);
	_tmp80_ = _tmp79_;
	_tmp81_ = g_strdup_printf ("%s_NUM_PROPERTIES", _tmp80_);
	_tmp82_ = _tmp81_;
	_g_free0 (_tmp80_);
	last_prop = _tmp82_;
	_tmp83_ = is_gobject;
	if (_tmp83_) {
		ValaCCodeFile* _tmp84_;
		ValaCCodeEnum* _tmp85_;
		ValaCCodeDeclaration* prop_array_decl = NULL;
		ValaCCodeDeclaration* _tmp86_;
		ValaCCodeDeclaration* _tmp87_;
		ValaCCodeDeclaration* _tmp88_;
		ValaCCodeModifiers _tmp89_;
		ValaCCodeModifiers _tmp90_;
		ValaCCodeDeclaration* _tmp91_;
		ValaClass* _tmp92_;
		gchar* _tmp93_;
		gchar* _tmp94_;
		gchar* _tmp95_;
		gchar* _tmp96_;
		const gchar* _tmp97_;
		ValaCCodeIdentifier* _tmp98_;
		ValaCCodeIdentifier* _tmp99_;
		ValaCCodeDeclaratorSuffix* _tmp100_;
		ValaCCodeDeclaratorSuffix* _tmp101_;
		ValaCCodeVariableDeclarator* _tmp102_;
		ValaCCodeVariableDeclarator* _tmp103_;
		ValaCCodeFile* _tmp104_;
		ValaCCodeDeclaration* _tmp105_;
		_tmp84_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp85_ = ((ValaCCodeBaseModule*) self)->prop_enum;
		vala_ccode_file_add_type_declaration (_tmp84_, (ValaCCodeNode*) _tmp85_);
		_tmp86_ = vala_ccode_declaration_new ("GParamSpec*");
		prop_array_decl = _tmp86_;
		_tmp87_ = prop_array_decl;
		_tmp88_ = prop_array_decl;
		_tmp89_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp88_);
		_tmp90_ = _tmp89_;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp88_, _tmp90_ | VALA_CCODE_MODIFIERS_STATIC);
		_tmp91_ = prop_array_decl;
		_tmp92_ = cl;
		_tmp93_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp92_, NULL);
		_tmp94_ = _tmp93_;
		_tmp95_ = g_strdup_printf ("%s_properties", _tmp94_);
		_tmp96_ = _tmp95_;
		_tmp97_ = last_prop;
		_tmp98_ = vala_ccode_identifier_new (_tmp97_);
		_tmp99_ = _tmp98_;
		_tmp100_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp99_);
		_tmp101_ = _tmp100_;
		_tmp102_ = vala_ccode_variable_declarator_new (_tmp96_, NULL, _tmp101_);
		_tmp103_ = _tmp102_;
		vala_ccode_declaration_add_declarator (_tmp91_, (ValaCCodeDeclarator*) _tmp103_);
		_vala_ccode_node_unref0 (_tmp103_);
		_vala_ccode_declarator_suffix_unref0 (_tmp101_);
		_vala_ccode_node_unref0 (_tmp99_);
		_g_free0 (_tmp96_);
		_g_free0 (_tmp94_);
		_tmp104_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp105_ = prop_array_decl;
		vala_ccode_file_add_type_declaration (_tmp104_, (ValaCCodeNode*) _tmp105_);
		_vala_ccode_node_unref0 (prop_array_decl);
	}
	_tmp106_ = cl;
	_tmp107_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp106_);
	if (!_tmp107_) {
		ValaClass* _tmp108_;
		ValaCCodeFile* _tmp109_;
		_tmp108_ = cl;
		_tmp109_ = ((ValaCCodeBaseModule*) self)->header_file;
		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp108_, _tmp109_);
	}
	_tmp110_ = cl;
	_tmp111_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp110_);
	if (!_tmp111_) {
		ValaClass* _tmp112_;
		ValaCCodeFile* _tmp113_;
		_tmp112_ = cl;
		_tmp113_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
		vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp112_, _tmp113_);
	}
	_tmp114_ = is_gtypeinstance;
	if (_tmp114_) {
		ValaClass* _tmp115_;
		ValaClass* _tmp116_;
		ValaClass* _tmp117_;
		ValaClass* _tmp118_;
		ValaClass* _tmp119_;
		ValaClass* _tmp120_;
		_tmp115_ = cl;
		vala_gtype_module_begin_base_init_function (self, _tmp115_);
		_tmp116_ = cl;
		vala_gtype_module_begin_class_init_function (self, _tmp116_);
		_tmp117_ = cl;
		vala_gtype_module_begin_instance_init_function (self, _tmp117_);
		_tmp118_ = cl;
		vala_gtype_module_begin_base_finalize_function (self, _tmp118_);
		_tmp119_ = cl;
		vala_gtype_module_begin_class_finalize_function (self, _tmp119_);
		_tmp120_ = cl;
		vala_gtype_module_begin_finalize_function (self, _tmp120_);
	} else {
		gboolean _tmp121_ = FALSE;
		ValaClass* _tmp122_;
		ValaClass* _tmp123_;
		ValaClass* _tmp124_;
		_tmp122_ = cl;
		_tmp123_ = vala_class_get_base_class (_tmp122_);
		_tmp124_ = _tmp123_;
		if (_tmp124_ == NULL) {
			_tmp121_ = TRUE;
		} else {
			ValaClass* _tmp125_;
			ValaClass* _tmp126_;
			ValaClass* _tmp127_;
			ValaClass* _tmp128_;
			_tmp125_ = cl;
			_tmp126_ = vala_class_get_base_class (_tmp125_);
			_tmp127_ = _tmp126_;
			_tmp128_ = ((ValaCCodeBaseModule*) self)->gsource_type;
			_tmp121_ = _tmp127_ == _tmp128_;
		}
		if (_tmp121_) {
			ValaClass* _tmp129_;
			ValaClass* _tmp130_;
			_tmp129_ = cl;
			vala_gtype_module_begin_instance_init_function (self, _tmp129_);
			_tmp130_ = cl;
			vala_gtype_module_begin_finalize_function (self, _tmp130_);
		}
	}
	_tmp131_ = cl;
	vala_code_node_accept_children ((ValaCodeNode*) _tmp131_, (ValaCodeVisitor*) self);
	_tmp132_ = is_gtypeinstance;
	if (_tmp132_) {
		gboolean _tmp133_;
		gboolean _tmp190_;
		ValaClass* _tmp195_;
		ValaList* _tmp196_;
		ValaList* _tmp197_;
		gint _tmp198_;
		gint _tmp199_;
		gboolean _tmp200_;
		ValaClass* _tmp234_;
		ValaConstructor* _tmp235_;
		ValaConstructor* _tmp236_;
		ValaClass* _tmp238_;
		ValaClass* _tmp239_;
		ValaDestructor* _tmp240_;
		ValaDestructor* _tmp241_;
		ValaClass* _tmp243_;
		ValaDestructor* _tmp244_;
		ValaDestructor* _tmp245_;
		ValaClass* _tmp265_;
		gboolean _tmp266_ = FALSE;
		ValaClass* _tmp267_;
		gboolean _tmp268_;
		gboolean _tmp269_;
		ValaClass* _tmp284_;
		ValaComment* _tmp285_;
		ValaComment* _tmp286_;
		ValaClassRegisterFunction* type_fun = NULL;
		ValaClass* _tmp295_;
		ValaCodeContext* _tmp296_;
		ValaCodeContext* _tmp297_;
		ValaClassRegisterFunction* _tmp298_;
		ValaClassRegisterFunction* _tmp299_;
		gboolean _tmp300_;
		ValaCCodeFile* _tmp301_;
		ValaClassRegisterFunction* _tmp302_;
		ValaCCodeFragment* _tmp303_;
		ValaCCodeFragment* _tmp304_;
		ValaCCodeFile* _tmp305_;
		ValaClassRegisterFunction* _tmp306_;
		ValaCCodeFragment* _tmp307_;
		ValaCCodeFragment* _tmp308_;
		gboolean _tmp309_;
		_tmp133_ = is_fundamental;
		if (_tmp133_) {
			ValaClass* _tmp134_;
			ValaSymbol* _tmp135_;
			ValaSymbol* _tmp136_;
			gchar* _tmp137_;
			gchar* _tmp138_;
			ValaClass* _tmp139_;
			const gchar* _tmp140_;
			const gchar* _tmp141_;
			gchar* _tmp142_;
			gchar* _tmp143_;
			ValaCCodeStruct* _tmp144_;
			ValaCCodeStruct* _tmp145_;
			ValaCCodeFile* _tmp146_;
			ValaCCodeStruct* _tmp147_;
			ValaCCodeFile* _tmp148_;
			ValaCCodeStruct* _tmp149_;
			const gchar* _tmp150_;
			const gchar* _tmp151_;
			gchar* _tmp152_;
			gchar* _tmp153_;
			ValaClass* _tmp154_;
			ValaSymbol* _tmp155_;
			ValaSymbol* _tmp156_;
			gchar* _tmp157_;
			gchar* _tmp158_;
			ValaClass* _tmp159_;
			const gchar* _tmp160_;
			const gchar* _tmp161_;
			gchar* _tmp162_;
			gchar* _tmp163_;
			ValaCCodeVariableDeclarator* _tmp164_;
			ValaCCodeVariableDeclarator* _tmp165_;
			ValaCCodeTypeDefinition* _tmp166_;
			ValaCCodeTypeDefinition* _tmp167_;
			ValaClass* _tmp168_;
			ValaClass* _tmp169_;
			ValaClass* _tmp170_;
			ValaClass* _tmp171_;
			ValaClass* _tmp172_;
			ValaClass* _tmp173_;
			ValaClass* _tmp174_;
			ValaClass* _tmp175_;
			ValaClass* _tmp176_;
			ValaClass* _tmp177_;
			ValaCCodeAssignment* ref_count = NULL;
			ValaCCodeIdentifier* _tmp178_;
			ValaCCodeIdentifier* _tmp179_;
			ValaCCodeMemberAccess* _tmp180_;
			ValaCCodeMemberAccess* _tmp181_;
			ValaCCodeConstant* _tmp182_;
			ValaCCodeConstant* _tmp183_;
			ValaCCodeAssignment* _tmp184_;
			ValaCCodeAssignment* _tmp185_;
			ValaCCodeBaseModuleEmitContext* _tmp186_;
			ValaCCodeFunction* _tmp187_;
			ValaCCodeFunction* _tmp188_;
			ValaCCodeAssignment* _tmp189_;
			_tmp134_ = cl;
			_tmp135_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp134_);
			_tmp136_ = _tmp135_;
			_tmp137_ = vala_get_ccode_prefix (_tmp136_);
			_tmp138_ = _tmp137_;
			_tmp139_ = cl;
			_tmp140_ = vala_symbol_get_name ((ValaSymbol*) _tmp139_);
			_tmp141_ = _tmp140_;
			_tmp142_ = g_strdup_printf ("_%sParamSpec%s", _tmp138_, _tmp141_);
			_tmp143_ = _tmp142_;
			_tmp144_ = vala_ccode_struct_new (_tmp143_);
			_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
			((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp144_;
			_g_free0 (_tmp143_);
			_g_free0 (_tmp138_);
			_tmp145_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
			vala_ccode_struct_add_field (_tmp145_, "GParamSpec", "parent_instance", 0, NULL);
			_tmp146_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp147_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
			vala_ccode_file_add_type_definition (_tmp146_, (ValaCCodeNode*) _tmp147_);
			_tmp148_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp149_ = ((ValaCCodeBaseModule*) self)->param_spec_struct;
			_tmp150_ = vala_ccode_struct_get_name (_tmp149_);
			_tmp151_ = _tmp150_;
			_tmp152_ = g_strdup_printf ("struct %s", _tmp151_);
			_tmp153_ = _tmp152_;
			_tmp154_ = cl;
			_tmp155_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp154_);
			_tmp156_ = _tmp155_;
			_tmp157_ = vala_get_ccode_prefix (_tmp156_);
			_tmp158_ = _tmp157_;
			_tmp159_ = cl;
			_tmp160_ = vala_symbol_get_name ((ValaSymbol*) _tmp159_);
			_tmp161_ = _tmp160_;
			_tmp162_ = g_strdup_printf ("%sParamSpec%s", _tmp158_, _tmp161_);
			_tmp163_ = _tmp162_;
			_tmp164_ = vala_ccode_variable_declarator_new (_tmp163_, NULL, NULL);
			_tmp165_ = _tmp164_;
			_tmp166_ = vala_ccode_type_definition_new (_tmp153_, (ValaCCodeDeclarator*) _tmp165_);
			_tmp167_ = _tmp166_;
			vala_ccode_file_add_type_declaration (_tmp148_, (ValaCCodeNode*) _tmp167_);
			_vala_ccode_node_unref0 (_tmp167_);
			_vala_ccode_node_unref0 (_tmp165_);
			_g_free0 (_tmp163_);
			_g_free0 (_tmp158_);
			_g_free0 (_tmp153_);
			((ValaCCodeBaseModule*) self)->gvaluecollector_h_needed = TRUE;
			_tmp168_ = cl;
			vala_gtype_module_add_type_value_table_init_function (self, _tmp168_);
			_tmp169_ = cl;
			vala_gtype_module_add_type_value_table_free_function (self, _tmp169_);
			_tmp170_ = cl;
			vala_gtype_module_add_type_value_table_copy_function (self, _tmp170_);
			_tmp171_ = cl;
			vala_gtype_module_add_type_value_table_peek_pointer_function (self, _tmp171_);
			_tmp172_ = cl;
			vala_gtype_module_add_type_value_table_collect_value_function (self, _tmp172_);
			_tmp173_ = cl;
			vala_gtype_module_add_type_value_table_lcopy_value_function (self, _tmp173_);
			_tmp174_ = cl;
			vala_gtype_module_add_g_param_spec_type_function (self, _tmp174_);
			_tmp175_ = cl;
			vala_gtype_module_add_g_value_get_function (self, _tmp175_);
			_tmp176_ = cl;
			vala_gtype_module_add_g_value_set_function (self, _tmp176_);
			_tmp177_ = cl;
			vala_gtype_module_add_g_value_take_function (self, _tmp177_);
			_tmp178_ = vala_ccode_identifier_new ("self");
			_tmp179_ = _tmp178_;
			_tmp180_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp179_, "ref_count");
			_tmp181_ = _tmp180_;
			_tmp182_ = vala_ccode_constant_new ("1");
			_tmp183_ = _tmp182_;
			_tmp184_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp181_, (ValaCCodeExpression*) _tmp183_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
			_tmp185_ = _tmp184_;
			_vala_ccode_node_unref0 (_tmp183_);
			_vala_ccode_node_unref0 (_tmp181_);
			_vala_ccode_node_unref0 (_tmp179_);
			ref_count = _tmp185_;
			_tmp186_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp186_);
			_tmp187_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp188_ = _tmp187_;
			_tmp189_ = ref_count;
			vala_ccode_function_add_expression (_tmp188_, (ValaCCodeExpression*) _tmp189_);
			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
			_vala_ccode_node_unref0 (ref_count);
		}
		_tmp190_ = is_gobject;
		if (_tmp190_) {
			ValaCCodeEnum* _tmp191_;
			const gchar* _tmp192_;
			ValaCCodeEnumValue* _tmp193_;
			ValaCCodeEnumValue* _tmp194_;
			_tmp191_ = ((ValaCCodeBaseModule*) self)->prop_enum;
			_tmp192_ = last_prop;
			_tmp193_ = vala_ccode_enum_value_new (_tmp192_, NULL);
			_tmp194_ = _tmp193_;
			vala_ccode_enum_add_value (_tmp191_, _tmp194_);
			_vala_ccode_node_unref0 (_tmp194_);
		}
		_tmp195_ = cl;
		_tmp196_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp195_);
		_tmp197_ = _tmp196_;
		_tmp198_ = vala_collection_get_size ((ValaCollection*) _tmp197_);
		_tmp199_ = _tmp198_;
		_tmp200_ = _tmp199_ > 0;
		_vala_iterable_unref0 (_tmp197_);
		if (_tmp200_) {
			gchar* last_signal = NULL;
			ValaClass* _tmp201_;
			gchar* _tmp202_;
			gchar* _tmp203_;
			gchar* _tmp204_;
			gchar* _tmp205_;
			ValaCCodeEnum* _tmp206_;
			const gchar* _tmp207_;
			ValaCCodeEnumValue* _tmp208_;
			ValaCCodeEnumValue* _tmp209_;
			ValaCCodeFile* _tmp210_;
			ValaCCodeEnum* _tmp211_;
			ValaCCodeDeclaration* signal_array_decl = NULL;
			ValaCCodeDeclaration* _tmp212_;
			ValaCCodeDeclaration* _tmp213_;
			ValaCCodeDeclaration* _tmp214_;
			ValaCCodeModifiers _tmp215_;
			ValaCCodeModifiers _tmp216_;
			ValaCCodeDeclaration* _tmp217_;
			ValaClass* _tmp218_;
			gchar* _tmp219_;
			gchar* _tmp220_;
			gchar* _tmp221_;
			gchar* _tmp222_;
			ValaCCodeConstant* _tmp223_;
			ValaCCodeConstant* _tmp224_;
			const gchar* _tmp225_;
			ValaCCodeIdentifier* _tmp226_;
			ValaCCodeIdentifier* _tmp227_;
			ValaCCodeDeclaratorSuffix* _tmp228_;
			ValaCCodeDeclaratorSuffix* _tmp229_;
			ValaCCodeVariableDeclarator* _tmp230_;
			ValaCCodeVariableDeclarator* _tmp231_;
			ValaCCodeFile* _tmp232_;
			ValaCCodeDeclaration* _tmp233_;
			_tmp201_ = cl;
			_tmp202_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp201_, NULL);
			_tmp203_ = _tmp202_;
			_tmp204_ = g_strdup_printf ("%s_NUM_SIGNALS", _tmp203_);
			_tmp205_ = _tmp204_;
			_g_free0 (_tmp203_);
			last_signal = _tmp205_;
			_tmp206_ = ((ValaCCodeBaseModule*) self)->signal_enum;
			_tmp207_ = last_signal;
			_tmp208_ = vala_ccode_enum_value_new (_tmp207_, NULL);
			_tmp209_ = _tmp208_;
			vala_ccode_enum_add_value (_tmp206_, _tmp209_);
			_vala_ccode_node_unref0 (_tmp209_);
			_tmp210_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp211_ = ((ValaCCodeBaseModule*) self)->signal_enum;
			vala_ccode_file_add_type_declaration (_tmp210_, (ValaCCodeNode*) _tmp211_);
			_tmp212_ = vala_ccode_declaration_new ("guint");
			signal_array_decl = _tmp212_;
			_tmp213_ = signal_array_decl;
			_tmp214_ = signal_array_decl;
			_tmp215_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp214_);
			_tmp216_ = _tmp215_;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp214_, _tmp216_ | VALA_CCODE_MODIFIERS_STATIC);
			_tmp217_ = signal_array_decl;
			_tmp218_ = cl;
			_tmp219_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp218_, NULL);
			_tmp220_ = _tmp219_;
			_tmp221_ = g_strdup_printf ("%s_signals", _tmp220_);
			_tmp222_ = _tmp221_;
			_tmp223_ = vala_ccode_constant_new ("{0}");
			_tmp224_ = _tmp223_;
			_tmp225_ = last_signal;
			_tmp226_ = vala_ccode_identifier_new (_tmp225_);
			_tmp227_ = _tmp226_;
			_tmp228_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp227_);
			_tmp229_ = _tmp228_;
			_tmp230_ = vala_ccode_variable_declarator_new (_tmp222_, (ValaCCodeExpression*) _tmp224_, _tmp229_);
			_tmp231_ = _tmp230_;
			vala_ccode_declaration_add_declarator (_tmp217_, (ValaCCodeDeclarator*) _tmp231_);
			_vala_ccode_node_unref0 (_tmp231_);
			_vala_ccode_declarator_suffix_unref0 (_tmp229_);
			_vala_ccode_node_unref0 (_tmp227_);
			_vala_ccode_node_unref0 (_tmp224_);
			_g_free0 (_tmp222_);
			_g_free0 (_tmp220_);
			_tmp232_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp233_ = signal_array_decl;
			vala_ccode_file_add_type_declaration (_tmp232_, (ValaCCodeNode*) _tmp233_);
			_vala_ccode_node_unref0 (signal_array_decl);
			_g_free0 (last_signal);
		}
		_tmp234_ = cl;
		_tmp235_ = vala_class_get_class_constructor (_tmp234_);
		_tmp236_ = _tmp235_;
		if (_tmp236_ != NULL) {
			ValaClass* _tmp237_;
			_tmp237_ = cl;
			vala_gtype_module_add_base_init_function (self, _tmp237_);
		}
		_tmp238_ = cl;
		vala_gtype_module_add_class_init_function (self, _tmp238_);
		_tmp239_ = cl;
		_tmp240_ = vala_class_get_class_destructor (_tmp239_);
		_tmp241_ = _tmp240_;
		if (_tmp241_ != NULL) {
			ValaClass* _tmp242_;
			_tmp242_ = cl;
			vala_gtype_module_add_base_finalize_function (self, _tmp242_);
		}
		_tmp243_ = cl;
		_tmp244_ = vala_class_get_static_destructor (_tmp243_);
		_tmp245_ = _tmp244_;
		if (_tmp245_ != NULL) {
			ValaClass* _tmp246_;
			_tmp246_ = cl;
			vala_gtype_module_add_class_finalize_function (self, _tmp246_);
		}
		{
			ValaList* _base_type_list = NULL;
			ValaClass* _tmp247_;
			ValaList* _tmp248_;
			gint _base_type_size = 0;
			ValaList* _tmp249_;
			gint _tmp250_;
			gint _tmp251_;
			gint _base_type_index = 0;
			_tmp247_ = cl;
			_tmp248_ = vala_class_get_base_types (_tmp247_);
			_base_type_list = _tmp248_;
			_tmp249_ = _base_type_list;
			_tmp250_ = vala_collection_get_size ((ValaCollection*) _tmp249_);
			_tmp251_ = _tmp250_;
			_base_type_size = _tmp251_;
			_base_type_index = -1;
			while (TRUE) {
				gint _tmp252_;
				gint _tmp253_;
				gint _tmp254_;
				ValaDataType* base_type = NULL;
				ValaList* _tmp255_;
				gint _tmp256_;
				gpointer _tmp257_;
				ValaDataType* _tmp258_;
				ValaTypeSymbol* _tmp259_;
				ValaTypeSymbol* _tmp260_;
				_tmp252_ = _base_type_index;
				_base_type_index = _tmp252_ + 1;
				_tmp253_ = _base_type_index;
				_tmp254_ = _base_type_size;
				if (!(_tmp253_ < _tmp254_)) {
					break;
				}
				_tmp255_ = _base_type_list;
				_tmp256_ = _base_type_index;
				_tmp257_ = vala_list_get (_tmp255_, _tmp256_);
				base_type = (ValaDataType*) _tmp257_;
				_tmp258_ = base_type;
				_tmp259_ = vala_data_type_get_data_type (_tmp258_);
				_tmp260_ = _tmp259_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp260_, VALA_TYPE_INTERFACE)) {
					ValaClass* _tmp261_;
					ValaDataType* _tmp262_;
					ValaTypeSymbol* _tmp263_;
					ValaTypeSymbol* _tmp264_;
					_tmp261_ = cl;
					_tmp262_ = base_type;
					_tmp263_ = vala_data_type_get_data_type (_tmp262_);
					_tmp264_ = _tmp263_;
					vala_gtype_module_add_interface_init_function (self, _tmp261_, G_TYPE_CHECK_INSTANCE_CAST (_tmp264_, VALA_TYPE_INTERFACE, ValaInterface));
				}
				_vala_code_node_unref0 (base_type);
			}
			_vala_iterable_unref0 (_base_type_list);
		}
		_tmp265_ = cl;
		vala_gtype_module_add_instance_init_function (self, _tmp265_);
		_tmp267_ = cl;
		_tmp268_ = vala_class_get_is_compact (_tmp267_);
		_tmp269_ = _tmp268_;
		if (!_tmp269_) {
			gboolean _tmp270_ = FALSE;
			gboolean _tmp271_ = FALSE;
			ValaClass* _tmp272_;
			ValaList* _tmp273_;
			ValaList* _tmp274_;
			gint _tmp275_;
			gint _tmp276_;
			gboolean _tmp277_;
			_tmp272_ = cl;
			_tmp273_ = vala_class_get_fields (_tmp272_);
			_tmp274_ = _tmp273_;
			_tmp275_ = vala_collection_get_size ((ValaCollection*) _tmp274_);
			_tmp276_ = _tmp275_;
			_tmp277_ = _tmp276_ > 0;
			_vala_iterable_unref0 (_tmp274_);
			if (_tmp277_) {
				_tmp271_ = TRUE;
			} else {
				ValaClass* _tmp278_;
				ValaDestructor* _tmp279_;
				ValaDestructor* _tmp280_;
				_tmp278_ = cl;
				_tmp279_ = vala_class_get_destructor (_tmp278_);
				_tmp280_ = _tmp279_;
				_tmp271_ = _tmp280_ != NULL;
			}
			if (_tmp271_) {
				_tmp270_ = TRUE;
			} else {
				ValaClass* _tmp281_;
				gboolean _tmp282_;
				_tmp281_ = cl;
				_tmp282_ = vala_class_is_fundamental (_tmp281_);
				_tmp270_ = _tmp282_;
			}
			_tmp266_ = _tmp270_;
		} else {
			_tmp266_ = FALSE;
		}
		if (_tmp266_) {
			ValaClass* _tmp283_;
			_tmp283_ = cl;
			vala_gtype_module_add_finalize_function (self, _tmp283_);
		}
		_tmp284_ = cl;
		_tmp285_ = vala_symbol_get_comment ((ValaSymbol*) _tmp284_);
		_tmp286_ = _tmp285_;
		if (_tmp286_ != NULL) {
			ValaCCodeFile* _tmp287_;
			ValaClass* _tmp288_;
			ValaComment* _tmp289_;
			ValaComment* _tmp290_;
			const gchar* _tmp291_;
			const gchar* _tmp292_;
			ValaCCodeComment* _tmp293_;
			ValaCCodeComment* _tmp294_;
			_tmp287_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp288_ = cl;
			_tmp289_ = vala_symbol_get_comment ((ValaSymbol*) _tmp288_);
			_tmp290_ = _tmp289_;
			_tmp291_ = vala_comment_get_content (_tmp290_);
			_tmp292_ = _tmp291_;
			_tmp293_ = vala_ccode_comment_new (_tmp292_);
			_tmp294_ = _tmp293_;
			vala_ccode_file_add_type_member_definition (_tmp287_, (ValaCCodeNode*) _tmp294_);
			_vala_ccode_node_unref0 (_tmp294_);
		}
		_tmp295_ = cl;
		_tmp296_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp297_ = _tmp296_;
		_tmp298_ = vala_class_register_function_new (_tmp295_, _tmp297_);
		type_fun = _tmp298_;
		_tmp299_ = type_fun;
		_tmp300_ = ((ValaCCodeBaseModule*) self)->in_plugin;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp299_, _tmp300_, FALSE);
		_tmp301_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp302_ = type_fun;
		_tmp303_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp302_);
		_tmp304_ = _tmp303_;
		vala_ccode_file_add_type_member_declaration (_tmp301_, (ValaCCodeNode*) _tmp304_);
		_vala_ccode_node_unref0 (_tmp304_);
		_tmp305_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp306_ = type_fun;
		_tmp307_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp306_);
		_tmp308_ = _tmp307_;
		vala_ccode_file_add_type_member_definition (_tmp305_, (ValaCCodeNode*) _tmp308_);
		_vala_ccode_node_unref0 (_tmp308_);
		_tmp309_ = is_fundamental;
		if (_tmp309_) {
			ValaCCodeMemberAccess* ref_count = NULL;
			ValaCCodeIdentifier* _tmp310_;
			ValaCCodeIdentifier* _tmp311_;
			ValaCCodeMemberAccess* _tmp312_;
			ValaCCodeMemberAccess* _tmp313_;
			ValaCCodeFunction* ref_fun = NULL;
			ValaClass* _tmp314_;
			gchar* _tmp315_;
			gchar* _tmp316_;
			gchar* _tmp317_;
			gchar* _tmp318_;
			ValaCCodeFunction* _tmp319_;
			ValaCCodeFunction* _tmp320_;
			ValaCCodeFunction* _tmp321_;
			ValaCCodeParameter* _tmp322_;
			ValaCCodeParameter* _tmp323_;
			ValaClass* _tmp324_;
			gboolean _tmp325_;
			ValaCCodeFunction* _tmp335_;
			ValaCCodeFunction* _tmp336_;
			ValaCCodeFunction* _tmp337_;
			ValaClass* _tmp338_;
			gchar* _tmp339_;
			gchar* _tmp340_;
			gchar* _tmp341_;
			gchar* _tmp342_;
			ValaCCodeIdentifier* _tmp343_;
			ValaCCodeIdentifier* _tmp344_;
			ValaCCodeVariableDeclarator* _tmp345_;
			ValaCCodeVariableDeclarator* _tmp346_;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeIdentifier* _tmp347_;
			ValaCCodeIdentifier* _tmp348_;
			ValaCCodeFunctionCall* _tmp349_;
			ValaCCodeFunctionCall* _tmp350_;
			ValaCCodeFunctionCall* _tmp351_;
			ValaCCodeMemberAccess* _tmp352_;
			ValaCCodeUnaryExpression* _tmp353_;
			ValaCCodeUnaryExpression* _tmp354_;
			ValaCCodeFunction* _tmp355_;
			ValaCCodeFunction* _tmp356_;
			ValaCCodeFunctionCall* _tmp357_;
			ValaCCodeFunction* _tmp358_;
			ValaCCodeFunction* _tmp359_;
			ValaCCodeIdentifier* _tmp360_;
			ValaCCodeIdentifier* _tmp361_;
			ValaCCodeFile* _tmp362_;
			ValaCCodeFunction* _tmp363_;
			ValaCCodeFunction* unref_fun = NULL;
			ValaClass* _tmp364_;
			gchar* _tmp365_;
			gchar* _tmp366_;
			gchar* _tmp367_;
			gchar* _tmp368_;
			ValaCCodeFunction* _tmp369_;
			ValaCCodeFunction* _tmp370_;
			ValaCCodeFunction* _tmp371_;
			ValaCCodeParameter* _tmp372_;
			ValaCCodeParameter* _tmp373_;
			ValaClass* _tmp374_;
			gboolean _tmp375_;
			ValaCCodeFunction* _tmp385_;
			ValaCCodeFunction* _tmp386_;
			ValaCCodeFunction* _tmp387_;
			ValaClass* _tmp388_;
			gchar* _tmp389_;
			gchar* _tmp390_;
			gchar* _tmp391_;
			gchar* _tmp392_;
			ValaCCodeIdentifier* _tmp393_;
			ValaCCodeIdentifier* _tmp394_;
			ValaCCodeVariableDeclarator* _tmp395_;
			ValaCCodeVariableDeclarator* _tmp396_;
			ValaCCodeIdentifier* _tmp397_;
			ValaCCodeIdentifier* _tmp398_;
			ValaCCodeFunctionCall* _tmp399_;
			ValaCCodeFunctionCall* _tmp400_;
			ValaCCodeMemberAccess* _tmp401_;
			ValaCCodeUnaryExpression* _tmp402_;
			ValaCCodeUnaryExpression* _tmp403_;
			ValaCCodeFunction* _tmp404_;
			ValaCCodeFunction* _tmp405_;
			ValaCCodeFunctionCall* _tmp406_;
			ValaCCodeFunctionCall* get_class = NULL;
			ValaClass* _tmp407_;
			gchar* _tmp408_;
			gchar* _tmp409_;
			gchar* _tmp410_;
			gchar* _tmp411_;
			ValaCCodeIdentifier* _tmp412_;
			ValaCCodeIdentifier* _tmp413_;
			ValaCCodeFunctionCall* _tmp414_;
			ValaCCodeFunctionCall* _tmp415_;
			ValaCCodeFunctionCall* _tmp416_;
			ValaCCodeIdentifier* _tmp417_;
			ValaCCodeIdentifier* _tmp418_;
			ValaCCodeFunctionCall* ccast = NULL;
			ValaClass* _tmp419_;
			gchar* _tmp420_;
			gchar* _tmp421_;
			gchar* _tmp422_;
			gchar* _tmp423_;
			ValaCCodeIdentifier* _tmp424_;
			ValaCCodeIdentifier* _tmp425_;
			ValaCCodeFunctionCall* _tmp426_;
			ValaCCodeFunctionCall* _tmp427_;
			ValaCCodeFunctionCall* _tmp428_;
			ValaCCodeIdentifier* _tmp429_;
			ValaCCodeIdentifier* _tmp430_;
			ValaCCodeFunctionCall* _tmp431_;
			ValaCCodeMemberAccess* _tmp432_;
			ValaCCodeMemberAccess* _tmp433_;
			ValaCCodeFunctionCall* _tmp434_;
			ValaCCodeFunctionCall* _tmp435_;
			ValaCCodeIdentifier* _tmp436_;
			ValaCCodeIdentifier* _tmp437_;
			ValaCCodeFunction* _tmp438_;
			ValaCCodeFunction* _tmp439_;
			ValaCCodeFunctionCall* _tmp440_;
			ValaCCodeFunctionCall* free = NULL;
			ValaCCodeIdentifier* _tmp441_;
			ValaCCodeIdentifier* _tmp442_;
			ValaCCodeFunctionCall* _tmp443_;
			ValaCCodeFunctionCall* _tmp444_;
			ValaCCodeFunctionCall* _tmp445_;
			ValaCCodeIdentifier* _tmp446_;
			ValaCCodeIdentifier* _tmp447_;
			ValaCCodeCastExpression* _tmp448_;
			ValaCCodeCastExpression* _tmp449_;
			ValaCCodeFunction* _tmp450_;
			ValaCCodeFunction* _tmp451_;
			ValaCCodeFunctionCall* _tmp452_;
			ValaCCodeFunction* _tmp453_;
			ValaCCodeFunction* _tmp454_;
			ValaCCodeFile* _tmp455_;
			ValaCCodeFunction* _tmp456_;
			_tmp310_ = vala_ccode_identifier_new ("self");
			_tmp311_ = _tmp310_;
			_tmp312_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp311_, "ref_count");
			_tmp313_ = _tmp312_;
			_vala_ccode_node_unref0 (_tmp311_);
			ref_count = _tmp313_;
			_tmp314_ = cl;
			_tmp315_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp314_);
			_tmp316_ = _tmp315_;
			_tmp317_ = g_strdup_printf ("%sref", _tmp316_);
			_tmp318_ = _tmp317_;
			_tmp319_ = vala_ccode_function_new (_tmp318_, "gpointer");
			_tmp320_ = _tmp319_;
			_g_free0 (_tmp318_);
			_g_free0 (_tmp316_);
			ref_fun = _tmp320_;
			_tmp321_ = ref_fun;
			_tmp322_ = vala_ccode_parameter_new ("instance", "gpointer");
			_tmp323_ = _tmp322_;
			vala_ccode_function_add_parameter (_tmp321_, _tmp323_);
			_vala_ccode_node_unref0 (_tmp323_);
			_tmp324_ = cl;
			_tmp325_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp324_);
			if (_tmp325_) {
				ValaCCodeFunction* _tmp326_;
				_tmp326_ = ref_fun;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp326_, VALA_CCODE_MODIFIERS_STATIC);
			} else {
				gboolean _tmp327_ = FALSE;
				ValaCodeContext* _tmp328_;
				ValaCodeContext* _tmp329_;
				gboolean _tmp330_;
				gboolean _tmp331_;
				_tmp328_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
				_tmp329_ = _tmp328_;
				_tmp330_ = vala_code_context_get_hide_internal (_tmp329_);
				_tmp331_ = _tmp330_;
				if (_tmp331_) {
					ValaClass* _tmp332_;
					gboolean _tmp333_;
					_tmp332_ = cl;
					_tmp333_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp332_);
					_tmp327_ = _tmp333_;
				} else {
					_tmp327_ = FALSE;
				}
				if (_tmp327_) {
					ValaCCodeFunction* _tmp334_;
					_tmp334_ = ref_fun;
					vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp334_, VALA_CCODE_MODIFIERS_INTERNAL);
				}
			}
			_tmp335_ = ref_fun;
			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp335_);
			_tmp336_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp337_ = _tmp336_;
			_tmp338_ = cl;
			_tmp339_ = vala_get_ccode_name ((ValaCodeNode*) _tmp338_);
			_tmp340_ = _tmp339_;
			_tmp341_ = g_strdup_printf ("%s *", _tmp340_);
			_tmp342_ = _tmp341_;
			_tmp343_ = vala_ccode_identifier_new ("instance");
			_tmp344_ = _tmp343_;
			_tmp345_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp344_, NULL);
			_tmp346_ = _tmp345_;
			vala_ccode_function_add_declaration (_tmp337_, _tmp342_, (ValaCCodeDeclarator*) _tmp346_, 0);
			_vala_ccode_node_unref0 (_tmp346_);
			_vala_ccode_node_unref0 (_tmp344_);
			_g_free0 (_tmp342_);
			_g_free0 (_tmp340_);
			_tmp347_ = vala_ccode_identifier_new ("g_atomic_int_inc");
			_tmp348_ = _tmp347_;
			_tmp349_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp348_);
			_tmp350_ = _tmp349_;
			_vala_ccode_node_unref0 (_tmp348_);
			ccall = _tmp350_;
			_tmp351_ = ccall;
			_tmp352_ = ref_count;
			_tmp353_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp352_);
			_tmp354_ = _tmp353_;
			vala_ccode_function_call_add_argument (_tmp351_, (ValaCCodeExpression*) _tmp354_);
			_vala_ccode_node_unref0 (_tmp354_);
			_tmp355_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp356_ = _tmp355_;
			_tmp357_ = ccall;
			vala_ccode_function_add_expression (_tmp356_, (ValaCCodeExpression*) _tmp357_);
			_tmp358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp359_ = _tmp358_;
			_tmp360_ = vala_ccode_identifier_new ("instance");
			_tmp361_ = _tmp360_;
			vala_ccode_function_add_return (_tmp359_, (ValaCCodeExpression*) _tmp361_);
			_vala_ccode_node_unref0 (_tmp361_);
			vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
			_tmp362_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp363_ = ref_fun;
			vala_ccode_file_add_function (_tmp362_, _tmp363_);
			_tmp364_ = cl;
			_tmp365_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp364_);
			_tmp366_ = _tmp365_;
			_tmp367_ = g_strdup_printf ("%sunref", _tmp366_);
			_tmp368_ = _tmp367_;
			_tmp369_ = vala_ccode_function_new (_tmp368_, "void");
			_tmp370_ = _tmp369_;
			_g_free0 (_tmp368_);
			_g_free0 (_tmp366_);
			unref_fun = _tmp370_;
			_tmp371_ = unref_fun;
			_tmp372_ = vala_ccode_parameter_new ("instance", "gpointer");
			_tmp373_ = _tmp372_;
			vala_ccode_function_add_parameter (_tmp371_, _tmp373_);
			_vala_ccode_node_unref0 (_tmp373_);
			_tmp374_ = cl;
			_tmp375_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp374_);
			if (_tmp375_) {
				ValaCCodeFunction* _tmp376_;
				_tmp376_ = unref_fun;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp376_, VALA_CCODE_MODIFIERS_STATIC);
			} else {
				gboolean _tmp377_ = FALSE;
				ValaCodeContext* _tmp378_;
				ValaCodeContext* _tmp379_;
				gboolean _tmp380_;
				gboolean _tmp381_;
				_tmp378_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
				_tmp379_ = _tmp378_;
				_tmp380_ = vala_code_context_get_hide_internal (_tmp379_);
				_tmp381_ = _tmp380_;
				if (_tmp381_) {
					ValaClass* _tmp382_;
					gboolean _tmp383_;
					_tmp382_ = cl;
					_tmp383_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp382_);
					_tmp377_ = _tmp383_;
				} else {
					_tmp377_ = FALSE;
				}
				if (_tmp377_) {
					ValaCCodeFunction* _tmp384_;
					_tmp384_ = unref_fun;
					vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp384_, VALA_CCODE_MODIFIERS_INTERNAL);
				}
			}
			_tmp385_ = unref_fun;
			vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp385_);
			_tmp386_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp387_ = _tmp386_;
			_tmp388_ = cl;
			_tmp389_ = vala_get_ccode_name ((ValaCodeNode*) _tmp388_);
			_tmp390_ = _tmp389_;
			_tmp391_ = g_strdup_printf ("%s *", _tmp390_);
			_tmp392_ = _tmp391_;
			_tmp393_ = vala_ccode_identifier_new ("instance");
			_tmp394_ = _tmp393_;
			_tmp395_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp394_, NULL);
			_tmp396_ = _tmp395_;
			vala_ccode_function_add_declaration (_tmp387_, _tmp392_, (ValaCCodeDeclarator*) _tmp396_, 0);
			_vala_ccode_node_unref0 (_tmp396_);
			_vala_ccode_node_unref0 (_tmp394_);
			_g_free0 (_tmp392_);
			_g_free0 (_tmp390_);
			_tmp397_ = vala_ccode_identifier_new ("g_atomic_int_dec_and_test");
			_tmp398_ = _tmp397_;
			_tmp399_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp398_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp399_;
			_vala_ccode_node_unref0 (_tmp398_);
			_tmp400_ = ccall;
			_tmp401_ = ref_count;
			_tmp402_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp401_);
			_tmp403_ = _tmp402_;
			vala_ccode_function_call_add_argument (_tmp400_, (ValaCCodeExpression*) _tmp403_);
			_vala_ccode_node_unref0 (_tmp403_);
			_tmp404_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp405_ = _tmp404_;
			_tmp406_ = ccall;
			vala_ccode_function_open_if (_tmp405_, (ValaCCodeExpression*) _tmp406_);
			_tmp407_ = cl;
			_tmp408_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp407_, NULL);
			_tmp409_ = _tmp408_;
			_tmp410_ = g_strdup_printf ("%s_GET_CLASS", _tmp409_);
			_tmp411_ = _tmp410_;
			_tmp412_ = vala_ccode_identifier_new (_tmp411_);
			_tmp413_ = _tmp412_;
			_tmp414_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp413_);
			_tmp415_ = _tmp414_;
			_vala_ccode_node_unref0 (_tmp413_);
			_g_free0 (_tmp411_);
			_g_free0 (_tmp409_);
			get_class = _tmp415_;
			_tmp416_ = get_class;
			_tmp417_ = vala_ccode_identifier_new ("self");
			_tmp418_ = _tmp417_;
			vala_ccode_function_call_add_argument (_tmp416_, (ValaCCodeExpression*) _tmp418_);
			_vala_ccode_node_unref0 (_tmp418_);
			_tmp419_ = cl;
			_tmp420_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp419_, NULL);
			_tmp421_ = _tmp420_;
			_tmp422_ = g_strdup_printf ("%s_GET_CLASS", _tmp421_);
			_tmp423_ = _tmp422_;
			_tmp424_ = vala_ccode_identifier_new (_tmp423_);
			_tmp425_ = _tmp424_;
			_tmp426_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp425_);
			_tmp427_ = _tmp426_;
			_vala_ccode_node_unref0 (_tmp425_);
			_g_free0 (_tmp423_);
			_g_free0 (_tmp421_);
			ccast = _tmp427_;
			_tmp428_ = ccast;
			_tmp429_ = vala_ccode_identifier_new ("self");
			_tmp430_ = _tmp429_;
			vala_ccode_function_call_add_argument (_tmp428_, (ValaCCodeExpression*) _tmp430_);
			_vala_ccode_node_unref0 (_tmp430_);
			_tmp431_ = ccast;
			_tmp432_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp431_, "finalize");
			_tmp433_ = _tmp432_;
			_tmp434_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp433_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp434_;
			_vala_ccode_node_unref0 (_tmp433_);
			_tmp435_ = ccall;
			_tmp436_ = vala_ccode_identifier_new ("self");
			_tmp437_ = _tmp436_;
			vala_ccode_function_call_add_argument (_tmp435_, (ValaCCodeExpression*) _tmp437_);
			_vala_ccode_node_unref0 (_tmp437_);
			_tmp438_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp439_ = _tmp438_;
			_tmp440_ = ccall;
			vala_ccode_function_add_expression (_tmp439_, (ValaCCodeExpression*) _tmp440_);
			_tmp441_ = vala_ccode_identifier_new ("g_type_free_instance");
			_tmp442_ = _tmp441_;
			_tmp443_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp442_);
			_tmp444_ = _tmp443_;
			_vala_ccode_node_unref0 (_tmp442_);
			free = _tmp444_;
			_tmp445_ = free;
			_tmp446_ = vala_ccode_identifier_new ("self");
			_tmp447_ = _tmp446_;
			_tmp448_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp447_, "GTypeInstance *");
			_tmp449_ = _tmp448_;
			vala_ccode_function_call_add_argument (_tmp445_, (ValaCCodeExpression*) _tmp449_);
			_vala_ccode_node_unref0 (_tmp449_);
			_vala_ccode_node_unref0 (_tmp447_);
			_tmp450_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp451_ = _tmp450_;
			_tmp452_ = free;
			vala_ccode_function_add_expression (_tmp451_, (ValaCCodeExpression*) _tmp452_);
			_tmp453_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp454_ = _tmp453_;
			vala_ccode_function_close (_tmp454_);
			vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
			_tmp455_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp456_ = unref_fun;
			vala_ccode_file_add_function (_tmp455_, _tmp456_);
			_vala_ccode_node_unref0 (free);
			_vala_ccode_node_unref0 (ccast);
			_vala_ccode_node_unref0 (get_class);
			_vala_ccode_node_unref0 (unref_fun);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (ref_fun);
			_vala_ccode_node_unref0 (ref_count);
		}
		_vala_typeregister_function_unref0 (type_fun);
	} else {
		gboolean _tmp457_ = FALSE;
		ValaClass* _tmp458_;
		ValaClass* _tmp459_;
		ValaClass* _tmp460_;
		_tmp458_ = cl;
		_tmp459_ = vala_class_get_base_class (_tmp458_);
		_tmp460_ = _tmp459_;
		if (_tmp460_ == NULL) {
			_tmp457_ = TRUE;
		} else {
			ValaClass* _tmp461_;
			ValaClass* _tmp462_;
			ValaClass* _tmp463_;
			ValaClass* _tmp464_;
			_tmp461_ = cl;
			_tmp462_ = vala_class_get_base_class (_tmp461_);
			_tmp463_ = _tmp462_;
			_tmp464_ = ((ValaCCodeBaseModule*) self)->gsource_type;
			_tmp457_ = _tmp463_ == _tmp464_;
		}
		if (_tmp457_) {
			ValaClass* _tmp465_;
			ValaClass* _tmp466_;
			_tmp465_ = cl;
			vala_gtype_module_add_instance_init_function (self, _tmp465_);
			_tmp466_ = cl;
			vala_gtype_module_add_finalize_function (self, _tmp466_);
		}
	}
	_tmp467_ = old_param_spec_struct;
	_tmp468_ = _vala_ccode_node_ref0 (_tmp467_);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->param_spec_struct);
	((ValaCCodeBaseModule*) self)->param_spec_struct = _tmp468_;
	_tmp469_ = old_prop_enum;
	_tmp470_ = _vala_ccode_node_ref0 (_tmp469_);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->prop_enum);
	((ValaCCodeBaseModule*) self)->prop_enum = _tmp470_;
	_tmp471_ = old_signal_enum;
	_tmp472_ = _vala_ccode_node_ref0 (_tmp471_);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
	((ValaCCodeBaseModule*) self)->signal_enum = _tmp472_;
	_tmp473_ = old_class_init_context;
	_tmp474_ = _vala_ccode_base_module_emit_context_ref0 (_tmp473_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_init_context);
	((ValaCCodeBaseModule*) self)->class_init_context = _tmp474_;
	_tmp475_ = old_base_init_context;
	_tmp476_ = _vala_ccode_base_module_emit_context_ref0 (_tmp475_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_init_context);
	((ValaCCodeBaseModule*) self)->base_init_context = _tmp476_;
	_tmp477_ = old_class_finalize_context;
	_tmp478_ = _vala_ccode_base_module_emit_context_ref0 (_tmp477_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->class_finalize_context);
	((ValaCCodeBaseModule*) self)->class_finalize_context = _tmp478_;
	_tmp479_ = old_base_finalize_context;
	_tmp480_ = _vala_ccode_base_module_emit_context_ref0 (_tmp479_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->base_finalize_context);
	((ValaCCodeBaseModule*) self)->base_finalize_context = _tmp480_;
	_tmp481_ = old_instance_init_context;
	_tmp482_ = _vala_ccode_base_module_emit_context_ref0 (_tmp481_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_init_context);
	((ValaCCodeBaseModule*) self)->instance_init_context = _tmp482_;
	_tmp483_ = old_instance_finalize_context;
	_tmp484_ = _vala_ccode_base_module_emit_context_ref0 (_tmp483_);
	_vala_ccode_base_module_emit_context_unref0 (((ValaCCodeBaseModule*) self)->instance_finalize_context);
	((ValaCCodeBaseModule*) self)->instance_finalize_context = _tmp484_;
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_g_free0 (last_prop);
	_vala_ccode_base_module_emit_context_unref0 (old_instance_finalize_context);
	_vala_ccode_base_module_emit_context_unref0 (old_instance_init_context);
	_vala_ccode_base_module_emit_context_unref0 (old_base_finalize_context);
	_vala_ccode_base_module_emit_context_unref0 (old_class_finalize_context);
	_vala_ccode_base_module_emit_context_unref0 (old_base_init_context);
	_vala_ccode_base_module_emit_context_unref0 (old_class_init_context);
	_vala_ccode_node_unref0 (old_signal_enum);
	_vala_ccode_node_unref0 (old_prop_enum);
	_vala_ccode_node_unref0 (old_param_spec_struct);
}


static void vala_gtype_module_add_type_value_table_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeFunction* _tmp10_;
	ValaCCodeIdentifier* _tmp11_;
	ValaCCodeIdentifier* _tmp12_;
	ValaCCodeMemberAccess* _tmp13_;
	ValaCCodeMemberAccess* _tmp14_;
	ValaCCodeMemberAccess* _tmp15_;
	ValaCCodeMemberAccess* _tmp16_;
	ValaCCodeConstant* _tmp17_;
	ValaCCodeConstant* _tmp18_;
	ValaCCodeFile* _tmp19_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_init", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp9_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_ccode_identifier_new ("value");
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp12_, "data[0]");
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp14_, "v_pointer", FALSE);
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_constant_new ("NULL");
	_tmp18_ = _tmp17_;
	vala_ccode_function_add_assignment (_tmp10_, (ValaCCodeExpression*) _tmp16_, (ValaCCodeExpression*) _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_vala_ccode_node_unref0 (_tmp16_);
	_vala_ccode_node_unref0 (_tmp14_);
	_vala_ccode_node_unref0 (_tmp12_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp19_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp19_, function);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_free_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp9_;
	ValaCCodeIdentifier* _tmp10_;
	ValaCCodeMemberAccess* _tmp11_;
	ValaCCodeMemberAccess* _tmp12_;
	ValaCCodeMemberAccess* _tmp13_;
	ValaCCodeMemberAccess* _tmp14_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaClass* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	gchar* _tmp19_;
	ValaCCodeIdentifier* _tmp20_;
	ValaCCodeIdentifier* _tmp21_;
	ValaCCodeFunctionCall* _tmp22_;
	ValaCCodeFunctionCall* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	ValaCCodeFunction* _tmp25_;
	ValaCCodeFunction* _tmp26_;
	ValaCCodeFunction* _tmp27_;
	ValaCCodeFunction* _tmp28_;
	ValaCCodeFunction* _tmp29_;
	ValaCCodeFile* _tmp30_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_free_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp9_ = vala_ccode_identifier_new ("value");
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp10_, "data[0]");
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp12_, "v_pointer", FALSE);
	_tmp14_ = _tmp13_;
	_vala_ccode_node_unref0 (_tmp12_);
	_vala_ccode_node_unref0 (_tmp10_);
	vpointer = _tmp14_;
	_tmp15_ = cl;
	_tmp16_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp15_);
	_tmp17_ = _tmp16_;
	_tmp18_ = g_strdup_printf ("%sunref", _tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = vala_ccode_identifier_new (_tmp19_);
	_tmp21_ = _tmp20_;
	_tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
	_tmp23_ = _tmp22_;
	_vala_ccode_node_unref0 (_tmp21_);
	_g_free0 (_tmp19_);
	_g_free0 (_tmp17_);
	ccall = _tmp23_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) vpointer);
	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp25_ = _tmp24_;
	vala_ccode_function_open_if (_tmp25_, (ValaCCodeExpression*) vpointer);
	_tmp26_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp27_ = _tmp26_;
	vala_ccode_function_add_expression (_tmp27_, (ValaCCodeExpression*) ccall);
	_tmp28_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp29_ = _tmp28_;
	vala_ccode_function_close (_tmp29_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp30_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp30_, function);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_copy_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeParameter* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeMemberAccess* dest_vpointer = NULL;
	ValaCCodeIdentifier* _tmp11_;
	ValaCCodeIdentifier* _tmp12_;
	ValaCCodeMemberAccess* _tmp13_;
	ValaCCodeMemberAccess* _tmp14_;
	ValaCCodeMemberAccess* _tmp15_;
	ValaCCodeMemberAccess* _tmp16_;
	ValaCCodeMemberAccess* src_vpointer = NULL;
	ValaCCodeIdentifier* _tmp17_;
	ValaCCodeIdentifier* _tmp18_;
	ValaCCodeMemberAccess* _tmp19_;
	ValaCCodeMemberAccess* _tmp20_;
	ValaCCodeMemberAccess* _tmp21_;
	ValaCCodeMemberAccess* _tmp22_;
	ValaCCodeFunctionCall* ref_ccall = NULL;
	ValaClass* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	ValaCCodeIdentifier* _tmp28_;
	ValaCCodeIdentifier* _tmp29_;
	ValaCCodeFunctionCall* _tmp30_;
	ValaCCodeFunctionCall* _tmp31_;
	ValaCCodeFunction* _tmp32_;
	ValaCCodeFunction* _tmp33_;
	ValaCCodeFunction* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaCCodeFunction* _tmp37_;
	ValaCCodeFunction* _tmp38_;
	ValaCCodeFunction* _tmp39_;
	ValaCCodeConstant* _tmp40_;
	ValaCCodeConstant* _tmp41_;
	ValaCCodeFunction* _tmp42_;
	ValaCCodeFunction* _tmp43_;
	ValaCCodeFile* _tmp44_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_copy_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "void");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("src_value", "const GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_ccode_parameter_new ("dest_value", "GValue*");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (function, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp11_ = vala_ccode_identifier_new ("dest_value");
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp12_, "data[0]");
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp14_, "v_pointer", FALSE);
	_tmp16_ = _tmp15_;
	_vala_ccode_node_unref0 (_tmp14_);
	_vala_ccode_node_unref0 (_tmp12_);
	dest_vpointer = _tmp16_;
	_tmp17_ = vala_ccode_identifier_new ("src_value");
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp18_, "data[0]");
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp20_, "v_pointer", FALSE);
	_tmp22_ = _tmp21_;
	_vala_ccode_node_unref0 (_tmp20_);
	_vala_ccode_node_unref0 (_tmp18_);
	src_vpointer = _tmp22_;
	_tmp23_ = cl;
	_tmp24_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = g_strdup_printf ("%sref", _tmp25_);
	_tmp27_ = _tmp26_;
	_tmp28_ = vala_ccode_identifier_new (_tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp29_);
	_tmp31_ = _tmp30_;
	_vala_ccode_node_unref0 (_tmp29_);
	_g_free0 (_tmp27_);
	_g_free0 (_tmp25_);
	ref_ccall = _tmp31_;
	vala_ccode_function_call_add_argument (ref_ccall, (ValaCCodeExpression*) src_vpointer);
	_tmp32_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp33_ = _tmp32_;
	vala_ccode_function_open_if (_tmp33_, (ValaCCodeExpression*) src_vpointer);
	_tmp34_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp35_ = _tmp34_;
	vala_ccode_function_add_assignment (_tmp35_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) ref_ccall);
	_tmp36_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp37_ = _tmp36_;
	vala_ccode_function_add_else (_tmp37_);
	_tmp38_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_constant_new ("NULL");
	_tmp41_ = _tmp40_;
	vala_ccode_function_add_assignment (_tmp39_, (ValaCCodeExpression*) dest_vpointer, (ValaCCodeExpression*) _tmp41_);
	_vala_ccode_node_unref0 (_tmp41_);
	_tmp42_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp43_ = _tmp42_;
	vala_ccode_function_close (_tmp43_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp44_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp44_, function);
	_vala_ccode_node_unref0 (ref_ccall);
	_vala_ccode_node_unref0 (src_vpointer);
	_vala_ccode_node_unref0 (dest_vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_peek_pointer_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp9_;
	ValaCCodeIdentifier* _tmp10_;
	ValaCCodeMemberAccess* _tmp11_;
	ValaCCodeMemberAccess* _tmp12_;
	ValaCCodeMemberAccess* _tmp13_;
	ValaCCodeMemberAccess* _tmp14_;
	ValaCCodeFunction* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeFile* _tmp17_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_peek_pointer", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "gpointer");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "const GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp9_ = vala_ccode_identifier_new ("value");
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp10_, "data[0]");
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp12_, "v_pointer", FALSE);
	_tmp14_ = _tmp13_;
	_vala_ccode_node_unref0 (_tmp12_);
	_vala_ccode_node_unref0 (_tmp10_);
	vpointer = _tmp14_;
	_tmp15_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_return (_tmp16_, (ValaCCodeExpression*) vpointer);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp17_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp17_, function);
	_vala_ccode_node_unref0 (vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_lcopy_value_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeParameter* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeParameter* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp15_;
	ValaCCodeIdentifier* _tmp16_;
	ValaCCodeMemberAccess* _tmp17_;
	ValaCCodeMemberAccess* _tmp18_;
	ValaCCodeMemberAccess* _tmp19_;
	ValaCCodeMemberAccess* _tmp20_;
	ValaCCodeIdentifier* object_p_ptr = NULL;
	ValaCCodeIdentifier* _tmp21_;
	ValaCCodeConstant* null_ = NULL;
	ValaCCodeConstant* _tmp22_;
	ValaCCodeFunction* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	ValaClass* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	gchar* _tmp28_;
	gchar* _tmp29_;
	ValaCCodeIdentifier* _tmp30_;
	ValaCCodeIdentifier* _tmp31_;
	ValaCCodeMemberAccess* _tmp32_;
	ValaCCodeMemberAccess* _tmp33_;
	ValaCCodeVariableDeclarator* _tmp34_;
	ValaCCodeVariableDeclarator* _tmp35_;
	ValaCCodeFunctionCall* value_type_name_fct = NULL;
	ValaCCodeIdentifier* _tmp36_;
	ValaCCodeIdentifier* _tmp37_;
	ValaCCodeFunctionCall* _tmp38_;
	ValaCCodeFunctionCall* _tmp39_;
	ValaCCodeConstant* _tmp40_;
	ValaCCodeConstant* _tmp41_;
	ValaCCodeUnaryExpression* assert_condition = NULL;
	ValaCCodeIdentifier* _tmp42_;
	ValaCCodeIdentifier* _tmp43_;
	ValaCCodeUnaryExpression* _tmp44_;
	ValaCCodeUnaryExpression* _tmp45_;
	ValaCCodeFunction* _tmp46_;
	ValaCCodeFunction* _tmp47_;
	ValaCCodeFunctionCall* assert_printf = NULL;
	ValaCCodeIdentifier* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeFunctionCall* _tmp50_;
	ValaCCodeFunctionCall* _tmp51_;
	ValaCCodeConstant* _tmp52_;
	ValaCCodeConstant* _tmp53_;
	ValaCCodeFunction* _tmp54_;
	ValaCCodeFunction* _tmp55_;
	ValaCCodeFunction* _tmp56_;
	ValaCCodeFunction* _tmp57_;
	ValaCCodeUnaryExpression* main_condition = NULL;
	ValaCCodeUnaryExpression* _tmp58_;
	ValaCCodeBinaryExpression* main_else_if_condition = NULL;
	ValaCCodeIdentifier* _tmp59_;
	ValaCCodeIdentifier* _tmp60_;
	ValaCCodeIdentifier* _tmp61_;
	ValaCCodeIdentifier* _tmp62_;
	ValaCCodeBinaryExpression* _tmp63_;
	ValaCCodeBinaryExpression* _tmp64_;
	ValaCCodeFunctionCall* ref_fct = NULL;
	ValaClass* _tmp65_;
	gchar* _tmp66_;
	gchar* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeIdentifier* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	ValaCCodeFunction* _tmp72_;
	ValaCCodeFunction* _tmp73_;
	ValaCCodeFunction* _tmp74_;
	ValaCCodeFunction* _tmp75_;
	ValaCCodeFunction* _tmp76_;
	ValaCCodeFunction* _tmp77_;
	ValaCCodeFunction* _tmp78_;
	ValaCCodeFunction* _tmp79_;
	ValaCCodeFunction* _tmp80_;
	ValaCCodeFunction* _tmp81_;
	ValaCCodeFunction* _tmp82_;
	ValaCCodeFunction* _tmp83_;
	ValaCCodeFunction* _tmp84_;
	ValaCCodeFunction* _tmp85_;
	ValaCCodeFunction* _tmp86_;
	ValaCCodeFunction* _tmp87_;
	ValaCCodeFile* _tmp88_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_lcopy_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "const GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (function, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (function, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (function, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp15_ = vala_ccode_identifier_new ("value");
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
	_tmp20_ = _tmp19_;
	_vala_ccode_node_unref0 (_tmp18_);
	_vala_ccode_node_unref0 (_tmp16_);
	vpointer = _tmp20_;
	_tmp21_ = vala_ccode_identifier_new ("*object_p");
	object_p_ptr = _tmp21_;
	_tmp22_ = vala_ccode_constant_new ("NULL");
	null_ = _tmp22_;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp23_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp24_ = _tmp23_;
	_tmp25_ = cl;
	_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) _tmp25_);
	_tmp27_ = _tmp26_;
	_tmp28_ = g_strdup_printf ("%s **", _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = vala_ccode_identifier_new ("collect_values[0]");
	_tmp31_ = _tmp30_;
	_tmp32_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp31_, "v_pointer", FALSE);
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_ccode_variable_declarator_new ("object_p", (ValaCCodeExpression*) _tmp33_, NULL);
	_tmp35_ = _tmp34_;
	vala_ccode_function_add_declaration (_tmp24_, _tmp29_, (ValaCCodeDeclarator*) _tmp35_, 0);
	_vala_ccode_node_unref0 (_tmp35_);
	_vala_ccode_node_unref0 (_tmp33_);
	_vala_ccode_node_unref0 (_tmp31_);
	_g_free0 (_tmp29_);
	_g_free0 (_tmp27_);
	_tmp36_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
	_tmp37_ = _tmp36_;
	_tmp38_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp37_);
	_tmp39_ = _tmp38_;
	_vala_ccode_node_unref0 (_tmp37_);
	value_type_name_fct = _tmp39_;
	_tmp40_ = vala_ccode_constant_new ("value");
	_tmp41_ = _tmp40_;
	vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp41_);
	_vala_ccode_node_unref0 (_tmp41_);
	_tmp42_ = vala_ccode_identifier_new ("object_p");
	_tmp43_ = _tmp42_;
	_tmp44_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp43_);
	_tmp45_ = _tmp44_;
	_vala_ccode_node_unref0 (_tmp43_);
	assert_condition = _tmp45_;
	_tmp46_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp47_ = _tmp46_;
	vala_ccode_function_open_if (_tmp47_, (ValaCCodeExpression*) assert_condition);
	_tmp48_ = vala_ccode_identifier_new ("g_strdup_printf");
	_tmp49_ = _tmp48_;
	_tmp50_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp49_);
	_tmp51_ = _tmp50_;
	_vala_ccode_node_unref0 (_tmp49_);
	assert_printf = _tmp51_;
	_tmp52_ = vala_ccode_constant_new ("\"value location for `%s' passed as NULL\"");
	_tmp53_ = _tmp52_;
	vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) _tmp53_);
	_vala_ccode_node_unref0 (_tmp53_);
	vala_ccode_function_call_add_argument (assert_printf, (ValaCCodeExpression*) value_type_name_fct);
	_tmp54_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp55_ = _tmp54_;
	vala_ccode_function_add_return (_tmp55_, (ValaCCodeExpression*) assert_printf);
	_tmp56_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp57_ = _tmp56_;
	vala_ccode_function_close (_tmp57_);
	_tmp58_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) vpointer);
	main_condition = _tmp58_;
	_tmp59_ = vala_ccode_identifier_new ("collect_flags");
	_tmp60_ = _tmp59_;
	_tmp61_ = vala_ccode_identifier_new ("G_VALUE_NOCOPY_CONTENTS");
	_tmp62_ = _tmp61_;
	_tmp63_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_BITWISE_AND, (ValaCCodeExpression*) _tmp60_, (ValaCCodeExpression*) _tmp62_);
	_tmp64_ = _tmp63_;
	_vala_ccode_node_unref0 (_tmp62_);
	_vala_ccode_node_unref0 (_tmp60_);
	main_else_if_condition = _tmp64_;
	_tmp65_ = cl;
	_tmp66_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) _tmp65_);
	_tmp67_ = _tmp66_;
	_tmp68_ = vala_ccode_identifier_new (_tmp67_);
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
	_tmp71_ = _tmp70_;
	_vala_ccode_node_unref0 (_tmp69_);
	_g_free0 (_tmp67_);
	ref_fct = _tmp71_;
	vala_ccode_function_call_add_argument (ref_fct, (ValaCCodeExpression*) vpointer);
	_tmp72_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp73_ = _tmp72_;
	vala_ccode_function_open_if (_tmp73_, (ValaCCodeExpression*) main_condition);
	_tmp74_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp75_ = _tmp74_;
	vala_ccode_function_add_assignment (_tmp75_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) null_);
	_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp77_ = _tmp76_;
	vala_ccode_function_else_if (_tmp77_, (ValaCCodeExpression*) main_else_if_condition);
	_tmp78_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp79_ = _tmp78_;
	vala_ccode_function_add_assignment (_tmp79_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) vpointer);
	_tmp80_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp81_ = _tmp80_;
	vala_ccode_function_add_else (_tmp81_);
	_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp83_ = _tmp82_;
	vala_ccode_function_add_assignment (_tmp83_, (ValaCCodeExpression*) object_p_ptr, (ValaCCodeExpression*) ref_fct);
	_tmp84_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp85_ = _tmp84_;
	vala_ccode_function_close (_tmp85_);
	_tmp86_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp87_ = _tmp86_;
	vala_ccode_function_add_return (_tmp87_, (ValaCCodeExpression*) null_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp88_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp88_, function);
	_vala_ccode_node_unref0 (ref_fct);
	_vala_ccode_node_unref0 (main_else_if_condition);
	_vala_ccode_node_unref0 (main_condition);
	_vala_ccode_node_unref0 (assert_printf);
	_vala_ccode_node_unref0 (assert_condition);
	_vala_ccode_node_unref0 (value_type_name_fct);
	_vala_ccode_node_unref0 (null_);
	_vala_ccode_node_unref0 (object_p_ptr);
	_vala_ccode_node_unref0 (vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_type_value_table_collect_value_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeParameter* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeParameter* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp15_;
	ValaCCodeIdentifier* _tmp16_;
	ValaCCodeMemberAccess* _tmp17_;
	ValaCCodeMemberAccess* _tmp18_;
	ValaCCodeMemberAccess* _tmp19_;
	ValaCCodeMemberAccess* _tmp20_;
	ValaCCodeMemberAccess* collect_vpointer = NULL;
	ValaCCodeIdentifier* _tmp21_;
	ValaCCodeIdentifier* _tmp22_;
	ValaCCodeMemberAccess* _tmp23_;
	ValaCCodeMemberAccess* _tmp24_;
	ValaCCodeFunction* _tmp25_;
	ValaCCodeFunction* _tmp26_;
	ValaCCodeFunction* _tmp27_;
	ValaCCodeFunction* _tmp28_;
	ValaClass* _tmp29_;
	gchar* _tmp30_;
	gchar* _tmp31_;
	gchar* _tmp32_;
	gchar* _tmp33_;
	ValaCCodeVariableDeclarator* _tmp34_;
	ValaCCodeVariableDeclarator* _tmp35_;
	ValaCCodeIdentifier* obj_identifier = NULL;
	ValaCCodeIdentifier* _tmp36_;
	ValaCCodeMemberAccess* l_expression = NULL;
	ValaCCodeMemberAccess* _tmp37_;
	ValaCCodeMemberAccess* _tmp38_;
	ValaCCodeMemberAccess* _tmp39_;
	ValaCCodeMemberAccess* _tmp40_;
	ValaCCodeBinaryExpression* sub_condition = NULL;
	ValaCCodeConstant* _tmp41_;
	ValaCCodeConstant* _tmp42_;
	ValaCCodeBinaryExpression* _tmp43_;
	ValaCCodeBinaryExpression* _tmp44_;
	ValaCCodeFunctionCall* value_type_name_fct = NULL;
	ValaCCodeIdentifier* _tmp45_;
	ValaCCodeIdentifier* _tmp46_;
	ValaCCodeFunctionCall* _tmp47_;
	ValaCCodeFunctionCall* _tmp48_;
	ValaCCodeConstant* _tmp49_;
	ValaCCodeConstant* _tmp50_;
	ValaCCodeFunction* _tmp51_;
	ValaCCodeFunction* _tmp52_;
	ValaCCodeFunctionCall* true_return = NULL;
	ValaCCodeIdentifier* _tmp53_;
	ValaCCodeIdentifier* _tmp54_;
	ValaCCodeFunctionCall* _tmp55_;
	ValaCCodeFunctionCall* _tmp56_;
	ValaCCodeConstant* _tmp57_;
	ValaCCodeConstant* _tmp58_;
	ValaCCodeConstant* _tmp59_;
	ValaCCodeConstant* _tmp60_;
	ValaCCodeConstant* _tmp61_;
	ValaCCodeConstant* _tmp62_;
	ValaCCodeFunction* _tmp63_;
	ValaCCodeFunction* _tmp64_;
	ValaCCodeFunctionCall* reg_call = NULL;
	ValaCCodeIdentifier* _tmp65_;
	ValaCCodeIdentifier* _tmp66_;
	ValaCCodeFunctionCall* _tmp67_;
	ValaCCodeFunctionCall* _tmp68_;
	ValaCCodeFunctionCall* type_check = NULL;
	ValaCCodeIdentifier* _tmp69_;
	ValaCCodeIdentifier* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	ValaCCodeFunctionCall* _tmp72_;
	ValaCCodeIdentifier* _tmp73_;
	ValaCCodeIdentifier* _tmp74_;
	ValaCCodeFunctionCall* stored_type = NULL;
	ValaCCodeIdentifier* _tmp75_;
	ValaCCodeIdentifier* _tmp76_;
	ValaCCodeFunctionCall* _tmp77_;
	ValaCCodeFunctionCall* _tmp78_;
	ValaCCodeIdentifier* _tmp79_;
	ValaCCodeIdentifier* _tmp80_;
	ValaCCodeFunction* _tmp81_;
	ValaCCodeFunction* _tmp82_;
	ValaCCodeUnaryExpression* _tmp83_;
	ValaCCodeUnaryExpression* _tmp84_;
	ValaCCodeFunctionCall* false_return = NULL;
	ValaCCodeIdentifier* _tmp85_;
	ValaCCodeIdentifier* _tmp86_;
	ValaCCodeFunctionCall* _tmp87_;
	ValaCCodeFunctionCall* _tmp88_;
	ValaCCodeFunctionCall* type_name_fct = NULL;
	ValaCCodeIdentifier* _tmp89_;
	ValaCCodeIdentifier* _tmp90_;
	ValaCCodeFunctionCall* _tmp91_;
	ValaCCodeFunctionCall* _tmp92_;
	ValaCCodeConstant* _tmp93_;
	ValaCCodeConstant* _tmp94_;
	ValaCCodeConstant* _tmp95_;
	ValaCCodeConstant* _tmp96_;
	ValaCCodeConstant* _tmp97_;
	ValaCCodeConstant* _tmp98_;
	ValaCCodeConstant* _tmp99_;
	ValaCCodeConstant* _tmp100_;
	ValaCCodeFunction* _tmp101_;
	ValaCCodeFunction* _tmp102_;
	ValaCCodeFunction* _tmp103_;
	ValaCCodeFunction* _tmp104_;
	ValaCCodeFunctionCall* ref_call = NULL;
	ValaClass* _tmp105_;
	gchar* _tmp106_;
	gchar* _tmp107_;
	ValaCCodeIdentifier* _tmp108_;
	ValaCCodeIdentifier* _tmp109_;
	ValaCCodeFunctionCall* _tmp110_;
	ValaCCodeFunctionCall* _tmp111_;
	ValaCCodeIdentifier* _tmp112_;
	ValaCCodeIdentifier* _tmp113_;
	ValaCCodeFunction* _tmp114_;
	ValaCCodeFunction* _tmp115_;
	ValaCCodeFunction* _tmp116_;
	ValaCCodeFunction* _tmp117_;
	ValaCCodeFunction* _tmp118_;
	ValaCCodeFunction* _tmp119_;
	ValaCCodeConstant* _tmp120_;
	ValaCCodeConstant* _tmp121_;
	ValaCCodeFunction* _tmp122_;
	ValaCCodeFunction* _tmp123_;
	ValaCCodeFunction* _tmp124_;
	ValaCCodeFunction* _tmp125_;
	ValaCCodeConstant* _tmp126_;
	ValaCCodeConstant* _tmp127_;
	ValaCCodeFile* _tmp128_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "value_");
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup_printf ("%s_collect_value", _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_function_new (_tmp4_, "gchar*");
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	_g_free0 (_tmp2_);
	function = _tmp6_;
	_tmp7_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp8_ = _tmp7_;
	vala_ccode_function_add_parameter (function, _tmp8_);
	_vala_ccode_node_unref0 (_tmp8_);
	_tmp9_ = vala_ccode_parameter_new ("n_collect_values", "guint");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (function, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = vala_ccode_parameter_new ("collect_values", "GTypeCValue*");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (function, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = vala_ccode_parameter_new ("collect_flags", "guint");
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (function, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp15_ = vala_ccode_identifier_new ("value");
	_tmp16_ = _tmp15_;
	_tmp17_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp16_, "data[0]");
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp18_, "v_pointer", FALSE);
	_tmp20_ = _tmp19_;
	_vala_ccode_node_unref0 (_tmp18_);
	_vala_ccode_node_unref0 (_tmp16_);
	vpointer = _tmp20_;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp21_ = vala_ccode_identifier_new ("collect_values[0]");
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp22_, "v_pointer", FALSE);
	_tmp24_ = _tmp23_;
	_vala_ccode_node_unref0 (_tmp22_);
	collect_vpointer = _tmp24_;
	_tmp25_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp26_ = _tmp25_;
	vala_ccode_function_open_if (_tmp26_, (ValaCCodeExpression*) collect_vpointer);
	_tmp27_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp28_ = _tmp27_;
	_tmp29_ = cl;
	_tmp30_ = vala_get_ccode_name ((ValaCodeNode*) _tmp29_);
	_tmp31_ = _tmp30_;
	_tmp32_ = g_strdup_printf ("%s *", _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = vala_ccode_variable_declarator_new ("object", (ValaCCodeExpression*) collect_vpointer, NULL);
	_tmp35_ = _tmp34_;
	vala_ccode_function_add_declaration (_tmp28_, _tmp33_, (ValaCCodeDeclarator*) _tmp35_, 0);
	_vala_ccode_node_unref0 (_tmp35_);
	_g_free0 (_tmp33_);
	_g_free0 (_tmp31_);
	_tmp36_ = vala_ccode_identifier_new ("object");
	obj_identifier = _tmp36_;
	_tmp37_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) obj_identifier, "parent_instance");
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp38_, "g_class", FALSE);
	_tmp40_ = _tmp39_;
	_vala_ccode_node_unref0 (_tmp38_);
	l_expression = _tmp40_;
	_tmp41_ = vala_ccode_constant_new ("NULL");
	_tmp42_ = _tmp41_;
	_tmp43_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) l_expression, (ValaCCodeExpression*) _tmp42_);
	_tmp44_ = _tmp43_;
	_vala_ccode_node_unref0 (_tmp42_);
	sub_condition = _tmp44_;
	_tmp45_ = vala_ccode_identifier_new ("G_VALUE_TYPE_NAME");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
	_tmp48_ = _tmp47_;
	_vala_ccode_node_unref0 (_tmp46_);
	value_type_name_fct = _tmp48_;
	_tmp49_ = vala_ccode_constant_new ("value");
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (value_type_name_fct, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp52_ = _tmp51_;
	vala_ccode_function_open_if (_tmp52_, (ValaCCodeExpression*) sub_condition);
	_tmp53_ = vala_ccode_identifier_new ("g_strconcat");
	_tmp54_ = _tmp53_;
	_tmp55_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp54_);
	_tmp56_ = _tmp55_;
	_vala_ccode_node_unref0 (_tmp54_);
	true_return = _tmp56_;
	_tmp57_ = vala_ccode_constant_new ("\"invalid unclassed object pointer for value type `\"");
	_tmp58_ = _tmp57_;
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp58_);
	_vala_ccode_node_unref0 (_tmp58_);
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) value_type_name_fct);
	_tmp59_ = vala_ccode_constant_new ("\"'\"");
	_tmp60_ = _tmp59_;
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp60_);
	_vala_ccode_node_unref0 (_tmp60_);
	_tmp61_ = vala_ccode_constant_new ("NULL");
	_tmp62_ = _tmp61_;
	vala_ccode_function_call_add_argument (true_return, (ValaCCodeExpression*) _tmp62_);
	_vala_ccode_node_unref0 (_tmp62_);
	_tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp64_ = _tmp63_;
	vala_ccode_function_add_return (_tmp64_, (ValaCCodeExpression*) true_return);
	_tmp65_ = vala_ccode_identifier_new ("g_value_type_compatible");
	_tmp66_ = _tmp65_;
	_tmp67_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp66_);
	_tmp68_ = _tmp67_;
	_vala_ccode_node_unref0 (_tmp66_);
	reg_call = _tmp68_;
	_tmp69_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
	_tmp70_ = _tmp69_;
	_tmp71_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp70_);
	_tmp72_ = _tmp71_;
	_vala_ccode_node_unref0 (_tmp70_);
	type_check = _tmp72_;
	_tmp73_ = vala_ccode_identifier_new ("object");
	_tmp74_ = _tmp73_;
	vala_ccode_function_call_add_argument (type_check, (ValaCCodeExpression*) _tmp74_);
	_vala_ccode_node_unref0 (_tmp74_);
	vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) type_check);
	_tmp75_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
	_tmp76_ = _tmp75_;
	_tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
	_tmp78_ = _tmp77_;
	_vala_ccode_node_unref0 (_tmp76_);
	stored_type = _tmp78_;
	_tmp79_ = vala_ccode_identifier_new ("value");
	_tmp80_ = _tmp79_;
	vala_ccode_function_call_add_argument (stored_type, (ValaCCodeExpression*) _tmp80_);
	_vala_ccode_node_unref0 (_tmp80_);
	vala_ccode_function_call_add_argument (reg_call, (ValaCCodeExpression*) stored_type);
	_tmp81_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp82_ = _tmp81_;
	_tmp83_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) reg_call);
	_tmp84_ = _tmp83_;
	vala_ccode_function_else_if (_tmp82_, (ValaCCodeExpression*) _tmp84_);
	_vala_ccode_node_unref0 (_tmp84_);
	_tmp85_ = vala_ccode_identifier_new ("g_strconcat");
	_tmp86_ = _tmp85_;
	_tmp87_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp86_);
	_tmp88_ = _tmp87_;
	_vala_ccode_node_unref0 (_tmp86_);
	false_return = _tmp88_;
	_tmp89_ = vala_ccode_identifier_new ("g_type_name");
	_tmp90_ = _tmp89_;
	_tmp91_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp90_);
	_tmp92_ = _tmp91_;
	_vala_ccode_node_unref0 (_tmp90_);
	type_name_fct = _tmp92_;
	vala_ccode_function_call_add_argument (type_name_fct, (ValaCCodeExpression*) type_check);
	_tmp93_ = vala_ccode_constant_new ("\"invalid object type `\"");
	_tmp94_ = _tmp93_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp94_);
	_vala_ccode_node_unref0 (_tmp94_);
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) type_name_fct);
	_tmp95_ = vala_ccode_constant_new ("\"' for value type `\"");
	_tmp96_ = _tmp95_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp96_);
	_vala_ccode_node_unref0 (_tmp96_);
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) value_type_name_fct);
	_tmp97_ = vala_ccode_constant_new ("\"'\"");
	_tmp98_ = _tmp97_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp98_);
	_vala_ccode_node_unref0 (_tmp98_);
	_tmp99_ = vala_ccode_constant_new ("NULL");
	_tmp100_ = _tmp99_;
	vala_ccode_function_call_add_argument (false_return, (ValaCCodeExpression*) _tmp100_);
	_vala_ccode_node_unref0 (_tmp100_);
	_tmp101_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp102_ = _tmp101_;
	vala_ccode_function_add_return (_tmp102_, (ValaCCodeExpression*) false_return);
	_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp104_ = _tmp103_;
	vala_ccode_function_close (_tmp104_);
	_tmp105_ = cl;
	_tmp106_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) _tmp105_);
	_tmp107_ = _tmp106_;
	_tmp108_ = vala_ccode_identifier_new (_tmp107_);
	_tmp109_ = _tmp108_;
	_tmp110_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp109_);
	_tmp111_ = _tmp110_;
	_vala_ccode_node_unref0 (_tmp109_);
	_g_free0 (_tmp107_);
	ref_call = _tmp111_;
	_tmp112_ = vala_ccode_identifier_new ("object");
	_tmp113_ = _tmp112_;
	vala_ccode_function_call_add_argument (ref_call, (ValaCCodeExpression*) _tmp113_);
	_vala_ccode_node_unref0 (_tmp113_);
	_tmp114_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp115_ = _tmp114_;
	vala_ccode_function_add_assignment (_tmp115_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) ref_call);
	_tmp116_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp117_ = _tmp116_;
	vala_ccode_function_add_else (_tmp117_);
	_tmp118_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp119_ = _tmp118_;
	_tmp120_ = vala_ccode_constant_new ("NULL");
	_tmp121_ = _tmp120_;
	vala_ccode_function_add_assignment (_tmp119_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp121_);
	_vala_ccode_node_unref0 (_tmp121_);
	_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp123_ = _tmp122_;
	vala_ccode_function_close (_tmp123_);
	_tmp124_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp125_ = _tmp124_;
	_tmp126_ = vala_ccode_constant_new ("NULL");
	_tmp127_ = _tmp126_;
	vala_ccode_function_add_return (_tmp125_, (ValaCCodeExpression*) _tmp127_);
	_vala_ccode_node_unref0 (_tmp127_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp128_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp128_, function);
	_vala_ccode_node_unref0 (ref_call);
	_vala_ccode_node_unref0 (type_name_fct);
	_vala_ccode_node_unref0 (false_return);
	_vala_ccode_node_unref0 (stored_type);
	_vala_ccode_node_unref0 (type_check);
	_vala_ccode_node_unref0 (reg_call);
	_vala_ccode_node_unref0 (true_return);
	_vala_ccode_node_unref0 (value_type_name_fct);
	_vala_ccode_node_unref0 (sub_condition);
	_vala_ccode_node_unref0 (l_expression);
	_vala_ccode_node_unref0 (obj_identifier);
	_vala_ccode_node_unref0 (collect_vpointer);
	_vala_ccode_node_unref0 (vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_g_param_spec_type_function (ValaGTypeModule* self, ValaClass* cl) {
	gchar* function_name = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp2_;
	ValaCCodeFunction* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeParameter* _tmp5_;
	ValaCCodeParameter* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeParameter* _tmp8_;
	ValaCCodeParameter* _tmp9_;
	ValaCCodeFunction* _tmp10_;
	ValaCCodeParameter* _tmp11_;
	ValaCCodeParameter* _tmp12_;
	ValaCCodeFunction* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeParameter* _tmp18_;
	ValaClass* _tmp19_;
	gboolean _tmp20_;
	ValaCCodeFunction* _tmp30_;
	ValaCCodeFunction* _tmp31_;
	ValaCCodeFunction* _tmp32_;
	ValaClass* _tmp33_;
	ValaSymbol* _tmp34_;
	ValaSymbol* _tmp35_;
	gchar* _tmp36_;
	gchar* _tmp37_;
	ValaClass* _tmp38_;
	const gchar* _tmp39_;
	const gchar* _tmp40_;
	gchar* _tmp41_;
	gchar* _tmp42_;
	ValaCCodeVariableDeclarator* _tmp43_;
	ValaCCodeVariableDeclarator* _tmp44_;
	ValaCCodeFunctionCall* subccall = NULL;
	ValaCCodeIdentifier* _tmp45_;
	ValaCCodeIdentifier* _tmp46_;
	ValaCCodeFunctionCall* _tmp47_;
	ValaCCodeFunctionCall* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeIdentifier* _tmp50_;
	ValaClass* _tmp51_;
	gchar* _tmp52_;
	gchar* _tmp53_;
	ValaCCodeIdentifier* _tmp54_;
	ValaCCodeIdentifier* _tmp55_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp56_;
	ValaCCodeIdentifier* _tmp57_;
	ValaCCodeFunctionCall* _tmp58_;
	ValaCCodeFunctionCall* _tmp59_;
	ValaCCodeFunctionCall* _tmp60_;
	ValaCCodeFunctionCall* _tmp61_;
	ValaCCodeIdentifier* _tmp62_;
	ValaCCodeIdentifier* _tmp63_;
	ValaCCodeFunction* _tmp64_;
	ValaCCodeFunction* _tmp65_;
	ValaCCodeFunctionCall* _tmp66_;
	ValaCCodeIdentifier* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeFunctionCall* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeIdentifier* _tmp71_;
	ValaCCodeIdentifier* _tmp72_;
	ValaCCodeFunctionCall* _tmp73_;
	ValaCCodeIdentifier* _tmp74_;
	ValaCCodeIdentifier* _tmp75_;
	ValaCCodeFunctionCall* _tmp76_;
	ValaCCodeIdentifier* _tmp77_;
	ValaCCodeIdentifier* _tmp78_;
	ValaCCodeFunctionCall* _tmp79_;
	ValaCCodeIdentifier* _tmp80_;
	ValaCCodeIdentifier* _tmp81_;
	ValaCCodeFunctionCall* _tmp82_;
	ValaCCodeIdentifier* _tmp83_;
	ValaCCodeIdentifier* _tmp84_;
	ValaCCodeFunction* _tmp85_;
	ValaCCodeFunction* _tmp86_;
	ValaCCodeIdentifier* _tmp87_;
	ValaCCodeIdentifier* _tmp88_;
	ValaCCodeFunctionCall* _tmp89_;
	ValaCCodeIdentifier* _tmp90_;
	ValaCCodeIdentifier* _tmp91_;
	ValaCCodeFunctionCall* _tmp92_;
	ValaCCodeFunctionCall* _tmp93_;
	ValaCCodeIdentifier* _tmp94_;
	ValaCCodeIdentifier* _tmp95_;
	ValaCCodeFunction* _tmp96_;
	ValaCCodeFunction* _tmp97_;
	ValaCCodeFunctionCall* _tmp98_;
	ValaCCodeMemberAccess* _tmp99_;
	ValaCCodeMemberAccess* _tmp100_;
	ValaCCodeIdentifier* _tmp101_;
	ValaCCodeIdentifier* _tmp102_;
	ValaCCodeFunction* _tmp103_;
	ValaCCodeFunction* _tmp104_;
	ValaCCodeFunctionCall* _tmp105_;
	ValaCCodeFile* _tmp106_;
	ValaCCodeFunction* _tmp107_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, "param_spec_");
	function_name = _tmp1_;
	_tmp2_ = function_name;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "GParamSpec*");
	function = _tmp3_;
	_tmp4_ = function;
	_tmp5_ = vala_ccode_parameter_new ("name", "const gchar*");
	_tmp6_ = _tmp5_;
	vala_ccode_function_add_parameter (_tmp4_, _tmp6_);
	_vala_ccode_node_unref0 (_tmp6_);
	_tmp7_ = function;
	_tmp8_ = vala_ccode_parameter_new ("nick", "const gchar*");
	_tmp9_ = _tmp8_;
	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
	_vala_ccode_node_unref0 (_tmp9_);
	_tmp10_ = function;
	_tmp11_ = vala_ccode_parameter_new ("blurb", "const gchar*");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = function;
	_tmp14_ = vala_ccode_parameter_new ("object_type", "GType");
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_tmp16_ = function;
	_tmp17_ = vala_ccode_parameter_new ("flags", "GParamFlags");
	_tmp18_ = _tmp17_;
	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_tmp19_ = cl;
	_tmp20_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp19_);
	if (_tmp20_) {
		ValaCCodeFunction* _tmp21_;
		_tmp21_ = function;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp21_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp22_ = FALSE;
		ValaCodeContext* _tmp23_;
		ValaCodeContext* _tmp24_;
		gboolean _tmp25_;
		gboolean _tmp26_;
		_tmp23_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp24_ = _tmp23_;
		_tmp25_ = vala_code_context_get_hide_internal (_tmp24_);
		_tmp26_ = _tmp25_;
		if (_tmp26_) {
			ValaClass* _tmp27_;
			gboolean _tmp28_;
			_tmp27_ = cl;
			_tmp28_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp27_);
			_tmp22_ = _tmp28_;
		} else {
			_tmp22_ = FALSE;
		}
		if (_tmp22_) {
			ValaCCodeFunction* _tmp29_;
			_tmp29_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp29_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp30_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp30_);
	_tmp31_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp32_ = _tmp31_;
	_tmp33_ = cl;
	_tmp34_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp33_);
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_get_ccode_prefix (_tmp35_);
	_tmp37_ = _tmp36_;
	_tmp38_ = cl;
	_tmp39_ = vala_symbol_get_name ((ValaSymbol*) _tmp38_);
	_tmp40_ = _tmp39_;
	_tmp41_ = g_strdup_printf ("%sParamSpec%s*", _tmp37_, _tmp40_);
	_tmp42_ = _tmp41_;
	_tmp43_ = vala_ccode_variable_declarator_new ("spec", NULL, NULL);
	_tmp44_ = _tmp43_;
	vala_ccode_function_add_declaration (_tmp32_, _tmp42_, (ValaCCodeDeclarator*) _tmp44_, 0);
	_vala_ccode_node_unref0 (_tmp44_);
	_g_free0 (_tmp42_);
	_g_free0 (_tmp37_);
	_tmp45_ = vala_ccode_identifier_new ("g_type_is_a");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
	_tmp48_ = _tmp47_;
	_vala_ccode_node_unref0 (_tmp46_);
	subccall = _tmp48_;
	_tmp49_ = vala_ccode_identifier_new ("object_type");
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_tmp51_ = cl;
	_tmp52_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp51_);
	_tmp53_ = _tmp52_;
	_tmp54_ = vala_ccode_identifier_new (_tmp53_);
	_tmp55_ = _tmp54_;
	vala_ccode_function_call_add_argument (subccall, (ValaCCodeExpression*) _tmp55_);
	_vala_ccode_node_unref0 (_tmp55_);
	_g_free0 (_tmp53_);
	_tmp56_ = vala_ccode_identifier_new ("g_return_val_if_fail");
	_tmp57_ = _tmp56_;
	_tmp58_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp57_);
	_tmp59_ = _tmp58_;
	_vala_ccode_node_unref0 (_tmp57_);
	ccall = _tmp59_;
	_tmp60_ = ccall;
	vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) subccall);
	_tmp61_ = ccall;
	_tmp62_ = vala_ccode_identifier_new ("NULL");
	_tmp63_ = _tmp62_;
	vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp63_);
	_vala_ccode_node_unref0 (_tmp63_);
	_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp65_ = _tmp64_;
	_tmp66_ = ccall;
	vala_ccode_function_add_expression (_tmp65_, (ValaCCodeExpression*) _tmp66_);
	_tmp67_ = vala_ccode_identifier_new ("g_param_spec_internal");
	_tmp68_ = _tmp67_;
	_tmp69_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp68_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp69_;
	_vala_ccode_node_unref0 (_tmp68_);
	_tmp70_ = ccall;
	_tmp71_ = vala_ccode_identifier_new ("G_TYPE_PARAM_OBJECT");
	_tmp72_ = _tmp71_;
	vala_ccode_function_call_add_argument (_tmp70_, (ValaCCodeExpression*) _tmp72_);
	_vala_ccode_node_unref0 (_tmp72_);
	_tmp73_ = ccall;
	_tmp74_ = vala_ccode_identifier_new ("name");
	_tmp75_ = _tmp74_;
	vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp75_);
	_vala_ccode_node_unref0 (_tmp75_);
	_tmp76_ = ccall;
	_tmp77_ = vala_ccode_identifier_new ("nick");
	_tmp78_ = _tmp77_;
	vala_ccode_function_call_add_argument (_tmp76_, (ValaCCodeExpression*) _tmp78_);
	_vala_ccode_node_unref0 (_tmp78_);
	_tmp79_ = ccall;
	_tmp80_ = vala_ccode_identifier_new ("blurb");
	_tmp81_ = _tmp80_;
	vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
	_vala_ccode_node_unref0 (_tmp81_);
	_tmp82_ = ccall;
	_tmp83_ = vala_ccode_identifier_new ("flags");
	_tmp84_ = _tmp83_;
	vala_ccode_function_call_add_argument (_tmp82_, (ValaCCodeExpression*) _tmp84_);
	_vala_ccode_node_unref0 (_tmp84_);
	_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp86_ = _tmp85_;
	_tmp87_ = vala_ccode_identifier_new ("spec");
	_tmp88_ = _tmp87_;
	_tmp89_ = ccall;
	vala_ccode_function_add_assignment (_tmp86_, (ValaCCodeExpression*) _tmp88_, (ValaCCodeExpression*) _tmp89_);
	_vala_ccode_node_unref0 (_tmp88_);
	_tmp90_ = vala_ccode_identifier_new ("G_PARAM_SPEC");
	_tmp91_ = _tmp90_;
	_tmp92_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp91_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp92_;
	_vala_ccode_node_unref0 (_tmp91_);
	_tmp93_ = ccall;
	_tmp94_ = vala_ccode_identifier_new ("spec");
	_tmp95_ = _tmp94_;
	vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp95_);
	_vala_ccode_node_unref0 (_tmp95_);
	_tmp96_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp97_ = _tmp96_;
	_tmp98_ = ccall;
	_tmp99_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp98_, "value_type");
	_tmp100_ = _tmp99_;
	_tmp101_ = vala_ccode_identifier_new ("object_type");
	_tmp102_ = _tmp101_;
	vala_ccode_function_add_assignment (_tmp97_, (ValaCCodeExpression*) _tmp100_, (ValaCCodeExpression*) _tmp102_);
	_vala_ccode_node_unref0 (_tmp102_);
	_vala_ccode_node_unref0 (_tmp100_);
	_tmp103_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp104_ = _tmp103_;
	_tmp105_ = ccall;
	vala_ccode_function_add_return (_tmp104_, (ValaCCodeExpression*) _tmp105_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp106_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp107_ = function;
	vala_ccode_file_add_function (_tmp106_, _tmp107_);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (subccall);
	_vala_ccode_node_unref0 (function);
	_g_free0 (function_name);
}


static void vala_gtype_module_add_g_value_set_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValaCCodeFunction* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeParameter* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeParameter* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaClass* _tmp11_;
	gboolean _tmp12_;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp22_;
	ValaCCodeIdentifier* _tmp23_;
	ValaCCodeMemberAccess* _tmp24_;
	ValaCCodeMemberAccess* _tmp25_;
	ValaCCodeMemberAccess* _tmp26_;
	ValaCCodeMemberAccess* _tmp27_;
	ValaCCodeFunction* _tmp28_;
	ValaCCodeFunction* _tmp29_;
	ValaCCodeFunction* _tmp30_;
	ValaClass* _tmp31_;
	gchar* _tmp32_;
	gchar* _tmp33_;
	gchar* _tmp34_;
	gchar* _tmp35_;
	ValaCCodeVariableDeclarator* _tmp36_;
	ValaCCodeVariableDeclarator* _tmp37_;
	ValaCCodeFunctionCall* ccall_typecheck = NULL;
	ValaCCodeIdentifier* _tmp38_;
	ValaCCodeIdentifier* _tmp39_;
	ValaCCodeFunctionCall* _tmp40_;
	ValaCCodeFunctionCall* _tmp41_;
	ValaCCodeFunctionCall* _tmp42_;
	ValaCCodeIdentifier* _tmp43_;
	ValaCCodeIdentifier* _tmp44_;
	ValaCCodeFunctionCall* _tmp45_;
	ValaClass* _tmp46_;
	gchar* _tmp47_;
	gchar* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeIdentifier* _tmp50_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp51_;
	ValaCCodeIdentifier* _tmp52_;
	ValaCCodeFunctionCall* _tmp53_;
	ValaCCodeFunctionCall* _tmp54_;
	ValaCCodeFunctionCall* _tmp55_;
	ValaCCodeFunctionCall* _tmp56_;
	ValaCCodeFunction* _tmp57_;
	ValaCCodeFunction* _tmp58_;
	ValaCCodeFunctionCall* _tmp59_;
	ValaCCodeFunction* _tmp60_;
	ValaCCodeFunction* _tmp61_;
	ValaCCodeConstant* _tmp62_;
	ValaCCodeConstant* _tmp63_;
	ValaCCodeFunction* _tmp64_;
	ValaCCodeFunction* _tmp65_;
	ValaCCodeIdentifier* _tmp66_;
	ValaCCodeIdentifier* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeIdentifier* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	ValaCCodeIdentifier* _tmp72_;
	ValaCCodeIdentifier* _tmp73_;
	ValaCCodeFunctionCall* _tmp74_;
	ValaClass* _tmp75_;
	gchar* _tmp76_;
	gchar* _tmp77_;
	ValaCCodeIdentifier* _tmp78_;
	ValaCCodeIdentifier* _tmp79_;
	ValaCCodeIdentifier* _tmp80_;
	ValaCCodeIdentifier* _tmp81_;
	ValaCCodeFunctionCall* _tmp82_;
	ValaCCodeFunctionCall* _tmp83_;
	ValaCCodeFunctionCall* _tmp84_;
	ValaCCodeFunction* _tmp85_;
	ValaCCodeFunction* _tmp86_;
	ValaCCodeFunctionCall* _tmp87_;
	ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
	ValaCCodeIdentifier* _tmp88_;
	ValaCCodeIdentifier* _tmp89_;
	ValaCCodeFunctionCall* _tmp90_;
	ValaCCodeFunctionCall* _tmp91_;
	ValaCCodeIdentifier* _tmp92_;
	ValaCCodeIdentifier* _tmp93_;
	ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
	ValaCCodeIdentifier* _tmp94_;
	ValaCCodeIdentifier* _tmp95_;
	ValaCCodeFunctionCall* _tmp96_;
	ValaCCodeFunctionCall* _tmp97_;
	ValaCCodeIdentifier* _tmp98_;
	ValaCCodeIdentifier* _tmp99_;
	ValaCCodeFunctionCall* ccall_typecompatible = NULL;
	ValaCCodeIdentifier* _tmp100_;
	ValaCCodeIdentifier* _tmp101_;
	ValaCCodeFunctionCall* _tmp102_;
	ValaCCodeFunctionCall* _tmp103_;
	ValaCCodeIdentifier* _tmp104_;
	ValaCCodeIdentifier* _tmp105_;
	ValaCCodeFunctionCall* _tmp106_;
	ValaCCodeFunctionCall* _tmp107_;
	ValaCCodeFunction* _tmp108_;
	ValaCCodeFunction* _tmp109_;
	ValaCCodeFunctionCall* _tmp110_;
	ValaCCodeFunction* _tmp111_;
	ValaCCodeFunction* _tmp112_;
	ValaCCodeConstant* _tmp113_;
	ValaCCodeConstant* _tmp114_;
	ValaClass* _tmp115_;
	gchar* _tmp116_;
	gchar* _tmp117_;
	ValaCCodeIdentifier* _tmp118_;
	ValaCCodeIdentifier* _tmp119_;
	ValaCCodeFunctionCall* _tmp120_;
	ValaCCodeFunctionCall* _tmp121_;
	ValaCCodeFunction* _tmp122_;
	ValaCCodeFunction* _tmp123_;
	ValaCCodeFunctionCall* _tmp124_;
	ValaCCodeFunction* _tmp125_;
	ValaCCodeFunction* _tmp126_;
	ValaCCodeFunction* _tmp127_;
	ValaCCodeFunction* _tmp128_;
	ValaCCodeConstant* _tmp129_;
	ValaCCodeConstant* _tmp130_;
	ValaCCodeFunction* _tmp131_;
	ValaCCodeFunction* _tmp132_;
	ValaCCodeFunction* _tmp133_;
	ValaCCodeFunction* _tmp134_;
	ValaCCodeIdentifier* _tmp135_;
	ValaCCodeIdentifier* _tmp136_;
	ValaClass* _tmp137_;
	gchar* _tmp138_;
	gchar* _tmp139_;
	ValaCCodeIdentifier* _tmp140_;
	ValaCCodeIdentifier* _tmp141_;
	ValaCCodeFunctionCall* _tmp142_;
	ValaCCodeFunctionCall* _tmp143_;
	ValaCCodeIdentifier* _tmp144_;
	ValaCCodeIdentifier* _tmp145_;
	ValaCCodeFunction* _tmp146_;
	ValaCCodeFunction* _tmp147_;
	ValaCCodeFunctionCall* _tmp148_;
	ValaCCodeFunction* _tmp149_;
	ValaCCodeFunction* _tmp150_;
	ValaCCodeFile* _tmp151_;
	ValaCCodeFunction* _tmp152_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_set_value_function ((ValaCodeNode*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "void");
	_tmp4_ = _tmp3_;
	_g_free0 (_tmp2_);
	function = _tmp4_;
	_tmp5_ = function;
	_tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp7_ = _tmp6_;
	vala_ccode_function_add_parameter (_tmp5_, _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	_tmp8_ = function;
	_tmp9_ = vala_ccode_parameter_new ("v_object", "gpointer");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = cl;
	_tmp12_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp11_);
	if (_tmp12_) {
		ValaCCodeFunction* _tmp13_;
		_tmp13_ = function;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp13_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp14_ = FALSE;
		ValaCodeContext* _tmp15_;
		ValaCodeContext* _tmp16_;
		gboolean _tmp17_;
		gboolean _tmp18_;
		_tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp16_ = _tmp15_;
		_tmp17_ = vala_code_context_get_hide_internal (_tmp16_);
		_tmp18_ = _tmp17_;
		if (_tmp18_) {
			ValaClass* _tmp19_;
			gboolean _tmp20_;
			_tmp19_ = cl;
			_tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp19_);
			_tmp14_ = _tmp20_;
		} else {
			_tmp14_ = FALSE;
		}
		if (_tmp14_) {
			ValaCCodeFunction* _tmp21_;
			_tmp21_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp21_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp22_ = vala_ccode_identifier_new ("value");
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "data[0]");
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp25_, "v_pointer", FALSE);
	_tmp27_ = _tmp26_;
	_vala_ccode_node_unref0 (_tmp25_);
	_vala_ccode_node_unref0 (_tmp23_);
	vpointer = _tmp27_;
	_tmp28_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
	_tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp30_ = _tmp29_;
	_tmp31_ = cl;
	_tmp32_ = vala_get_ccode_name ((ValaCodeNode*) _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = g_strdup_printf ("%s *", _tmp33_);
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
	_tmp37_ = _tmp36_;
	vala_ccode_function_add_declaration (_tmp30_, _tmp35_, (ValaCCodeDeclarator*) _tmp37_, 0);
	_vala_ccode_node_unref0 (_tmp37_);
	_g_free0 (_tmp35_);
	_g_free0 (_tmp33_);
	_tmp38_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
	_tmp41_ = _tmp40_;
	_vala_ccode_node_unref0 (_tmp39_);
	ccall_typecheck = _tmp41_;
	_tmp42_ = ccall_typecheck;
	_tmp43_ = vala_ccode_identifier_new ("value");
	_tmp44_ = _tmp43_;
	vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
	_vala_ccode_node_unref0 (_tmp44_);
	_tmp45_ = ccall_typecheck;
	_tmp46_ = cl;
	_tmp47_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_identifier_new (_tmp48_);
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_g_free0 (_tmp48_);
	_tmp51_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp52_ = _tmp51_;
	_tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
	_tmp54_ = _tmp53_;
	_vala_ccode_node_unref0 (_tmp52_);
	ccall = _tmp54_;
	_tmp55_ = ccall;
	_tmp56_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp56_);
	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp58_ = _tmp57_;
	_tmp59_ = ccall;
	vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
	_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp61_ = _tmp60_;
	_tmp62_ = vala_ccode_constant_new ("old");
	_tmp63_ = _tmp62_;
	vala_ccode_function_add_assignment (_tmp61_, (ValaCCodeExpression*) _tmp63_, (ValaCCodeExpression*) vpointer);
	_vala_ccode_node_unref0 (_tmp63_);
	_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp65_ = _tmp64_;
	_tmp66_ = vala_ccode_identifier_new ("v_object");
	_tmp67_ = _tmp66_;
	vala_ccode_function_open_if (_tmp65_, (ValaCCodeExpression*) _tmp67_);
	_vala_ccode_node_unref0 (_tmp67_);
	_tmp68_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
	_vala_ccode_node_unref0 (ccall_typecheck);
	ccall_typecheck = _tmp70_;
	_vala_ccode_node_unref0 (_tmp69_);
	_tmp71_ = ccall_typecheck;
	_tmp72_ = vala_ccode_identifier_new ("v_object");
	_tmp73_ = _tmp72_;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
	_vala_ccode_node_unref0 (_tmp73_);
	_tmp74_ = ccall_typecheck;
	_tmp75_ = cl;
	_tmp76_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp75_);
	_tmp77_ = _tmp76_;
	_tmp78_ = vala_ccode_identifier_new (_tmp77_);
	_tmp79_ = _tmp78_;
	vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp79_);
	_vala_ccode_node_unref0 (_tmp79_);
	_g_free0 (_tmp77_);
	_tmp80_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp82_;
	_vala_ccode_node_unref0 (_tmp81_);
	_tmp83_ = ccall;
	_tmp84_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp84_);
	_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp86_ = _tmp85_;
	_tmp87_ = ccall;
	vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
	_tmp88_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
	_tmp89_ = _tmp88_;
	_tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
	_tmp91_ = _tmp90_;
	_vala_ccode_node_unref0 (_tmp89_);
	ccall_typefrominstance = _tmp91_;
	_tmp92_ = vala_ccode_identifier_new ("v_object");
	_tmp93_ = _tmp92_;
	vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp93_);
	_vala_ccode_node_unref0 (_tmp93_);
	_tmp94_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
	_tmp95_ = _tmp94_;
	_tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
	_tmp97_ = _tmp96_;
	_vala_ccode_node_unref0 (_tmp95_);
	ccall_gvaluetype = _tmp97_;
	_tmp98_ = vala_ccode_identifier_new ("value");
	_tmp99_ = _tmp98_;
	vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp99_);
	_vala_ccode_node_unref0 (_tmp99_);
	_tmp100_ = vala_ccode_identifier_new ("g_value_type_compatible");
	_tmp101_ = _tmp100_;
	_tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
	_tmp103_ = _tmp102_;
	_vala_ccode_node_unref0 (_tmp101_);
	ccall_typecompatible = _tmp103_;
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
	_tmp104_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp105_ = _tmp104_;
	_tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp106_;
	_vala_ccode_node_unref0 (_tmp105_);
	_tmp107_ = ccall;
	vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) ccall_typecompatible);
	_tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp109_ = _tmp108_;
	_tmp110_ = ccall;
	vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_);
	_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp112_ = _tmp111_;
	_tmp113_ = vala_ccode_constant_new ("v_object");
	_tmp114_ = _tmp113_;
	vala_ccode_function_add_assignment (_tmp112_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp114_);
	_vala_ccode_node_unref0 (_tmp114_);
	_tmp115_ = cl;
	_tmp116_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) _tmp115_);
	_tmp117_ = _tmp116_;
	_tmp118_ = vala_ccode_identifier_new (_tmp117_);
	_tmp119_ = _tmp118_;
	_tmp120_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp119_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp120_;
	_vala_ccode_node_unref0 (_tmp119_);
	_g_free0 (_tmp117_);
	_tmp121_ = ccall;
	vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) vpointer);
	_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp123_ = _tmp122_;
	_tmp124_ = ccall;
	vala_ccode_function_add_expression (_tmp123_, (ValaCCodeExpression*) _tmp124_);
	_tmp125_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp126_ = _tmp125_;
	vala_ccode_function_add_else (_tmp126_);
	_tmp127_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp128_ = _tmp127_;
	_tmp129_ = vala_ccode_constant_new ("NULL");
	_tmp130_ = _tmp129_;
	vala_ccode_function_add_assignment (_tmp128_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp130_);
	_vala_ccode_node_unref0 (_tmp130_);
	_tmp131_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp132_ = _tmp131_;
	vala_ccode_function_close (_tmp132_);
	_tmp133_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp134_ = _tmp133_;
	_tmp135_ = vala_ccode_identifier_new ("old");
	_tmp136_ = _tmp135_;
	vala_ccode_function_open_if (_tmp134_, (ValaCCodeExpression*) _tmp136_);
	_vala_ccode_node_unref0 (_tmp136_);
	_tmp137_ = cl;
	_tmp138_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp137_);
	_tmp139_ = _tmp138_;
	_tmp140_ = vala_ccode_identifier_new (_tmp139_);
	_tmp141_ = _tmp140_;
	_tmp142_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp141_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp142_;
	_vala_ccode_node_unref0 (_tmp141_);
	_g_free0 (_tmp139_);
	_tmp143_ = ccall;
	_tmp144_ = vala_ccode_identifier_new ("old");
	_tmp145_ = _tmp144_;
	vala_ccode_function_call_add_argument (_tmp143_, (ValaCCodeExpression*) _tmp145_);
	_vala_ccode_node_unref0 (_tmp145_);
	_tmp146_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp147_ = _tmp146_;
	_tmp148_ = ccall;
	vala_ccode_function_add_expression (_tmp147_, (ValaCCodeExpression*) _tmp148_);
	_tmp149_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp150_ = _tmp149_;
	vala_ccode_function_close (_tmp150_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp151_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp152_ = function;
	vala_ccode_file_add_function (_tmp151_, _tmp152_);
	_vala_ccode_node_unref0 (ccall_typecompatible);
	_vala_ccode_node_unref0 (ccall_gvaluetype);
	_vala_ccode_node_unref0 (ccall_typefrominstance);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (ccall_typecheck);
	_vala_ccode_node_unref0 (vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_g_value_take_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValaCCodeFunction* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeParameter* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeParameter* _tmp9_;
	ValaCCodeParameter* _tmp10_;
	ValaClass* _tmp11_;
	gboolean _tmp12_;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp22_;
	ValaCCodeIdentifier* _tmp23_;
	ValaCCodeMemberAccess* _tmp24_;
	ValaCCodeMemberAccess* _tmp25_;
	ValaCCodeMemberAccess* _tmp26_;
	ValaCCodeMemberAccess* _tmp27_;
	ValaCCodeFunction* _tmp28_;
	ValaCCodeFunction* _tmp29_;
	ValaCCodeFunction* _tmp30_;
	ValaClass* _tmp31_;
	gchar* _tmp32_;
	gchar* _tmp33_;
	gchar* _tmp34_;
	gchar* _tmp35_;
	ValaCCodeVariableDeclarator* _tmp36_;
	ValaCCodeVariableDeclarator* _tmp37_;
	ValaCCodeFunctionCall* ccall_typecheck = NULL;
	ValaCCodeIdentifier* _tmp38_;
	ValaCCodeIdentifier* _tmp39_;
	ValaCCodeFunctionCall* _tmp40_;
	ValaCCodeFunctionCall* _tmp41_;
	ValaCCodeFunctionCall* _tmp42_;
	ValaCCodeIdentifier* _tmp43_;
	ValaCCodeIdentifier* _tmp44_;
	ValaCCodeFunctionCall* _tmp45_;
	ValaClass* _tmp46_;
	gchar* _tmp47_;
	gchar* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeIdentifier* _tmp50_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp51_;
	ValaCCodeIdentifier* _tmp52_;
	ValaCCodeFunctionCall* _tmp53_;
	ValaCCodeFunctionCall* _tmp54_;
	ValaCCodeFunctionCall* _tmp55_;
	ValaCCodeFunctionCall* _tmp56_;
	ValaCCodeFunction* _tmp57_;
	ValaCCodeFunction* _tmp58_;
	ValaCCodeFunctionCall* _tmp59_;
	ValaCCodeFunction* _tmp60_;
	ValaCCodeFunction* _tmp61_;
	ValaCCodeConstant* _tmp62_;
	ValaCCodeConstant* _tmp63_;
	ValaCCodeFunction* _tmp64_;
	ValaCCodeFunction* _tmp65_;
	ValaCCodeIdentifier* _tmp66_;
	ValaCCodeIdentifier* _tmp67_;
	ValaCCodeIdentifier* _tmp68_;
	ValaCCodeIdentifier* _tmp69_;
	ValaCCodeFunctionCall* _tmp70_;
	ValaCCodeFunctionCall* _tmp71_;
	ValaCCodeIdentifier* _tmp72_;
	ValaCCodeIdentifier* _tmp73_;
	ValaCCodeFunctionCall* _tmp74_;
	ValaClass* _tmp75_;
	gchar* _tmp76_;
	gchar* _tmp77_;
	ValaCCodeIdentifier* _tmp78_;
	ValaCCodeIdentifier* _tmp79_;
	ValaCCodeIdentifier* _tmp80_;
	ValaCCodeIdentifier* _tmp81_;
	ValaCCodeFunctionCall* _tmp82_;
	ValaCCodeFunctionCall* _tmp83_;
	ValaCCodeFunctionCall* _tmp84_;
	ValaCCodeFunction* _tmp85_;
	ValaCCodeFunction* _tmp86_;
	ValaCCodeFunctionCall* _tmp87_;
	ValaCCodeFunctionCall* ccall_typefrominstance = NULL;
	ValaCCodeIdentifier* _tmp88_;
	ValaCCodeIdentifier* _tmp89_;
	ValaCCodeFunctionCall* _tmp90_;
	ValaCCodeFunctionCall* _tmp91_;
	ValaCCodeIdentifier* _tmp92_;
	ValaCCodeIdentifier* _tmp93_;
	ValaCCodeFunctionCall* ccall_gvaluetype = NULL;
	ValaCCodeIdentifier* _tmp94_;
	ValaCCodeIdentifier* _tmp95_;
	ValaCCodeFunctionCall* _tmp96_;
	ValaCCodeFunctionCall* _tmp97_;
	ValaCCodeIdentifier* _tmp98_;
	ValaCCodeIdentifier* _tmp99_;
	ValaCCodeFunctionCall* ccall_typecompatible = NULL;
	ValaCCodeIdentifier* _tmp100_;
	ValaCCodeIdentifier* _tmp101_;
	ValaCCodeFunctionCall* _tmp102_;
	ValaCCodeFunctionCall* _tmp103_;
	ValaCCodeIdentifier* _tmp104_;
	ValaCCodeIdentifier* _tmp105_;
	ValaCCodeFunctionCall* _tmp106_;
	ValaCCodeFunctionCall* _tmp107_;
	ValaCCodeFunction* _tmp108_;
	ValaCCodeFunction* _tmp109_;
	ValaCCodeFunctionCall* _tmp110_;
	ValaCCodeFunction* _tmp111_;
	ValaCCodeFunction* _tmp112_;
	ValaCCodeConstant* _tmp113_;
	ValaCCodeConstant* _tmp114_;
	ValaCCodeFunction* _tmp115_;
	ValaCCodeFunction* _tmp116_;
	ValaCCodeFunction* _tmp117_;
	ValaCCodeFunction* _tmp118_;
	ValaCCodeConstant* _tmp119_;
	ValaCCodeConstant* _tmp120_;
	ValaCCodeFunction* _tmp121_;
	ValaCCodeFunction* _tmp122_;
	ValaCCodeFunction* _tmp123_;
	ValaCCodeFunction* _tmp124_;
	ValaCCodeIdentifier* _tmp125_;
	ValaCCodeIdentifier* _tmp126_;
	ValaClass* _tmp127_;
	gchar* _tmp128_;
	gchar* _tmp129_;
	ValaCCodeIdentifier* _tmp130_;
	ValaCCodeIdentifier* _tmp131_;
	ValaCCodeFunctionCall* _tmp132_;
	ValaCCodeFunctionCall* _tmp133_;
	ValaCCodeIdentifier* _tmp134_;
	ValaCCodeIdentifier* _tmp135_;
	ValaCCodeFunction* _tmp136_;
	ValaCCodeFunction* _tmp137_;
	ValaCCodeFunctionCall* _tmp138_;
	ValaCCodeFunction* _tmp139_;
	ValaCCodeFunction* _tmp140_;
	ValaCCodeFile* _tmp141_;
	ValaCCodeFunction* _tmp142_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_take_value_function ((ValaCodeNode*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "void");
	_tmp4_ = _tmp3_;
	_g_free0 (_tmp2_);
	function = _tmp4_;
	_tmp5_ = function;
	_tmp6_ = vala_ccode_parameter_new ("value", "GValue*");
	_tmp7_ = _tmp6_;
	vala_ccode_function_add_parameter (_tmp5_, _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	_tmp8_ = function;
	_tmp9_ = vala_ccode_parameter_new ("v_object", "gpointer");
	_tmp10_ = _tmp9_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp10_);
	_vala_ccode_node_unref0 (_tmp10_);
	_tmp11_ = cl;
	_tmp12_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp11_);
	if (_tmp12_) {
		ValaCCodeFunction* _tmp13_;
		_tmp13_ = function;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp13_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp14_ = FALSE;
		ValaCodeContext* _tmp15_;
		ValaCodeContext* _tmp16_;
		gboolean _tmp17_;
		gboolean _tmp18_;
		_tmp15_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp16_ = _tmp15_;
		_tmp17_ = vala_code_context_get_hide_internal (_tmp16_);
		_tmp18_ = _tmp17_;
		if (_tmp18_) {
			ValaClass* _tmp19_;
			gboolean _tmp20_;
			_tmp19_ = cl;
			_tmp20_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp19_);
			_tmp14_ = _tmp20_;
		} else {
			_tmp14_ = FALSE;
		}
		if (_tmp14_) {
			ValaCCodeFunction* _tmp21_;
			_tmp21_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp21_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp22_ = vala_ccode_identifier_new ("value");
	_tmp23_ = _tmp22_;
	_tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "data[0]");
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp25_, "v_pointer", FALSE);
	_tmp27_ = _tmp26_;
	_vala_ccode_node_unref0 (_tmp25_);
	_vala_ccode_node_unref0 (_tmp23_);
	vpointer = _tmp27_;
	_tmp28_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp28_);
	_tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp30_ = _tmp29_;
	_tmp31_ = cl;
	_tmp32_ = vala_get_ccode_name ((ValaCodeNode*) _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = g_strdup_printf ("%s *", _tmp33_);
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_variable_declarator_new ("old", NULL, NULL);
	_tmp37_ = _tmp36_;
	vala_ccode_function_add_declaration (_tmp30_, _tmp35_, (ValaCCodeDeclarator*) _tmp37_, 0);
	_vala_ccode_node_unref0 (_tmp37_);
	_g_free0 (_tmp35_);
	_g_free0 (_tmp33_);
	_tmp38_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
	_tmp39_ = _tmp38_;
	_tmp40_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp39_);
	_tmp41_ = _tmp40_;
	_vala_ccode_node_unref0 (_tmp39_);
	ccall_typecheck = _tmp41_;
	_tmp42_ = ccall_typecheck;
	_tmp43_ = vala_ccode_identifier_new ("value");
	_tmp44_ = _tmp43_;
	vala_ccode_function_call_add_argument (_tmp42_, (ValaCCodeExpression*) _tmp44_);
	_vala_ccode_node_unref0 (_tmp44_);
	_tmp45_ = ccall_typecheck;
	_tmp46_ = cl;
	_tmp47_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_ccode_identifier_new (_tmp48_);
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_g_free0 (_tmp48_);
	_tmp51_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp52_ = _tmp51_;
	_tmp53_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp52_);
	_tmp54_ = _tmp53_;
	_vala_ccode_node_unref0 (_tmp52_);
	ccall = _tmp54_;
	_tmp55_ = ccall;
	_tmp56_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp55_, (ValaCCodeExpression*) _tmp56_);
	_tmp57_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp58_ = _tmp57_;
	_tmp59_ = ccall;
	vala_ccode_function_add_expression (_tmp58_, (ValaCCodeExpression*) _tmp59_);
	_tmp60_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp61_ = _tmp60_;
	_tmp62_ = vala_ccode_constant_new ("old");
	_tmp63_ = _tmp62_;
	vala_ccode_function_add_assignment (_tmp61_, (ValaCCodeExpression*) _tmp63_, (ValaCCodeExpression*) vpointer);
	_vala_ccode_node_unref0 (_tmp63_);
	_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp65_ = _tmp64_;
	_tmp66_ = vala_ccode_identifier_new ("v_object");
	_tmp67_ = _tmp66_;
	vala_ccode_function_open_if (_tmp65_, (ValaCCodeExpression*) _tmp67_);
	_vala_ccode_node_unref0 (_tmp67_);
	_tmp68_ = vala_ccode_identifier_new ("G_TYPE_CHECK_INSTANCE_TYPE");
	_tmp69_ = _tmp68_;
	_tmp70_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp69_);
	_vala_ccode_node_unref0 (ccall_typecheck);
	ccall_typecheck = _tmp70_;
	_vala_ccode_node_unref0 (_tmp69_);
	_tmp71_ = ccall_typecheck;
	_tmp72_ = vala_ccode_identifier_new ("v_object");
	_tmp73_ = _tmp72_;
	vala_ccode_function_call_add_argument (_tmp71_, (ValaCCodeExpression*) _tmp73_);
	_vala_ccode_node_unref0 (_tmp73_);
	_tmp74_ = ccall_typecheck;
	_tmp75_ = cl;
	_tmp76_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp75_);
	_tmp77_ = _tmp76_;
	_tmp78_ = vala_ccode_identifier_new (_tmp77_);
	_tmp79_ = _tmp78_;
	vala_ccode_function_call_add_argument (_tmp74_, (ValaCCodeExpression*) _tmp79_);
	_vala_ccode_node_unref0 (_tmp79_);
	_g_free0 (_tmp77_);
	_tmp80_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp82_;
	_vala_ccode_node_unref0 (_tmp81_);
	_tmp83_ = ccall;
	_tmp84_ = ccall_typecheck;
	vala_ccode_function_call_add_argument (_tmp83_, (ValaCCodeExpression*) _tmp84_);
	_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp86_ = _tmp85_;
	_tmp87_ = ccall;
	vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
	_tmp88_ = vala_ccode_identifier_new ("G_TYPE_FROM_INSTANCE");
	_tmp89_ = _tmp88_;
	_tmp90_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp89_);
	_tmp91_ = _tmp90_;
	_vala_ccode_node_unref0 (_tmp89_);
	ccall_typefrominstance = _tmp91_;
	_tmp92_ = vala_ccode_identifier_new ("v_object");
	_tmp93_ = _tmp92_;
	vala_ccode_function_call_add_argument (ccall_typefrominstance, (ValaCCodeExpression*) _tmp93_);
	_vala_ccode_node_unref0 (_tmp93_);
	_tmp94_ = vala_ccode_identifier_new ("G_VALUE_TYPE");
	_tmp95_ = _tmp94_;
	_tmp96_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp95_);
	_tmp97_ = _tmp96_;
	_vala_ccode_node_unref0 (_tmp95_);
	ccall_gvaluetype = _tmp97_;
	_tmp98_ = vala_ccode_identifier_new ("value");
	_tmp99_ = _tmp98_;
	vala_ccode_function_call_add_argument (ccall_gvaluetype, (ValaCCodeExpression*) _tmp99_);
	_vala_ccode_node_unref0 (_tmp99_);
	_tmp100_ = vala_ccode_identifier_new ("g_value_type_compatible");
	_tmp101_ = _tmp100_;
	_tmp102_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp101_);
	_tmp103_ = _tmp102_;
	_vala_ccode_node_unref0 (_tmp101_);
	ccall_typecompatible = _tmp103_;
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_typefrominstance);
	vala_ccode_function_call_add_argument (ccall_typecompatible, (ValaCCodeExpression*) ccall_gvaluetype);
	_tmp104_ = vala_ccode_identifier_new ("g_return_if_fail");
	_tmp105_ = _tmp104_;
	_tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp106_;
	_vala_ccode_node_unref0 (_tmp105_);
	_tmp107_ = ccall;
	vala_ccode_function_call_add_argument (_tmp107_, (ValaCCodeExpression*) ccall_typecompatible);
	_tmp108_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp109_ = _tmp108_;
	_tmp110_ = ccall;
	vala_ccode_function_add_expression (_tmp109_, (ValaCCodeExpression*) _tmp110_);
	_tmp111_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp112_ = _tmp111_;
	_tmp113_ = vala_ccode_constant_new ("v_object");
	_tmp114_ = _tmp113_;
	vala_ccode_function_add_assignment (_tmp112_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp114_);
	_vala_ccode_node_unref0 (_tmp114_);
	_tmp115_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp116_ = _tmp115_;
	vala_ccode_function_add_else (_tmp116_);
	_tmp117_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp118_ = _tmp117_;
	_tmp119_ = vala_ccode_constant_new ("NULL");
	_tmp120_ = _tmp119_;
	vala_ccode_function_add_assignment (_tmp118_, (ValaCCodeExpression*) vpointer, (ValaCCodeExpression*) _tmp120_);
	_vala_ccode_node_unref0 (_tmp120_);
	_tmp121_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp122_ = _tmp121_;
	vala_ccode_function_close (_tmp122_);
	_tmp123_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp124_ = _tmp123_;
	_tmp125_ = vala_ccode_identifier_new ("old");
	_tmp126_ = _tmp125_;
	vala_ccode_function_open_if (_tmp124_, (ValaCCodeExpression*) _tmp126_);
	_vala_ccode_node_unref0 (_tmp126_);
	_tmp127_ = cl;
	_tmp128_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp127_);
	_tmp129_ = _tmp128_;
	_tmp130_ = vala_ccode_identifier_new (_tmp129_);
	_tmp131_ = _tmp130_;
	_tmp132_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp131_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp132_;
	_vala_ccode_node_unref0 (_tmp131_);
	_g_free0 (_tmp129_);
	_tmp133_ = ccall;
	_tmp134_ = vala_ccode_identifier_new ("old");
	_tmp135_ = _tmp134_;
	vala_ccode_function_call_add_argument (_tmp133_, (ValaCCodeExpression*) _tmp135_);
	_vala_ccode_node_unref0 (_tmp135_);
	_tmp136_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp137_ = _tmp136_;
	_tmp138_ = ccall;
	vala_ccode_function_add_expression (_tmp137_, (ValaCCodeExpression*) _tmp138_);
	_tmp139_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp140_ = _tmp139_;
	vala_ccode_function_close (_tmp140_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp141_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp142_ = function;
	vala_ccode_file_add_function (_tmp141_, _tmp142_);
	_vala_ccode_node_unref0 (ccall_typecompatible);
	_vala_ccode_node_unref0 (ccall_gvaluetype);
	_vala_ccode_node_unref0 (ccall_typefrominstance);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (ccall_typecheck);
	_vala_ccode_node_unref0 (vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_g_value_get_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValaCCodeFunction* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeParameter* _tmp6_;
	ValaCCodeParameter* _tmp7_;
	ValaClass* _tmp8_;
	gboolean _tmp9_;
	ValaCCodeMemberAccess* vpointer = NULL;
	ValaCCodeIdentifier* _tmp19_;
	ValaCCodeIdentifier* _tmp20_;
	ValaCCodeMemberAccess* _tmp21_;
	ValaCCodeMemberAccess* _tmp22_;
	ValaCCodeMemberAccess* _tmp23_;
	ValaCCodeMemberAccess* _tmp24_;
	ValaCCodeFunction* _tmp25_;
	ValaCCodeFunctionCall* ccall_typecheck = NULL;
	ValaCCodeIdentifier* _tmp26_;
	ValaCCodeIdentifier* _tmp27_;
	ValaCCodeFunctionCall* _tmp28_;
	ValaCCodeFunctionCall* _tmp29_;
	ValaCCodeIdentifier* _tmp30_;
	ValaCCodeIdentifier* _tmp31_;
	ValaClass* _tmp32_;
	gchar* _tmp33_;
	gchar* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeIdentifier* _tmp36_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp37_;
	ValaCCodeIdentifier* _tmp38_;
	ValaCCodeFunctionCall* _tmp39_;
	ValaCCodeFunctionCall* _tmp40_;
	ValaCCodeIdentifier* _tmp41_;
	ValaCCodeIdentifier* _tmp42_;
	ValaCCodeFunction* _tmp43_;
	ValaCCodeFunction* _tmp44_;
	ValaCCodeFunction* _tmp45_;
	ValaCCodeFunction* _tmp46_;
	ValaCCodeFile* _tmp47_;
	ValaCCodeFunction* _tmp48_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_get_value_function ((ValaCodeNode*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_ccode_function_new (_tmp2_, "gpointer");
	_tmp4_ = _tmp3_;
	_g_free0 (_tmp2_);
	function = _tmp4_;
	_tmp5_ = function;
	_tmp6_ = vala_ccode_parameter_new ("value", "const GValue*");
	_tmp7_ = _tmp6_;
	vala_ccode_function_add_parameter (_tmp5_, _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	_tmp8_ = cl;
	_tmp9_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp8_);
	if (_tmp9_) {
		ValaCCodeFunction* _tmp10_;
		_tmp10_ = function;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp10_, VALA_CCODE_MODIFIERS_STATIC);
	} else {
		gboolean _tmp11_ = FALSE;
		ValaCodeContext* _tmp12_;
		ValaCodeContext* _tmp13_;
		gboolean _tmp14_;
		gboolean _tmp15_;
		_tmp12_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp13_ = _tmp12_;
		_tmp14_ = vala_code_context_get_hide_internal (_tmp13_);
		_tmp15_ = _tmp14_;
		if (_tmp15_) {
			ValaClass* _tmp16_;
			gboolean _tmp17_;
			_tmp16_ = cl;
			_tmp17_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp16_);
			_tmp11_ = _tmp17_;
		} else {
			_tmp11_ = FALSE;
		}
		if (_tmp11_) {
			ValaCCodeFunction* _tmp18_;
			_tmp18_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, VALA_CCODE_MODIFIERS_INTERNAL);
		}
	}
	_tmp19_ = vala_ccode_identifier_new ("value");
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp20_, "data[0]");
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_member_access_new ((ValaCCodeExpression*) _tmp22_, "v_pointer", FALSE);
	_tmp24_ = _tmp23_;
	_vala_ccode_node_unref0 (_tmp22_);
	_vala_ccode_node_unref0 (_tmp20_);
	vpointer = _tmp24_;
	_tmp25_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp25_);
	_tmp26_ = vala_ccode_identifier_new ("G_TYPE_CHECK_VALUE_TYPE");
	_tmp27_ = _tmp26_;
	_tmp28_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp27_);
	_tmp29_ = _tmp28_;
	_vala_ccode_node_unref0 (_tmp27_);
	ccall_typecheck = _tmp29_;
	_tmp30_ = vala_ccode_identifier_new ("value");
	_tmp31_ = _tmp30_;
	vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp31_);
	_vala_ccode_node_unref0 (_tmp31_);
	_tmp32_ = cl;
	_tmp33_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = vala_ccode_identifier_new (_tmp34_);
	_tmp36_ = _tmp35_;
	vala_ccode_function_call_add_argument (ccall_typecheck, (ValaCCodeExpression*) _tmp36_);
	_vala_ccode_node_unref0 (_tmp36_);
	_g_free0 (_tmp34_);
	_tmp37_ = vala_ccode_identifier_new ("g_return_val_if_fail");
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp38_);
	_tmp40_ = _tmp39_;
	_vala_ccode_node_unref0 (_tmp38_);
	ccall = _tmp40_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) ccall_typecheck);
	_tmp41_ = vala_ccode_identifier_new ("NULL");
	_tmp42_ = _tmp41_;
	vala_ccode_function_call_add_argument (ccall, (ValaCCodeExpression*) _tmp42_);
	_vala_ccode_node_unref0 (_tmp42_);
	_tmp43_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp44_ = _tmp43_;
	vala_ccode_function_add_expression (_tmp44_, (ValaCCodeExpression*) ccall);
	_tmp45_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp46_ = _tmp45_;
	vala_ccode_function_add_return (_tmp46_, (ValaCCodeExpression*) vpointer);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp47_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp48_ = function;
	vala_ccode_file_add_function (_tmp47_, _tmp48_);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (ccall_typecheck);
	_vala_ccode_node_unref0 (vpointer);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_begin_base_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	ValaCCodeFunction* base_init = NULL;
	ValaClass* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaClass* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	ValaCCodeParameter* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_base_init", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	base_init = _tmp7_;
	_tmp8_ = cl;
	_tmp9_ = vala_get_ccode_name ((ValaCodeNode*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = g_strdup_printf ("%sClass *", _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = vala_ccode_parameter_new ("klass", _tmp12_);
	_tmp14_ = _tmp13_;
	vala_ccode_function_add_parameter (base_init, _tmp14_);
	_vala_ccode_node_unref0 (_tmp14_);
	_g_free0 (_tmp12_);
	_g_free0 (_tmp10_);
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) base_init, VALA_CCODE_MODIFIERS_STATIC);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, base_init);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_vala_ccode_node_unref0 (base_init);
}


static void vala_gtype_module_add_base_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFile* _tmp0_;
	ValaCCodeBaseModuleEmitContext* _tmp1_;
	ValaCCodeFunction* _tmp2_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp1_ = ((ValaCCodeBaseModule*) self)->base_init_context;
	_tmp2_ = _tmp1_->ccode;
	vala_ccode_file_add_function (_tmp0_, _tmp2_);
}


static void vala_gtype_module_real_generate_class_init (ValaGTypeModule* self, ValaClass* cl) {
	g_return_if_fail (cl != NULL);
}


void vala_gtype_module_generate_class_init (ValaGTypeModule* self, ValaClass* cl) {
	g_return_if_fail (self != NULL);
	VALA_GTYPE_MODULE_GET_CLASS (self)->generate_class_init (self, cl);
}


static void vala_gtype_module_real_end_instance_init (ValaGTypeModule* self, ValaClass* cl) {
	g_return_if_fail (cl != NULL);
}


void vala_gtype_module_end_instance_init (ValaGTypeModule* self, ValaClass* cl) {
	g_return_if_fail (self != NULL);
	VALA_GTYPE_MODULE_GET_CLASS (self)->end_instance_init (self, cl);
}


static void vala_gtype_module_begin_class_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	ValaCCodeFunction* func = NULL;
	ValaClass* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaClass* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeDeclaration* parent_decl = NULL;
	ValaCCodeDeclaration* _tmp17_;
	ValaCCodeVariableDeclarator* parent_var_decl = NULL;
	ValaClass* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	ValaCCodeVariableDeclarator* _tmp23_;
	ValaCCodeVariableDeclarator* _tmp24_;
	ValaCCodeVariableDeclarator* _tmp25_;
	ValaCCodeConstant* _tmp26_;
	ValaCCodeConstant* _tmp27_;
	ValaCCodeDeclaration* _tmp28_;
	ValaCCodeVariableDeclarator* _tmp29_;
	ValaCCodeDeclaration* _tmp30_;
	ValaCCodeFile* _tmp31_;
	ValaCCodeDeclaration* _tmp32_;
	ValaCCodeFunction* _tmp33_;
	ValaCCodeIdentifier* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeFunctionCall* _tmp36_;
	ValaCCodeFunctionCall* _tmp37_;
	ValaCCodeIdentifier* _tmp38_;
	ValaCCodeIdentifier* _tmp39_;
	ValaCCodeAssignment* parent_assignment = NULL;
	ValaClass* _tmp40_;
	gchar* _tmp41_;
	gchar* _tmp42_;
	gchar* _tmp43_;
	gchar* _tmp44_;
	ValaCCodeIdentifier* _tmp45_;
	ValaCCodeIdentifier* _tmp46_;
	ValaCCodeFunctionCall* _tmp47_;
	ValaCCodeAssignment* _tmp48_;
	ValaCCodeAssignment* _tmp49_;
	ValaCCodeFunction* _tmp50_;
	ValaCCodeFunction* _tmp51_;
	ValaCCodeAssignment* _tmp52_;
	gboolean _tmp53_ = FALSE;
	gboolean _tmp54_ = FALSE;
	ValaClass* _tmp55_;
	gboolean _tmp56_;
	gboolean _tmp57_;
	gboolean _tmp107_ = FALSE;
	ValaClass* _tmp108_;
	gboolean _tmp109_;
	gboolean _tmp110_;
	ValaClass* _tmp340_;
	ValaClass* _tmp341_;
	gboolean _tmp342_;
	gboolean _tmp343_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->class_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_class_init", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	func = _tmp7_;
	_tmp8_ = func;
	_tmp9_ = cl;
	_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = g_strdup_printf ("%sClass *", _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_ccode_parameter_new ("klass", _tmp13_);
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_g_free0 (_tmp13_);
	_g_free0 (_tmp11_);
	_tmp16_ = func;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp17_ = vala_ccode_declaration_new ("gpointer");
	parent_decl = _tmp17_;
	_tmp18_ = cl;
	_tmp19_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp18_, NULL);
	_tmp20_ = _tmp19_;
	_tmp21_ = g_strdup_printf ("%s_parent_class", _tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_variable_declarator_new (_tmp22_, NULL, NULL);
	_tmp24_ = _tmp23_;
	_g_free0 (_tmp22_);
	_g_free0 (_tmp20_);
	parent_var_decl = _tmp24_;
	_tmp25_ = parent_var_decl;
	_tmp26_ = vala_ccode_constant_new ("NULL");
	_tmp27_ = _tmp26_;
	vala_ccode_variable_declarator_set_initializer (_tmp25_, (ValaCCodeExpression*) _tmp27_);
	_vala_ccode_node_unref0 (_tmp27_);
	_tmp28_ = parent_decl;
	_tmp29_ = parent_var_decl;
	vala_ccode_declaration_add_declarator (_tmp28_, (ValaCCodeDeclarator*) _tmp29_);
	_tmp30_ = parent_decl;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp30_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp31_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp32_ = parent_decl;
	vala_ccode_file_add_type_member_declaration (_tmp31_, (ValaCCodeNode*) _tmp32_);
	_tmp33_ = func;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp33_);
	_tmp34_ = vala_ccode_identifier_new ("g_type_class_peek_parent");
	_tmp35_ = _tmp34_;
	_tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp36_;
	_vala_ccode_node_unref0 (_tmp35_);
	_tmp37_ = ccall;
	_tmp38_ = vala_ccode_identifier_new ("klass");
	_tmp39_ = _tmp38_;
	vala_ccode_function_call_add_argument (_tmp37_, (ValaCCodeExpression*) _tmp39_);
	_vala_ccode_node_unref0 (_tmp39_);
	_tmp40_ = cl;
	_tmp41_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp40_, NULL);
	_tmp42_ = _tmp41_;
	_tmp43_ = g_strdup_printf ("%s_parent_class", _tmp42_);
	_tmp44_ = _tmp43_;
	_tmp45_ = vala_ccode_identifier_new (_tmp44_);
	_tmp46_ = _tmp45_;
	_tmp47_ = ccall;
	_tmp48_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp46_, (ValaCCodeExpression*) _tmp47_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
	_tmp49_ = _tmp48_;
	_vala_ccode_node_unref0 (_tmp46_);
	_g_free0 (_tmp44_);
	_g_free0 (_tmp42_);
	parent_assignment = _tmp49_;
	_tmp50_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp51_ = _tmp50_;
	_tmp52_ = parent_assignment;
	vala_ccode_function_add_expression (_tmp51_, (ValaCCodeExpression*) _tmp52_);
	_tmp55_ = cl;
	_tmp56_ = vala_class_get_is_compact (_tmp55_);
	_tmp57_ = _tmp56_;
	if (!_tmp57_) {
		ValaClass* _tmp58_;
		ValaTypeSymbol* _tmp59_;
		gboolean _tmp60_;
		_tmp58_ = cl;
		_tmp59_ = ((ValaCCodeBaseModule*) self)->gobject_type;
		_tmp60_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp58_, _tmp59_);
		_tmp54_ = !_tmp60_;
	} else {
		_tmp54_ = FALSE;
	}
	if (_tmp54_) {
		gboolean _tmp61_ = FALSE;
		gboolean _tmp62_ = FALSE;
		ValaClass* _tmp63_;
		ValaList* _tmp64_;
		ValaList* _tmp65_;
		gint _tmp66_;
		gint _tmp67_;
		gboolean _tmp68_;
		_tmp63_ = cl;
		_tmp64_ = vala_class_get_fields (_tmp63_);
		_tmp65_ = _tmp64_;
		_tmp66_ = vala_collection_get_size ((ValaCollection*) _tmp65_);
		_tmp67_ = _tmp66_;
		_tmp68_ = _tmp67_ > 0;
		_vala_iterable_unref0 (_tmp65_);
		if (_tmp68_) {
			_tmp62_ = TRUE;
		} else {
			ValaClass* _tmp69_;
			ValaDestructor* _tmp70_;
			ValaDestructor* _tmp71_;
			_tmp69_ = cl;
			_tmp70_ = vala_class_get_destructor (_tmp69_);
			_tmp71_ = _tmp70_;
			_tmp62_ = _tmp71_ != NULL;
		}
		if (_tmp62_) {
			_tmp61_ = TRUE;
		} else {
			ValaClass* _tmp72_;
			gboolean _tmp73_;
			_tmp72_ = cl;
			_tmp73_ = vala_class_is_fundamental (_tmp72_);
			_tmp61_ = _tmp73_;
		}
		_tmp53_ = _tmp61_;
	} else {
		_tmp53_ = FALSE;
	}
	if (_tmp53_) {
		ValaClass* fundamental_class = NULL;
		ValaClass* _tmp74_;
		ValaClass* _tmp75_;
		ValaCCodeCastExpression* ccast = NULL;
		ValaCCodeIdentifier* _tmp83_;
		ValaCCodeIdentifier* _tmp84_;
		ValaClass* _tmp85_;
		gchar* _tmp86_;
		gchar* _tmp87_;
		gchar* _tmp88_;
		gchar* _tmp89_;
		ValaCCodeCastExpression* _tmp90_;
		ValaCCodeCastExpression* _tmp91_;
		ValaCCodeAssignment* finalize_assignment = NULL;
		ValaCCodeCastExpression* _tmp92_;
		ValaCCodeMemberAccess* _tmp93_;
		ValaCCodeMemberAccess* _tmp94_;
		ValaClass* _tmp95_;
		gchar* _tmp96_;
		gchar* _tmp97_;
		gchar* _tmp98_;
		gchar* _tmp99_;
		ValaCCodeIdentifier* _tmp100_;
		ValaCCodeIdentifier* _tmp101_;
		ValaCCodeAssignment* _tmp102_;
		ValaCCodeAssignment* _tmp103_;
		ValaCCodeFunction* _tmp104_;
		ValaCCodeFunction* _tmp105_;
		ValaCCodeAssignment* _tmp106_;
		_tmp74_ = cl;
		_tmp75_ = _vala_code_node_ref0 (_tmp74_);
		fundamental_class = _tmp75_;
		while (TRUE) {
			ValaClass* _tmp76_;
			ValaClass* _tmp77_;
			ValaClass* _tmp78_;
			ValaClass* _tmp79_;
			ValaClass* _tmp80_;
			ValaClass* _tmp81_;
			ValaClass* _tmp82_;
			_tmp76_ = fundamental_class;
			_tmp77_ = vala_class_get_base_class (_tmp76_);
			_tmp78_ = _tmp77_;
			if (!(_tmp78_ != NULL)) {
				break;
			}
			_tmp79_ = fundamental_class;
			_tmp80_ = vala_class_get_base_class (_tmp79_);
			_tmp81_ = _tmp80_;
			_tmp82_ = _vala_code_node_ref0 (_tmp81_);
			_vala_code_node_unref0 (fundamental_class);
			fundamental_class = _tmp82_;
		}
		_tmp83_ = vala_ccode_identifier_new ("klass");
		_tmp84_ = _tmp83_;
		_tmp85_ = fundamental_class;
		_tmp86_ = vala_get_ccode_name ((ValaCodeNode*) _tmp85_);
		_tmp87_ = _tmp86_;
		_tmp88_ = g_strdup_printf ("%sClass *", _tmp87_);
		_tmp89_ = _tmp88_;
		_tmp90_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp84_, _tmp89_);
		_tmp91_ = _tmp90_;
		_g_free0 (_tmp89_);
		_g_free0 (_tmp87_);
		_vala_ccode_node_unref0 (_tmp84_);
		ccast = _tmp91_;
		_tmp92_ = ccast;
		_tmp93_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp92_, "finalize");
		_tmp94_ = _tmp93_;
		_tmp95_ = cl;
		_tmp96_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp95_);
		_tmp97_ = _tmp96_;
		_tmp98_ = g_strdup_printf ("%sfinalize", _tmp97_);
		_tmp99_ = _tmp98_;
		_tmp100_ = vala_ccode_identifier_new (_tmp99_);
		_tmp101_ = _tmp100_;
		_tmp102_ = vala_ccode_assignment_new ((ValaCCodeExpression*) _tmp94_, (ValaCCodeExpression*) _tmp101_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
		_tmp103_ = _tmp102_;
		_vala_ccode_node_unref0 (_tmp101_);
		_g_free0 (_tmp99_);
		_g_free0 (_tmp97_);
		_vala_ccode_node_unref0 (_tmp94_);
		finalize_assignment = _tmp103_;
		_tmp104_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp105_ = _tmp104_;
		_tmp106_ = finalize_assignment;
		vala_ccode_function_add_expression (_tmp105_, (ValaCCodeExpression*) _tmp106_);
		_vala_ccode_node_unref0 (finalize_assignment);
		_vala_ccode_node_unref0 (ccast);
		_vala_code_node_unref0 (fundamental_class);
	}
	_tmp108_ = cl;
	_tmp109_ = vala_class_get_has_private_fields (_tmp108_);
	_tmp110_ = _tmp109_;
	if (_tmp110_) {
		_tmp107_ = TRUE;
	} else {
		ValaClass* _tmp111_;
		ValaList* _tmp112_;
		ValaList* _tmp113_;
		gint _tmp114_;
		gint _tmp115_;
		_tmp111_ = cl;
		_tmp112_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp111_);
		_tmp113_ = _tmp112_;
		_tmp114_ = vala_collection_get_size ((ValaCollection*) _tmp113_);
		_tmp115_ = _tmp114_;
		_tmp107_ = _tmp115_ > 0;
		_vala_iterable_unref0 (_tmp113_);
	}
	if (_tmp107_) {
		ValaCCodeIdentifier* _tmp116_;
		ValaCCodeIdentifier* _tmp117_;
		ValaCCodeFunctionCall* _tmp118_;
		ValaCCodeFunctionCall* _tmp119_;
		ValaCCodeIdentifier* _tmp120_;
		ValaCCodeIdentifier* _tmp121_;
		ValaCCodeFunctionCall* _tmp122_;
		ValaClass* _tmp123_;
		gchar* _tmp124_;
		gchar* _tmp125_;
		gchar* _tmp126_;
		gchar* _tmp127_;
		ValaCCodeConstant* _tmp128_;
		ValaCCodeConstant* _tmp129_;
		ValaCCodeFunction* _tmp130_;
		ValaCCodeFunction* _tmp131_;
		ValaCCodeFunctionCall* _tmp132_;
		_tmp116_ = vala_ccode_identifier_new ("g_type_class_add_private");
		_tmp117_ = _tmp116_;
		_tmp118_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp117_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp118_;
		_vala_ccode_node_unref0 (_tmp117_);
		_tmp119_ = ccall;
		_tmp120_ = vala_ccode_identifier_new ("klass");
		_tmp121_ = _tmp120_;
		vala_ccode_function_call_add_argument (_tmp119_, (ValaCCodeExpression*) _tmp121_);
		_vala_ccode_node_unref0 (_tmp121_);
		_tmp122_ = ccall;
		_tmp123_ = cl;
		_tmp124_ = vala_get_ccode_name ((ValaCodeNode*) _tmp123_);
		_tmp125_ = _tmp124_;
		_tmp126_ = g_strdup_printf ("sizeof (%sPrivate)", _tmp125_);
		_tmp127_ = _tmp126_;
		_tmp128_ = vala_ccode_constant_new (_tmp127_);
		_tmp129_ = _tmp128_;
		vala_ccode_function_call_add_argument (_tmp122_, (ValaCCodeExpression*) _tmp129_);
		_vala_ccode_node_unref0 (_tmp129_);
		_g_free0 (_tmp127_);
		_g_free0 (_tmp125_);
		_tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp131_ = _tmp130_;
		_tmp132_ = ccall;
		vala_ccode_function_add_expression (_tmp131_, (ValaCCodeExpression*) _tmp132_);
	}
	{
		ValaList* _m_list = NULL;
		ValaClass* _tmp133_;
		ValaList* _tmp134_;
		gint _m_size = 0;
		ValaList* _tmp135_;
		gint _tmp136_;
		gint _tmp137_;
		gint _m_index = 0;
		_tmp133_ = cl;
		_tmp134_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp133_);
		_m_list = _tmp134_;
		_tmp135_ = _m_list;
		_tmp136_ = vala_collection_get_size ((ValaCollection*) _tmp135_);
		_tmp137_ = _tmp136_;
		_m_size = _tmp137_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp138_;
			gint _tmp139_;
			gint _tmp140_;
			ValaMethod* m = NULL;
			ValaList* _tmp141_;
			gint _tmp142_;
			gpointer _tmp143_;
			ValaMethod* _tmp144_;
			ValaMethod* _tmp145_;
			ValaMethod* _tmp146_;
			ValaObjectTypeSymbol* base_type = NULL;
			ValaMethod* _tmp147_;
			ValaMethod* _tmp148_;
			ValaMethod* _tmp149_;
			ValaSymbol* _tmp150_;
			ValaSymbol* _tmp151_;
			ValaObjectTypeSymbol* _tmp152_;
			gboolean _tmp153_ = FALSE;
			ValaMethod* _tmp154_;
			gboolean _tmp155_;
			gboolean _tmp156_;
			_tmp138_ = _m_index;
			_m_index = _tmp138_ + 1;
			_tmp139_ = _m_index;
			_tmp140_ = _m_size;
			if (!(_tmp139_ < _tmp140_)) {
				break;
			}
			_tmp141_ = _m_list;
			_tmp142_ = _m_index;
			_tmp143_ = vala_list_get (_tmp141_, _tmp142_);
			m = (ValaMethod*) _tmp143_;
			_tmp144_ = m;
			_tmp145_ = vala_method_get_base_method (_tmp144_);
			_tmp146_ = _tmp145_;
			if (_tmp146_ == NULL) {
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp147_ = m;
			_tmp148_ = vala_method_get_base_method (_tmp147_);
			_tmp149_ = _tmp148_;
			_tmp150_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp149_);
			_tmp151_ = _tmp150_;
			_tmp152_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp151_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
			base_type = _tmp152_;
			_tmp154_ = m;
			_tmp155_ = vala_method_get_is_abstract (_tmp154_);
			_tmp156_ = _tmp155_;
			if (!_tmp156_) {
				_tmp153_ = TRUE;
			} else {
				ValaMethod* _tmp157_;
				gboolean _tmp158_;
				gboolean _tmp159_;
				_tmp157_ = m;
				_tmp158_ = vala_method_get_coroutine (_tmp157_);
				_tmp159_ = _tmp158_;
				_tmp153_ = !_tmp159_;
			}
			if (_tmp153_) {
				ValaCCodeExpression* cfunc = NULL;
				ValaMethod* _tmp160_;
				gchar* _tmp161_;
				gchar* _tmp162_;
				ValaCCodeIdentifier* _tmp163_;
				ValaCCodeExpression* _tmp164_;
				gint _tmp165_ = 0;
				ValaMethod* _tmp166_;
				gboolean _tmp167_;
				gboolean _tmp168_;
				ValaMethod* _tmp169_;
				ValaMethod* _tmp170_;
				ValaMethod* _tmp171_;
				ValaCCodeExpression* _tmp172_;
				ValaObjectTypeSymbol* _tmp173_;
				ValaCCodeExpression* _tmp174_;
				ValaCCodeCastExpression* ccast = NULL;
				ValaCCodeIdentifier* _tmp175_;
				ValaCCodeIdentifier* _tmp176_;
				ValaObjectTypeSymbol* _tmp177_;
				gchar* _tmp178_;
				gchar* _tmp179_;
				gchar* _tmp180_;
				gchar* _tmp181_;
				ValaCCodeCastExpression* _tmp182_;
				ValaCCodeCastExpression* _tmp183_;
				ValaCCodeFunction* _tmp184_;
				ValaCCodeFunction* _tmp185_;
				ValaCCodeCastExpression* _tmp186_;
				ValaMethod* _tmp187_;
				ValaMethod* _tmp188_;
				ValaMethod* _tmp189_;
				gchar* _tmp190_;
				gchar* _tmp191_;
				ValaCCodeMemberAccess* _tmp192_;
				ValaCCodeMemberAccess* _tmp193_;
				ValaCCodeExpression* _tmp194_;
				ValaMethod* _tmp195_;
				gboolean _tmp196_;
				gboolean _tmp197_;
				_tmp160_ = m;
				_tmp161_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp160_);
				_tmp162_ = _tmp161_;
				_tmp163_ = vala_ccode_identifier_new (_tmp162_);
				_tmp164_ = (ValaCCodeExpression*) _tmp163_;
				_g_free0 (_tmp162_);
				cfunc = _tmp164_;
				_tmp166_ = m;
				_tmp167_ = vala_method_get_coroutine (_tmp166_);
				_tmp168_ = _tmp167_;
				if (_tmp168_) {
					_tmp165_ = 1;
				} else {
					_tmp165_ = 3;
				}
				_tmp169_ = m;
				_tmp170_ = vala_method_get_base_method (_tmp169_);
				_tmp171_ = _tmp170_;
				_tmp172_ = cfunc;
				_tmp173_ = base_type;
				_tmp174_ = vala_gtype_module_cast_method_pointer (self, _tmp171_, _tmp172_, _tmp173_, _tmp165_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = _tmp174_;
				_tmp175_ = vala_ccode_identifier_new ("klass");
				_tmp176_ = _tmp175_;
				_tmp177_ = base_type;
				_tmp178_ = vala_get_ccode_name ((ValaCodeNode*) _tmp177_);
				_tmp179_ = _tmp178_;
				_tmp180_ = g_strdup_printf ("%sClass *", _tmp179_);
				_tmp181_ = _tmp180_;
				_tmp182_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp176_, _tmp181_);
				_tmp183_ = _tmp182_;
				_g_free0 (_tmp181_);
				_g_free0 (_tmp179_);
				_vala_ccode_node_unref0 (_tmp176_);
				ccast = _tmp183_;
				_tmp184_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp185_ = _tmp184_;
				_tmp186_ = ccast;
				_tmp187_ = m;
				_tmp188_ = vala_method_get_base_method (_tmp187_);
				_tmp189_ = _tmp188_;
				_tmp190_ = vala_get_ccode_vfunc_name (_tmp189_);
				_tmp191_ = _tmp190_;
				_tmp192_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp186_, _tmp191_);
				_tmp193_ = _tmp192_;
				_tmp194_ = cfunc;
				vala_ccode_function_add_assignment (_tmp185_, (ValaCCodeExpression*) _tmp193_, _tmp194_);
				_vala_ccode_node_unref0 (_tmp193_);
				_g_free0 (_tmp191_);
				_tmp195_ = m;
				_tmp196_ = vala_method_get_coroutine (_tmp195_);
				_tmp197_ = _tmp196_;
				if (_tmp197_) {
					ValaMethod* _tmp198_;
					gchar* _tmp199_;
					gchar* _tmp200_;
					ValaCCodeIdentifier* _tmp201_;
					ValaMethod* _tmp202_;
					ValaMethod* _tmp203_;
					ValaMethod* _tmp204_;
					ValaCCodeExpression* _tmp205_;
					ValaObjectTypeSymbol* _tmp206_;
					ValaCCodeExpression* _tmp207_;
					ValaCCodeFunction* _tmp208_;
					ValaCCodeFunction* _tmp209_;
					ValaCCodeCastExpression* _tmp210_;
					ValaMethod* _tmp211_;
					ValaMethod* _tmp212_;
					ValaMethod* _tmp213_;
					gchar* _tmp214_;
					gchar* _tmp215_;
					ValaCCodeMemberAccess* _tmp216_;
					ValaCCodeMemberAccess* _tmp217_;
					ValaCCodeExpression* _tmp218_;
					_tmp198_ = m;
					_tmp199_ = vala_get_ccode_finish_real_name (_tmp198_);
					_tmp200_ = _tmp199_;
					_tmp201_ = vala_ccode_identifier_new (_tmp200_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = (ValaCCodeExpression*) _tmp201_;
					_g_free0 (_tmp200_);
					_tmp202_ = m;
					_tmp203_ = vala_method_get_base_method (_tmp202_);
					_tmp204_ = _tmp203_;
					_tmp205_ = cfunc;
					_tmp206_ = base_type;
					_tmp207_ = vala_gtype_module_cast_method_pointer (self, _tmp204_, _tmp205_, _tmp206_, 2);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = _tmp207_;
					_tmp208_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp209_ = _tmp208_;
					_tmp210_ = ccast;
					_tmp211_ = m;
					_tmp212_ = vala_method_get_base_method (_tmp211_);
					_tmp213_ = _tmp212_;
					_tmp214_ = vala_get_ccode_finish_vfunc_name (_tmp213_);
					_tmp215_ = _tmp214_;
					_tmp216_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp210_, _tmp215_);
					_tmp217_ = _tmp216_;
					_tmp218_ = cfunc;
					vala_ccode_function_add_assignment (_tmp209_, (ValaCCodeExpression*) _tmp217_, _tmp218_);
					_vala_ccode_node_unref0 (_tmp217_);
					_g_free0 (_tmp215_);
				}
				_vala_ccode_node_unref0 (ccast);
				_vala_ccode_node_unref0 (cfunc);
			}
			_vala_code_node_unref0 (base_type);
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	{
		ValaList* _sig_list = NULL;
		ValaClass* _tmp219_;
		ValaList* _tmp220_;
		gint _sig_size = 0;
		ValaList* _tmp221_;
		gint _tmp222_;
		gint _tmp223_;
		gint _sig_index = 0;
		_tmp219_ = cl;
		_tmp220_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp219_);
		_sig_list = _tmp220_;
		_tmp221_ = _sig_list;
		_tmp222_ = vala_collection_get_size ((ValaCollection*) _tmp221_);
		_tmp223_ = _tmp222_;
		_sig_size = _tmp223_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp224_;
			gint _tmp225_;
			gint _tmp226_;
			ValaSignal* sig = NULL;
			ValaList* _tmp227_;
			gint _tmp228_;
			gpointer _tmp229_;
			ValaSignal* _tmp230_;
			ValaMethod* _tmp231_;
			ValaMethod* _tmp232_;
			ValaCCodeCastExpression* ccast = NULL;
			ValaCCodeIdentifier* _tmp233_;
			ValaCCodeIdentifier* _tmp234_;
			ValaClass* _tmp235_;
			gchar* _tmp236_;
			gchar* _tmp237_;
			gchar* _tmp238_;
			gchar* _tmp239_;
			ValaCCodeCastExpression* _tmp240_;
			ValaCCodeCastExpression* _tmp241_;
			ValaCCodeFunction* _tmp242_;
			ValaCCodeFunction* _tmp243_;
			ValaCCodeCastExpression* _tmp244_;
			ValaSignal* _tmp245_;
			ValaMethod* _tmp246_;
			ValaMethod* _tmp247_;
			gchar* _tmp248_;
			gchar* _tmp249_;
			ValaCCodeMemberAccess* _tmp250_;
			ValaCCodeMemberAccess* _tmp251_;
			ValaSignal* _tmp252_;
			ValaMethod* _tmp253_;
			ValaMethod* _tmp254_;
			gchar* _tmp255_;
			gchar* _tmp256_;
			ValaCCodeIdentifier* _tmp257_;
			ValaCCodeIdentifier* _tmp258_;
			_tmp224_ = _sig_index;
			_sig_index = _tmp224_ + 1;
			_tmp225_ = _sig_index;
			_tmp226_ = _sig_size;
			if (!(_tmp225_ < _tmp226_)) {
				break;
			}
			_tmp227_ = _sig_list;
			_tmp228_ = _sig_index;
			_tmp229_ = vala_list_get (_tmp227_, _tmp228_);
			sig = (ValaSignal*) _tmp229_;
			_tmp230_ = sig;
			_tmp231_ = vala_signal_get_default_handler (_tmp230_);
			_tmp232_ = _tmp231_;
			if (_tmp232_ == NULL) {
				_vala_code_node_unref0 (sig);
				continue;
			}
			_tmp233_ = vala_ccode_identifier_new ("klass");
			_tmp234_ = _tmp233_;
			_tmp235_ = cl;
			_tmp236_ = vala_get_ccode_name ((ValaCodeNode*) _tmp235_);
			_tmp237_ = _tmp236_;
			_tmp238_ = g_strdup_printf ("%sClass *", _tmp237_);
			_tmp239_ = _tmp238_;
			_tmp240_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp234_, _tmp239_);
			_tmp241_ = _tmp240_;
			_g_free0 (_tmp239_);
			_g_free0 (_tmp237_);
			_vala_ccode_node_unref0 (_tmp234_);
			ccast = _tmp241_;
			_tmp242_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp243_ = _tmp242_;
			_tmp244_ = ccast;
			_tmp245_ = sig;
			_tmp246_ = vala_signal_get_default_handler (_tmp245_);
			_tmp247_ = _tmp246_;
			_tmp248_ = vala_get_ccode_vfunc_name (_tmp247_);
			_tmp249_ = _tmp248_;
			_tmp250_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp244_, _tmp249_);
			_tmp251_ = _tmp250_;
			_tmp252_ = sig;
			_tmp253_ = vala_signal_get_default_handler (_tmp252_);
			_tmp254_ = _tmp253_;
			_tmp255_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp254_);
			_tmp256_ = _tmp255_;
			_tmp257_ = vala_ccode_identifier_new (_tmp256_);
			_tmp258_ = _tmp257_;
			vala_ccode_function_add_assignment (_tmp243_, (ValaCCodeExpression*) _tmp251_, (ValaCCodeExpression*) _tmp258_);
			_vala_ccode_node_unref0 (_tmp258_);
			_g_free0 (_tmp256_);
			_vala_ccode_node_unref0 (_tmp251_);
			_g_free0 (_tmp249_);
			_vala_ccode_node_unref0 (ccast);
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaClass* _tmp259_;
		ValaList* _tmp260_;
		gint _prop_size = 0;
		ValaList* _tmp261_;
		gint _tmp262_;
		gint _tmp263_;
		gint _prop_index = 0;
		_tmp259_ = cl;
		_tmp260_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp259_);
		_prop_list = _tmp260_;
		_tmp261_ = _prop_list;
		_tmp262_ = vala_collection_get_size ((ValaCollection*) _tmp261_);
		_tmp263_ = _tmp262_;
		_prop_size = _tmp263_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp264_;
			gint _tmp265_;
			gint _tmp266_;
			ValaProperty* prop = NULL;
			ValaList* _tmp267_;
			gint _tmp268_;
			gpointer _tmp269_;
			ValaProperty* _tmp270_;
			ValaProperty* _tmp271_;
			ValaProperty* _tmp272_;
			ValaSymbol* base_type = NULL;
			ValaProperty* _tmp273_;
			ValaProperty* _tmp274_;
			ValaProperty* _tmp275_;
			ValaSymbol* _tmp276_;
			ValaSymbol* _tmp277_;
			ValaSymbol* _tmp278_;
			ValaCCodeFunctionCall* ccast = NULL;
			ValaSymbol* _tmp279_;
			gchar* _tmp280_;
			gchar* _tmp281_;
			gchar* _tmp282_;
			gchar* _tmp283_;
			ValaCCodeIdentifier* _tmp284_;
			ValaCCodeIdentifier* _tmp285_;
			ValaCCodeFunctionCall* _tmp286_;
			ValaCCodeFunctionCall* _tmp287_;
			ValaCCodeFunctionCall* _tmp288_;
			ValaCCodeIdentifier* _tmp289_;
			ValaCCodeIdentifier* _tmp290_;
			gboolean _tmp291_ = FALSE;
			ValaProperty* _tmp292_;
			ValaProperty* _tmp293_;
			ValaProperty* _tmp294_;
			gboolean _tmp295_;
			_tmp264_ = _prop_index;
			_prop_index = _tmp264_ + 1;
			_tmp265_ = _prop_index;
			_tmp266_ = _prop_size;
			if (!(_tmp265_ < _tmp266_)) {
				break;
			}
			_tmp267_ = _prop_list;
			_tmp268_ = _prop_index;
			_tmp269_ = vala_list_get (_tmp267_, _tmp268_);
			prop = (ValaProperty*) _tmp269_;
			_tmp270_ = prop;
			_tmp271_ = vala_property_get_base_property (_tmp270_);
			_tmp272_ = _tmp271_;
			if (_tmp272_ == NULL) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp273_ = prop;
			_tmp274_ = vala_property_get_base_property (_tmp273_);
			_tmp275_ = _tmp274_;
			_tmp276_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp275_);
			_tmp277_ = _tmp276_;
			_tmp278_ = _vala_code_node_ref0 (_tmp277_);
			base_type = _tmp278_;
			_tmp279_ = base_type;
			_tmp280_ = vala_get_ccode_upper_case_name (_tmp279_, NULL);
			_tmp281_ = _tmp280_;
			_tmp282_ = g_strdup_printf ("%s_CLASS", _tmp281_);
			_tmp283_ = _tmp282_;
			_tmp284_ = vala_ccode_identifier_new (_tmp283_);
			_tmp285_ = _tmp284_;
			_tmp286_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp285_);
			_tmp287_ = _tmp286_;
			_vala_ccode_node_unref0 (_tmp285_);
			_g_free0 (_tmp283_);
			_g_free0 (_tmp281_);
			ccast = _tmp287_;
			_tmp288_ = ccast;
			_tmp289_ = vala_ccode_identifier_new ("klass");
			_tmp290_ = _tmp289_;
			vala_ccode_function_call_add_argument (_tmp288_, (ValaCCodeExpression*) _tmp290_);
			_vala_ccode_node_unref0 (_tmp290_);
			_tmp292_ = prop;
			_tmp293_ = vala_property_get_base_property (_tmp292_);
			_tmp294_ = _tmp293_;
			_tmp295_ = vala_get_ccode_no_accessor_method (_tmp294_);
			if (!_tmp295_) {
				ValaProperty* _tmp296_;
				ValaProperty* _tmp297_;
				ValaProperty* _tmp298_;
				gboolean _tmp299_;
				_tmp296_ = prop;
				_tmp297_ = vala_property_get_base_property (_tmp296_);
				_tmp298_ = _tmp297_;
				_tmp299_ = vala_get_ccode_concrete_accessor (_tmp298_);
				_tmp291_ = !_tmp299_;
			} else {
				_tmp291_ = FALSE;
			}
			if (_tmp291_) {
				ValaProperty* _tmp300_;
				ValaPropertyAccessor* _tmp301_;
				ValaPropertyAccessor* _tmp302_;
				ValaProperty* _tmp320_;
				ValaPropertyAccessor* _tmp321_;
				ValaPropertyAccessor* _tmp322_;
				_tmp300_ = prop;
				_tmp301_ = vala_property_get_get_accessor (_tmp300_);
				_tmp302_ = _tmp301_;
				if (_tmp302_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp303_;
					ValaPropertyAccessor* _tmp304_;
					ValaPropertyAccessor* _tmp305_;
					gchar* _tmp306_;
					ValaCCodeFunction* _tmp307_;
					ValaCCodeFunction* _tmp308_;
					ValaCCodeFunctionCall* _tmp309_;
					ValaProperty* _tmp310_;
					const gchar* _tmp311_;
					const gchar* _tmp312_;
					gchar* _tmp313_;
					gchar* _tmp314_;
					ValaCCodeMemberAccess* _tmp315_;
					ValaCCodeMemberAccess* _tmp316_;
					const gchar* _tmp317_;
					ValaCCodeIdentifier* _tmp318_;
					ValaCCodeIdentifier* _tmp319_;
					_tmp303_ = prop;
					_tmp304_ = vala_property_get_get_accessor (_tmp303_);
					_tmp305_ = _tmp304_;
					_tmp306_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp305_);
					cname = _tmp306_;
					_tmp307_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp308_ = _tmp307_;
					_tmp309_ = ccast;
					_tmp310_ = prop;
					_tmp311_ = vala_symbol_get_name ((ValaSymbol*) _tmp310_);
					_tmp312_ = _tmp311_;
					_tmp313_ = g_strdup_printf ("get_%s", _tmp312_);
					_tmp314_ = _tmp313_;
					_tmp315_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp309_, _tmp314_);
					_tmp316_ = _tmp315_;
					_tmp317_ = cname;
					_tmp318_ = vala_ccode_identifier_new (_tmp317_);
					_tmp319_ = _tmp318_;
					vala_ccode_function_add_assignment (_tmp308_, (ValaCCodeExpression*) _tmp316_, (ValaCCodeExpression*) _tmp319_);
					_vala_ccode_node_unref0 (_tmp319_);
					_vala_ccode_node_unref0 (_tmp316_);
					_g_free0 (_tmp314_);
					_g_free0 (cname);
				}
				_tmp320_ = prop;
				_tmp321_ = vala_property_get_set_accessor (_tmp320_);
				_tmp322_ = _tmp321_;
				if (_tmp322_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp323_;
					ValaPropertyAccessor* _tmp324_;
					ValaPropertyAccessor* _tmp325_;
					gchar* _tmp326_;
					ValaCCodeFunction* _tmp327_;
					ValaCCodeFunction* _tmp328_;
					ValaCCodeFunctionCall* _tmp329_;
					ValaProperty* _tmp330_;
					const gchar* _tmp331_;
					const gchar* _tmp332_;
					gchar* _tmp333_;
					gchar* _tmp334_;
					ValaCCodeMemberAccess* _tmp335_;
					ValaCCodeMemberAccess* _tmp336_;
					const gchar* _tmp337_;
					ValaCCodeIdentifier* _tmp338_;
					ValaCCodeIdentifier* _tmp339_;
					_tmp323_ = prop;
					_tmp324_ = vala_property_get_set_accessor (_tmp323_);
					_tmp325_ = _tmp324_;
					_tmp326_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp325_);
					cname = _tmp326_;
					_tmp327_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp328_ = _tmp327_;
					_tmp329_ = ccast;
					_tmp330_ = prop;
					_tmp331_ = vala_symbol_get_name ((ValaSymbol*) _tmp330_);
					_tmp332_ = _tmp331_;
					_tmp333_ = g_strdup_printf ("set_%s", _tmp332_);
					_tmp334_ = _tmp333_;
					_tmp335_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp329_, _tmp334_);
					_tmp336_ = _tmp335_;
					_tmp337_ = cname;
					_tmp338_ = vala_ccode_identifier_new (_tmp337_);
					_tmp339_ = _tmp338_;
					vala_ccode_function_add_assignment (_tmp328_, (ValaCCodeExpression*) _tmp336_, (ValaCCodeExpression*) _tmp339_);
					_vala_ccode_node_unref0 (_tmp339_);
					_vala_ccode_node_unref0 (_tmp336_);
					_g_free0 (_tmp334_);
					_g_free0 (cname);
				}
			}
			_vala_ccode_node_unref0 (ccast);
			_vala_code_node_unref0 (base_type);
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp340_ = cl;
	vala_gtype_module_generate_class_init (self, _tmp340_);
	_tmp341_ = cl;
	_tmp342_ = vala_class_get_is_compact (_tmp341_);
	_tmp343_ = _tmp342_;
	if (!_tmp343_) {
		{
			ValaList* _sig_list = NULL;
			ValaClass* _tmp344_;
			ValaList* _tmp345_;
			gint _sig_size = 0;
			ValaList* _tmp346_;
			gint _tmp347_;
			gint _tmp348_;
			gint _sig_index = 0;
			_tmp344_ = cl;
			_tmp345_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp344_);
			_sig_list = _tmp345_;
			_tmp346_ = _sig_list;
			_tmp347_ = vala_collection_get_size ((ValaCollection*) _tmp346_);
			_tmp348_ = _tmp347_;
			_sig_size = _tmp348_;
			_sig_index = -1;
			while (TRUE) {
				gint _tmp349_;
				gint _tmp350_;
				gint _tmp351_;
				ValaSignal* sig = NULL;
				ValaList* _tmp352_;
				gint _tmp353_;
				gpointer _tmp354_;
				ValaSignal* _tmp355_;
				ValaComment* _tmp356_;
				ValaComment* _tmp357_;
				ValaCCodeFunction* _tmp367_;
				ValaCCodeFunction* _tmp368_;
				ValaSignal* _tmp369_;
				ValaClass* _tmp370_;
				ValaCCodeExpression* _tmp371_;
				ValaCCodeExpression* _tmp372_;
				_tmp349_ = _sig_index;
				_sig_index = _tmp349_ + 1;
				_tmp350_ = _sig_index;
				_tmp351_ = _sig_size;
				if (!(_tmp350_ < _tmp351_)) {
					break;
				}
				_tmp352_ = _sig_list;
				_tmp353_ = _sig_index;
				_tmp354_ = vala_list_get (_tmp352_, _tmp353_);
				sig = (ValaSignal*) _tmp354_;
				_tmp355_ = sig;
				_tmp356_ = vala_symbol_get_comment ((ValaSymbol*) _tmp355_);
				_tmp357_ = _tmp356_;
				if (_tmp357_ != NULL) {
					ValaCCodeFunction* _tmp358_;
					ValaCCodeFunction* _tmp359_;
					ValaSignal* _tmp360_;
					ValaComment* _tmp361_;
					ValaComment* _tmp362_;
					const gchar* _tmp363_;
					const gchar* _tmp364_;
					ValaCCodeComment* _tmp365_;
					ValaCCodeComment* _tmp366_;
					_tmp358_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp359_ = _tmp358_;
					_tmp360_ = sig;
					_tmp361_ = vala_symbol_get_comment ((ValaSymbol*) _tmp360_);
					_tmp362_ = _tmp361_;
					_tmp363_ = vala_comment_get_content (_tmp362_);
					_tmp364_ = _tmp363_;
					_tmp365_ = vala_ccode_comment_new (_tmp364_);
					_tmp366_ = _tmp365_;
					vala_ccode_function_add_statement (_tmp359_, (ValaCCodeNode*) _tmp366_);
					_vala_ccode_node_unref0 (_tmp366_);
				}
				_tmp367_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp368_ = _tmp367_;
				_tmp369_ = sig;
				_tmp370_ = cl;
				_tmp371_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp369_, (ValaTypeSymbol*) _tmp370_);
				_tmp372_ = _tmp371_;
				vala_ccode_function_add_expression (_tmp368_, _tmp372_);
				_vala_ccode_node_unref0 (_tmp372_);
				_vala_code_node_unref0 (sig);
			}
			_vala_iterable_unref0 (_sig_list);
		}
	}
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_vala_ccode_node_unref0 (parent_assignment);
	_vala_ccode_node_unref0 (parent_var_decl);
	_vala_ccode_node_unref0 (parent_decl);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (func);
}


static void vala_gtype_module_add_class_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFile* _tmp0_;
	ValaCCodeBaseModuleEmitContext* _tmp1_;
	ValaCCodeFunction* _tmp2_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp1_ = ((ValaCCodeBaseModule*) self)->class_init_context;
	_tmp2_ = _tmp1_->ccode;
	vala_ccode_file_add_function (_tmp0_, _tmp2_);
}


static void vala_gtype_module_add_generic_accessor_function (ValaGTypeModule* self, const gchar* base_name, const gchar* return_type, ValaCCodeExpression* expression, ValaTypeParameter* p, ValaClass* cl, ValaInterface* iface) {
	gchar* name = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValaInterface* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	const gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	ValaCCodeFunction* function = NULL;
	const gchar* _tmp9_;
	ValaCCodeFunction* _tmp10_;
	ValaDataType* this_type = NULL;
	ValaClass* _tmp11_;
	ValaDataType* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeFunction* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeExpression* _tmp19_;
	ValaCCodeFile* _tmp20_;
	ValaCCodeExpression* cfunc = NULL;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	ValaCCodeIdentifier* _tmp23_;
	gchar* cast = NULL;
	const gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* cast_args = NULL;
	ValaInterface* _tmp26_;
	gchar* _tmp27_;
	gchar* _tmp28_;
	gchar* _tmp29_;
	gchar* _tmp30_;
	const gchar* _tmp31_;
	gchar* _tmp32_;
	ValaCCodeExpression* _tmp33_;
	const gchar* _tmp34_;
	ValaCCodeCastExpression* _tmp35_;
	ValaCCodeIdentifier* ciface = NULL;
	ValaCCodeIdentifier* _tmp36_;
	ValaCCodeFunction* _tmp37_;
	ValaCCodeFunction* _tmp38_;
	const gchar* _tmp39_;
	ValaCCodeMemberAccess* _tmp40_;
	ValaCCodeMemberAccess* _tmp41_;
	ValaCCodeExpression* _tmp42_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (base_name != NULL);
	g_return_if_fail (return_type != NULL);
	g_return_if_fail (p != NULL);
	g_return_if_fail (cl != NULL);
	g_return_if_fail (iface != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, NULL);
	_tmp2_ = _tmp1_;
	_tmp3_ = iface;
	_tmp4_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = base_name;
	_tmp7_ = g_strdup_printf ("%s_%s_%s", _tmp2_, _tmp5_, _tmp6_);
	_tmp8_ = _tmp7_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp2_);
	name = _tmp8_;
	_tmp9_ = return_type;
	_tmp10_ = vala_ccode_function_new (name, _tmp9_);
	function = _tmp10_;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) function, VALA_CCODE_MODIFIERS_STATIC);
	_tmp11_ = cl;
	_tmp12_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp11_);
	this_type = _tmp12_;
	_tmp13_ = vala_get_ccode_name ((ValaCodeNode*) this_type);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_parameter_new ("self", _tmp14_);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_parameter (function, _tmp16_);
	_vala_ccode_node_unref0 (_tmp16_);
	_g_free0 (_tmp14_);
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, function);
	_tmp17_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp18_ = _tmp17_;
	_tmp19_ = expression;
	vala_ccode_function_add_return (_tmp18_, _tmp19_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp20_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_file_add_function (_tmp20_, function);
	_tmp21_ = vala_ccode_function_get_name (function);
	_tmp22_ = _tmp21_;
	_tmp23_ = vala_ccode_identifier_new (_tmp22_);
	cfunc = (ValaCCodeExpression*) _tmp23_;
	_tmp24_ = return_type;
	_tmp25_ = g_strdup_printf ("%s (*)", _tmp24_);
	cast = _tmp25_;
	_tmp26_ = iface;
	_tmp27_ = vala_get_ccode_name ((ValaCodeNode*) _tmp26_);
	_tmp28_ = _tmp27_;
	_tmp29_ = g_strdup_printf ("%s *", _tmp28_);
	_tmp30_ = _tmp29_;
	_g_free0 (_tmp28_);
	cast_args = _tmp30_;
	_tmp31_ = cast;
	_tmp32_ = g_strdup_printf ("%s (%s)", _tmp31_, cast_args);
	_g_free0 (cast);
	cast = _tmp32_;
	_tmp33_ = cfunc;
	_tmp34_ = cast;
	_tmp35_ = vala_ccode_cast_expression_new (_tmp33_, _tmp34_);
	_vala_ccode_node_unref0 (cfunc);
	cfunc = (ValaCCodeExpression*) _tmp35_;
	_tmp36_ = vala_ccode_identifier_new ("iface");
	ciface = _tmp36_;
	_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp38_ = _tmp37_;
	_tmp39_ = base_name;
	_tmp40_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) ciface, _tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = cfunc;
	vala_ccode_function_add_assignment (_tmp38_, (ValaCCodeExpression*) _tmp41_, _tmp42_);
	_vala_ccode_node_unref0 (_tmp41_);
	_vala_ccode_node_unref0 (ciface);
	_g_free0 (cast_args);
	_g_free0 (cast);
	_vala_ccode_node_unref0 (cfunc);
	_vala_code_node_unref0 (this_type);
	_vala_ccode_node_unref0 (function);
	_g_free0 (name);
}


static void vala_gtype_module_add_interface_init_function (ValaGTypeModule* self, ValaClass* cl, ValaInterface* iface) {
	ValaCCodeFunction* iface_init = NULL;
	ValaClass* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValaInterface* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeFunction* _tmp10_;
	ValaInterface* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeFunctionCall* ccall = NULL;
	gchar* parent_iface_var = NULL;
	ValaClass* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	ValaInterface* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	ValaCCodeDeclaration* parent_decl = NULL;
	ValaInterface* _tmp28_;
	gchar* _tmp29_;
	gchar* _tmp30_;
	gchar* _tmp31_;
	gchar* _tmp32_;
	ValaCCodeDeclaration* _tmp33_;
	ValaCCodeDeclaration* _tmp34_;
	ValaCCodeVariableDeclarator* parent_var_decl = NULL;
	const gchar* _tmp35_;
	ValaCCodeVariableDeclarator* _tmp36_;
	ValaCCodeVariableDeclarator* _tmp37_;
	ValaCCodeConstant* _tmp38_;
	ValaCCodeConstant* _tmp39_;
	ValaCCodeDeclaration* _tmp40_;
	ValaCCodeVariableDeclarator* _tmp41_;
	ValaCCodeDeclaration* _tmp42_;
	ValaCCodeFile* _tmp43_;
	ValaCCodeDeclaration* _tmp44_;
	ValaCCodeIdentifier* _tmp45_;
	ValaCCodeIdentifier* _tmp46_;
	ValaCCodeFunctionCall* _tmp47_;
	ValaCCodeFunctionCall* _tmp48_;
	ValaCCodeIdentifier* _tmp49_;
	ValaCCodeIdentifier* _tmp50_;
	ValaCCodeFunction* _tmp51_;
	ValaCCodeFunction* _tmp52_;
	const gchar* _tmp53_;
	ValaCCodeIdentifier* _tmp54_;
	ValaCCodeIdentifier* _tmp55_;
	ValaCCodeFunctionCall* _tmp56_;
	ValaInterface* _tmp151_;
	ValaAttribute* _tmp152_;
	ValaAttribute* _tmp153_;
	gboolean _tmp154_;
	ValaCCodeFile* _tmp530_;
	ValaCCodeFunction* _tmp531_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	g_return_if_fail (iface != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp0_, NULL);
	_tmp2_ = _tmp1_;
	_tmp3_ = iface;
	_tmp4_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strdup_printf ("%s_%s_interface_init", _tmp2_, _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = vala_ccode_function_new (_tmp7_, "void");
	_tmp9_ = _tmp8_;
	_g_free0 (_tmp7_);
	_g_free0 (_tmp5_);
	_g_free0 (_tmp2_);
	iface_init = _tmp9_;
	_tmp10_ = iface_init;
	_tmp11_ = iface;
	_tmp12_ = vala_get_ccode_type_name (_tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strdup_printf ("%s *", _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = vala_ccode_parameter_new ("iface", _tmp15_);
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_g_free0 (_tmp15_);
	_g_free0 (_tmp13_);
	_tmp18_ = iface_init;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp19_ = iface_init;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
	_tmp20_ = cl;
	_tmp21_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp20_, NULL);
	_tmp22_ = _tmp21_;
	_tmp23_ = iface;
	_tmp24_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp23_, NULL);
	_tmp25_ = _tmp24_;
	_tmp26_ = g_strdup_printf ("%s_%s_parent_iface", _tmp22_, _tmp25_);
	_tmp27_ = _tmp26_;
	_g_free0 (_tmp25_);
	_g_free0 (_tmp22_);
	parent_iface_var = _tmp27_;
	_tmp28_ = iface;
	_tmp29_ = vala_get_ccode_type_name (_tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = g_strdup_printf ("%s *", _tmp30_);
	_tmp32_ = _tmp31_;
	_tmp33_ = vala_ccode_declaration_new (_tmp32_);
	_tmp34_ = _tmp33_;
	_g_free0 (_tmp32_);
	_g_free0 (_tmp30_);
	parent_decl = _tmp34_;
	_tmp35_ = parent_iface_var;
	_tmp36_ = vala_ccode_variable_declarator_new (_tmp35_, NULL, NULL);
	parent_var_decl = _tmp36_;
	_tmp37_ = parent_var_decl;
	_tmp38_ = vala_ccode_constant_new ("NULL");
	_tmp39_ = _tmp38_;
	vala_ccode_variable_declarator_set_initializer (_tmp37_, (ValaCCodeExpression*) _tmp39_);
	_vala_ccode_node_unref0 (_tmp39_);
	_tmp40_ = parent_decl;
	_tmp41_ = parent_var_decl;
	vala_ccode_declaration_add_declarator (_tmp40_, (ValaCCodeDeclarator*) _tmp41_);
	_tmp42_ = parent_decl;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp42_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp43_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp44_ = parent_decl;
	vala_ccode_file_add_type_member_declaration (_tmp43_, (ValaCCodeNode*) _tmp44_);
	_tmp45_ = vala_ccode_identifier_new ("g_type_interface_peek_parent");
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp46_);
	_vala_ccode_node_unref0 (ccall);
	ccall = _tmp47_;
	_vala_ccode_node_unref0 (_tmp46_);
	_tmp48_ = ccall;
	_tmp49_ = vala_ccode_identifier_new ("iface");
	_tmp50_ = _tmp49_;
	vala_ccode_function_call_add_argument (_tmp48_, (ValaCCodeExpression*) _tmp50_);
	_vala_ccode_node_unref0 (_tmp50_);
	_tmp51_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp52_ = _tmp51_;
	_tmp53_ = parent_iface_var;
	_tmp54_ = vala_ccode_identifier_new (_tmp53_);
	_tmp55_ = _tmp54_;
	_tmp56_ = ccall;
	vala_ccode_function_add_assignment (_tmp52_, (ValaCCodeExpression*) _tmp55_, (ValaCCodeExpression*) _tmp56_);
	_vala_ccode_node_unref0 (_tmp55_);
	{
		ValaList* _m_list = NULL;
		ValaClass* _tmp57_;
		ValaList* _tmp58_;
		gint _m_size = 0;
		ValaList* _tmp59_;
		gint _tmp60_;
		gint _tmp61_;
		gint _m_index = 0;
		_tmp57_ = cl;
		_tmp58_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp57_);
		_m_list = _tmp58_;
		_tmp59_ = _m_list;
		_tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
		_tmp61_ = _tmp60_;
		_m_size = _tmp61_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp62_;
			gint _tmp63_;
			gint _tmp64_;
			ValaMethod* m = NULL;
			ValaList* _tmp65_;
			gint _tmp66_;
			gpointer _tmp67_;
			ValaMethod* _tmp68_;
			ValaMethod* _tmp69_;
			ValaMethod* _tmp70_;
			ValaSymbol* base_type = NULL;
			ValaMethod* _tmp71_;
			ValaMethod* _tmp72_;
			ValaMethod* _tmp73_;
			ValaSymbol* _tmp74_;
			ValaSymbol* _tmp75_;
			ValaSymbol* _tmp76_;
			ValaSymbol* _tmp77_;
			ValaInterface* _tmp78_;
			ValaCCodeIdentifier* ciface = NULL;
			ValaCCodeIdentifier* _tmp79_;
			ValaCCodeExpression* cfunc = NULL;
			gboolean _tmp80_ = FALSE;
			ValaMethod* _tmp81_;
			gboolean _tmp82_;
			gboolean _tmp83_;
			gint _tmp95_ = 0;
			ValaMethod* _tmp96_;
			gboolean _tmp97_;
			gboolean _tmp98_;
			ValaMethod* _tmp99_;
			ValaMethod* _tmp100_;
			ValaMethod* _tmp101_;
			ValaCCodeExpression* _tmp102_;
			ValaInterface* _tmp103_;
			ValaCCodeExpression* _tmp104_;
			ValaCCodeFunction* _tmp105_;
			ValaCCodeFunction* _tmp106_;
			ValaCCodeIdentifier* _tmp107_;
			ValaMethod* _tmp108_;
			ValaMethod* _tmp109_;
			ValaMethod* _tmp110_;
			gchar* _tmp111_;
			gchar* _tmp112_;
			ValaCCodeMemberAccess* _tmp113_;
			ValaCCodeMemberAccess* _tmp114_;
			ValaCCodeExpression* _tmp115_;
			ValaMethod* _tmp116_;
			gboolean _tmp117_;
			gboolean _tmp118_;
			_tmp62_ = _m_index;
			_m_index = _tmp62_ + 1;
			_tmp63_ = _m_index;
			_tmp64_ = _m_size;
			if (!(_tmp63_ < _tmp64_)) {
				break;
			}
			_tmp65_ = _m_list;
			_tmp66_ = _m_index;
			_tmp67_ = vala_list_get (_tmp65_, _tmp66_);
			m = (ValaMethod*) _tmp67_;
			_tmp68_ = m;
			_tmp69_ = vala_method_get_base_interface_method (_tmp68_);
			_tmp70_ = _tmp69_;
			if (_tmp70_ == NULL) {
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp71_ = m;
			_tmp72_ = vala_method_get_base_interface_method (_tmp71_);
			_tmp73_ = _tmp72_;
			_tmp74_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp73_);
			_tmp75_ = _tmp74_;
			_tmp76_ = _vala_code_node_ref0 (_tmp75_);
			base_type = _tmp76_;
			_tmp77_ = base_type;
			_tmp78_ = iface;
			if (_tmp77_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp78_, VALA_TYPE_SYMBOL, ValaSymbol)) {
				_vala_code_node_unref0 (base_type);
				_vala_code_node_unref0 (m);
				continue;
			}
			_tmp79_ = vala_ccode_identifier_new ("iface");
			ciface = _tmp79_;
			_tmp81_ = m;
			_tmp82_ = vala_method_get_is_abstract (_tmp81_);
			_tmp83_ = _tmp82_;
			if (_tmp83_) {
				_tmp80_ = TRUE;
			} else {
				ValaMethod* _tmp84_;
				gboolean _tmp85_;
				gboolean _tmp86_;
				_tmp84_ = m;
				_tmp85_ = vala_method_get_is_virtual (_tmp84_);
				_tmp86_ = _tmp85_;
				_tmp80_ = _tmp86_;
			}
			if (_tmp80_) {
				ValaMethod* _tmp87_;
				gchar* _tmp88_;
				gchar* _tmp89_;
				ValaCCodeIdentifier* _tmp90_;
				_tmp87_ = m;
				_tmp88_ = vala_get_ccode_name ((ValaCodeNode*) _tmp87_);
				_tmp89_ = _tmp88_;
				_tmp90_ = vala_ccode_identifier_new (_tmp89_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp90_;
				_g_free0 (_tmp89_);
			} else {
				ValaMethod* _tmp91_;
				gchar* _tmp92_;
				gchar* _tmp93_;
				ValaCCodeIdentifier* _tmp94_;
				_tmp91_ = m;
				_tmp92_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp91_);
				_tmp93_ = _tmp92_;
				_tmp94_ = vala_ccode_identifier_new (_tmp93_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp94_;
				_g_free0 (_tmp93_);
			}
			_tmp96_ = m;
			_tmp97_ = vala_method_get_coroutine (_tmp96_);
			_tmp98_ = _tmp97_;
			if (_tmp98_) {
				_tmp95_ = 1;
			} else {
				_tmp95_ = 3;
			}
			_tmp99_ = m;
			_tmp100_ = vala_method_get_base_interface_method (_tmp99_);
			_tmp101_ = _tmp100_;
			_tmp102_ = cfunc;
			_tmp103_ = iface;
			_tmp104_ = vala_gtype_module_cast_method_pointer (self, _tmp101_, _tmp102_, (ValaObjectTypeSymbol*) _tmp103_, _tmp95_);
			_vala_ccode_node_unref0 (cfunc);
			cfunc = _tmp104_;
			_tmp105_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp106_ = _tmp105_;
			_tmp107_ = ciface;
			_tmp108_ = m;
			_tmp109_ = vala_method_get_base_interface_method (_tmp108_);
			_tmp110_ = _tmp109_;
			_tmp111_ = vala_get_ccode_vfunc_name (_tmp110_);
			_tmp112_ = _tmp111_;
			_tmp113_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp107_, _tmp112_);
			_tmp114_ = _tmp113_;
			_tmp115_ = cfunc;
			vala_ccode_function_add_assignment (_tmp106_, (ValaCCodeExpression*) _tmp114_, _tmp115_);
			_vala_ccode_node_unref0 (_tmp114_);
			_g_free0 (_tmp112_);
			_tmp116_ = m;
			_tmp117_ = vala_method_get_coroutine (_tmp116_);
			_tmp118_ = _tmp117_;
			if (_tmp118_) {
				gboolean _tmp119_ = FALSE;
				ValaMethod* _tmp120_;
				gboolean _tmp121_;
				gboolean _tmp122_;
				ValaMethod* _tmp134_;
				ValaMethod* _tmp135_;
				ValaMethod* _tmp136_;
				ValaCCodeExpression* _tmp137_;
				ValaInterface* _tmp138_;
				ValaCCodeExpression* _tmp139_;
				ValaCCodeFunction* _tmp140_;
				ValaCCodeFunction* _tmp141_;
				ValaCCodeIdentifier* _tmp142_;
				ValaMethod* _tmp143_;
				ValaMethod* _tmp144_;
				ValaMethod* _tmp145_;
				gchar* _tmp146_;
				gchar* _tmp147_;
				ValaCCodeMemberAccess* _tmp148_;
				ValaCCodeMemberAccess* _tmp149_;
				ValaCCodeExpression* _tmp150_;
				_tmp120_ = m;
				_tmp121_ = vala_method_get_is_abstract (_tmp120_);
				_tmp122_ = _tmp121_;
				if (_tmp122_) {
					_tmp119_ = TRUE;
				} else {
					ValaMethod* _tmp123_;
					gboolean _tmp124_;
					gboolean _tmp125_;
					_tmp123_ = m;
					_tmp124_ = vala_method_get_is_virtual (_tmp123_);
					_tmp125_ = _tmp124_;
					_tmp119_ = _tmp125_;
				}
				if (_tmp119_) {
					ValaMethod* _tmp126_;
					gchar* _tmp127_;
					gchar* _tmp128_;
					ValaCCodeIdentifier* _tmp129_;
					_tmp126_ = m;
					_tmp127_ = vala_get_ccode_finish_name (_tmp126_);
					_tmp128_ = _tmp127_;
					_tmp129_ = vala_ccode_identifier_new (_tmp128_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = (ValaCCodeExpression*) _tmp129_;
					_g_free0 (_tmp128_);
				} else {
					ValaMethod* _tmp130_;
					gchar* _tmp131_;
					gchar* _tmp132_;
					ValaCCodeIdentifier* _tmp133_;
					_tmp130_ = m;
					_tmp131_ = vala_get_ccode_finish_real_name (_tmp130_);
					_tmp132_ = _tmp131_;
					_tmp133_ = vala_ccode_identifier_new (_tmp132_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = (ValaCCodeExpression*) _tmp133_;
					_g_free0 (_tmp132_);
				}
				_tmp134_ = m;
				_tmp135_ = vala_method_get_base_interface_method (_tmp134_);
				_tmp136_ = _tmp135_;
				_tmp137_ = cfunc;
				_tmp138_ = iface;
				_tmp139_ = vala_gtype_module_cast_method_pointer (self, _tmp136_, _tmp137_, (ValaObjectTypeSymbol*) _tmp138_, 2);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = _tmp139_;
				_tmp140_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp141_ = _tmp140_;
				_tmp142_ = ciface;
				_tmp143_ = m;
				_tmp144_ = vala_method_get_base_interface_method (_tmp143_);
				_tmp145_ = _tmp144_;
				_tmp146_ = vala_get_ccode_finish_vfunc_name (_tmp145_);
				_tmp147_ = _tmp146_;
				_tmp148_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp142_, _tmp147_);
				_tmp149_ = _tmp148_;
				_tmp150_ = cfunc;
				vala_ccode_function_add_assignment (_tmp141_, (ValaCCodeExpression*) _tmp149_, _tmp150_);
				_vala_ccode_node_unref0 (_tmp149_);
				_g_free0 (_tmp147_);
			}
			_vala_ccode_node_unref0 (cfunc);
			_vala_ccode_node_unref0 (ciface);
			_vala_code_node_unref0 (base_type);
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	_tmp151_ = iface;
	_tmp152_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp151_, "GenericAccessors");
	_tmp153_ = _tmp152_;
	_tmp154_ = _tmp153_ != NULL;
	_vala_code_node_unref0 (_tmp153_);
	if (_tmp154_) {
		{
			ValaList* _p_list = NULL;
			ValaInterface* _tmp155_;
			ValaList* _tmp156_;
			gint _p_size = 0;
			ValaList* _tmp157_;
			gint _tmp158_;
			gint _tmp159_;
			gint _p_index = 0;
			_tmp155_ = iface;
			_tmp156_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp155_);
			_p_list = _tmp156_;
			_tmp157_ = _p_list;
			_tmp158_ = vala_collection_get_size ((ValaCollection*) _tmp157_);
			_tmp159_ = _tmp158_;
			_p_size = _tmp159_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp160_;
				gint _tmp161_;
				gint _tmp162_;
				ValaTypeParameter* p = NULL;
				ValaList* _tmp163_;
				gint _tmp164_;
				gpointer _tmp165_;
				ValaGenericType* p_type = NULL;
				ValaTypeParameter* _tmp166_;
				ValaGenericType* _tmp167_;
				ValaDataType* p_data_type = NULL;
				ValaGenericType* _tmp168_;
				ValaClass* _tmp169_;
				ValaDataType* _tmp170_;
				ValaDataType* _tmp171_;
				ValaClass* _tmp172_;
				ValaDataType* _tmp173_;
				ValaDataType* _tmp174_;
				ValaTypeParameter* _tmp175_;
				const gchar* _tmp176_;
				const gchar* _tmp177_;
				gchar* _tmp178_;
				gchar* _tmp179_;
				gchar* _tmp180_;
				gchar* _tmp181_;
				ValaDataType* _tmp182_;
				ValaCCodeExpression* _tmp183_;
				ValaCCodeExpression* _tmp184_;
				ValaTypeParameter* _tmp185_;
				ValaClass* _tmp186_;
				ValaInterface* _tmp187_;
				ValaTypeParameter* _tmp188_;
				const gchar* _tmp189_;
				const gchar* _tmp190_;
				gchar* _tmp191_;
				gchar* _tmp192_;
				gchar* _tmp193_;
				gchar* _tmp194_;
				ValaDataType* _tmp195_;
				ValaCCodeExpression* _tmp196_;
				ValaCCodeExpression* _tmp197_;
				ValaTypeParameter* _tmp198_;
				ValaClass* _tmp199_;
				ValaInterface* _tmp200_;
				ValaTypeParameter* _tmp201_;
				const gchar* _tmp202_;
				const gchar* _tmp203_;
				gchar* _tmp204_;
				gchar* _tmp205_;
				gchar* _tmp206_;
				gchar* _tmp207_;
				ValaDataType* _tmp208_;
				ValaCCodeExpression* _tmp209_;
				ValaCCodeExpression* _tmp210_;
				ValaTypeParameter* _tmp211_;
				ValaClass* _tmp212_;
				ValaInterface* _tmp213_;
				_tmp160_ = _p_index;
				_p_index = _tmp160_ + 1;
				_tmp161_ = _p_index;
				_tmp162_ = _p_size;
				if (!(_tmp161_ < _tmp162_)) {
					break;
				}
				_tmp163_ = _p_list;
				_tmp164_ = _p_index;
				_tmp165_ = vala_list_get (_tmp163_, _tmp164_);
				p = (ValaTypeParameter*) _tmp165_;
				_tmp166_ = p;
				_tmp167_ = vala_generic_type_new (_tmp166_);
				p_type = _tmp167_;
				_tmp168_ = p_type;
				_tmp169_ = cl;
				_tmp170_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp169_);
				_tmp171_ = _tmp170_;
				_tmp172_ = cl;
				_tmp173_ = vala_data_type_get_actual_type ((ValaDataType*) _tmp168_, _tmp171_, NULL, (ValaCodeNode*) _tmp172_);
				_tmp174_ = _tmp173_;
				_vala_code_node_unref0 (_tmp171_);
				p_data_type = _tmp174_;
				_tmp175_ = p;
				_tmp176_ = vala_symbol_get_name ((ValaSymbol*) _tmp175_);
				_tmp177_ = _tmp176_;
				_tmp178_ = g_utf8_strdown (_tmp177_, (gssize) -1);
				_tmp179_ = _tmp178_;
				_tmp180_ = g_strdup_printf ("get_%s_type", _tmp179_);
				_tmp181_ = _tmp180_;
				_tmp182_ = p_data_type;
				_tmp183_ = vala_ccode_base_module_get_type_id_expression ((ValaCCodeBaseModule*) self, _tmp182_, FALSE);
				_tmp184_ = _tmp183_;
				_tmp185_ = p;
				_tmp186_ = cl;
				_tmp187_ = iface;
				vala_gtype_module_add_generic_accessor_function (self, _tmp181_, "GType", _tmp184_, _tmp185_, _tmp186_, _tmp187_);
				_vala_ccode_node_unref0 (_tmp184_);
				_g_free0 (_tmp181_);
				_g_free0 (_tmp179_);
				_tmp188_ = p;
				_tmp189_ = vala_symbol_get_name ((ValaSymbol*) _tmp188_);
				_tmp190_ = _tmp189_;
				_tmp191_ = g_utf8_strdown (_tmp190_, (gssize) -1);
				_tmp192_ = _tmp191_;
				_tmp193_ = g_strdup_printf ("get_%s_dup_func", _tmp192_);
				_tmp194_ = _tmp193_;
				_tmp195_ = p_data_type;
				_tmp196_ = vala_ccode_base_module_get_dup_func_expression ((ValaCCodeBaseModule*) self, _tmp195_, NULL, FALSE);
				_tmp197_ = _tmp196_;
				_tmp198_ = p;
				_tmp199_ = cl;
				_tmp200_ = iface;
				vala_gtype_module_add_generic_accessor_function (self, _tmp194_, "GBoxedCopyFunc", _tmp197_, _tmp198_, _tmp199_, _tmp200_);
				_vala_ccode_node_unref0 (_tmp197_);
				_g_free0 (_tmp194_);
				_g_free0 (_tmp192_);
				_tmp201_ = p;
				_tmp202_ = vala_symbol_get_name ((ValaSymbol*) _tmp201_);
				_tmp203_ = _tmp202_;
				_tmp204_ = g_utf8_strdown (_tmp203_, (gssize) -1);
				_tmp205_ = _tmp204_;
				_tmp206_ = g_strdup_printf ("get_%s_destroy_func", _tmp205_);
				_tmp207_ = _tmp206_;
				_tmp208_ = p_data_type;
				_tmp209_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp208_, FALSE);
				_tmp210_ = _tmp209_;
				_tmp211_ = p;
				_tmp212_ = cl;
				_tmp213_ = iface;
				vala_gtype_module_add_generic_accessor_function (self, _tmp207_, "GDestroyNotify", _tmp210_, _tmp211_, _tmp212_, _tmp213_);
				_vala_ccode_node_unref0 (_tmp210_);
				_g_free0 (_tmp207_);
				_g_free0 (_tmp205_);
				_vala_code_node_unref0 (p_data_type);
				_vala_code_node_unref0 (p_type);
				_vala_code_node_unref0 (p);
			}
			_vala_iterable_unref0 (_p_list);
		}
	}
	{
		ValaList* _m_list = NULL;
		ValaInterface* _tmp214_;
		ValaList* _tmp215_;
		gint _m_size = 0;
		ValaList* _tmp216_;
		gint _tmp217_;
		gint _tmp218_;
		gint _m_index = 0;
		_tmp214_ = iface;
		_tmp215_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp214_);
		_m_list = _tmp215_;
		_tmp216_ = _m_list;
		_tmp217_ = vala_collection_get_size ((ValaCollection*) _tmp216_);
		_tmp218_ = _tmp217_;
		_m_size = _tmp218_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp219_;
			gint _tmp220_;
			gint _tmp221_;
			ValaMethod* m = NULL;
			ValaList* _tmp222_;
			gint _tmp223_;
			gpointer _tmp224_;
			ValaMethod* _tmp225_;
			gboolean _tmp226_;
			gboolean _tmp227_;
			_tmp219_ = _m_index;
			_m_index = _tmp219_ + 1;
			_tmp220_ = _m_index;
			_tmp221_ = _m_size;
			if (!(_tmp220_ < _tmp221_)) {
				break;
			}
			_tmp222_ = _m_list;
			_tmp223_ = _m_index;
			_tmp224_ = vala_list_get (_tmp222_, _tmp223_);
			m = (ValaMethod*) _tmp224_;
			_tmp225_ = m;
			_tmp226_ = vala_method_get_is_abstract (_tmp225_);
			_tmp227_ = _tmp226_;
			if (_tmp227_) {
				ValaMethod* cl_method = NULL;
				ValaClass* base_class = NULL;
				ValaClass* _tmp228_;
				ValaClass* _tmp229_;
				gboolean _tmp245_ = FALSE;
				ValaClass* _tmp246_;
				cl_method = NULL;
				_tmp228_ = cl;
				_tmp229_ = _vala_code_node_ref0 (_tmp228_);
				base_class = _tmp229_;
				while (TRUE) {
					gboolean _tmp230_ = FALSE;
					ValaClass* _tmp231_;
					ValaClass* _tmp233_;
					ValaScope* _tmp234_;
					ValaScope* _tmp235_;
					ValaMethod* _tmp236_;
					const gchar* _tmp237_;
					const gchar* _tmp238_;
					ValaSymbol* _tmp239_;
					ValaMethod* _tmp240_;
					ValaClass* _tmp241_;
					ValaClass* _tmp242_;
					ValaClass* _tmp243_;
					ValaClass* _tmp244_;
					_tmp231_ = base_class;
					if (_tmp231_ != NULL) {
						ValaMethod* _tmp232_;
						_tmp232_ = cl_method;
						_tmp230_ = _tmp232_ == NULL;
					} else {
						_tmp230_ = FALSE;
					}
					if (!_tmp230_) {
						break;
					}
					_tmp233_ = base_class;
					_tmp234_ = vala_symbol_get_scope ((ValaSymbol*) _tmp233_);
					_tmp235_ = _tmp234_;
					_tmp236_ = m;
					_tmp237_ = vala_symbol_get_name ((ValaSymbol*) _tmp236_);
					_tmp238_ = _tmp237_;
					_tmp239_ = vala_scope_lookup (_tmp235_, _tmp238_);
					_tmp240_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp239_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp239_) : NULL;
					if (_tmp240_ == NULL) {
						_vala_code_node_unref0 (_tmp239_);
					}
					_vala_code_node_unref0 (cl_method);
					cl_method = _tmp240_;
					_tmp241_ = base_class;
					_tmp242_ = vala_class_get_base_class (_tmp241_);
					_tmp243_ = _tmp242_;
					_tmp244_ = _vala_code_node_ref0 (_tmp243_);
					_vala_code_node_unref0 (base_class);
					base_class = _tmp244_;
				}
				_tmp246_ = base_class;
				if (_tmp246_ != NULL) {
					ValaMethod* _tmp247_;
					ValaSymbol* _tmp248_;
					ValaSymbol* _tmp249_;
					ValaClass* _tmp250_;
					_tmp247_ = cl_method;
					_tmp248_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp247_);
					_tmp249_ = _tmp248_;
					_tmp250_ = cl;
					_tmp245_ = _tmp249_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp250_, VALA_TYPE_SYMBOL, ValaSymbol);
				} else {
					_tmp245_ = FALSE;
				}
				if (_tmp245_) {
					ValaMethod* base_method = NULL;
					ValaMethod* _tmp251_;
					ValaMethod* _tmp252_;
					ValaMethod* _tmp253_;
					ValaMethod* _tmp254_;
					ValaMethod* _tmp255_;
					ValaMethod* _tmp267_;
					ValaCCodeFile* _tmp268_;
					ValaCCodeExpression* cfunc = NULL;
					ValaMethod* _tmp269_;
					gchar* _tmp270_;
					gchar* _tmp271_;
					ValaCCodeIdentifier* _tmp272_;
					ValaCCodeExpression* _tmp273_;
					ValaMethod* _tmp274_;
					ValaCCodeExpression* _tmp275_;
					ValaInterface* _tmp276_;
					ValaCCodeExpression* _tmp277_;
					ValaCCodeIdentifier* ciface = NULL;
					ValaCCodeIdentifier* _tmp278_;
					ValaCCodeFunction* _tmp279_;
					ValaCCodeFunction* _tmp280_;
					ValaCCodeIdentifier* _tmp281_;
					ValaMethod* _tmp282_;
					gchar* _tmp283_;
					gchar* _tmp284_;
					ValaCCodeMemberAccess* _tmp285_;
					ValaCCodeMemberAccess* _tmp286_;
					ValaCCodeExpression* _tmp287_;
					_tmp251_ = cl_method;
					_tmp252_ = _vala_code_node_ref0 (_tmp251_);
					base_method = _tmp252_;
					_tmp253_ = cl_method;
					_tmp254_ = vala_method_get_base_method (_tmp253_);
					_tmp255_ = _tmp254_;
					if (_tmp255_ != NULL) {
						ValaMethod* _tmp256_;
						ValaMethod* _tmp257_;
						ValaMethod* _tmp258_;
						ValaMethod* _tmp259_;
						_tmp256_ = cl_method;
						_tmp257_ = vala_method_get_base_method (_tmp256_);
						_tmp258_ = _tmp257_;
						_tmp259_ = _vala_code_node_ref0 (_tmp258_);
						_vala_code_node_unref0 (base_method);
						base_method = _tmp259_;
					} else {
						ValaMethod* _tmp260_;
						ValaMethod* _tmp261_;
						ValaMethod* _tmp262_;
						_tmp260_ = cl_method;
						_tmp261_ = vala_method_get_base_interface_method (_tmp260_);
						_tmp262_ = _tmp261_;
						if (_tmp262_ != NULL) {
							ValaMethod* _tmp263_;
							ValaMethod* _tmp264_;
							ValaMethod* _tmp265_;
							ValaMethod* _tmp266_;
							_tmp263_ = cl_method;
							_tmp264_ = vala_method_get_base_interface_method (_tmp263_);
							_tmp265_ = _tmp264_;
							_tmp266_ = _vala_code_node_ref0 (_tmp265_);
							_vala_code_node_unref0 (base_method);
							base_method = _tmp266_;
						}
					}
					_tmp267_ = base_method;
					_tmp268_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp267_, _tmp268_);
					_tmp269_ = base_method;
					_tmp270_ = vala_get_ccode_name ((ValaCodeNode*) _tmp269_);
					_tmp271_ = _tmp270_;
					_tmp272_ = vala_ccode_identifier_new (_tmp271_);
					_tmp273_ = (ValaCCodeExpression*) _tmp272_;
					_g_free0 (_tmp271_);
					cfunc = _tmp273_;
					_tmp274_ = base_method;
					_tmp275_ = cfunc;
					_tmp276_ = iface;
					_tmp277_ = vala_gtype_module_cast_method_pointer (self, _tmp274_, _tmp275_, (ValaObjectTypeSymbol*) _tmp276_, 3);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = _tmp277_;
					_tmp278_ = vala_ccode_identifier_new ("iface");
					ciface = _tmp278_;
					_tmp279_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp280_ = _tmp279_;
					_tmp281_ = ciface;
					_tmp282_ = m;
					_tmp283_ = vala_get_ccode_vfunc_name (_tmp282_);
					_tmp284_ = _tmp283_;
					_tmp285_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp281_, _tmp284_);
					_tmp286_ = _tmp285_;
					_tmp287_ = cfunc;
					vala_ccode_function_add_assignment (_tmp280_, (ValaCCodeExpression*) _tmp286_, _tmp287_);
					_vala_ccode_node_unref0 (_tmp286_);
					_g_free0 (_tmp284_);
					_vala_ccode_node_unref0 (ciface);
					_vala_ccode_node_unref0 (cfunc);
					_vala_code_node_unref0 (base_method);
				}
				_vala_code_node_unref0 (base_class);
				_vala_code_node_unref0 (cl_method);
			}
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaClass* _tmp288_;
		ValaList* _tmp289_;
		gint _prop_size = 0;
		ValaList* _tmp290_;
		gint _tmp291_;
		gint _tmp292_;
		gint _prop_index = 0;
		_tmp288_ = cl;
		_tmp289_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp288_);
		_prop_list = _tmp289_;
		_tmp290_ = _prop_list;
		_tmp291_ = vala_collection_get_size ((ValaCollection*) _tmp290_);
		_tmp292_ = _tmp291_;
		_prop_size = _tmp292_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp293_;
			gint _tmp294_;
			gint _tmp295_;
			ValaProperty* prop = NULL;
			ValaList* _tmp296_;
			gint _tmp297_;
			gpointer _tmp298_;
			ValaProperty* _tmp299_;
			ValaProperty* _tmp300_;
			ValaProperty* _tmp301_;
			ValaObjectTypeSymbol* base_type = NULL;
			ValaProperty* _tmp302_;
			ValaProperty* _tmp303_;
			ValaProperty* _tmp304_;
			ValaSymbol* _tmp305_;
			ValaSymbol* _tmp306_;
			ValaObjectTypeSymbol* _tmp307_;
			ValaObjectTypeSymbol* _tmp308_;
			ValaInterface* _tmp309_;
			ValaCCodeIdentifier* ciface = NULL;
			ValaCCodeIdentifier* _tmp310_;
			gboolean _tmp311_ = FALSE;
			ValaProperty* _tmp312_;
			ValaProperty* _tmp313_;
			ValaProperty* _tmp314_;
			gboolean _tmp315_;
			_tmp293_ = _prop_index;
			_prop_index = _tmp293_ + 1;
			_tmp294_ = _prop_index;
			_tmp295_ = _prop_size;
			if (!(_tmp294_ < _tmp295_)) {
				break;
			}
			_tmp296_ = _prop_list;
			_tmp297_ = _prop_index;
			_tmp298_ = vala_list_get (_tmp296_, _tmp297_);
			prop = (ValaProperty*) _tmp298_;
			_tmp299_ = prop;
			_tmp300_ = vala_property_get_base_interface_property (_tmp299_);
			_tmp301_ = _tmp300_;
			if (_tmp301_ == NULL) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp302_ = prop;
			_tmp303_ = vala_property_get_base_interface_property (_tmp302_);
			_tmp304_ = _tmp303_;
			_tmp305_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp304_);
			_tmp306_ = _tmp305_;
			_tmp307_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp306_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
			base_type = _tmp307_;
			_tmp308_ = base_type;
			_tmp309_ = iface;
			if (_tmp308_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp309_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol)) {
				_vala_code_node_unref0 (base_type);
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp310_ = vala_ccode_identifier_new ("iface");
			ciface = _tmp310_;
			_tmp312_ = prop;
			_tmp313_ = vala_property_get_base_interface_property (_tmp312_);
			_tmp314_ = _tmp313_;
			_tmp315_ = vala_get_ccode_no_accessor_method (_tmp314_);
			if (!_tmp315_) {
				ValaProperty* _tmp316_;
				ValaProperty* _tmp317_;
				ValaProperty* _tmp318_;
				gboolean _tmp319_;
				_tmp316_ = prop;
				_tmp317_ = vala_property_get_base_interface_property (_tmp316_);
				_tmp318_ = _tmp317_;
				_tmp319_ = vala_get_ccode_concrete_accessor (_tmp318_);
				_tmp311_ = !_tmp319_;
			} else {
				_tmp311_ = FALSE;
			}
			if (_tmp311_) {
				ValaProperty* _tmp320_;
				ValaPropertyAccessor* _tmp321_;
				ValaPropertyAccessor* _tmp322_;
				ValaProperty* _tmp364_;
				ValaPropertyAccessor* _tmp365_;
				ValaPropertyAccessor* _tmp366_;
				_tmp320_ = prop;
				_tmp321_ = vala_property_get_get_accessor (_tmp320_);
				_tmp322_ = _tmp321_;
				if (_tmp322_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp323_;
					ValaPropertyAccessor* _tmp324_;
					ValaPropertyAccessor* _tmp325_;
					gchar* _tmp326_;
					gboolean _tmp327_ = FALSE;
					ValaProperty* _tmp328_;
					gboolean _tmp329_;
					gboolean _tmp330_;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp338_;
					ValaCCodeIdentifier* _tmp339_;
					gboolean _tmp340_ = FALSE;
					ValaProperty* _tmp341_;
					gboolean _tmp342_;
					gboolean _tmp343_;
					ValaCCodeFunction* _tmp353_;
					ValaCCodeFunction* _tmp354_;
					ValaCCodeIdentifier* _tmp355_;
					ValaProperty* _tmp356_;
					const gchar* _tmp357_;
					const gchar* _tmp358_;
					gchar* _tmp359_;
					gchar* _tmp360_;
					ValaCCodeMemberAccess* _tmp361_;
					ValaCCodeMemberAccess* _tmp362_;
					ValaCCodeExpression* _tmp363_;
					_tmp323_ = prop;
					_tmp324_ = vala_property_get_get_accessor (_tmp323_);
					_tmp325_ = _tmp324_;
					_tmp326_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp325_);
					cname = _tmp326_;
					_tmp328_ = prop;
					_tmp329_ = vala_property_get_is_abstract (_tmp328_);
					_tmp330_ = _tmp329_;
					if (_tmp330_) {
						_tmp327_ = TRUE;
					} else {
						ValaProperty* _tmp331_;
						gboolean _tmp332_;
						gboolean _tmp333_;
						_tmp331_ = prop;
						_tmp332_ = vala_property_get_is_virtual (_tmp331_);
						_tmp333_ = _tmp332_;
						_tmp327_ = _tmp333_;
					}
					if (_tmp327_) {
						ValaProperty* _tmp334_;
						ValaPropertyAccessor* _tmp335_;
						ValaPropertyAccessor* _tmp336_;
						gchar* _tmp337_;
						_tmp334_ = prop;
						_tmp335_ = vala_property_get_get_accessor (_tmp334_);
						_tmp336_ = _tmp335_;
						_tmp337_ = vala_get_ccode_name ((ValaCodeNode*) _tmp336_);
						_g_free0 (cname);
						cname = _tmp337_;
					}
					_tmp338_ = cname;
					_tmp339_ = vala_ccode_identifier_new (_tmp338_);
					cfunc = (ValaCCodeExpression*) _tmp339_;
					_tmp341_ = prop;
					_tmp342_ = vala_property_get_is_abstract (_tmp341_);
					_tmp343_ = _tmp342_;
					if (_tmp343_) {
						_tmp340_ = TRUE;
					} else {
						ValaProperty* _tmp344_;
						gboolean _tmp345_;
						gboolean _tmp346_;
						_tmp344_ = prop;
						_tmp345_ = vala_property_get_is_virtual (_tmp344_);
						_tmp346_ = _tmp345_;
						_tmp340_ = _tmp346_;
					}
					if (_tmp340_) {
						ValaProperty* _tmp347_;
						ValaPropertyAccessor* _tmp348_;
						ValaPropertyAccessor* _tmp349_;
						ValaCCodeExpression* _tmp350_;
						ValaObjectTypeSymbol* _tmp351_;
						ValaCCodeExpression* _tmp352_;
						_tmp347_ = prop;
						_tmp348_ = vala_property_get_get_accessor (_tmp347_);
						_tmp349_ = _tmp348_;
						_tmp350_ = cfunc;
						_tmp351_ = base_type;
						_tmp352_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp349_, _tmp350_, _tmp351_);
						_vala_ccode_node_unref0 (cfunc);
						cfunc = _tmp352_;
					}
					_tmp353_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp354_ = _tmp353_;
					_tmp355_ = ciface;
					_tmp356_ = prop;
					_tmp357_ = vala_symbol_get_name ((ValaSymbol*) _tmp356_);
					_tmp358_ = _tmp357_;
					_tmp359_ = g_strdup_printf ("get_%s", _tmp358_);
					_tmp360_ = _tmp359_;
					_tmp361_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp355_, _tmp360_);
					_tmp362_ = _tmp361_;
					_tmp363_ = cfunc;
					vala_ccode_function_add_assignment (_tmp354_, (ValaCCodeExpression*) _tmp362_, _tmp363_);
					_vala_ccode_node_unref0 (_tmp362_);
					_g_free0 (_tmp360_);
					_vala_ccode_node_unref0 (cfunc);
					_g_free0 (cname);
				}
				_tmp364_ = prop;
				_tmp365_ = vala_property_get_set_accessor (_tmp364_);
				_tmp366_ = _tmp365_;
				if (_tmp366_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp367_;
					ValaPropertyAccessor* _tmp368_;
					ValaPropertyAccessor* _tmp369_;
					gchar* _tmp370_;
					gboolean _tmp371_ = FALSE;
					ValaProperty* _tmp372_;
					gboolean _tmp373_;
					gboolean _tmp374_;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp382_;
					ValaCCodeIdentifier* _tmp383_;
					gboolean _tmp384_ = FALSE;
					ValaProperty* _tmp385_;
					gboolean _tmp386_;
					gboolean _tmp387_;
					ValaCCodeFunction* _tmp397_;
					ValaCCodeFunction* _tmp398_;
					ValaCCodeIdentifier* _tmp399_;
					ValaProperty* _tmp400_;
					const gchar* _tmp401_;
					const gchar* _tmp402_;
					gchar* _tmp403_;
					gchar* _tmp404_;
					ValaCCodeMemberAccess* _tmp405_;
					ValaCCodeMemberAccess* _tmp406_;
					ValaCCodeExpression* _tmp407_;
					_tmp367_ = prop;
					_tmp368_ = vala_property_get_set_accessor (_tmp367_);
					_tmp369_ = _tmp368_;
					_tmp370_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp369_);
					cname = _tmp370_;
					_tmp372_ = prop;
					_tmp373_ = vala_property_get_is_abstract (_tmp372_);
					_tmp374_ = _tmp373_;
					if (_tmp374_) {
						_tmp371_ = TRUE;
					} else {
						ValaProperty* _tmp375_;
						gboolean _tmp376_;
						gboolean _tmp377_;
						_tmp375_ = prop;
						_tmp376_ = vala_property_get_is_virtual (_tmp375_);
						_tmp377_ = _tmp376_;
						_tmp371_ = _tmp377_;
					}
					if (_tmp371_) {
						ValaProperty* _tmp378_;
						ValaPropertyAccessor* _tmp379_;
						ValaPropertyAccessor* _tmp380_;
						gchar* _tmp381_;
						_tmp378_ = prop;
						_tmp379_ = vala_property_get_set_accessor (_tmp378_);
						_tmp380_ = _tmp379_;
						_tmp381_ = vala_get_ccode_name ((ValaCodeNode*) _tmp380_);
						_g_free0 (cname);
						cname = _tmp381_;
					}
					_tmp382_ = cname;
					_tmp383_ = vala_ccode_identifier_new (_tmp382_);
					cfunc = (ValaCCodeExpression*) _tmp383_;
					_tmp385_ = prop;
					_tmp386_ = vala_property_get_is_abstract (_tmp385_);
					_tmp387_ = _tmp386_;
					if (_tmp387_) {
						_tmp384_ = TRUE;
					} else {
						ValaProperty* _tmp388_;
						gboolean _tmp389_;
						gboolean _tmp390_;
						_tmp388_ = prop;
						_tmp389_ = vala_property_get_is_virtual (_tmp388_);
						_tmp390_ = _tmp389_;
						_tmp384_ = _tmp390_;
					}
					if (_tmp384_) {
						ValaProperty* _tmp391_;
						ValaPropertyAccessor* _tmp392_;
						ValaPropertyAccessor* _tmp393_;
						ValaCCodeExpression* _tmp394_;
						ValaObjectTypeSymbol* _tmp395_;
						ValaCCodeExpression* _tmp396_;
						_tmp391_ = prop;
						_tmp392_ = vala_property_get_set_accessor (_tmp391_);
						_tmp393_ = _tmp392_;
						_tmp394_ = cfunc;
						_tmp395_ = base_type;
						_tmp396_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp393_, _tmp394_, _tmp395_);
						_vala_ccode_node_unref0 (cfunc);
						cfunc = _tmp396_;
					}
					_tmp397_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp398_ = _tmp397_;
					_tmp399_ = ciface;
					_tmp400_ = prop;
					_tmp401_ = vala_symbol_get_name ((ValaSymbol*) _tmp400_);
					_tmp402_ = _tmp401_;
					_tmp403_ = g_strdup_printf ("set_%s", _tmp402_);
					_tmp404_ = _tmp403_;
					_tmp405_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp399_, _tmp404_);
					_tmp406_ = _tmp405_;
					_tmp407_ = cfunc;
					vala_ccode_function_add_assignment (_tmp398_, (ValaCCodeExpression*) _tmp406_, _tmp407_);
					_vala_ccode_node_unref0 (_tmp406_);
					_g_free0 (_tmp404_);
					_vala_ccode_node_unref0 (cfunc);
					_g_free0 (cname);
				}
			}
			_vala_ccode_node_unref0 (ciface);
			_vala_code_node_unref0 (base_type);
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaInterface* _tmp408_;
		ValaList* _tmp409_;
		gint _prop_size = 0;
		ValaList* _tmp410_;
		gint _tmp411_;
		gint _tmp412_;
		gint _prop_index = 0;
		_tmp408_ = iface;
		_tmp409_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp408_);
		_prop_list = _tmp409_;
		_tmp410_ = _prop_list;
		_tmp411_ = vala_collection_get_size ((ValaCollection*) _tmp410_);
		_tmp412_ = _tmp411_;
		_prop_size = _tmp412_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp413_;
			gint _tmp414_;
			gint _tmp415_;
			ValaProperty* prop = NULL;
			ValaList* _tmp416_;
			gint _tmp417_;
			gpointer _tmp418_;
			ValaProperty* _tmp419_;
			gboolean _tmp420_;
			gboolean _tmp421_;
			ValaProperty* cl_prop = NULL;
			ValaClass* base_class = NULL;
			ValaClass* _tmp422_;
			ValaClass* _tmp423_;
			gboolean _tmp439_ = FALSE;
			ValaClass* _tmp440_;
			_tmp413_ = _prop_index;
			_prop_index = _tmp413_ + 1;
			_tmp414_ = _prop_index;
			_tmp415_ = _prop_size;
			if (!(_tmp414_ < _tmp415_)) {
				break;
			}
			_tmp416_ = _prop_list;
			_tmp417_ = _prop_index;
			_tmp418_ = vala_list_get (_tmp416_, _tmp417_);
			prop = (ValaProperty*) _tmp418_;
			_tmp419_ = prop;
			_tmp420_ = vala_property_get_is_abstract (_tmp419_);
			_tmp421_ = _tmp420_;
			if (!_tmp421_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			cl_prop = NULL;
			_tmp422_ = cl;
			_tmp423_ = _vala_code_node_ref0 (_tmp422_);
			base_class = _tmp423_;
			while (TRUE) {
				gboolean _tmp424_ = FALSE;
				ValaClass* _tmp425_;
				ValaClass* _tmp427_;
				ValaScope* _tmp428_;
				ValaScope* _tmp429_;
				ValaProperty* _tmp430_;
				const gchar* _tmp431_;
				const gchar* _tmp432_;
				ValaSymbol* _tmp433_;
				ValaProperty* _tmp434_;
				ValaClass* _tmp435_;
				ValaClass* _tmp436_;
				ValaClass* _tmp437_;
				ValaClass* _tmp438_;
				_tmp425_ = base_class;
				if (_tmp425_ != NULL) {
					ValaProperty* _tmp426_;
					_tmp426_ = cl_prop;
					_tmp424_ = _tmp426_ == NULL;
				} else {
					_tmp424_ = FALSE;
				}
				if (!_tmp424_) {
					break;
				}
				_tmp427_ = base_class;
				_tmp428_ = vala_symbol_get_scope ((ValaSymbol*) _tmp427_);
				_tmp429_ = _tmp428_;
				_tmp430_ = prop;
				_tmp431_ = vala_symbol_get_name ((ValaSymbol*) _tmp430_);
				_tmp432_ = _tmp431_;
				_tmp433_ = vala_scope_lookup (_tmp429_, _tmp432_);
				_tmp434_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp433_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp433_) : NULL;
				if (_tmp434_ == NULL) {
					_vala_code_node_unref0 (_tmp433_);
				}
				_vala_code_node_unref0 (cl_prop);
				cl_prop = _tmp434_;
				_tmp435_ = base_class;
				_tmp436_ = vala_class_get_base_class (_tmp435_);
				_tmp437_ = _tmp436_;
				_tmp438_ = _vala_code_node_ref0 (_tmp437_);
				_vala_code_node_unref0 (base_class);
				base_class = _tmp438_;
			}
			_tmp440_ = base_class;
			if (_tmp440_ != NULL) {
				ValaProperty* _tmp441_;
				ValaSymbol* _tmp442_;
				ValaSymbol* _tmp443_;
				ValaClass* _tmp444_;
				_tmp441_ = cl_prop;
				_tmp442_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp441_);
				_tmp443_ = _tmp442_;
				_tmp444_ = cl;
				_tmp439_ = _tmp443_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp444_, VALA_TYPE_SYMBOL, ValaSymbol);
			} else {
				_tmp439_ = FALSE;
			}
			if (_tmp439_) {
				ValaProperty* base_property = NULL;
				ValaProperty* _tmp445_;
				ValaProperty* _tmp446_;
				ValaProperty* _tmp447_;
				ValaProperty* _tmp448_;
				ValaProperty* _tmp449_;
				ValaCCodeIdentifier* ciface = NULL;
				ValaCCodeIdentifier* _tmp461_;
				gboolean _tmp462_ = FALSE;
				ValaProperty* _tmp463_;
				ValaPropertyAccessor* _tmp464_;
				ValaPropertyAccessor* _tmp465_;
				gboolean _tmp496_ = FALSE;
				ValaProperty* _tmp497_;
				ValaPropertyAccessor* _tmp498_;
				ValaPropertyAccessor* _tmp499_;
				_tmp445_ = cl_prop;
				_tmp446_ = _vala_code_node_ref0 (_tmp445_);
				base_property = _tmp446_;
				_tmp447_ = cl_prop;
				_tmp448_ = vala_property_get_base_property (_tmp447_);
				_tmp449_ = _tmp448_;
				if (_tmp449_ != NULL) {
					ValaProperty* _tmp450_;
					ValaProperty* _tmp451_;
					ValaProperty* _tmp452_;
					ValaProperty* _tmp453_;
					_tmp450_ = cl_prop;
					_tmp451_ = vala_property_get_base_property (_tmp450_);
					_tmp452_ = _tmp451_;
					_tmp453_ = _vala_code_node_ref0 (_tmp452_);
					_vala_code_node_unref0 (base_property);
					base_property = _tmp453_;
				} else {
					ValaProperty* _tmp454_;
					ValaProperty* _tmp455_;
					ValaProperty* _tmp456_;
					_tmp454_ = cl_prop;
					_tmp455_ = vala_property_get_base_interface_property (_tmp454_);
					_tmp456_ = _tmp455_;
					if (_tmp456_ != NULL) {
						ValaProperty* _tmp457_;
						ValaProperty* _tmp458_;
						ValaProperty* _tmp459_;
						ValaProperty* _tmp460_;
						_tmp457_ = cl_prop;
						_tmp458_ = vala_property_get_base_interface_property (_tmp457_);
						_tmp459_ = _tmp458_;
						_tmp460_ = _vala_code_node_ref0 (_tmp459_);
						_vala_code_node_unref0 (base_property);
						base_property = _tmp460_;
					}
				}
				_tmp461_ = vala_ccode_identifier_new ("iface");
				ciface = _tmp461_;
				_tmp463_ = base_property;
				_tmp464_ = vala_property_get_get_accessor (_tmp463_);
				_tmp465_ = _tmp464_;
				if (_tmp465_ != NULL) {
					ValaProperty* _tmp466_;
					ValaPropertyAccessor* _tmp467_;
					ValaPropertyAccessor* _tmp468_;
					_tmp466_ = prop;
					_tmp467_ = vala_property_get_get_accessor (_tmp466_);
					_tmp468_ = _tmp467_;
					_tmp462_ = _tmp468_ != NULL;
				} else {
					_tmp462_ = FALSE;
				}
				if (_tmp462_) {
					ValaProperty* _tmp469_;
					ValaPropertyAccessor* _tmp470_;
					ValaPropertyAccessor* _tmp471_;
					ValaCCodeFile* _tmp472_;
					gchar* cname = NULL;
					ValaProperty* _tmp473_;
					ValaPropertyAccessor* _tmp474_;
					ValaPropertyAccessor* _tmp475_;
					gchar* _tmp476_;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp477_;
					ValaCCodeIdentifier* _tmp478_;
					ValaProperty* _tmp479_;
					ValaPropertyAccessor* _tmp480_;
					ValaPropertyAccessor* _tmp481_;
					ValaCCodeExpression* _tmp482_;
					ValaInterface* _tmp483_;
					ValaCCodeExpression* _tmp484_;
					ValaCCodeFunction* _tmp485_;
					ValaCCodeFunction* _tmp486_;
					ValaCCodeIdentifier* _tmp487_;
					ValaProperty* _tmp488_;
					const gchar* _tmp489_;
					const gchar* _tmp490_;
					gchar* _tmp491_;
					gchar* _tmp492_;
					ValaCCodeMemberAccess* _tmp493_;
					ValaCCodeMemberAccess* _tmp494_;
					ValaCCodeExpression* _tmp495_;
					_tmp469_ = base_property;
					_tmp470_ = vala_property_get_get_accessor (_tmp469_);
					_tmp471_ = _tmp470_;
					_tmp472_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp471_, _tmp472_);
					_tmp473_ = base_property;
					_tmp474_ = vala_property_get_get_accessor (_tmp473_);
					_tmp475_ = _tmp474_;
					_tmp476_ = vala_get_ccode_name ((ValaCodeNode*) _tmp475_);
					cname = _tmp476_;
					_tmp477_ = cname;
					_tmp478_ = vala_ccode_identifier_new (_tmp477_);
					cfunc = (ValaCCodeExpression*) _tmp478_;
					_tmp479_ = prop;
					_tmp480_ = vala_property_get_get_accessor (_tmp479_);
					_tmp481_ = _tmp480_;
					_tmp482_ = cfunc;
					_tmp483_ = iface;
					_tmp484_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp481_, _tmp482_, (ValaObjectTypeSymbol*) _tmp483_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = _tmp484_;
					_tmp485_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp486_ = _tmp485_;
					_tmp487_ = ciface;
					_tmp488_ = prop;
					_tmp489_ = vala_symbol_get_name ((ValaSymbol*) _tmp488_);
					_tmp490_ = _tmp489_;
					_tmp491_ = g_strdup_printf ("get_%s", _tmp490_);
					_tmp492_ = _tmp491_;
					_tmp493_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp487_, _tmp492_);
					_tmp494_ = _tmp493_;
					_tmp495_ = cfunc;
					vala_ccode_function_add_assignment (_tmp486_, (ValaCCodeExpression*) _tmp494_, _tmp495_);
					_vala_ccode_node_unref0 (_tmp494_);
					_g_free0 (_tmp492_);
					_vala_ccode_node_unref0 (cfunc);
					_g_free0 (cname);
				}
				_tmp497_ = base_property;
				_tmp498_ = vala_property_get_set_accessor (_tmp497_);
				_tmp499_ = _tmp498_;
				if (_tmp499_ != NULL) {
					ValaProperty* _tmp500_;
					ValaPropertyAccessor* _tmp501_;
					ValaPropertyAccessor* _tmp502_;
					_tmp500_ = prop;
					_tmp501_ = vala_property_get_set_accessor (_tmp500_);
					_tmp502_ = _tmp501_;
					_tmp496_ = _tmp502_ != NULL;
				} else {
					_tmp496_ = FALSE;
				}
				if (_tmp496_) {
					ValaProperty* _tmp503_;
					ValaPropertyAccessor* _tmp504_;
					ValaPropertyAccessor* _tmp505_;
					ValaCCodeFile* _tmp506_;
					gchar* cname = NULL;
					ValaProperty* _tmp507_;
					ValaPropertyAccessor* _tmp508_;
					ValaPropertyAccessor* _tmp509_;
					gchar* _tmp510_;
					ValaCCodeExpression* cfunc = NULL;
					const gchar* _tmp511_;
					ValaCCodeIdentifier* _tmp512_;
					ValaProperty* _tmp513_;
					ValaPropertyAccessor* _tmp514_;
					ValaPropertyAccessor* _tmp515_;
					ValaCCodeExpression* _tmp516_;
					ValaInterface* _tmp517_;
					ValaCCodeExpression* _tmp518_;
					ValaCCodeFunction* _tmp519_;
					ValaCCodeFunction* _tmp520_;
					ValaCCodeIdentifier* _tmp521_;
					ValaProperty* _tmp522_;
					const gchar* _tmp523_;
					const gchar* _tmp524_;
					gchar* _tmp525_;
					gchar* _tmp526_;
					ValaCCodeMemberAccess* _tmp527_;
					ValaCCodeMemberAccess* _tmp528_;
					ValaCCodeExpression* _tmp529_;
					_tmp503_ = base_property;
					_tmp504_ = vala_property_get_set_accessor (_tmp503_);
					_tmp505_ = _tmp504_;
					_tmp506_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp505_, _tmp506_);
					_tmp507_ = base_property;
					_tmp508_ = vala_property_get_set_accessor (_tmp507_);
					_tmp509_ = _tmp508_;
					_tmp510_ = vala_get_ccode_name ((ValaCodeNode*) _tmp509_);
					cname = _tmp510_;
					_tmp511_ = cname;
					_tmp512_ = vala_ccode_identifier_new (_tmp511_);
					cfunc = (ValaCCodeExpression*) _tmp512_;
					_tmp513_ = prop;
					_tmp514_ = vala_property_get_set_accessor (_tmp513_);
					_tmp515_ = _tmp514_;
					_tmp516_ = cfunc;
					_tmp517_ = iface;
					_tmp518_ = vala_gtype_module_cast_property_accessor_pointer (self, _tmp515_, _tmp516_, (ValaObjectTypeSymbol*) _tmp517_);
					_vala_ccode_node_unref0 (cfunc);
					cfunc = _tmp518_;
					_tmp519_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp520_ = _tmp519_;
					_tmp521_ = ciface;
					_tmp522_ = prop;
					_tmp523_ = vala_symbol_get_name ((ValaSymbol*) _tmp522_);
					_tmp524_ = _tmp523_;
					_tmp525_ = g_strdup_printf ("set_%s", _tmp524_);
					_tmp526_ = _tmp525_;
					_tmp527_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp521_, _tmp526_);
					_tmp528_ = _tmp527_;
					_tmp529_ = cfunc;
					vala_ccode_function_add_assignment (_tmp520_, (ValaCCodeExpression*) _tmp528_, _tmp529_);
					_vala_ccode_node_unref0 (_tmp528_);
					_g_free0 (_tmp526_);
					_vala_ccode_node_unref0 (cfunc);
					_g_free0 (cname);
				}
				_vala_ccode_node_unref0 (ciface);
				_vala_code_node_unref0 (base_property);
			}
			_vala_code_node_unref0 (base_class);
			_vala_code_node_unref0 (cl_prop);
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp530_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp531_ = iface_init;
	vala_ccode_file_add_function (_tmp530_, _tmp531_);
	_vala_ccode_node_unref0 (parent_var_decl);
	_vala_ccode_node_unref0 (parent_decl);
	_g_free0 (parent_iface_var);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (iface_init);
}


static ValaCCodeExpression* vala_gtype_module_cast_property_accessor_pointer (ValaGTypeModule* self, ValaPropertyAccessor* acc, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type) {
	ValaCCodeExpression* result = NULL;
	gchar* cast = NULL;
	gboolean _tmp0_ = FALSE;
	ValaPropertyAccessor* _tmp1_;
	gboolean _tmp2_;
	gboolean _tmp3_;
	ValaCCodeExpression* _tmp51_;
	const gchar* _tmp52_;
	ValaCCodeCastExpression* _tmp53_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (acc != NULL, NULL);
	g_return_val_if_fail (cfunc != NULL, NULL);
	g_return_val_if_fail (base_type != NULL, NULL);
	_tmp1_ = acc;
	_tmp2_ = vala_property_accessor_get_readable (_tmp1_);
	_tmp3_ = _tmp2_;
	if (_tmp3_) {
		ValaPropertyAccessor* _tmp4_;
		ValaDataType* _tmp5_;
		ValaDataType* _tmp6_;
		gboolean _tmp7_;
		_tmp4_ = acc;
		_tmp5_ = vala_property_accessor_get_value_type (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp7_ = vala_data_type_is_real_non_null_struct_type (_tmp6_);
		_tmp0_ = _tmp7_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		ValaObjectTypeSymbol* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		ValaPropertyAccessor* _tmp11_;
		ValaDataType* _tmp12_;
		ValaDataType* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
		_tmp8_ = base_type;
		_tmp9_ = vala_get_ccode_name ((ValaCodeNode*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = acc;
		_tmp12_ = vala_property_accessor_get_value_type (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = vala_get_ccode_name ((ValaCodeNode*) _tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp10_, _tmp15_);
		_g_free0 (cast);
		cast = _tmp16_;
		_g_free0 (_tmp15_);
		_g_free0 (_tmp10_);
	} else {
		ValaPropertyAccessor* _tmp17_;
		gboolean _tmp18_;
		gboolean _tmp19_;
		_tmp17_ = acc;
		_tmp18_ = vala_property_accessor_get_readable (_tmp17_);
		_tmp19_ = _tmp18_;
		if (_tmp19_) {
			ValaPropertyAccessor* _tmp20_;
			ValaDataType* _tmp21_;
			ValaDataType* _tmp22_;
			gchar* _tmp23_;
			gchar* _tmp24_;
			ValaObjectTypeSymbol* _tmp25_;
			gchar* _tmp26_;
			gchar* _tmp27_;
			gchar* _tmp28_;
			_tmp20_ = acc;
			_tmp21_ = vala_property_accessor_get_value_type (_tmp20_);
			_tmp22_ = _tmp21_;
			_tmp23_ = vala_get_ccode_name ((ValaCodeNode*) _tmp22_);
			_tmp24_ = _tmp23_;
			_tmp25_ = base_type;
			_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) _tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = g_strdup_printf ("%s (*) (%s *)", _tmp24_, _tmp27_);
			_g_free0 (cast);
			cast = _tmp28_;
			_g_free0 (_tmp27_);
			_g_free0 (_tmp24_);
		} else {
			ValaPropertyAccessor* _tmp29_;
			ValaDataType* _tmp30_;
			ValaDataType* _tmp31_;
			gboolean _tmp32_;
			_tmp29_ = acc;
			_tmp30_ = vala_property_accessor_get_value_type (_tmp29_);
			_tmp31_ = _tmp30_;
			_tmp32_ = vala_data_type_is_real_non_null_struct_type (_tmp31_);
			if (_tmp32_) {
				ValaObjectTypeSymbol* _tmp33_;
				gchar* _tmp34_;
				gchar* _tmp35_;
				ValaPropertyAccessor* _tmp36_;
				ValaDataType* _tmp37_;
				ValaDataType* _tmp38_;
				gchar* _tmp39_;
				gchar* _tmp40_;
				gchar* _tmp41_;
				_tmp33_ = base_type;
				_tmp34_ = vala_get_ccode_name ((ValaCodeNode*) _tmp33_);
				_tmp35_ = _tmp34_;
				_tmp36_ = acc;
				_tmp37_ = vala_property_accessor_get_value_type (_tmp36_);
				_tmp38_ = _tmp37_;
				_tmp39_ = vala_get_ccode_name ((ValaCodeNode*) _tmp38_);
				_tmp40_ = _tmp39_;
				_tmp41_ = g_strdup_printf ("void (*) (%s *, %s *)", _tmp35_, _tmp40_);
				_g_free0 (cast);
				cast = _tmp41_;
				_g_free0 (_tmp40_);
				_g_free0 (_tmp35_);
			} else {
				ValaObjectTypeSymbol* _tmp42_;
				gchar* _tmp43_;
				gchar* _tmp44_;
				ValaPropertyAccessor* _tmp45_;
				ValaDataType* _tmp46_;
				ValaDataType* _tmp47_;
				gchar* _tmp48_;
				gchar* _tmp49_;
				gchar* _tmp50_;
				_tmp42_ = base_type;
				_tmp43_ = vala_get_ccode_name ((ValaCodeNode*) _tmp42_);
				_tmp44_ = _tmp43_;
				_tmp45_ = acc;
				_tmp46_ = vala_property_accessor_get_value_type (_tmp45_);
				_tmp47_ = _tmp46_;
				_tmp48_ = vala_get_ccode_name ((ValaCodeNode*) _tmp47_);
				_tmp49_ = _tmp48_;
				_tmp50_ = g_strdup_printf ("void (*) (%s *, %s)", _tmp44_, _tmp49_);
				_g_free0 (cast);
				cast = _tmp50_;
				_g_free0 (_tmp49_);
				_g_free0 (_tmp44_);
			}
		}
	}
	_tmp51_ = cfunc;
	_tmp52_ = cast;
	_tmp53_ = vala_ccode_cast_expression_new (_tmp51_, _tmp52_);
	result = (ValaCCodeExpression*) _tmp53_;
	_g_free0 (cast);
	return result;
}


static ValaCCodeExpression* vala_gtype_module_cast_method_pointer (ValaGTypeModule* self, ValaMethod* m, ValaCCodeExpression* cfunc, ValaObjectTypeSymbol* base_type, gint direction) {
	ValaCCodeExpression* result = NULL;
	gchar* cast = NULL;
	gboolean _tmp0_ = FALSE;
	gint _tmp1_;
	gchar* cast_args = NULL;
	ValaObjectTypeSymbol* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	ValaCCodeFunctionDeclarator* vdeclarator = NULL;
	ValaMethod* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	ValaCCodeFunctionDeclarator* _tmp21_;
	ValaCCodeFunctionDeclarator* _tmp22_;
	ValaHashMap* cparam_map = NULL;
	GHashFunc _tmp23_;
	GEqualFunc _tmp24_;
	GEqualFunc _tmp25_;
	ValaHashMap* _tmp26_;
	ValaMethod* _tmp27_;
	ValaCCodeFile* _tmp28_;
	ValaHashMap* _tmp29_;
	ValaCCodeFunction* _tmp30_;
	ValaCCodeFunction* _tmp31_;
	ValaCCodeFunctionDeclarator* _tmp32_;
	gint _tmp33_;
	gint last_pos = 0;
	gint min_pos = 0;
	const gchar* _tmp67_;
	const gchar* _tmp68_;
	gchar* _tmp69_;
	ValaCCodeExpression* _tmp70_;
	const gchar* _tmp71_;
	ValaCCodeCastExpression* _tmp72_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (m != NULL, NULL);
	g_return_val_if_fail (cfunc != NULL, NULL);
	g_return_val_if_fail (base_type != NULL, NULL);
	_tmp1_ = direction;
	if (_tmp1_ == 1) {
		_tmp0_ = TRUE;
	} else {
		ValaMethod* _tmp2_;
		ValaDataType* _tmp3_;
		ValaDataType* _tmp4_;
		gboolean _tmp5_;
		_tmp2_ = m;
		_tmp3_ = vala_callable_get_return_type ((ValaCallable*) _tmp2_);
		_tmp4_ = _tmp3_;
		_tmp5_ = vala_data_type_is_real_non_null_struct_type (_tmp4_);
		_tmp0_ = _tmp5_;
	}
	if (_tmp0_) {
		gchar* _tmp6_;
		_tmp6_ = g_strdup ("void (*)");
		_g_free0 (cast);
		cast = _tmp6_;
	} else {
		ValaMethod* _tmp7_;
		ValaDataType* _tmp8_;
		ValaDataType* _tmp9_;
		gchar* _tmp10_;
		gchar* _tmp11_;
		gchar* _tmp12_;
		_tmp7_ = m;
		_tmp8_ = vala_callable_get_return_type ((ValaCallable*) _tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) _tmp9_);
		_tmp11_ = _tmp10_;
		_tmp12_ = g_strdup_printf ("%s (*)", _tmp11_);
		_g_free0 (cast);
		cast = _tmp12_;
		_g_free0 (_tmp11_);
	}
	_tmp13_ = base_type;
	_tmp14_ = vala_get_ccode_name ((ValaCodeNode*) _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = g_strdup_printf ("%s *", _tmp15_);
	_tmp17_ = _tmp16_;
	_g_free0 (_tmp15_);
	cast_args = _tmp17_;
	_tmp18_ = m;
	_tmp19_ = vala_get_ccode_vfunc_name (_tmp18_);
	_tmp20_ = _tmp19_;
	_tmp21_ = vala_ccode_function_declarator_new (_tmp20_);
	_tmp22_ = _tmp21_;
	_g_free0 (_tmp20_);
	vdeclarator = _tmp22_;
	_tmp23_ = g_direct_hash;
	_tmp24_ = g_direct_equal;
	_tmp25_ = g_direct_equal;
	_tmp26_ = vala_hash_map_new (G_TYPE_INT, NULL, NULL, VALA_TYPE_CCODE_PARAMETER, (GBoxedCopyFunc) vala_ccode_node_ref, (GDestroyNotify) vala_ccode_node_unref, _tmp23_, _tmp24_, _tmp25_);
	cparam_map = _tmp26_;
	_tmp27_ = m;
	_tmp28_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp29_ = cparam_map;
	_tmp30_ = vala_ccode_function_new ("fake", "void");
	_tmp31_ = _tmp30_;
	_tmp32_ = vdeclarator;
	_tmp33_ = direction;
	vala_ccode_base_module_generate_cparameters ((ValaCCodeBaseModule*) self, _tmp27_, _tmp28_, (ValaMap*) _tmp29_, _tmp31_, _tmp32_, NULL, NULL, _tmp33_);
	_vala_ccode_node_unref0 (_tmp31_);
	last_pos = -1;
	while (TRUE) {
		gint _tmp51_;
		gint _tmp66_;
		min_pos = -1;
		{
			ValaIterator* _pos_it = NULL;
			ValaHashMap* _tmp34_;
			ValaSet* _tmp35_;
			ValaSet* _tmp36_;
			ValaIterator* _tmp37_;
			ValaIterator* _tmp38_;
			_tmp34_ = cparam_map;
			_tmp35_ = vala_map_get_keys ((ValaMap*) _tmp34_);
			_tmp36_ = _tmp35_;
			_tmp37_ = vala_iterable_iterator ((ValaIterable*) _tmp36_);
			_tmp38_ = _tmp37_;
			_vala_iterable_unref0 (_tmp36_);
			_pos_it = _tmp38_;
			while (TRUE) {
				ValaIterator* _tmp39_;
				gboolean _tmp40_;
				gint pos = 0;
				ValaIterator* _tmp41_;
				gpointer _tmp42_;
				gboolean _tmp43_ = FALSE;
				gint _tmp44_;
				gint _tmp45_;
				_tmp39_ = _pos_it;
				_tmp40_ = vala_iterator_next (_tmp39_);
				if (!_tmp40_) {
					break;
				}
				_tmp41_ = _pos_it;
				_tmp42_ = vala_iterator_get (_tmp41_);
				pos = (gint) ((gintptr) _tmp42_);
				_tmp44_ = pos;
				_tmp45_ = last_pos;
				if (_tmp44_ > _tmp45_) {
					gboolean _tmp46_ = FALSE;
					gint _tmp47_;
					_tmp47_ = min_pos;
					if (_tmp47_ == -1) {
						_tmp46_ = TRUE;
					} else {
						gint _tmp48_;
						gint _tmp49_;
						_tmp48_ = pos;
						_tmp49_ = min_pos;
						_tmp46_ = _tmp48_ < _tmp49_;
					}
					_tmp43_ = _tmp46_;
				} else {
					_tmp43_ = FALSE;
				}
				if (_tmp43_) {
					gint _tmp50_;
					_tmp50_ = pos;
					min_pos = _tmp50_;
				}
			}
			_vala_iterator_unref0 (_pos_it);
		}
		_tmp51_ = last_pos;
		if (_tmp51_ != -1) {
			gint _tmp52_;
			ValaCCodeParameter* tmp = NULL;
			ValaHashMap* _tmp53_;
			gint _tmp54_;
			gpointer _tmp55_;
			ValaCCodeParameter* _tmp56_;
			gboolean _tmp57_;
			gboolean _tmp58_;
			_tmp52_ = min_pos;
			if (_tmp52_ == -1) {
				break;
			}
			_tmp53_ = cparam_map;
			_tmp54_ = min_pos;
			_tmp55_ = vala_map_get ((ValaMap*) _tmp53_, (gpointer) ((gintptr) _tmp54_));
			tmp = (ValaCCodeParameter*) _tmp55_;
			_tmp56_ = tmp;
			_tmp57_ = vala_ccode_parameter_get_ellipsis (_tmp56_);
			_tmp58_ = _tmp57_;
			if (_tmp58_) {
				const gchar* _tmp59_;
				gchar* _tmp60_;
				_tmp59_ = cast_args;
				_tmp60_ = g_strdup_printf ("%s, ...", _tmp59_);
				_g_free0 (cast_args);
				cast_args = _tmp60_;
			} else {
				const gchar* _tmp61_;
				ValaCCodeParameter* _tmp62_;
				const gchar* _tmp63_;
				const gchar* _tmp64_;
				gchar* _tmp65_;
				_tmp61_ = cast_args;
				_tmp62_ = tmp;
				_tmp63_ = vala_ccode_parameter_get_type_name (_tmp62_);
				_tmp64_ = _tmp63_;
				_tmp65_ = g_strdup_printf ("%s, %s", _tmp61_, _tmp64_);
				_g_free0 (cast_args);
				cast_args = _tmp65_;
			}
			_vala_ccode_node_unref0 (tmp);
		}
		_tmp66_ = min_pos;
		last_pos = _tmp66_;
	}
	_tmp67_ = cast;
	_tmp68_ = cast_args;
	_tmp69_ = g_strdup_printf ("%s (%s)", _tmp67_, _tmp68_);
	_g_free0 (cast);
	cast = _tmp69_;
	_tmp70_ = cfunc;
	_tmp71_ = cast;
	_tmp72_ = vala_ccode_cast_expression_new (_tmp70_, _tmp71_);
	result = (ValaCCodeExpression*) _tmp72_;
	_vala_map_unref0 (cparam_map);
	_vala_ccode_node_unref0 (vdeclarator);
	_g_free0 (cast_args);
	_g_free0 (cast);
	return result;
}


static void vala_gtype_module_begin_instance_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	ValaCCodeFunction* func = NULL;
	ValaClass* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaClass* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	ValaCCodeParameter* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeFunction* _tmp16_;
	ValaCCodeFunction* _tmp17_;
	ValaClass* _tmp18_;
	gboolean _tmp19_;
	gboolean _tmp20_;
	gboolean _tmp23_ = FALSE;
	ValaClass* _tmp24_;
	gboolean _tmp25_;
	gboolean _tmp26_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_instance_init", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	func = _tmp7_;
	_tmp8_ = func;
	_tmp9_ = cl;
	_tmp10_ = vala_get_ccode_name ((ValaCodeNode*) _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = g_strdup_printf ("%s *", _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = vala_ccode_parameter_new ("self", _tmp13_);
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp8_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_g_free0 (_tmp13_);
	_g_free0 (_tmp11_);
	_tmp16_ = func;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp16_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp17_ = func;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
	_tmp18_ = cl;
	_tmp19_ = vala_class_get_is_compact (_tmp18_);
	_tmp20_ = _tmp19_;
	if (_tmp20_) {
		ValaCCodeFile* _tmp21_;
		ValaCCodeFunction* _tmp22_;
		_tmp21_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp22_ = func;
		vala_ccode_file_add_function_declaration (_tmp21_, _tmp22_);
	}
	_tmp24_ = cl;
	_tmp25_ = vala_class_get_is_compact (_tmp24_);
	_tmp26_ = _tmp25_;
	if (!_tmp26_) {
		gboolean _tmp27_ = FALSE;
		ValaClass* _tmp28_;
		gboolean _tmp29_;
		gboolean _tmp30_;
		_tmp28_ = cl;
		_tmp29_ = vala_class_get_has_private_fields (_tmp28_);
		_tmp30_ = _tmp29_;
		if (_tmp30_) {
			_tmp27_ = TRUE;
		} else {
			ValaClass* _tmp31_;
			ValaList* _tmp32_;
			ValaList* _tmp33_;
			gint _tmp34_;
			gint _tmp35_;
			_tmp31_ = cl;
			_tmp32_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp31_);
			_tmp33_ = _tmp32_;
			_tmp34_ = vala_collection_get_size ((ValaCollection*) _tmp33_);
			_tmp35_ = _tmp34_;
			_tmp27_ = _tmp35_ > 0;
			_vala_iterable_unref0 (_tmp33_);
		}
		_tmp23_ = _tmp27_;
	} else {
		_tmp23_ = FALSE;
	}
	if (_tmp23_) {
		ValaCCodeFunctionCall* ccall = NULL;
		ValaClass* _tmp36_;
		gchar* _tmp37_;
		gchar* _tmp38_;
		gchar* _tmp39_;
		gchar* _tmp40_;
		ValaCCodeIdentifier* _tmp41_;
		ValaCCodeIdentifier* _tmp42_;
		ValaCCodeFunctionCall* _tmp43_;
		ValaCCodeFunctionCall* _tmp44_;
		ValaCCodeFunctionCall* _tmp45_;
		ValaCCodeIdentifier* _tmp46_;
		ValaCCodeIdentifier* _tmp47_;
		ValaCCodeFunction* _tmp48_;
		ValaCCodeIdentifier* _tmp49_;
		ValaCCodeIdentifier* _tmp50_;
		ValaCCodeMemberAccess* _tmp51_;
		ValaCCodeMemberAccess* _tmp52_;
		ValaCCodeFunctionCall* _tmp53_;
		_tmp36_ = cl;
		_tmp37_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp36_, NULL);
		_tmp38_ = _tmp37_;
		_tmp39_ = g_strdup_printf ("%s_GET_PRIVATE", _tmp38_);
		_tmp40_ = _tmp39_;
		_tmp41_ = vala_ccode_identifier_new (_tmp40_);
		_tmp42_ = _tmp41_;
		_tmp43_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp42_);
		_tmp44_ = _tmp43_;
		_vala_ccode_node_unref0 (_tmp42_);
		_g_free0 (_tmp40_);
		_g_free0 (_tmp38_);
		ccall = _tmp44_;
		_tmp45_ = ccall;
		_tmp46_ = vala_ccode_identifier_new ("self");
		_tmp47_ = _tmp46_;
		vala_ccode_function_call_add_argument (_tmp45_, (ValaCCodeExpression*) _tmp47_);
		_vala_ccode_node_unref0 (_tmp47_);
		_tmp48_ = func;
		_tmp49_ = vala_ccode_identifier_new ("self");
		_tmp50_ = _tmp49_;
		_tmp51_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp50_, "priv");
		_tmp52_ = _tmp51_;
		_tmp53_ = ccall;
		vala_ccode_function_add_assignment (_tmp48_, (ValaCCodeExpression*) _tmp52_, (ValaCCodeExpression*) _tmp53_);
		_vala_ccode_node_unref0 (_tmp52_);
		_vala_ccode_node_unref0 (_tmp50_);
		_vala_ccode_node_unref0 (ccall);
	}
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_vala_ccode_node_unref0 (func);
}


static void vala_gtype_module_add_instance_init_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	ValaClass* _tmp1_;
	ValaCCodeFile* _tmp2_;
	ValaCCodeBaseModuleEmitContext* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	vala_gtype_module_end_instance_init (self, _tmp1_);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_tmp2_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp3_ = ((ValaCCodeBaseModule*) self)->instance_init_context;
	_tmp4_ = _tmp3_->ccode;
	vala_ccode_file_add_function (_tmp2_, _tmp4_);
}


static void vala_gtype_module_begin_class_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaClass* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeFunction* _tmp17_;
	ValaClass* _tmp18_;
	ValaDestructor* _tmp19_;
	ValaDestructor* _tmp20_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_class_finalize", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	function = _tmp7_;
	_tmp8_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp9_ = function;
	_tmp10_ = cl;
	_tmp11_ = vala_get_ccode_name ((ValaCodeNode*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strdup_printf ("%sClass *", _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_parameter_new ("klass", _tmp14_);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp16_);
	_vala_ccode_node_unref0 (_tmp16_);
	_g_free0 (_tmp14_);
	_g_free0 (_tmp12_);
	_tmp17_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
	_tmp18_ = cl;
	_tmp19_ = vala_class_get_static_destructor (_tmp18_);
	_tmp20_ = _tmp19_;
	if (_tmp20_ != NULL) {
		ValaClass* _tmp21_;
		ValaDestructor* _tmp22_;
		ValaDestructor* _tmp23_;
		ValaBlock* _tmp24_;
		ValaBlock* _tmp25_;
		_tmp21_ = cl;
		_tmp22_ = vala_class_get_static_destructor (_tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp23_);
		_tmp25_ = _tmp24_;
		vala_code_node_emit ((ValaCodeNode*) _tmp25_, (ValaCodeGenerator*) self);
	}
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_class_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeFile* _tmp0_;
	ValaCCodeBaseModuleEmitContext* _tmp1_;
	ValaCCodeFunction* _tmp2_;
	ValaCCodeFile* _tmp3_;
	ValaCCodeBaseModuleEmitContext* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp1_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	_tmp2_ = _tmp1_->ccode;
	vala_ccode_file_add_function_declaration (_tmp0_, _tmp2_);
	_tmp3_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp4_ = ((ValaCCodeBaseModule*) self)->class_finalize_context;
	_tmp5_ = _tmp4_->ccode;
	vala_ccode_file_add_function (_tmp3_, _tmp5_);
}


static void vala_gtype_module_begin_base_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	ValaCCodeFunction* function = NULL;
	ValaClass* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	ValaCCodeFunction* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaClass* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	ValaCCodeParameter* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeFunction* _tmp17_;
	ValaClass* _tmp18_;
	ValaDestructor* _tmp19_;
	ValaDestructor* _tmp20_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp1_, NULL);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup_printf ("%s_base_finalize", _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = vala_ccode_function_new (_tmp5_, "void");
	_tmp7_ = _tmp6_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp3_);
	function = _tmp7_;
	_tmp8_ = function;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp8_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp9_ = function;
	_tmp10_ = cl;
	_tmp11_ = vala_get_ccode_name ((ValaCodeNode*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strdup_printf ("%sClass *", _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_parameter_new ("klass", _tmp14_);
	_tmp16_ = _tmp15_;
	vala_ccode_function_add_parameter (_tmp9_, _tmp16_);
	_vala_ccode_node_unref0 (_tmp16_);
	_g_free0 (_tmp14_);
	_g_free0 (_tmp12_);
	_tmp17_ = function;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp17_);
	_tmp18_ = cl;
	_tmp19_ = vala_class_get_class_destructor (_tmp18_);
	_tmp20_ = _tmp19_;
	if (_tmp20_ != NULL) {
		ValaClass* _tmp21_;
		ValaDestructor* _tmp22_;
		ValaDestructor* _tmp23_;
		ValaBlock* _tmp24_;
		ValaBlock* _tmp25_;
		_tmp21_ = cl;
		_tmp22_ = vala_class_get_class_destructor (_tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp23_);
		_tmp25_ = _tmp24_;
		vala_code_node_emit ((ValaCodeNode*) _tmp25_, (ValaCodeGenerator*) self);
	}
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_vala_ccode_node_unref0 (function);
}


static void vala_gtype_module_add_base_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	ValaCCodeFile* _tmp1_;
	ValaCCodeFunction* _tmp2_;
	ValaCCodeFunction* _tmp3_;
	ValaCCodeFile* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _tmp6_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->base_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp2_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp3_ = _tmp2_;
	vala_ccode_file_add_function_declaration (_tmp1_, _tmp3_);
	_tmp4_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp5_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp6_ = _tmp5_;
	vala_ccode_file_add_function (_tmp4_, _tmp6_);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
}


static void vala_gtype_module_begin_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaCCodeBaseModuleEmitContext* _tmp0_;
	gboolean is_gsource = FALSE;
	ValaClass* _tmp1_;
	ValaClass* _tmp2_;
	ValaClass* _tmp3_;
	ValaClass* _tmp4_;
	gboolean _tmp5_ = FALSE;
	ValaClass* _tmp6_;
	gboolean _tmp7_;
	gboolean _tmp8_;
	ValaClass* _tmp112_;
	ValaDestructor* _tmp113_;
	ValaDestructor* _tmp114_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp0_);
	_tmp1_ = cl;
	_tmp2_ = vala_class_get_base_class (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = ((ValaCCodeBaseModule*) self)->gsource_type;
	is_gsource = _tmp3_ == _tmp4_;
	_tmp6_ = cl;
	_tmp7_ = vala_class_get_is_compact (_tmp6_);
	_tmp8_ = _tmp7_;
	if (!_tmp8_) {
		_tmp5_ = TRUE;
	} else {
		gboolean _tmp9_;
		_tmp9_ = is_gsource;
		_tmp5_ = _tmp9_;
	}
	if (_tmp5_) {
		ValaClass* fundamental_class = NULL;
		ValaClass* _tmp10_;
		ValaClass* _tmp11_;
		ValaCCodeFunction* func = NULL;
		ValaClass* _tmp19_;
		gchar* _tmp20_;
		gchar* _tmp21_;
		gchar* _tmp22_;
		gchar* _tmp23_;
		ValaCCodeFunction* _tmp24_;
		ValaCCodeFunction* _tmp25_;
		ValaCCodeFunction* _tmp26_;
		ValaClass* _tmp27_;
		gchar* _tmp28_;
		gchar* _tmp29_;
		gchar* _tmp30_;
		gchar* _tmp31_;
		ValaCCodeParameter* _tmp32_;
		ValaCCodeParameter* _tmp33_;
		ValaCCodeFunction* _tmp34_;
		ValaCCodeFunction* _tmp35_;
		gboolean _tmp36_;
		ValaCCodeExpression* ccast = NULL;
		ValaClass* _tmp39_;
		gboolean _tmp40_;
		gboolean _tmp41_;
		ValaCCodeFunction* _tmp54_;
		ValaCCodeFunction* _tmp55_;
		ValaClass* _tmp56_;
		gchar* _tmp57_;
		gchar* _tmp58_;
		gchar* _tmp59_;
		gchar* _tmp60_;
		ValaCCodeVariableDeclarator* _tmp61_;
		ValaCCodeVariableDeclarator* _tmp62_;
		ValaCCodeFunction* _tmp63_;
		ValaCCodeFunction* _tmp64_;
		ValaCCodeIdentifier* _tmp65_;
		ValaCCodeIdentifier* _tmp66_;
		ValaCCodeExpression* _tmp67_;
		gboolean _tmp68_ = FALSE;
		ValaClass* _tmp69_;
		gboolean _tmp70_;
		gboolean _tmp71_;
		_tmp10_ = cl;
		_tmp11_ = _vala_code_node_ref0 (_tmp10_);
		fundamental_class = _tmp11_;
		while (TRUE) {
			ValaClass* _tmp12_;
			ValaClass* _tmp13_;
			ValaClass* _tmp14_;
			ValaClass* _tmp15_;
			ValaClass* _tmp16_;
			ValaClass* _tmp17_;
			ValaClass* _tmp18_;
			_tmp12_ = fundamental_class;
			_tmp13_ = vala_class_get_base_class (_tmp12_);
			_tmp14_ = _tmp13_;
			if (!(_tmp14_ != NULL)) {
				break;
			}
			_tmp15_ = fundamental_class;
			_tmp16_ = vala_class_get_base_class (_tmp15_);
			_tmp17_ = _tmp16_;
			_tmp18_ = _vala_code_node_ref0 (_tmp17_);
			_vala_code_node_unref0 (fundamental_class);
			fundamental_class = _tmp18_;
		}
		_tmp19_ = cl;
		_tmp20_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp19_, NULL);
		_tmp21_ = _tmp20_;
		_tmp22_ = g_strdup_printf ("%s_finalize", _tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_ccode_function_new (_tmp23_, "void");
		_tmp25_ = _tmp24_;
		_g_free0 (_tmp23_);
		_g_free0 (_tmp21_);
		func = _tmp25_;
		_tmp26_ = func;
		_tmp27_ = fundamental_class;
		_tmp28_ = vala_get_ccode_name ((ValaCodeNode*) _tmp27_);
		_tmp29_ = _tmp28_;
		_tmp30_ = g_strdup_printf ("%s *", _tmp29_);
		_tmp31_ = _tmp30_;
		_tmp32_ = vala_ccode_parameter_new ("obj", _tmp31_);
		_tmp33_ = _tmp32_;
		vala_ccode_function_add_parameter (_tmp26_, _tmp33_);
		_vala_ccode_node_unref0 (_tmp33_);
		_g_free0 (_tmp31_);
		_g_free0 (_tmp29_);
		_tmp34_ = func;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp34_, VALA_CCODE_MODIFIERS_STATIC);
		_tmp35_ = func;
		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp35_);
		_tmp36_ = is_gsource;
		if (_tmp36_) {
			ValaCCodeFile* _tmp37_;
			ValaCCodeFunction* _tmp38_;
			_tmp37_ = ((ValaCCodeBaseModule*) self)->cfile;
			_tmp38_ = func;
			vala_ccode_file_add_function_declaration (_tmp37_, _tmp38_);
		}
		_tmp39_ = cl;
		_tmp40_ = vala_class_get_is_compact (_tmp39_);
		_tmp41_ = _tmp40_;
		if (!_tmp41_) {
			ValaCCodeIdentifier* _tmp42_;
			ValaCCodeIdentifier* _tmp43_;
			ValaClass* _tmp44_;
			ValaCCodeFunctionCall* _tmp45_;
			_tmp42_ = vala_ccode_identifier_new ("obj");
			_tmp43_ = _tmp42_;
			_tmp44_ = cl;
			_tmp45_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp43_, (ValaTypeSymbol*) _tmp44_);
			_vala_ccode_node_unref0 (ccast);
			ccast = (ValaCCodeExpression*) _tmp45_;
			_vala_ccode_node_unref0 (_tmp43_);
		} else {
			ValaCCodeIdentifier* _tmp46_;
			ValaCCodeIdentifier* _tmp47_;
			ValaClass* _tmp48_;
			gchar* _tmp49_;
			gchar* _tmp50_;
			gchar* _tmp51_;
			gchar* _tmp52_;
			ValaCCodeCastExpression* _tmp53_;
			_tmp46_ = vala_ccode_identifier_new ("obj");
			_tmp47_ = _tmp46_;
			_tmp48_ = cl;
			_tmp49_ = vala_get_ccode_name ((ValaCodeNode*) _tmp48_);
			_tmp50_ = _tmp49_;
			_tmp51_ = g_strdup_printf ("%s *", _tmp50_);
			_tmp52_ = _tmp51_;
			_tmp53_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp47_, _tmp52_);
			_vala_ccode_node_unref0 (ccast);
			ccast = (ValaCCodeExpression*) _tmp53_;
			_g_free0 (_tmp52_);
			_g_free0 (_tmp50_);
			_vala_ccode_node_unref0 (_tmp47_);
		}
		_tmp54_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp55_ = _tmp54_;
		_tmp56_ = cl;
		_tmp57_ = vala_get_ccode_name ((ValaCodeNode*) _tmp56_);
		_tmp58_ = _tmp57_;
		_tmp59_ = g_strdup_printf ("%s *", _tmp58_);
		_tmp60_ = _tmp59_;
		_tmp61_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
		_tmp62_ = _tmp61_;
		vala_ccode_function_add_declaration (_tmp55_, _tmp60_, (ValaCCodeDeclarator*) _tmp62_, 0);
		_vala_ccode_node_unref0 (_tmp62_);
		_g_free0 (_tmp60_);
		_g_free0 (_tmp58_);
		_tmp63_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp64_ = _tmp63_;
		_tmp65_ = vala_ccode_identifier_new ("self");
		_tmp66_ = _tmp65_;
		_tmp67_ = ccast;
		vala_ccode_function_add_assignment (_tmp64_, (ValaCCodeExpression*) _tmp66_, _tmp67_);
		_vala_ccode_node_unref0 (_tmp66_);
		_tmp69_ = cl;
		_tmp70_ = vala_class_get_is_compact (_tmp69_);
		_tmp71_ = _tmp70_;
		if (!_tmp71_) {
			ValaClass* _tmp72_;
			ValaClass* _tmp73_;
			ValaClass* _tmp74_;
			_tmp72_ = cl;
			_tmp73_ = vala_class_get_base_class (_tmp72_);
			_tmp74_ = _tmp73_;
			_tmp68_ = _tmp74_ == NULL;
		} else {
			_tmp68_ = FALSE;
		}
		if (_tmp68_) {
			ValaCCodeFunctionCall* call = NULL;
			ValaCCodeIdentifier* _tmp75_;
			ValaCCodeIdentifier* _tmp76_;
			ValaCCodeFunctionCall* _tmp77_;
			ValaCCodeFunctionCall* _tmp78_;
			ValaCCodeFunctionCall* _tmp79_;
			ValaCCodeIdentifier* _tmp80_;
			ValaCCodeIdentifier* _tmp81_;
			ValaCCodeFunction* _tmp82_;
			ValaCCodeFunction* _tmp83_;
			ValaCCodeFunctionCall* _tmp84_;
			_tmp75_ = vala_ccode_identifier_new ("g_signal_handlers_destroy");
			_tmp76_ = _tmp75_;
			_tmp77_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp76_);
			_tmp78_ = _tmp77_;
			_vala_ccode_node_unref0 (_tmp76_);
			call = _tmp78_;
			_tmp79_ = call;
			_tmp80_ = vala_ccode_identifier_new ("self");
			_tmp81_ = _tmp80_;
			vala_ccode_function_call_add_argument (_tmp79_, (ValaCCodeExpression*) _tmp81_);
			_vala_ccode_node_unref0 (_tmp81_);
			_tmp82_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp83_ = _tmp82_;
			_tmp84_ = call;
			vala_ccode_function_add_expression (_tmp83_, (ValaCCodeExpression*) _tmp84_);
			_vala_ccode_node_unref0 (call);
		}
		_vala_ccode_node_unref0 (ccast);
		_vala_ccode_node_unref0 (func);
		_vala_code_node_unref0 (fundamental_class);
	} else {
		ValaCCodeFunction* function = NULL;
		ValaClass* _tmp85_;
		gchar* _tmp86_;
		gchar* _tmp87_;
		gchar* _tmp88_;
		gchar* _tmp89_;
		ValaCCodeFunction* _tmp90_;
		ValaCCodeFunction* _tmp91_;
		ValaClass* _tmp92_;
		gboolean _tmp93_;
		ValaCCodeFunction* _tmp103_;
		ValaClass* _tmp104_;
		gchar* _tmp105_;
		gchar* _tmp106_;
		gchar* _tmp107_;
		gchar* _tmp108_;
		ValaCCodeParameter* _tmp109_;
		ValaCCodeParameter* _tmp110_;
		ValaCCodeFunction* _tmp111_;
		_tmp85_ = cl;
		_tmp86_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp85_);
		_tmp87_ = _tmp86_;
		_tmp88_ = g_strdup_printf ("%sfree", _tmp87_);
		_tmp89_ = _tmp88_;
		_tmp90_ = vala_ccode_function_new (_tmp89_, "void");
		_tmp91_ = _tmp90_;
		_g_free0 (_tmp89_);
		_g_free0 (_tmp87_);
		function = _tmp91_;
		_tmp92_ = cl;
		_tmp93_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp92_);
		if (_tmp93_) {
			ValaCCodeFunction* _tmp94_;
			_tmp94_ = function;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp94_, VALA_CCODE_MODIFIERS_STATIC);
		} else {
			gboolean _tmp95_ = FALSE;
			ValaCodeContext* _tmp96_;
			ValaCodeContext* _tmp97_;
			gboolean _tmp98_;
			gboolean _tmp99_;
			_tmp96_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp97_ = _tmp96_;
			_tmp98_ = vala_code_context_get_hide_internal (_tmp97_);
			_tmp99_ = _tmp98_;
			if (_tmp99_) {
				ValaClass* _tmp100_;
				gboolean _tmp101_;
				_tmp100_ = cl;
				_tmp101_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp100_);
				_tmp95_ = _tmp101_;
			} else {
				_tmp95_ = FALSE;
			}
			if (_tmp95_) {
				ValaCCodeFunction* _tmp102_;
				_tmp102_ = function;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp102_, VALA_CCODE_MODIFIERS_INTERNAL);
			}
		}
		_tmp103_ = function;
		_tmp104_ = cl;
		_tmp105_ = vala_get_ccode_name ((ValaCodeNode*) _tmp104_);
		_tmp106_ = _tmp105_;
		_tmp107_ = g_strdup_printf ("%s *", _tmp106_);
		_tmp108_ = _tmp107_;
		_tmp109_ = vala_ccode_parameter_new ("self", _tmp108_);
		_tmp110_ = _tmp109_;
		vala_ccode_function_add_parameter (_tmp103_, _tmp110_);
		_vala_ccode_node_unref0 (_tmp110_);
		_g_free0 (_tmp108_);
		_g_free0 (_tmp106_);
		_tmp111_ = function;
		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp111_);
		_vala_ccode_node_unref0 (function);
	}
	_tmp112_ = cl;
	_tmp113_ = vala_class_get_destructor (_tmp112_);
	_tmp114_ = _tmp113_;
	if (_tmp114_ != NULL) {
		ValaClass* _tmp115_;
		ValaDestructor* _tmp116_;
		ValaDestructor* _tmp117_;
		ValaBlock* _tmp118_;
		ValaBlock* _tmp119_;
		gboolean _tmp120_;
		gboolean _tmp121_;
		gboolean _tmp128_;
		gboolean _tmp129_;
		_tmp115_ = cl;
		_tmp116_ = vala_class_get_destructor (_tmp115_);
		_tmp117_ = _tmp116_;
		_tmp118_ = vala_subroutine_get_body ((ValaSubroutine*) _tmp117_);
		_tmp119_ = _tmp118_;
		vala_code_node_emit ((ValaCodeNode*) _tmp119_, (ValaCodeGenerator*) self);
		_tmp120_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
		_tmp121_ = _tmp120_;
		if (_tmp121_) {
			ValaCCodeFunction* _tmp122_;
			ValaCCodeFunction* _tmp123_;
			ValaCCodeConstant* _tmp124_;
			ValaCCodeConstant* _tmp125_;
			ValaCCodeVariableDeclarator* _tmp126_;
			ValaCCodeVariableDeclarator* _tmp127_;
			_tmp122_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp123_ = _tmp122_;
			_tmp124_ = vala_ccode_constant_new ("NULL");
			_tmp125_ = _tmp124_;
			_tmp126_ = vala_ccode_variable_declarator_new_zero ("_inner_error_", (ValaCCodeExpression*) _tmp125_, NULL);
			_tmp127_ = _tmp126_;
			vala_ccode_function_add_declaration (_tmp123_, "GError *", (ValaCCodeDeclarator*) _tmp127_, 0);
			_vala_ccode_node_unref0 (_tmp127_);
			_vala_ccode_node_unref0 (_tmp125_);
		}
		_tmp128_ = vala_ccode_base_module_get_current_method_return ((ValaCCodeBaseModule*) self);
		_tmp129_ = _tmp128_;
		if (_tmp129_) {
			ValaCCodeFunction* _tmp130_;
			ValaCCodeFunction* _tmp131_;
			_tmp130_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp131_ = _tmp130_;
			vala_ccode_function_add_label (_tmp131_, "_return");
		}
	}
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
}


static void vala_gtype_module_add_finalize_function (ValaGTypeModule* self, ValaClass* cl) {
	ValaClass* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	ValaCCodeFile* _tmp67_;
	ValaCCodeBaseModuleEmitContext* _tmp68_;
	ValaCCodeFunction* _tmp69_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = cl;
	_tmp1_ = vala_class_get_is_compact (_tmp0_);
	_tmp2_ = _tmp1_;
	if (!_tmp2_) {
		ValaClass* fundamental_class = NULL;
		ValaClass* _tmp3_;
		ValaClass* _tmp4_;
		ValaClass* _tmp12_;
		ValaClass* _tmp13_;
		ValaClass* _tmp14_;
		ValaCCodeFile* _tmp44_;
		ValaCCodeBaseModuleEmitContext* _tmp45_;
		ValaCCodeFunction* _tmp46_;
		_tmp3_ = cl;
		_tmp4_ = _vala_code_node_ref0 (_tmp3_);
		fundamental_class = _tmp4_;
		while (TRUE) {
			ValaClass* _tmp5_;
			ValaClass* _tmp6_;
			ValaClass* _tmp7_;
			ValaClass* _tmp8_;
			ValaClass* _tmp9_;
			ValaClass* _tmp10_;
			ValaClass* _tmp11_;
			_tmp5_ = fundamental_class;
			_tmp6_ = vala_class_get_base_class (_tmp5_);
			_tmp7_ = _tmp6_;
			if (!(_tmp7_ != NULL)) {
				break;
			}
			_tmp8_ = fundamental_class;
			_tmp9_ = vala_class_get_base_class (_tmp8_);
			_tmp10_ = _tmp9_;
			_tmp11_ = _vala_code_node_ref0 (_tmp10_);
			_vala_code_node_unref0 (fundamental_class);
			fundamental_class = _tmp11_;
		}
		_tmp12_ = cl;
		_tmp13_ = vala_class_get_base_class (_tmp12_);
		_tmp14_ = _tmp13_;
		if (_tmp14_ != NULL) {
			ValaCCodeFunctionCall* ccast = NULL;
			ValaClass* _tmp15_;
			gchar* _tmp16_;
			gchar* _tmp17_;
			gchar* _tmp18_;
			gchar* _tmp19_;
			ValaCCodeIdentifier* _tmp20_;
			ValaCCodeIdentifier* _tmp21_;
			ValaCCodeFunctionCall* _tmp22_;
			ValaCCodeFunctionCall* _tmp23_;
			ValaCCodeFunctionCall* _tmp24_;
			ValaClass* _tmp25_;
			gchar* _tmp26_;
			gchar* _tmp27_;
			gchar* _tmp28_;
			gchar* _tmp29_;
			ValaCCodeIdentifier* _tmp30_;
			ValaCCodeIdentifier* _tmp31_;
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeFunctionCall* _tmp32_;
			ValaCCodeMemberAccess* _tmp33_;
			ValaCCodeMemberAccess* _tmp34_;
			ValaCCodeFunctionCall* _tmp35_;
			ValaCCodeFunctionCall* _tmp36_;
			ValaCCodeFunctionCall* _tmp37_;
			ValaCCodeIdentifier* _tmp38_;
			ValaCCodeIdentifier* _tmp39_;
			ValaCCodeBaseModuleEmitContext* _tmp40_;
			ValaCCodeFunction* _tmp41_;
			ValaCCodeFunction* _tmp42_;
			ValaCCodeFunctionCall* _tmp43_;
			_tmp15_ = fundamental_class;
			_tmp16_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp15_, NULL);
			_tmp17_ = _tmp16_;
			_tmp18_ = g_strdup_printf ("%s_CLASS", _tmp17_);
			_tmp19_ = _tmp18_;
			_tmp20_ = vala_ccode_identifier_new (_tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
			_tmp23_ = _tmp22_;
			_vala_ccode_node_unref0 (_tmp21_);
			_g_free0 (_tmp19_);
			_g_free0 (_tmp17_);
			ccast = _tmp23_;
			_tmp24_ = ccast;
			_tmp25_ = cl;
			_tmp26_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp25_, NULL);
			_tmp27_ = _tmp26_;
			_tmp28_ = g_strdup_printf ("%s_parent_class", _tmp27_);
			_tmp29_ = _tmp28_;
			_tmp30_ = vala_ccode_identifier_new (_tmp29_);
			_tmp31_ = _tmp30_;
			vala_ccode_function_call_add_argument (_tmp24_, (ValaCCodeExpression*) _tmp31_);
			_vala_ccode_node_unref0 (_tmp31_);
			_g_free0 (_tmp29_);
			_g_free0 (_tmp27_);
			_tmp32_ = ccast;
			_tmp33_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp32_, "finalize");
			_tmp34_ = _tmp33_;
			_tmp35_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp34_);
			_tmp36_ = _tmp35_;
			_vala_ccode_node_unref0 (_tmp34_);
			ccall = _tmp36_;
			_tmp37_ = ccall;
			_tmp38_ = vala_ccode_identifier_new ("obj");
			_tmp39_ = _tmp38_;
			vala_ccode_function_call_add_argument (_tmp37_, (ValaCCodeExpression*) _tmp39_);
			_vala_ccode_node_unref0 (_tmp39_);
			_tmp40_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp40_);
			_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp42_ = _tmp41_;
			_tmp43_ = ccall;
			vala_ccode_function_add_expression (_tmp42_, (ValaCCodeExpression*) _tmp43_);
			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
			_vala_ccode_node_unref0 (ccall);
			_vala_ccode_node_unref0 (ccast);
		}
		_tmp44_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp45_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
		_tmp46_ = _tmp45_->ccode;
		vala_ccode_file_add_function_declaration (_tmp44_, _tmp46_);
		_vala_code_node_unref0 (fundamental_class);
	} else {
		ValaClass* _tmp47_;
		ValaClass* _tmp48_;
		ValaClass* _tmp49_;
		_tmp47_ = cl;
		_tmp48_ = vala_class_get_base_class (_tmp47_);
		_tmp49_ = _tmp48_;
		if (_tmp49_ == NULL) {
			ValaCCodeFunctionCall* ccall = NULL;
			ValaCCodeIdentifier* _tmp50_;
			ValaCCodeIdentifier* _tmp51_;
			ValaCCodeFunctionCall* _tmp52_;
			ValaCCodeFunctionCall* _tmp53_;
			ValaCCodeFunctionCall* _tmp54_;
			ValaClass* _tmp55_;
			gchar* _tmp56_;
			gchar* _tmp57_;
			ValaCCodeIdentifier* _tmp58_;
			ValaCCodeIdentifier* _tmp59_;
			ValaCCodeFunctionCall* _tmp60_;
			ValaCCodeIdentifier* _tmp61_;
			ValaCCodeIdentifier* _tmp62_;
			ValaCCodeBaseModuleEmitContext* _tmp63_;
			ValaCCodeFunction* _tmp64_;
			ValaCCodeFunction* _tmp65_;
			ValaCCodeFunctionCall* _tmp66_;
			_tmp50_ = vala_ccode_identifier_new ("g_slice_free");
			_tmp51_ = _tmp50_;
			_tmp52_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp51_);
			_tmp53_ = _tmp52_;
			_vala_ccode_node_unref0 (_tmp51_);
			ccall = _tmp53_;
			_tmp54_ = ccall;
			_tmp55_ = cl;
			_tmp56_ = vala_get_ccode_name ((ValaCodeNode*) _tmp55_);
			_tmp57_ = _tmp56_;
			_tmp58_ = vala_ccode_identifier_new (_tmp57_);
			_tmp59_ = _tmp58_;
			vala_ccode_function_call_add_argument (_tmp54_, (ValaCCodeExpression*) _tmp59_);
			_vala_ccode_node_unref0 (_tmp59_);
			_g_free0 (_tmp57_);
			_tmp60_ = ccall;
			_tmp61_ = vala_ccode_identifier_new ("self");
			_tmp62_ = _tmp61_;
			vala_ccode_function_call_add_argument (_tmp60_, (ValaCCodeExpression*) _tmp62_);
			_vala_ccode_node_unref0 (_tmp62_);
			_tmp63_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp63_);
			_tmp64_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp65_ = _tmp64_;
			_tmp66_ = ccall;
			vala_ccode_function_add_expression (_tmp65_, (ValaCCodeExpression*) _tmp66_);
			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
			_vala_ccode_node_unref0 (ccall);
		}
	}
	_tmp67_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp68_ = ((ValaCCodeBaseModule*) self)->instance_finalize_context;
	_tmp69_ = _tmp68_->ccode;
	vala_ccode_file_add_function (_tmp67_, _tmp69_);
}


static ValaCCodeExpression* vala_gtype_module_real_get_param_spec_cexpression (ValaCCodeBaseModule* base, ValaProperty* prop) {
	ValaGTypeModule * self;
	ValaCCodeExpression* result = NULL;
	ValaTypeSymbol* cl = NULL;
	ValaProperty* _tmp0_;
	ValaSymbol* _tmp1_;
	ValaSymbol* _tmp2_;
	ValaTypeSymbol* _tmp3_;
	ValaCCodeIdentifier* prop_array = NULL;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	ValaCCodeIdentifier* _tmp8_;
	ValaCCodeIdentifier* _tmp9_;
	ValaCCodeIdentifier* prop_enum_value = NULL;
	ValaProperty* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	ValaCCodeIdentifier* _tmp15_;
	ValaCCodeIdentifier* _tmp16_;
	ValaCCodeElementAccess* _tmp17_;
	self = (ValaGTypeModule*) base;
	g_return_val_if_fail (prop != NULL, NULL);
	_tmp0_ = prop;
	_tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
	cl = _tmp3_;
	_tmp4_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strdup_printf ("%s_properties", _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = vala_ccode_identifier_new (_tmp7_);
	_tmp9_ = _tmp8_;
	_g_free0 (_tmp7_);
	_g_free0 (_tmp5_);
	prop_array = _tmp9_;
	_tmp10_ = prop;
	_tmp11_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp10_, NULL);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strdup_printf ("%s_PROPERTY", _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = vala_ccode_identifier_new (_tmp14_);
	_tmp16_ = _tmp15_;
	_g_free0 (_tmp14_);
	_g_free0 (_tmp12_);
	prop_enum_value = _tmp16_;
	_tmp17_ = vala_ccode_element_access_new ((ValaCCodeExpression*) prop_array, (ValaCCodeExpression*) prop_enum_value);
	result = (ValaCCodeExpression*) _tmp17_;
	_vala_ccode_node_unref0 (prop_enum_value);
	_vala_ccode_node_unref0 (prop_array);
	_vala_code_node_unref0 (cl);
	return result;
}


static ValaCCodeExpression* vala_gtype_module_real_get_param_spec (ValaCCodeBaseModule* base, ValaProperty* prop) {
	ValaGTypeModule * self;
	ValaCCodeExpression* result = NULL;
	ValaCCodeFunctionCall* cspec = NULL;
	ValaCCodeFunctionCall* _tmp0_;
	ValaCCodeFunctionCall* _tmp1_;
	ValaProperty* _tmp2_;
	ValaCCodeConstant* _tmp3_;
	ValaCCodeConstant* _tmp4_;
	ValaCCodeFunctionCall* _tmp5_;
	ValaProperty* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	ValaCCodeConstant* _tmp11_;
	ValaCCodeConstant* _tmp12_;
	ValaCCodeFunctionCall* _tmp13_;
	ValaProperty* _tmp14_;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	ValaCCodeConstant* _tmp19_;
	ValaCCodeConstant* _tmp20_;
	gboolean _tmp21_ = FALSE;
	ValaProperty* _tmp22_;
	ValaDataType* _tmp23_;
	ValaDataType* _tmp24_;
	ValaTypeSymbol* _tmp25_;
	ValaTypeSymbol* _tmp26_;
	gchar* pflags = NULL;
	gchar* _tmp434_;
	gboolean _tmp435_ = FALSE;
	ValaProperty* _tmp436_;
	ValaPropertyAccessor* _tmp437_;
	ValaPropertyAccessor* _tmp438_;
	gboolean _tmp446_ = FALSE;
	ValaProperty* _tmp447_;
	ValaPropertyAccessor* _tmp448_;
	ValaPropertyAccessor* _tmp449_;
	ValaProperty* _tmp471_;
	ValaVersionAttribute* _tmp472_;
	ValaVersionAttribute* _tmp473_;
	gboolean _tmp474_;
	gboolean _tmp475_;
	ValaCCodeFunctionCall* _tmp478_;
	const gchar* _tmp479_;
	ValaCCodeConstant* _tmp480_;
	ValaCCodeConstant* _tmp481_;
	ValaProperty* _tmp482_;
	ValaSymbol* _tmp483_;
	ValaSymbol* _tmp484_;
	self = (ValaGTypeModule*) base;
	g_return_val_if_fail (prop != NULL, NULL);
	_tmp0_ = vala_ccode_function_call_new (NULL);
	cspec = _tmp0_;
	_tmp1_ = cspec;
	_tmp2_ = prop;
	_tmp3_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, _tmp2_);
	_tmp4_ = _tmp3_;
	vala_ccode_function_call_add_argument (_tmp1_, (ValaCCodeExpression*) _tmp4_);
	_vala_ccode_node_unref0 (_tmp4_);
	_tmp5_ = cspec;
	_tmp6_ = prop;
	_tmp7_ = vala_property_get_nick (_tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = g_strdup_printf ("\"%s\"", _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = vala_ccode_constant_new (_tmp10_);
	_tmp12_ = _tmp11_;
	vala_ccode_function_call_add_argument (_tmp5_, (ValaCCodeExpression*) _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_g_free0 (_tmp10_);
	_tmp13_ = cspec;
	_tmp14_ = prop;
	_tmp15_ = vala_property_get_blurb (_tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = g_strdup_printf ("\"%s\"", _tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = vala_ccode_constant_new (_tmp18_);
	_tmp20_ = _tmp19_;
	vala_ccode_function_call_add_argument (_tmp13_, (ValaCCodeExpression*) _tmp20_);
	_vala_ccode_node_unref0 (_tmp20_);
	_g_free0 (_tmp18_);
	_tmp22_ = prop;
	_tmp23_ = vala_property_get_property_type (_tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = vala_data_type_get_data_type (_tmp24_);
	_tmp26_ = _tmp25_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_CLASS)) {
		_tmp21_ = TRUE;
	} else {
		ValaProperty* _tmp27_;
		ValaDataType* _tmp28_;
		ValaDataType* _tmp29_;
		ValaTypeSymbol* _tmp30_;
		ValaTypeSymbol* _tmp31_;
		_tmp27_ = prop;
		_tmp28_ = vala_property_get_property_type (_tmp27_);
		_tmp29_ = _tmp28_;
		_tmp30_ = vala_data_type_get_data_type (_tmp29_);
		_tmp31_ = _tmp30_;
		_tmp21_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp31_, VALA_TYPE_INTERFACE);
	}
	if (_tmp21_) {
		gchar* param_spec_name = NULL;
		ValaProperty* _tmp32_;
		ValaDataType* _tmp33_;
		ValaDataType* _tmp34_;
		ValaTypeSymbol* _tmp35_;
		ValaTypeSymbol* _tmp36_;
		gchar* _tmp37_;
		ValaCCodeFunctionCall* _tmp38_;
		const gchar* _tmp39_;
		ValaCCodeIdentifier* _tmp40_;
		ValaCCodeIdentifier* _tmp41_;
		const gchar* _tmp42_;
		_tmp32_ = prop;
		_tmp33_ = vala_property_get_property_type (_tmp32_);
		_tmp34_ = _tmp33_;
		_tmp35_ = vala_data_type_get_data_type (_tmp34_);
		_tmp36_ = _tmp35_;
		_tmp37_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) _tmp36_);
		param_spec_name = _tmp37_;
		_tmp38_ = cspec;
		_tmp39_ = param_spec_name;
		_tmp40_ = vala_ccode_identifier_new (_tmp39_);
		_tmp41_ = _tmp40_;
		vala_ccode_function_call_set_call (_tmp38_, (ValaCCodeExpression*) _tmp41_);
		_vala_ccode_node_unref0 (_tmp41_);
		_tmp42_ = param_spec_name;
		if (g_strcmp0 (_tmp42_, "g_param_spec_string") == 0) {
			ValaCCodeFunctionCall* _tmp43_;
			ValaCCodeConstant* _tmp44_;
			ValaCCodeConstant* _tmp45_;
			_tmp43_ = cspec;
			_tmp44_ = vala_ccode_constant_new ("NULL");
			_tmp45_ = _tmp44_;
			vala_ccode_function_call_add_argument (_tmp43_, (ValaCCodeExpression*) _tmp45_);
			_vala_ccode_node_unref0 (_tmp45_);
		} else {
			const gchar* _tmp46_;
			_tmp46_ = param_spec_name;
			if (g_strcmp0 (_tmp46_, "g_param_spec_variant") == 0) {
				ValaCCodeFunctionCall* _tmp47_;
				ValaCCodeConstant* _tmp48_;
				ValaCCodeConstant* _tmp49_;
				ValaCCodeFunctionCall* _tmp50_;
				ValaCCodeConstant* _tmp51_;
				ValaCCodeConstant* _tmp52_;
				_tmp47_ = cspec;
				_tmp48_ = vala_ccode_constant_new ("G_VARIANT_TYPE_ANY");
				_tmp49_ = _tmp48_;
				vala_ccode_function_call_add_argument (_tmp47_, (ValaCCodeExpression*) _tmp49_);
				_vala_ccode_node_unref0 (_tmp49_);
				_tmp50_ = cspec;
				_tmp51_ = vala_ccode_constant_new ("NULL");
				_tmp52_ = _tmp51_;
				vala_ccode_function_call_add_argument (_tmp50_, (ValaCCodeExpression*) _tmp52_);
				_vala_ccode_node_unref0 (_tmp52_);
			} else {
				ValaProperty* _tmp53_;
				ValaDataType* _tmp54_;
				ValaDataType* _tmp55_;
				ValaTypeSymbol* _tmp56_;
				ValaTypeSymbol* _tmp57_;
				gchar* _tmp58_;
				gchar* _tmp59_;
				gboolean _tmp60_;
				_tmp53_ = prop;
				_tmp54_ = vala_property_get_property_type (_tmp53_);
				_tmp55_ = _tmp54_;
				_tmp56_ = vala_data_type_get_data_type (_tmp55_);
				_tmp57_ = _tmp56_;
				_tmp58_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp57_);
				_tmp59_ = _tmp58_;
				_tmp60_ = g_strcmp0 (_tmp59_, "G_TYPE_POINTER") != 0;
				_g_free0 (_tmp59_);
				if (_tmp60_) {
					ValaCCodeFunctionCall* _tmp61_;
					ValaProperty* _tmp62_;
					ValaDataType* _tmp63_;
					ValaDataType* _tmp64_;
					ValaTypeSymbol* _tmp65_;
					ValaTypeSymbol* _tmp66_;
					gchar* _tmp67_;
					gchar* _tmp68_;
					ValaCCodeIdentifier* _tmp69_;
					ValaCCodeIdentifier* _tmp70_;
					_tmp61_ = cspec;
					_tmp62_ = prop;
					_tmp63_ = vala_property_get_property_type (_tmp62_);
					_tmp64_ = _tmp63_;
					_tmp65_ = vala_data_type_get_data_type (_tmp64_);
					_tmp66_ = _tmp65_;
					_tmp67_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp66_);
					_tmp68_ = _tmp67_;
					_tmp69_ = vala_ccode_identifier_new (_tmp68_);
					_tmp70_ = _tmp69_;
					vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp70_);
					_vala_ccode_node_unref0 (_tmp70_);
					_g_free0 (_tmp68_);
				}
			}
		}
		_g_free0 (param_spec_name);
	} else {
		ValaProperty* _tmp71_;
		ValaDataType* _tmp72_;
		ValaDataType* _tmp73_;
		ValaTypeSymbol* _tmp74_;
		ValaTypeSymbol* _tmp75_;
		_tmp71_ = prop;
		_tmp72_ = vala_property_get_property_type (_tmp71_);
		_tmp73_ = _tmp72_;
		_tmp74_ = vala_data_type_get_data_type (_tmp73_);
		_tmp75_ = _tmp74_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp75_, VALA_TYPE_ENUM)) {
			ValaEnum* e = NULL;
			ValaProperty* _tmp76_;
			ValaDataType* _tmp77_;
			ValaDataType* _tmp78_;
			ValaTypeSymbol* _tmp79_;
			ValaTypeSymbol* _tmp80_;
			ValaEnum* _tmp81_;
			ValaEnum* _tmp82_;
			gboolean _tmp83_;
			ValaProperty* _tmp120_;
			ValaExpression* _tmp121_;
			ValaExpression* _tmp122_;
			_tmp76_ = prop;
			_tmp77_ = vala_property_get_property_type (_tmp76_);
			_tmp78_ = _tmp77_;
			_tmp79_ = vala_data_type_get_data_type (_tmp78_);
			_tmp80_ = _tmp79_;
			_tmp81_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp80_, VALA_TYPE_ENUM) ? ((ValaEnum*) _tmp80_) : NULL);
			e = _tmp81_;
			_tmp82_ = e;
			_tmp83_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp82_);
			if (_tmp83_) {
				ValaEnum* _tmp84_;
				gboolean _tmp85_;
				gboolean _tmp86_;
				ValaCCodeFunctionCall* _tmp93_;
				ValaEnum* _tmp94_;
				gchar* _tmp95_;
				gchar* _tmp96_;
				ValaCCodeIdentifier* _tmp97_;
				ValaCCodeIdentifier* _tmp98_;
				_tmp84_ = e;
				_tmp85_ = vala_enum_get_is_flags (_tmp84_);
				_tmp86_ = _tmp85_;
				if (_tmp86_) {
					ValaCCodeFunctionCall* _tmp87_;
					ValaCCodeIdentifier* _tmp88_;
					ValaCCodeIdentifier* _tmp89_;
					_tmp87_ = cspec;
					_tmp88_ = vala_ccode_identifier_new ("g_param_spec_flags");
					_tmp89_ = _tmp88_;
					vala_ccode_function_call_set_call (_tmp87_, (ValaCCodeExpression*) _tmp89_);
					_vala_ccode_node_unref0 (_tmp89_);
				} else {
					ValaCCodeFunctionCall* _tmp90_;
					ValaCCodeIdentifier* _tmp91_;
					ValaCCodeIdentifier* _tmp92_;
					_tmp90_ = cspec;
					_tmp91_ = vala_ccode_identifier_new ("g_param_spec_enum");
					_tmp92_ = _tmp91_;
					vala_ccode_function_call_set_call (_tmp90_, (ValaCCodeExpression*) _tmp92_);
					_vala_ccode_node_unref0 (_tmp92_);
				}
				_tmp93_ = cspec;
				_tmp94_ = e;
				_tmp95_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp94_);
				_tmp96_ = _tmp95_;
				_tmp97_ = vala_ccode_identifier_new (_tmp96_);
				_tmp98_ = _tmp97_;
				vala_ccode_function_call_add_argument (_tmp93_, (ValaCCodeExpression*) _tmp98_);
				_vala_ccode_node_unref0 (_tmp98_);
				_g_free0 (_tmp96_);
			} else {
				ValaEnum* _tmp99_;
				gboolean _tmp100_;
				gboolean _tmp101_;
				_tmp99_ = e;
				_tmp100_ = vala_enum_get_is_flags (_tmp99_);
				_tmp101_ = _tmp100_;
				if (_tmp101_) {
					ValaCCodeFunctionCall* _tmp102_;
					ValaCCodeIdentifier* _tmp103_;
					ValaCCodeIdentifier* _tmp104_;
					ValaCCodeFunctionCall* _tmp105_;
					ValaCCodeConstant* _tmp106_;
					ValaCCodeConstant* _tmp107_;
					ValaCCodeFunctionCall* _tmp108_;
					ValaCCodeConstant* _tmp109_;
					ValaCCodeConstant* _tmp110_;
					_tmp102_ = cspec;
					_tmp103_ = vala_ccode_identifier_new ("g_param_spec_uint");
					_tmp104_ = _tmp103_;
					vala_ccode_function_call_set_call (_tmp102_, (ValaCCodeExpression*) _tmp104_);
					_vala_ccode_node_unref0 (_tmp104_);
					_tmp105_ = cspec;
					_tmp106_ = vala_ccode_constant_new ("0");
					_tmp107_ = _tmp106_;
					vala_ccode_function_call_add_argument (_tmp105_, (ValaCCodeExpression*) _tmp107_);
					_vala_ccode_node_unref0 (_tmp107_);
					_tmp108_ = cspec;
					_tmp109_ = vala_ccode_constant_new ("G_MAXUINT");
					_tmp110_ = _tmp109_;
					vala_ccode_function_call_add_argument (_tmp108_, (ValaCCodeExpression*) _tmp110_);
					_vala_ccode_node_unref0 (_tmp110_);
				} else {
					ValaCCodeFunctionCall* _tmp111_;
					ValaCCodeIdentifier* _tmp112_;
					ValaCCodeIdentifier* _tmp113_;
					ValaCCodeFunctionCall* _tmp114_;
					ValaCCodeConstant* _tmp115_;
					ValaCCodeConstant* _tmp116_;
					ValaCCodeFunctionCall* _tmp117_;
					ValaCCodeConstant* _tmp118_;
					ValaCCodeConstant* _tmp119_;
					_tmp111_ = cspec;
					_tmp112_ = vala_ccode_identifier_new ("g_param_spec_int");
					_tmp113_ = _tmp112_;
					vala_ccode_function_call_set_call (_tmp111_, (ValaCCodeExpression*) _tmp113_);
					_vala_ccode_node_unref0 (_tmp113_);
					_tmp114_ = cspec;
					_tmp115_ = vala_ccode_constant_new ("G_MININT");
					_tmp116_ = _tmp115_;
					vala_ccode_function_call_add_argument (_tmp114_, (ValaCCodeExpression*) _tmp116_);
					_vala_ccode_node_unref0 (_tmp116_);
					_tmp117_ = cspec;
					_tmp118_ = vala_ccode_constant_new ("G_MAXINT");
					_tmp119_ = _tmp118_;
					vala_ccode_function_call_add_argument (_tmp117_, (ValaCCodeExpression*) _tmp119_);
					_vala_ccode_node_unref0 (_tmp119_);
				}
			}
			_tmp120_ = prop;
			_tmp121_ = vala_property_get_initializer (_tmp120_);
			_tmp122_ = _tmp121_;
			if (_tmp122_ != NULL) {
				ValaCCodeFunctionCall* _tmp123_;
				ValaProperty* _tmp124_;
				ValaExpression* _tmp125_;
				ValaExpression* _tmp126_;
				ValaCCodeExpression* _tmp127_;
				ValaCCodeExpression* _tmp128_;
				_tmp123_ = cspec;
				_tmp124_ = prop;
				_tmp125_ = vala_property_get_initializer (_tmp124_);
				_tmp126_ = _tmp125_;
				_tmp127_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp126_);
				_tmp128_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp127_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
				vala_ccode_function_call_add_argument (_tmp123_, _tmp128_);
				_vala_ccode_node_unref0 (_tmp128_);
			} else {
				ValaCCodeFunctionCall* _tmp129_;
				ValaProperty* _tmp130_;
				ValaDataType* _tmp131_;
				ValaDataType* _tmp132_;
				ValaTypeSymbol* _tmp133_;
				ValaTypeSymbol* _tmp134_;
				gchar* _tmp135_;
				gchar* _tmp136_;
				ValaCCodeConstant* _tmp137_;
				ValaCCodeConstant* _tmp138_;
				_tmp129_ = cspec;
				_tmp130_ = prop;
				_tmp131_ = vala_property_get_property_type (_tmp130_);
				_tmp132_ = _tmp131_;
				_tmp133_ = vala_data_type_get_data_type (_tmp132_);
				_tmp134_ = _tmp133_;
				_tmp135_ = vala_get_ccode_default_value (_tmp134_);
				_tmp136_ = _tmp135_;
				_tmp137_ = vala_ccode_constant_new (_tmp136_);
				_tmp138_ = _tmp137_;
				vala_ccode_function_call_add_argument (_tmp129_, (ValaCCodeExpression*) _tmp138_);
				_vala_ccode_node_unref0 (_tmp138_);
				_g_free0 (_tmp136_);
			}
			_vala_code_node_unref0 (e);
		} else {
			ValaProperty* _tmp139_;
			ValaDataType* _tmp140_;
			ValaDataType* _tmp141_;
			ValaTypeSymbol* _tmp142_;
			ValaTypeSymbol* _tmp143_;
			_tmp139_ = prop;
			_tmp140_ = vala_property_get_property_type (_tmp139_);
			_tmp141_ = _tmp140_;
			_tmp142_ = vala_data_type_get_data_type (_tmp141_);
			_tmp143_ = _tmp142_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp143_, VALA_TYPE_STRUCT)) {
				ValaStruct* st = NULL;
				ValaProperty* _tmp144_;
				ValaDataType* _tmp145_;
				ValaDataType* _tmp146_;
				ValaTypeSymbol* _tmp147_;
				ValaTypeSymbol* _tmp148_;
				ValaStruct* _tmp149_;
				gchar* type_id = NULL;
				ValaStruct* _tmp150_;
				gchar* _tmp151_;
				const gchar* _tmp152_;
				_tmp144_ = prop;
				_tmp145_ = vala_property_get_property_type (_tmp144_);
				_tmp146_ = _tmp145_;
				_tmp147_ = vala_data_type_get_data_type (_tmp146_);
				_tmp148_ = _tmp147_;
				_tmp149_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp148_, VALA_TYPE_STRUCT, ValaStruct));
				st = _tmp149_;
				_tmp150_ = st;
				_tmp151_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp150_);
				type_id = _tmp151_;
				_tmp152_ = type_id;
				if (g_strcmp0 (_tmp152_, "G_TYPE_INT") == 0) {
					ValaCCodeFunctionCall* _tmp153_;
					ValaCCodeIdentifier* _tmp154_;
					ValaCCodeIdentifier* _tmp155_;
					ValaCCodeFunctionCall* _tmp156_;
					ValaCCodeConstant* _tmp157_;
					ValaCCodeConstant* _tmp158_;
					ValaCCodeFunctionCall* _tmp159_;
					ValaCCodeConstant* _tmp160_;
					ValaCCodeConstant* _tmp161_;
					ValaProperty* _tmp162_;
					ValaExpression* _tmp163_;
					ValaExpression* _tmp164_;
					_tmp153_ = cspec;
					_tmp154_ = vala_ccode_identifier_new ("g_param_spec_int");
					_tmp155_ = _tmp154_;
					vala_ccode_function_call_set_call (_tmp153_, (ValaCCodeExpression*) _tmp155_);
					_vala_ccode_node_unref0 (_tmp155_);
					_tmp156_ = cspec;
					_tmp157_ = vala_ccode_constant_new ("G_MININT");
					_tmp158_ = _tmp157_;
					vala_ccode_function_call_add_argument (_tmp156_, (ValaCCodeExpression*) _tmp158_);
					_vala_ccode_node_unref0 (_tmp158_);
					_tmp159_ = cspec;
					_tmp160_ = vala_ccode_constant_new ("G_MAXINT");
					_tmp161_ = _tmp160_;
					vala_ccode_function_call_add_argument (_tmp159_, (ValaCCodeExpression*) _tmp161_);
					_vala_ccode_node_unref0 (_tmp161_);
					_tmp162_ = prop;
					_tmp163_ = vala_property_get_initializer (_tmp162_);
					_tmp164_ = _tmp163_;
					if (_tmp164_ != NULL) {
						ValaCCodeFunctionCall* _tmp165_;
						ValaProperty* _tmp166_;
						ValaExpression* _tmp167_;
						ValaExpression* _tmp168_;
						ValaCCodeExpression* _tmp169_;
						ValaCCodeExpression* _tmp170_;
						_tmp165_ = cspec;
						_tmp166_ = prop;
						_tmp167_ = vala_property_get_initializer (_tmp166_);
						_tmp168_ = _tmp167_;
						_tmp169_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp168_);
						_tmp170_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp169_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
						vala_ccode_function_call_add_argument (_tmp165_, _tmp170_);
						_vala_ccode_node_unref0 (_tmp170_);
					} else {
						ValaCCodeFunctionCall* _tmp171_;
						ValaCCodeConstant* _tmp172_;
						ValaCCodeConstant* _tmp173_;
						_tmp171_ = cspec;
						_tmp172_ = vala_ccode_constant_new ("0");
						_tmp173_ = _tmp172_;
						vala_ccode_function_call_add_argument (_tmp171_, (ValaCCodeExpression*) _tmp173_);
						_vala_ccode_node_unref0 (_tmp173_);
					}
				} else {
					const gchar* _tmp174_;
					_tmp174_ = type_id;
					if (g_strcmp0 (_tmp174_, "G_TYPE_UINT") == 0) {
						ValaCCodeFunctionCall* _tmp175_;
						ValaCCodeIdentifier* _tmp176_;
						ValaCCodeIdentifier* _tmp177_;
						ValaCCodeFunctionCall* _tmp178_;
						ValaCCodeConstant* _tmp179_;
						ValaCCodeConstant* _tmp180_;
						ValaCCodeFunctionCall* _tmp181_;
						ValaCCodeConstant* _tmp182_;
						ValaCCodeConstant* _tmp183_;
						ValaProperty* _tmp184_;
						ValaExpression* _tmp185_;
						ValaExpression* _tmp186_;
						_tmp175_ = cspec;
						_tmp176_ = vala_ccode_identifier_new ("g_param_spec_uint");
						_tmp177_ = _tmp176_;
						vala_ccode_function_call_set_call (_tmp175_, (ValaCCodeExpression*) _tmp177_);
						_vala_ccode_node_unref0 (_tmp177_);
						_tmp178_ = cspec;
						_tmp179_ = vala_ccode_constant_new ("0");
						_tmp180_ = _tmp179_;
						vala_ccode_function_call_add_argument (_tmp178_, (ValaCCodeExpression*) _tmp180_);
						_vala_ccode_node_unref0 (_tmp180_);
						_tmp181_ = cspec;
						_tmp182_ = vala_ccode_constant_new ("G_MAXUINT");
						_tmp183_ = _tmp182_;
						vala_ccode_function_call_add_argument (_tmp181_, (ValaCCodeExpression*) _tmp183_);
						_vala_ccode_node_unref0 (_tmp183_);
						_tmp184_ = prop;
						_tmp185_ = vala_property_get_initializer (_tmp184_);
						_tmp186_ = _tmp185_;
						if (_tmp186_ != NULL) {
							ValaCCodeFunctionCall* _tmp187_;
							ValaProperty* _tmp188_;
							ValaExpression* _tmp189_;
							ValaExpression* _tmp190_;
							ValaCCodeExpression* _tmp191_;
							ValaCCodeExpression* _tmp192_;
							_tmp187_ = cspec;
							_tmp188_ = prop;
							_tmp189_ = vala_property_get_initializer (_tmp188_);
							_tmp190_ = _tmp189_;
							_tmp191_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp190_);
							_tmp192_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp191_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
							vala_ccode_function_call_add_argument (_tmp187_, _tmp192_);
							_vala_ccode_node_unref0 (_tmp192_);
						} else {
							ValaCCodeFunctionCall* _tmp193_;
							ValaCCodeConstant* _tmp194_;
							ValaCCodeConstant* _tmp195_;
							_tmp193_ = cspec;
							_tmp194_ = vala_ccode_constant_new ("0U");
							_tmp195_ = _tmp194_;
							vala_ccode_function_call_add_argument (_tmp193_, (ValaCCodeExpression*) _tmp195_);
							_vala_ccode_node_unref0 (_tmp195_);
						}
					} else {
						const gchar* _tmp196_;
						_tmp196_ = type_id;
						if (g_strcmp0 (_tmp196_, "G_TYPE_INT64") == 0) {
							ValaCCodeFunctionCall* _tmp197_;
							ValaCCodeIdentifier* _tmp198_;
							ValaCCodeIdentifier* _tmp199_;
							ValaCCodeFunctionCall* _tmp200_;
							ValaCCodeConstant* _tmp201_;
							ValaCCodeConstant* _tmp202_;
							ValaCCodeFunctionCall* _tmp203_;
							ValaCCodeConstant* _tmp204_;
							ValaCCodeConstant* _tmp205_;
							ValaProperty* _tmp206_;
							ValaExpression* _tmp207_;
							ValaExpression* _tmp208_;
							_tmp197_ = cspec;
							_tmp198_ = vala_ccode_identifier_new ("g_param_spec_int64");
							_tmp199_ = _tmp198_;
							vala_ccode_function_call_set_call (_tmp197_, (ValaCCodeExpression*) _tmp199_);
							_vala_ccode_node_unref0 (_tmp199_);
							_tmp200_ = cspec;
							_tmp201_ = vala_ccode_constant_new ("G_MININT64");
							_tmp202_ = _tmp201_;
							vala_ccode_function_call_add_argument (_tmp200_, (ValaCCodeExpression*) _tmp202_);
							_vala_ccode_node_unref0 (_tmp202_);
							_tmp203_ = cspec;
							_tmp204_ = vala_ccode_constant_new ("G_MAXINT64");
							_tmp205_ = _tmp204_;
							vala_ccode_function_call_add_argument (_tmp203_, (ValaCCodeExpression*) _tmp205_);
							_vala_ccode_node_unref0 (_tmp205_);
							_tmp206_ = prop;
							_tmp207_ = vala_property_get_initializer (_tmp206_);
							_tmp208_ = _tmp207_;
							if (_tmp208_ != NULL) {
								ValaCCodeFunctionCall* _tmp209_;
								ValaProperty* _tmp210_;
								ValaExpression* _tmp211_;
								ValaExpression* _tmp212_;
								ValaCCodeExpression* _tmp213_;
								ValaCCodeExpression* _tmp214_;
								_tmp209_ = cspec;
								_tmp210_ = prop;
								_tmp211_ = vala_property_get_initializer (_tmp210_);
								_tmp212_ = _tmp211_;
								_tmp213_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp212_);
								_tmp214_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp213_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
								vala_ccode_function_call_add_argument (_tmp209_, _tmp214_);
								_vala_ccode_node_unref0 (_tmp214_);
							} else {
								ValaCCodeFunctionCall* _tmp215_;
								ValaCCodeConstant* _tmp216_;
								ValaCCodeConstant* _tmp217_;
								_tmp215_ = cspec;
								_tmp216_ = vala_ccode_constant_new ("0");
								_tmp217_ = _tmp216_;
								vala_ccode_function_call_add_argument (_tmp215_, (ValaCCodeExpression*) _tmp217_);
								_vala_ccode_node_unref0 (_tmp217_);
							}
						} else {
							const gchar* _tmp218_;
							_tmp218_ = type_id;
							if (g_strcmp0 (_tmp218_, "G_TYPE_UINT64") == 0) {
								ValaCCodeFunctionCall* _tmp219_;
								ValaCCodeIdentifier* _tmp220_;
								ValaCCodeIdentifier* _tmp221_;
								ValaCCodeFunctionCall* _tmp222_;
								ValaCCodeConstant* _tmp223_;
								ValaCCodeConstant* _tmp224_;
								ValaCCodeFunctionCall* _tmp225_;
								ValaCCodeConstant* _tmp226_;
								ValaCCodeConstant* _tmp227_;
								ValaProperty* _tmp228_;
								ValaExpression* _tmp229_;
								ValaExpression* _tmp230_;
								_tmp219_ = cspec;
								_tmp220_ = vala_ccode_identifier_new ("g_param_spec_uint64");
								_tmp221_ = _tmp220_;
								vala_ccode_function_call_set_call (_tmp219_, (ValaCCodeExpression*) _tmp221_);
								_vala_ccode_node_unref0 (_tmp221_);
								_tmp222_ = cspec;
								_tmp223_ = vala_ccode_constant_new ("0");
								_tmp224_ = _tmp223_;
								vala_ccode_function_call_add_argument (_tmp222_, (ValaCCodeExpression*) _tmp224_);
								_vala_ccode_node_unref0 (_tmp224_);
								_tmp225_ = cspec;
								_tmp226_ = vala_ccode_constant_new ("G_MAXUINT64");
								_tmp227_ = _tmp226_;
								vala_ccode_function_call_add_argument (_tmp225_, (ValaCCodeExpression*) _tmp227_);
								_vala_ccode_node_unref0 (_tmp227_);
								_tmp228_ = prop;
								_tmp229_ = vala_property_get_initializer (_tmp228_);
								_tmp230_ = _tmp229_;
								if (_tmp230_ != NULL) {
									ValaCCodeFunctionCall* _tmp231_;
									ValaProperty* _tmp232_;
									ValaExpression* _tmp233_;
									ValaExpression* _tmp234_;
									ValaCCodeExpression* _tmp235_;
									ValaCCodeExpression* _tmp236_;
									_tmp231_ = cspec;
									_tmp232_ = prop;
									_tmp233_ = vala_property_get_initializer (_tmp232_);
									_tmp234_ = _tmp233_;
									_tmp235_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp234_);
									_tmp236_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp235_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
									vala_ccode_function_call_add_argument (_tmp231_, _tmp236_);
									_vala_ccode_node_unref0 (_tmp236_);
								} else {
									ValaCCodeFunctionCall* _tmp237_;
									ValaCCodeConstant* _tmp238_;
									ValaCCodeConstant* _tmp239_;
									_tmp237_ = cspec;
									_tmp238_ = vala_ccode_constant_new ("0U");
									_tmp239_ = _tmp238_;
									vala_ccode_function_call_add_argument (_tmp237_, (ValaCCodeExpression*) _tmp239_);
									_vala_ccode_node_unref0 (_tmp239_);
								}
							} else {
								const gchar* _tmp240_;
								_tmp240_ = type_id;
								if (g_strcmp0 (_tmp240_, "G_TYPE_LONG") == 0) {
									ValaCCodeFunctionCall* _tmp241_;
									ValaCCodeIdentifier* _tmp242_;
									ValaCCodeIdentifier* _tmp243_;
									ValaCCodeFunctionCall* _tmp244_;
									ValaCCodeConstant* _tmp245_;
									ValaCCodeConstant* _tmp246_;
									ValaCCodeFunctionCall* _tmp247_;
									ValaCCodeConstant* _tmp248_;
									ValaCCodeConstant* _tmp249_;
									ValaProperty* _tmp250_;
									ValaExpression* _tmp251_;
									ValaExpression* _tmp252_;
									_tmp241_ = cspec;
									_tmp242_ = vala_ccode_identifier_new ("g_param_spec_long");
									_tmp243_ = _tmp242_;
									vala_ccode_function_call_set_call (_tmp241_, (ValaCCodeExpression*) _tmp243_);
									_vala_ccode_node_unref0 (_tmp243_);
									_tmp244_ = cspec;
									_tmp245_ = vala_ccode_constant_new ("G_MINLONG");
									_tmp246_ = _tmp245_;
									vala_ccode_function_call_add_argument (_tmp244_, (ValaCCodeExpression*) _tmp246_);
									_vala_ccode_node_unref0 (_tmp246_);
									_tmp247_ = cspec;
									_tmp248_ = vala_ccode_constant_new ("G_MAXLONG");
									_tmp249_ = _tmp248_;
									vala_ccode_function_call_add_argument (_tmp247_, (ValaCCodeExpression*) _tmp249_);
									_vala_ccode_node_unref0 (_tmp249_);
									_tmp250_ = prop;
									_tmp251_ = vala_property_get_initializer (_tmp250_);
									_tmp252_ = _tmp251_;
									if (_tmp252_ != NULL) {
										ValaCCodeFunctionCall* _tmp253_;
										ValaProperty* _tmp254_;
										ValaExpression* _tmp255_;
										ValaExpression* _tmp256_;
										ValaCCodeExpression* _tmp257_;
										ValaCCodeExpression* _tmp258_;
										_tmp253_ = cspec;
										_tmp254_ = prop;
										_tmp255_ = vala_property_get_initializer (_tmp254_);
										_tmp256_ = _tmp255_;
										_tmp257_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp256_);
										_tmp258_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp257_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
										vala_ccode_function_call_add_argument (_tmp253_, _tmp258_);
										_vala_ccode_node_unref0 (_tmp258_);
									} else {
										ValaCCodeFunctionCall* _tmp259_;
										ValaCCodeConstant* _tmp260_;
										ValaCCodeConstant* _tmp261_;
										_tmp259_ = cspec;
										_tmp260_ = vala_ccode_constant_new ("0L");
										_tmp261_ = _tmp260_;
										vala_ccode_function_call_add_argument (_tmp259_, (ValaCCodeExpression*) _tmp261_);
										_vala_ccode_node_unref0 (_tmp261_);
									}
								} else {
									const gchar* _tmp262_;
									_tmp262_ = type_id;
									if (g_strcmp0 (_tmp262_, "G_TYPE_ULONG") == 0) {
										ValaCCodeFunctionCall* _tmp263_;
										ValaCCodeIdentifier* _tmp264_;
										ValaCCodeIdentifier* _tmp265_;
										ValaCCodeFunctionCall* _tmp266_;
										ValaCCodeConstant* _tmp267_;
										ValaCCodeConstant* _tmp268_;
										ValaCCodeFunctionCall* _tmp269_;
										ValaCCodeConstant* _tmp270_;
										ValaCCodeConstant* _tmp271_;
										ValaProperty* _tmp272_;
										ValaExpression* _tmp273_;
										ValaExpression* _tmp274_;
										_tmp263_ = cspec;
										_tmp264_ = vala_ccode_identifier_new ("g_param_spec_ulong");
										_tmp265_ = _tmp264_;
										vala_ccode_function_call_set_call (_tmp263_, (ValaCCodeExpression*) _tmp265_);
										_vala_ccode_node_unref0 (_tmp265_);
										_tmp266_ = cspec;
										_tmp267_ = vala_ccode_constant_new ("0");
										_tmp268_ = _tmp267_;
										vala_ccode_function_call_add_argument (_tmp266_, (ValaCCodeExpression*) _tmp268_);
										_vala_ccode_node_unref0 (_tmp268_);
										_tmp269_ = cspec;
										_tmp270_ = vala_ccode_constant_new ("G_MAXULONG");
										_tmp271_ = _tmp270_;
										vala_ccode_function_call_add_argument (_tmp269_, (ValaCCodeExpression*) _tmp271_);
										_vala_ccode_node_unref0 (_tmp271_);
										_tmp272_ = prop;
										_tmp273_ = vala_property_get_initializer (_tmp272_);
										_tmp274_ = _tmp273_;
										if (_tmp274_ != NULL) {
											ValaCCodeFunctionCall* _tmp275_;
											ValaProperty* _tmp276_;
											ValaExpression* _tmp277_;
											ValaExpression* _tmp278_;
											ValaCCodeExpression* _tmp279_;
											ValaCCodeExpression* _tmp280_;
											_tmp275_ = cspec;
											_tmp276_ = prop;
											_tmp277_ = vala_property_get_initializer (_tmp276_);
											_tmp278_ = _tmp277_;
											_tmp279_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp278_);
											_tmp280_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp279_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
											vala_ccode_function_call_add_argument (_tmp275_, _tmp280_);
											_vala_ccode_node_unref0 (_tmp280_);
										} else {
											ValaCCodeFunctionCall* _tmp281_;
											ValaCCodeConstant* _tmp282_;
											ValaCCodeConstant* _tmp283_;
											_tmp281_ = cspec;
											_tmp282_ = vala_ccode_constant_new ("0UL");
											_tmp283_ = _tmp282_;
											vala_ccode_function_call_add_argument (_tmp281_, (ValaCCodeExpression*) _tmp283_);
											_vala_ccode_node_unref0 (_tmp283_);
										}
									} else {
										const gchar* _tmp284_;
										_tmp284_ = type_id;
										if (g_strcmp0 (_tmp284_, "G_TYPE_BOOLEAN") == 0) {
											ValaCCodeFunctionCall* _tmp285_;
											ValaCCodeIdentifier* _tmp286_;
											ValaCCodeIdentifier* _tmp287_;
											ValaProperty* _tmp288_;
											ValaExpression* _tmp289_;
											ValaExpression* _tmp290_;
											_tmp285_ = cspec;
											_tmp286_ = vala_ccode_identifier_new ("g_param_spec_boolean");
											_tmp287_ = _tmp286_;
											vala_ccode_function_call_set_call (_tmp285_, (ValaCCodeExpression*) _tmp287_);
											_vala_ccode_node_unref0 (_tmp287_);
											_tmp288_ = prop;
											_tmp289_ = vala_property_get_initializer (_tmp288_);
											_tmp290_ = _tmp289_;
											if (_tmp290_ != NULL) {
												ValaCCodeFunctionCall* _tmp291_;
												ValaProperty* _tmp292_;
												ValaExpression* _tmp293_;
												ValaExpression* _tmp294_;
												ValaCCodeExpression* _tmp295_;
												ValaCCodeExpression* _tmp296_;
												_tmp291_ = cspec;
												_tmp292_ = prop;
												_tmp293_ = vala_property_get_initializer (_tmp292_);
												_tmp294_ = _tmp293_;
												_tmp295_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp294_);
												_tmp296_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp295_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
												vala_ccode_function_call_add_argument (_tmp291_, _tmp296_);
												_vala_ccode_node_unref0 (_tmp296_);
											} else {
												ValaCCodeFunctionCall* _tmp297_;
												ValaCCodeConstant* _tmp298_;
												ValaCCodeConstant* _tmp299_;
												_tmp297_ = cspec;
												_tmp298_ = vala_ccode_constant_new ("FALSE");
												_tmp299_ = _tmp298_;
												vala_ccode_function_call_add_argument (_tmp297_, (ValaCCodeExpression*) _tmp299_);
												_vala_ccode_node_unref0 (_tmp299_);
											}
										} else {
											const gchar* _tmp300_;
											_tmp300_ = type_id;
											if (g_strcmp0 (_tmp300_, "G_TYPE_CHAR") == 0) {
												ValaCCodeFunctionCall* _tmp301_;
												ValaCCodeIdentifier* _tmp302_;
												ValaCCodeIdentifier* _tmp303_;
												ValaCCodeFunctionCall* _tmp304_;
												ValaCCodeConstant* _tmp305_;
												ValaCCodeConstant* _tmp306_;
												ValaCCodeFunctionCall* _tmp307_;
												ValaCCodeConstant* _tmp308_;
												ValaCCodeConstant* _tmp309_;
												ValaProperty* _tmp310_;
												ValaExpression* _tmp311_;
												ValaExpression* _tmp312_;
												_tmp301_ = cspec;
												_tmp302_ = vala_ccode_identifier_new ("g_param_spec_char");
												_tmp303_ = _tmp302_;
												vala_ccode_function_call_set_call (_tmp301_, (ValaCCodeExpression*) _tmp303_);
												_vala_ccode_node_unref0 (_tmp303_);
												_tmp304_ = cspec;
												_tmp305_ = vala_ccode_constant_new ("G_MININT8");
												_tmp306_ = _tmp305_;
												vala_ccode_function_call_add_argument (_tmp304_, (ValaCCodeExpression*) _tmp306_);
												_vala_ccode_node_unref0 (_tmp306_);
												_tmp307_ = cspec;
												_tmp308_ = vala_ccode_constant_new ("G_MAXINT8");
												_tmp309_ = _tmp308_;
												vala_ccode_function_call_add_argument (_tmp307_, (ValaCCodeExpression*) _tmp309_);
												_vala_ccode_node_unref0 (_tmp309_);
												_tmp310_ = prop;
												_tmp311_ = vala_property_get_initializer (_tmp310_);
												_tmp312_ = _tmp311_;
												if (_tmp312_ != NULL) {
													ValaCCodeFunctionCall* _tmp313_;
													ValaProperty* _tmp314_;
													ValaExpression* _tmp315_;
													ValaExpression* _tmp316_;
													ValaCCodeExpression* _tmp317_;
													ValaCCodeExpression* _tmp318_;
													_tmp313_ = cspec;
													_tmp314_ = prop;
													_tmp315_ = vala_property_get_initializer (_tmp314_);
													_tmp316_ = _tmp315_;
													_tmp317_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp316_);
													_tmp318_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp317_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
													vala_ccode_function_call_add_argument (_tmp313_, _tmp318_);
													_vala_ccode_node_unref0 (_tmp318_);
												} else {
													ValaCCodeFunctionCall* _tmp319_;
													ValaCCodeConstant* _tmp320_;
													ValaCCodeConstant* _tmp321_;
													_tmp319_ = cspec;
													_tmp320_ = vala_ccode_constant_new ("0");
													_tmp321_ = _tmp320_;
													vala_ccode_function_call_add_argument (_tmp319_, (ValaCCodeExpression*) _tmp321_);
													_vala_ccode_node_unref0 (_tmp321_);
												}
											} else {
												const gchar* _tmp322_;
												_tmp322_ = type_id;
												if (g_strcmp0 (_tmp322_, "G_TYPE_UCHAR") == 0) {
													ValaCCodeFunctionCall* _tmp323_;
													ValaCCodeIdentifier* _tmp324_;
													ValaCCodeIdentifier* _tmp325_;
													ValaCCodeFunctionCall* _tmp326_;
													ValaCCodeConstant* _tmp327_;
													ValaCCodeConstant* _tmp328_;
													ValaCCodeFunctionCall* _tmp329_;
													ValaCCodeConstant* _tmp330_;
													ValaCCodeConstant* _tmp331_;
													ValaProperty* _tmp332_;
													ValaExpression* _tmp333_;
													ValaExpression* _tmp334_;
													_tmp323_ = cspec;
													_tmp324_ = vala_ccode_identifier_new ("g_param_spec_uchar");
													_tmp325_ = _tmp324_;
													vala_ccode_function_call_set_call (_tmp323_, (ValaCCodeExpression*) _tmp325_);
													_vala_ccode_node_unref0 (_tmp325_);
													_tmp326_ = cspec;
													_tmp327_ = vala_ccode_constant_new ("0");
													_tmp328_ = _tmp327_;
													vala_ccode_function_call_add_argument (_tmp326_, (ValaCCodeExpression*) _tmp328_);
													_vala_ccode_node_unref0 (_tmp328_);
													_tmp329_ = cspec;
													_tmp330_ = vala_ccode_constant_new ("G_MAXUINT8");
													_tmp331_ = _tmp330_;
													vala_ccode_function_call_add_argument (_tmp329_, (ValaCCodeExpression*) _tmp331_);
													_vala_ccode_node_unref0 (_tmp331_);
													_tmp332_ = prop;
													_tmp333_ = vala_property_get_initializer (_tmp332_);
													_tmp334_ = _tmp333_;
													if (_tmp334_ != NULL) {
														ValaCCodeFunctionCall* _tmp335_;
														ValaProperty* _tmp336_;
														ValaExpression* _tmp337_;
														ValaExpression* _tmp338_;
														ValaCCodeExpression* _tmp339_;
														ValaCCodeExpression* _tmp340_;
														_tmp335_ = cspec;
														_tmp336_ = prop;
														_tmp337_ = vala_property_get_initializer (_tmp336_);
														_tmp338_ = _tmp337_;
														_tmp339_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp338_);
														_tmp340_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp339_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
														vala_ccode_function_call_add_argument (_tmp335_, _tmp340_);
														_vala_ccode_node_unref0 (_tmp340_);
													} else {
														ValaCCodeFunctionCall* _tmp341_;
														ValaCCodeConstant* _tmp342_;
														ValaCCodeConstant* _tmp343_;
														_tmp341_ = cspec;
														_tmp342_ = vala_ccode_constant_new ("0");
														_tmp343_ = _tmp342_;
														vala_ccode_function_call_add_argument (_tmp341_, (ValaCCodeExpression*) _tmp343_);
														_vala_ccode_node_unref0 (_tmp343_);
													}
												} else {
													const gchar* _tmp344_;
													_tmp344_ = type_id;
													if (g_strcmp0 (_tmp344_, "G_TYPE_FLOAT") == 0) {
														ValaCCodeFunctionCall* _tmp345_;
														ValaCCodeIdentifier* _tmp346_;
														ValaCCodeIdentifier* _tmp347_;
														ValaCCodeFunctionCall* _tmp348_;
														ValaCCodeConstant* _tmp349_;
														ValaCCodeConstant* _tmp350_;
														ValaCCodeFunctionCall* _tmp351_;
														ValaCCodeConstant* _tmp352_;
														ValaCCodeConstant* _tmp353_;
														ValaProperty* _tmp354_;
														ValaExpression* _tmp355_;
														ValaExpression* _tmp356_;
														_tmp345_ = cspec;
														_tmp346_ = vala_ccode_identifier_new ("g_param_spec_float");
														_tmp347_ = _tmp346_;
														vala_ccode_function_call_set_call (_tmp345_, (ValaCCodeExpression*) _tmp347_);
														_vala_ccode_node_unref0 (_tmp347_);
														_tmp348_ = cspec;
														_tmp349_ = vala_ccode_constant_new ("-G_MAXFLOAT");
														_tmp350_ = _tmp349_;
														vala_ccode_function_call_add_argument (_tmp348_, (ValaCCodeExpression*) _tmp350_);
														_vala_ccode_node_unref0 (_tmp350_);
														_tmp351_ = cspec;
														_tmp352_ = vala_ccode_constant_new ("G_MAXFLOAT");
														_tmp353_ = _tmp352_;
														vala_ccode_function_call_add_argument (_tmp351_, (ValaCCodeExpression*) _tmp353_);
														_vala_ccode_node_unref0 (_tmp353_);
														_tmp354_ = prop;
														_tmp355_ = vala_property_get_initializer (_tmp354_);
														_tmp356_ = _tmp355_;
														if (_tmp356_ != NULL) {
															ValaCCodeFunctionCall* _tmp357_;
															ValaProperty* _tmp358_;
															ValaExpression* _tmp359_;
															ValaExpression* _tmp360_;
															ValaCCodeExpression* _tmp361_;
															ValaCCodeExpression* _tmp362_;
															_tmp357_ = cspec;
															_tmp358_ = prop;
															_tmp359_ = vala_property_get_initializer (_tmp358_);
															_tmp360_ = _tmp359_;
															_tmp361_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp360_);
															_tmp362_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp361_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
															vala_ccode_function_call_add_argument (_tmp357_, _tmp362_);
															_vala_ccode_node_unref0 (_tmp362_);
														} else {
															ValaCCodeFunctionCall* _tmp363_;
															ValaCCodeConstant* _tmp364_;
															ValaCCodeConstant* _tmp365_;
															_tmp363_ = cspec;
															_tmp364_ = vala_ccode_constant_new ("0.0F");
															_tmp365_ = _tmp364_;
															vala_ccode_function_call_add_argument (_tmp363_, (ValaCCodeExpression*) _tmp365_);
															_vala_ccode_node_unref0 (_tmp365_);
														}
													} else {
														const gchar* _tmp366_;
														_tmp366_ = type_id;
														if (g_strcmp0 (_tmp366_, "G_TYPE_DOUBLE") == 0) {
															ValaCCodeFunctionCall* _tmp367_;
															ValaCCodeIdentifier* _tmp368_;
															ValaCCodeIdentifier* _tmp369_;
															ValaCCodeFunctionCall* _tmp370_;
															ValaCCodeConstant* _tmp371_;
															ValaCCodeConstant* _tmp372_;
															ValaCCodeFunctionCall* _tmp373_;
															ValaCCodeConstant* _tmp374_;
															ValaCCodeConstant* _tmp375_;
															ValaProperty* _tmp376_;
															ValaExpression* _tmp377_;
															ValaExpression* _tmp378_;
															_tmp367_ = cspec;
															_tmp368_ = vala_ccode_identifier_new ("g_param_spec_double");
															_tmp369_ = _tmp368_;
															vala_ccode_function_call_set_call (_tmp367_, (ValaCCodeExpression*) _tmp369_);
															_vala_ccode_node_unref0 (_tmp369_);
															_tmp370_ = cspec;
															_tmp371_ = vala_ccode_constant_new ("-G_MAXDOUBLE");
															_tmp372_ = _tmp371_;
															vala_ccode_function_call_add_argument (_tmp370_, (ValaCCodeExpression*) _tmp372_);
															_vala_ccode_node_unref0 (_tmp372_);
															_tmp373_ = cspec;
															_tmp374_ = vala_ccode_constant_new ("G_MAXDOUBLE");
															_tmp375_ = _tmp374_;
															vala_ccode_function_call_add_argument (_tmp373_, (ValaCCodeExpression*) _tmp375_);
															_vala_ccode_node_unref0 (_tmp375_);
															_tmp376_ = prop;
															_tmp377_ = vala_property_get_initializer (_tmp376_);
															_tmp378_ = _tmp377_;
															if (_tmp378_ != NULL) {
																ValaCCodeFunctionCall* _tmp379_;
																ValaProperty* _tmp380_;
																ValaExpression* _tmp381_;
																ValaExpression* _tmp382_;
																ValaCCodeExpression* _tmp383_;
																ValaCCodeExpression* _tmp384_;
																_tmp379_ = cspec;
																_tmp380_ = prop;
																_tmp381_ = vala_property_get_initializer (_tmp380_);
																_tmp382_ = _tmp381_;
																_tmp383_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp382_);
																_tmp384_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp383_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
																vala_ccode_function_call_add_argument (_tmp379_, _tmp384_);
																_vala_ccode_node_unref0 (_tmp384_);
															} else {
																ValaCCodeFunctionCall* _tmp385_;
																ValaCCodeConstant* _tmp386_;
																ValaCCodeConstant* _tmp387_;
																_tmp385_ = cspec;
																_tmp386_ = vala_ccode_constant_new ("0.0");
																_tmp387_ = _tmp386_;
																vala_ccode_function_call_add_argument (_tmp385_, (ValaCCodeExpression*) _tmp387_);
																_vala_ccode_node_unref0 (_tmp387_);
															}
														} else {
															const gchar* _tmp388_;
															_tmp388_ = type_id;
															if (g_strcmp0 (_tmp388_, "G_TYPE_GTYPE") == 0) {
																ValaCCodeFunctionCall* _tmp389_;
																ValaCCodeIdentifier* _tmp390_;
																ValaCCodeIdentifier* _tmp391_;
																ValaProperty* _tmp392_;
																ValaExpression* _tmp393_;
																ValaExpression* _tmp394_;
																_tmp389_ = cspec;
																_tmp390_ = vala_ccode_identifier_new ("g_param_spec_gtype");
																_tmp391_ = _tmp390_;
																vala_ccode_function_call_set_call (_tmp389_, (ValaCCodeExpression*) _tmp391_);
																_vala_ccode_node_unref0 (_tmp391_);
																_tmp392_ = prop;
																_tmp393_ = vala_property_get_initializer (_tmp392_);
																_tmp394_ = _tmp393_;
																if (_tmp394_ != NULL) {
																	ValaCCodeFunctionCall* _tmp395_;
																	ValaProperty* _tmp396_;
																	ValaExpression* _tmp397_;
																	ValaExpression* _tmp398_;
																	ValaCCodeExpression* _tmp399_;
																	ValaCCodeExpression* _tmp400_;
																	_tmp395_ = cspec;
																	_tmp396_ = prop;
																	_tmp397_ = vala_property_get_initializer (_tmp396_);
																	_tmp398_ = _tmp397_;
																	_tmp399_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp398_);
																	_tmp400_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp399_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
																	vala_ccode_function_call_add_argument (_tmp395_, _tmp400_);
																	_vala_ccode_node_unref0 (_tmp400_);
																} else {
																	ValaCCodeFunctionCall* _tmp401_;
																	ValaCCodeConstant* _tmp402_;
																	ValaCCodeConstant* _tmp403_;
																	_tmp401_ = cspec;
																	_tmp402_ = vala_ccode_constant_new ("G_TYPE_NONE");
																	_tmp403_ = _tmp402_;
																	vala_ccode_function_call_add_argument (_tmp401_, (ValaCCodeExpression*) _tmp403_);
																	_vala_ccode_node_unref0 (_tmp403_);
																}
															} else {
																ValaCCodeFunctionCall* _tmp404_;
																ValaCCodeIdentifier* _tmp405_;
																ValaCCodeIdentifier* _tmp406_;
																ValaCCodeFunctionCall* _tmp407_;
																const gchar* _tmp408_;
																ValaCCodeIdentifier* _tmp409_;
																ValaCCodeIdentifier* _tmp410_;
																_tmp404_ = cspec;
																_tmp405_ = vala_ccode_identifier_new ("g_param_spec_boxed");
																_tmp406_ = _tmp405_;
																vala_ccode_function_call_set_call (_tmp404_, (ValaCCodeExpression*) _tmp406_);
																_vala_ccode_node_unref0 (_tmp406_);
																_tmp407_ = cspec;
																_tmp408_ = type_id;
																_tmp409_ = vala_ccode_identifier_new (_tmp408_);
																_tmp410_ = _tmp409_;
																vala_ccode_function_call_add_argument (_tmp407_, (ValaCCodeExpression*) _tmp410_);
																_vala_ccode_node_unref0 (_tmp410_);
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
				_g_free0 (type_id);
				_vala_code_node_unref0 (st);
			} else {
				gboolean _tmp411_ = FALSE;
				ValaProperty* _tmp412_;
				ValaDataType* _tmp413_;
				ValaDataType* _tmp414_;
				_tmp412_ = prop;
				_tmp413_ = vala_property_get_property_type (_tmp412_);
				_tmp414_ = _tmp413_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp414_, VALA_TYPE_ARRAY_TYPE)) {
					ValaProperty* _tmp415_;
					ValaDataType* _tmp416_;
					ValaDataType* _tmp417_;
					ValaDataType* _tmp418_;
					ValaDataType* _tmp419_;
					ValaTypeSymbol* _tmp420_;
					ValaTypeSymbol* _tmp421_;
					ValaDataType* _tmp422_;
					ValaTypeSymbol* _tmp423_;
					ValaTypeSymbol* _tmp424_;
					_tmp415_ = prop;
					_tmp416_ = vala_property_get_property_type (_tmp415_);
					_tmp417_ = _tmp416_;
					_tmp418_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp417_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
					_tmp419_ = _tmp418_;
					_tmp420_ = vala_data_type_get_data_type (_tmp419_);
					_tmp421_ = _tmp420_;
					_tmp422_ = ((ValaCCodeBaseModule*) self)->string_type;
					_tmp423_ = vala_data_type_get_data_type (_tmp422_);
					_tmp424_ = _tmp423_;
					_tmp411_ = _tmp421_ == _tmp424_;
				} else {
					_tmp411_ = FALSE;
				}
				if (_tmp411_) {
					ValaCCodeFunctionCall* _tmp425_;
					ValaCCodeIdentifier* _tmp426_;
					ValaCCodeIdentifier* _tmp427_;
					ValaCCodeFunctionCall* _tmp428_;
					ValaCCodeIdentifier* _tmp429_;
					ValaCCodeIdentifier* _tmp430_;
					_tmp425_ = cspec;
					_tmp426_ = vala_ccode_identifier_new ("g_param_spec_boxed");
					_tmp427_ = _tmp426_;
					vala_ccode_function_call_set_call (_tmp425_, (ValaCCodeExpression*) _tmp427_);
					_vala_ccode_node_unref0 (_tmp427_);
					_tmp428_ = cspec;
					_tmp429_ = vala_ccode_identifier_new ("G_TYPE_STRV");
					_tmp430_ = _tmp429_;
					vala_ccode_function_call_add_argument (_tmp428_, (ValaCCodeExpression*) _tmp430_);
					_vala_ccode_node_unref0 (_tmp430_);
				} else {
					ValaCCodeFunctionCall* _tmp431_;
					ValaCCodeIdentifier* _tmp432_;
					ValaCCodeIdentifier* _tmp433_;
					_tmp431_ = cspec;
					_tmp432_ = vala_ccode_identifier_new ("g_param_spec_pointer");
					_tmp433_ = _tmp432_;
					vala_ccode_function_call_set_call (_tmp431_, (ValaCCodeExpression*) _tmp433_);
					_vala_ccode_node_unref0 (_tmp433_);
				}
			}
		}
	}
	_tmp434_ = g_strdup ("G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB");
	pflags = _tmp434_;
	_tmp436_ = prop;
	_tmp437_ = vala_property_get_get_accessor (_tmp436_);
	_tmp438_ = _tmp437_;
	if (_tmp438_ != NULL) {
		ValaProperty* _tmp439_;
		ValaPropertyAccessor* _tmp440_;
		ValaPropertyAccessor* _tmp441_;
		ValaSymbolAccessibility _tmp442_;
		ValaSymbolAccessibility _tmp443_;
		_tmp439_ = prop;
		_tmp440_ = vala_property_get_get_accessor (_tmp439_);
		_tmp441_ = _tmp440_;
		_tmp442_ = vala_symbol_get_access ((ValaSymbol*) _tmp441_);
		_tmp443_ = _tmp442_;
		_tmp435_ = _tmp443_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
	} else {
		_tmp435_ = FALSE;
	}
	if (_tmp435_) {
		const gchar* _tmp444_;
		gchar* _tmp445_;
		_tmp444_ = pflags;
		_tmp445_ = g_strdup_printf ("%s%s", _tmp444_, " | G_PARAM_READABLE");
		_g_free0 (pflags);
		pflags = _tmp445_;
	}
	_tmp447_ = prop;
	_tmp448_ = vala_property_get_set_accessor (_tmp447_);
	_tmp449_ = _tmp448_;
	if (_tmp449_ != NULL) {
		ValaProperty* _tmp450_;
		ValaPropertyAccessor* _tmp451_;
		ValaPropertyAccessor* _tmp452_;
		ValaSymbolAccessibility _tmp453_;
		ValaSymbolAccessibility _tmp454_;
		_tmp450_ = prop;
		_tmp451_ = vala_property_get_set_accessor (_tmp450_);
		_tmp452_ = _tmp451_;
		_tmp453_ = vala_symbol_get_access ((ValaSymbol*) _tmp452_);
		_tmp454_ = _tmp453_;
		_tmp446_ = _tmp454_ != VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
	} else {
		_tmp446_ = FALSE;
	}
	if (_tmp446_) {
		const gchar* _tmp455_;
		gchar* _tmp456_;
		ValaProperty* _tmp457_;
		ValaPropertyAccessor* _tmp458_;
		ValaPropertyAccessor* _tmp459_;
		gboolean _tmp460_;
		gboolean _tmp461_;
		_tmp455_ = pflags;
		_tmp456_ = g_strdup_printf ("%s%s", _tmp455_, " | G_PARAM_WRITABLE");
		_g_free0 (pflags);
		pflags = _tmp456_;
		_tmp457_ = prop;
		_tmp458_ = vala_property_get_set_accessor (_tmp457_);
		_tmp459_ = _tmp458_;
		_tmp460_ = vala_property_accessor_get_construction (_tmp459_);
		_tmp461_ = _tmp460_;
		if (_tmp461_) {
			ValaProperty* _tmp462_;
			ValaPropertyAccessor* _tmp463_;
			ValaPropertyAccessor* _tmp464_;
			gboolean _tmp465_;
			gboolean _tmp466_;
			_tmp462_ = prop;
			_tmp463_ = vala_property_get_set_accessor (_tmp462_);
			_tmp464_ = _tmp463_;
			_tmp465_ = vala_property_accessor_get_writable (_tmp464_);
			_tmp466_ = _tmp465_;
			if (_tmp466_) {
				const gchar* _tmp467_;
				gchar* _tmp468_;
				_tmp467_ = pflags;
				_tmp468_ = g_strdup_printf ("%s%s", _tmp467_, " | G_PARAM_CONSTRUCT");
				_g_free0 (pflags);
				pflags = _tmp468_;
			} else {
				const gchar* _tmp469_;
				gchar* _tmp470_;
				_tmp469_ = pflags;
				_tmp470_ = g_strdup_printf ("%s%s", _tmp469_, " | G_PARAM_CONSTRUCT_ONLY");
				_g_free0 (pflags);
				pflags = _tmp470_;
			}
		}
	}
	_tmp471_ = prop;
	_tmp472_ = vala_symbol_get_version ((ValaSymbol*) _tmp471_);
	_tmp473_ = _tmp472_;
	_tmp474_ = vala_version_attribute_get_deprecated (_tmp473_);
	_tmp475_ = _tmp474_;
	if (_tmp475_) {
		const gchar* _tmp476_;
		gchar* _tmp477_;
		_tmp476_ = pflags;
		_tmp477_ = g_strdup_printf ("%s%s", _tmp476_, " | G_PARAM_DEPRECATED");
		_g_free0 (pflags);
		pflags = _tmp477_;
	}
	_tmp478_ = cspec;
	_tmp479_ = pflags;
	_tmp480_ = vala_ccode_constant_new (_tmp479_);
	_tmp481_ = _tmp480_;
	vala_ccode_function_call_add_argument (_tmp478_, (ValaCCodeExpression*) _tmp481_);
	_vala_ccode_node_unref0 (_tmp481_);
	_tmp482_ = prop;
	_tmp483_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp482_);
	_tmp484_ = _tmp483_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp484_, VALA_TYPE_INTERFACE)) {
		result = (ValaCCodeExpression*) cspec;
		_g_free0 (pflags);
		return result;
	} else {
		ValaProperty* _tmp485_;
		ValaCCodeExpression* _tmp486_;
		ValaCCodeExpression* _tmp487_;
		ValaCCodeFunctionCall* _tmp488_;
		ValaCCodeAssignment* _tmp489_;
		ValaCCodeExpression* _tmp490_;
		_tmp485_ = prop;
		_tmp486_ = vala_ccode_base_module_get_param_spec_cexpression ((ValaCCodeBaseModule*) self, _tmp485_);
		_tmp487_ = _tmp486_;
		_tmp488_ = cspec;
		_tmp489_ = vala_ccode_assignment_new (_tmp487_, (ValaCCodeExpression*) _tmp488_, VALA_CCODE_ASSIGNMENT_OPERATOR_SIMPLE);
		_tmp490_ = (ValaCCodeExpression*) _tmp489_;
		_vala_ccode_node_unref0 (_tmp487_);
		result = _tmp490_;
		_g_free0 (pflags);
		_vala_ccode_node_unref0 (cspec);
		return result;
	}
	_g_free0 (pflags);
	_vala_ccode_node_unref0 (cspec);
}


static void vala_gtype_module_real_generate_interface_declaration (ValaCCodeBaseModule* base, ValaInterface* iface, ValaCCodeFile* decl_space) {
	ValaGTypeModule * self;
	ValaCCodeFile* _tmp0_;
	ValaInterface* _tmp1_;
	ValaInterface* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gboolean _tmp5_;
	gboolean _tmp6_;
	ValaCCodeStruct* type_struct = NULL;
	ValaInterface* _tmp32_;
	gchar* _tmp33_;
	gchar* _tmp34_;
	gchar* _tmp35_;
	gchar* _tmp36_;
	ValaCCodeStruct* _tmp37_;
	ValaCCodeStruct* _tmp38_;
	ValaCCodeFile* _tmp39_;
	ValaCCodeNewline* _tmp40_;
	ValaCCodeNewline* _tmp41_;
	gchar* macro = NULL;
	ValaInterface* _tmp42_;
	gchar* _tmp43_;
	gchar* _tmp44_;
	gchar* _tmp45_;
	gchar* _tmp46_;
	ValaCCodeFile* _tmp47_;
	ValaInterface* _tmp48_;
	gchar* _tmp49_;
	gchar* _tmp50_;
	const gchar* _tmp51_;
	ValaCCodeMacroReplacement* _tmp52_;
	ValaCCodeMacroReplacement* _tmp53_;
	ValaInterface* _tmp54_;
	gchar* _tmp55_;
	gchar* _tmp56_;
	ValaInterface* _tmp57_;
	gchar* _tmp58_;
	gchar* _tmp59_;
	gchar* _tmp60_;
	ValaCCodeFile* _tmp61_;
	ValaInterface* _tmp62_;
	gchar* _tmp63_;
	gchar* _tmp64_;
	gchar* _tmp65_;
	gchar* _tmp66_;
	const gchar* _tmp67_;
	ValaCCodeMacroReplacement* _tmp68_;
	ValaCCodeMacroReplacement* _tmp69_;
	ValaInterface* _tmp70_;
	gchar* _tmp71_;
	gchar* _tmp72_;
	gchar* _tmp73_;
	ValaCCodeFile* _tmp74_;
	ValaInterface* _tmp75_;
	gchar* _tmp76_;
	gchar* _tmp77_;
	gchar* _tmp78_;
	gchar* _tmp79_;
	const gchar* _tmp80_;
	ValaCCodeMacroReplacement* _tmp81_;
	ValaCCodeMacroReplacement* _tmp82_;
	ValaInterface* _tmp83_;
	gchar* _tmp84_;
	gchar* _tmp85_;
	ValaInterface* _tmp86_;
	gchar* _tmp87_;
	gchar* _tmp88_;
	gchar* _tmp89_;
	ValaCCodeFile* _tmp90_;
	ValaInterface* _tmp91_;
	gchar* _tmp92_;
	gchar* _tmp93_;
	gchar* _tmp94_;
	gchar* _tmp95_;
	const gchar* _tmp96_;
	ValaCCodeMacroReplacement* _tmp97_;
	ValaCCodeMacroReplacement* _tmp98_;
	ValaCCodeFile* _tmp99_;
	ValaCCodeNewline* _tmp100_;
	ValaCCodeNewline* _tmp101_;
	ValaCCodeFile* _tmp102_;
	ValaInterface* _tmp103_;
	gchar* _tmp104_;
	gchar* _tmp105_;
	gchar* _tmp106_;
	gchar* _tmp107_;
	ValaInterface* _tmp108_;
	gchar* _tmp109_;
	gchar* _tmp110_;
	ValaCCodeVariableDeclarator* _tmp111_;
	ValaCCodeVariableDeclarator* _tmp112_;
	ValaCCodeTypeDefinition* _tmp113_;
	ValaCCodeTypeDefinition* _tmp114_;
	ValaCCodeFile* _tmp115_;
	ValaCCodeStruct* _tmp116_;
	const gchar* _tmp117_;
	const gchar* _tmp118_;
	gchar* _tmp119_;
	gchar* _tmp120_;
	ValaInterface* _tmp121_;
	gchar* _tmp122_;
	gchar* _tmp123_;
	ValaCCodeVariableDeclarator* _tmp124_;
	ValaCCodeVariableDeclarator* _tmp125_;
	ValaCCodeTypeDefinition* _tmp126_;
	ValaCCodeTypeDefinition* _tmp127_;
	ValaCCodeStruct* _tmp128_;
	ValaInterface* _tmp129_;
	ValaAttribute* _tmp130_;
	ValaAttribute* _tmp131_;
	gboolean _tmp132_;
	ValaCCodeFile* _tmp373_;
	ValaCCodeStruct* _tmp374_;
	ValaInterfaceRegisterFunction* type_fun = NULL;
	ValaInterface* _tmp375_;
	ValaCodeContext* _tmp376_;
	ValaCodeContext* _tmp377_;
	ValaInterfaceRegisterFunction* _tmp378_;
	ValaInterfaceRegisterFunction* _tmp379_;
	gboolean _tmp380_;
	ValaCCodeFile* _tmp381_;
	ValaInterfaceRegisterFunction* _tmp382_;
	ValaCCodeFragment* _tmp383_;
	ValaCCodeFragment* _tmp384_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (iface != NULL);
	g_return_if_fail (decl_space != NULL);
	_tmp0_ = decl_space;
	_tmp1_ = iface;
	_tmp2_ = iface;
	_tmp3_ = vala_get_ccode_name ((ValaCodeNode*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_base_module_add_symbol_declaration ((ValaCCodeBaseModule*) self, _tmp0_, (ValaSymbol*) _tmp1_, _tmp4_);
	_tmp6_ = _tmp5_;
	_g_free0 (_tmp4_);
	if (_tmp6_) {
		return;
	}
	{
		ValaList* _prerequisite_list = NULL;
		ValaInterface* _tmp7_;
		ValaList* _tmp8_;
		gint _prerequisite_size = 0;
		ValaList* _tmp9_;
		gint _tmp10_;
		gint _tmp11_;
		gint _prerequisite_index = 0;
		_tmp7_ = iface;
		_tmp8_ = vala_interface_get_prerequisites (_tmp7_);
		_prerequisite_list = _tmp8_;
		_tmp9_ = _prerequisite_list;
		_tmp10_ = vala_collection_get_size ((ValaCollection*) _tmp9_);
		_tmp11_ = _tmp10_;
		_prerequisite_size = _tmp11_;
		_prerequisite_index = -1;
		while (TRUE) {
			gint _tmp12_;
			gint _tmp13_;
			gint _tmp14_;
			ValaDataType* prerequisite = NULL;
			ValaList* _tmp15_;
			gint _tmp16_;
			gpointer _tmp17_;
			ValaClass* prereq_cl = NULL;
			ValaDataType* _tmp18_;
			ValaTypeSymbol* _tmp19_;
			ValaTypeSymbol* _tmp20_;
			ValaClass* _tmp21_;
			ValaInterface* prereq_iface = NULL;
			ValaDataType* _tmp22_;
			ValaTypeSymbol* _tmp23_;
			ValaTypeSymbol* _tmp24_;
			ValaInterface* _tmp25_;
			ValaClass* _tmp26_;
			_tmp12_ = _prerequisite_index;
			_prerequisite_index = _tmp12_ + 1;
			_tmp13_ = _prerequisite_index;
			_tmp14_ = _prerequisite_size;
			if (!(_tmp13_ < _tmp14_)) {
				break;
			}
			_tmp15_ = _prerequisite_list;
			_tmp16_ = _prerequisite_index;
			_tmp17_ = vala_list_get (_tmp15_, _tmp16_);
			prerequisite = (ValaDataType*) _tmp17_;
			_tmp18_ = prerequisite;
			_tmp19_ = vala_data_type_get_data_type (_tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp20_) : NULL);
			prereq_cl = _tmp21_;
			_tmp22_ = prerequisite;
			_tmp23_ = vala_data_type_get_data_type (_tmp22_);
			_tmp24_ = _tmp23_;
			_tmp25_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, VALA_TYPE_INTERFACE) ? ((ValaInterface*) _tmp24_) : NULL);
			prereq_iface = _tmp25_;
			_tmp26_ = prereq_cl;
			if (_tmp26_ != NULL) {
				ValaClass* _tmp27_;
				ValaCCodeFile* _tmp28_;
				_tmp27_ = prereq_cl;
				_tmp28_ = decl_space;
				vala_ccode_base_module_generate_class_declaration ((ValaCCodeBaseModule*) self, _tmp27_, _tmp28_);
			} else {
				ValaInterface* _tmp29_;
				_tmp29_ = prereq_iface;
				if (_tmp29_ != NULL) {
					ValaInterface* _tmp30_;
					ValaCCodeFile* _tmp31_;
					_tmp30_ = prereq_iface;
					_tmp31_ = decl_space;
					vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp30_, _tmp31_);
				}
			}
			_vala_code_node_unref0 (prereq_iface);
			_vala_code_node_unref0 (prereq_cl);
			_vala_code_node_unref0 (prerequisite);
		}
		_vala_iterable_unref0 (_prerequisite_list);
	}
	_tmp32_ = iface;
	_tmp33_ = vala_get_ccode_type_name (_tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = g_strdup_printf ("_%s", _tmp34_);
	_tmp36_ = _tmp35_;
	_tmp37_ = vala_ccode_struct_new (_tmp36_);
	_tmp38_ = _tmp37_;
	_g_free0 (_tmp36_);
	_g_free0 (_tmp34_);
	type_struct = _tmp38_;
	_tmp39_ = decl_space;
	_tmp40_ = vala_ccode_newline_new ();
	_tmp41_ = _tmp40_;
	vala_ccode_file_add_type_declaration (_tmp39_, (ValaCCodeNode*) _tmp41_);
	_vala_ccode_node_unref0 (_tmp41_);
	_tmp42_ = iface;
	_tmp43_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp42_, NULL);
	_tmp44_ = _tmp43_;
	_tmp45_ = g_strdup_printf ("(%s_get_type ())", _tmp44_);
	_tmp46_ = _tmp45_;
	_g_free0 (_tmp44_);
	macro = _tmp46_;
	_tmp47_ = decl_space;
	_tmp48_ = iface;
	_tmp49_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp48_);
	_tmp50_ = _tmp49_;
	_tmp51_ = macro;
	_tmp52_ = vala_ccode_macro_replacement_new (_tmp50_, _tmp51_);
	_tmp53_ = _tmp52_;
	vala_ccode_file_add_type_declaration (_tmp47_, (ValaCCodeNode*) _tmp53_);
	_vala_ccode_node_unref0 (_tmp53_);
	_g_free0 (_tmp50_);
	_tmp54_ = iface;
	_tmp55_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp54_);
	_tmp56_ = _tmp55_;
	_tmp57_ = iface;
	_tmp58_ = vala_get_ccode_name ((ValaCodeNode*) _tmp57_);
	_tmp59_ = _tmp58_;
	_tmp60_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_CAST ((obj), %s, %s))", _tmp56_, _tmp59_);
	_g_free0 (macro);
	macro = _tmp60_;
	_g_free0 (_tmp59_);
	_g_free0 (_tmp56_);
	_tmp61_ = decl_space;
	_tmp62_ = iface;
	_tmp63_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp62_, NULL);
	_tmp64_ = _tmp63_;
	_tmp65_ = g_strdup_printf ("%s(obj)", _tmp64_);
	_tmp66_ = _tmp65_;
	_tmp67_ = macro;
	_tmp68_ = vala_ccode_macro_replacement_new (_tmp66_, _tmp67_);
	_tmp69_ = _tmp68_;
	vala_ccode_file_add_type_declaration (_tmp61_, (ValaCCodeNode*) _tmp69_);
	_vala_ccode_node_unref0 (_tmp69_);
	_g_free0 (_tmp66_);
	_g_free0 (_tmp64_);
	_tmp70_ = iface;
	_tmp71_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp70_);
	_tmp72_ = _tmp71_;
	_tmp73_ = g_strdup_printf ("(G_TYPE_CHECK_INSTANCE_TYPE ((obj), %s))", _tmp72_);
	_g_free0 (macro);
	macro = _tmp73_;
	_g_free0 (_tmp72_);
	_tmp74_ = decl_space;
	_tmp75_ = iface;
	_tmp76_ = vala_get_ccode_type_check_function ((ValaTypeSymbol*) _tmp75_);
	_tmp77_ = _tmp76_;
	_tmp78_ = g_strdup_printf ("%s(obj)", _tmp77_);
	_tmp79_ = _tmp78_;
	_tmp80_ = macro;
	_tmp81_ = vala_ccode_macro_replacement_new (_tmp79_, _tmp80_);
	_tmp82_ = _tmp81_;
	vala_ccode_file_add_type_declaration (_tmp74_, (ValaCCodeNode*) _tmp82_);
	_vala_ccode_node_unref0 (_tmp82_);
	_g_free0 (_tmp79_);
	_g_free0 (_tmp77_);
	_tmp83_ = iface;
	_tmp84_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp83_);
	_tmp85_ = _tmp84_;
	_tmp86_ = iface;
	_tmp87_ = vala_get_ccode_type_name (_tmp86_);
	_tmp88_ = _tmp87_;
	_tmp89_ = g_strdup_printf ("(G_TYPE_INSTANCE_GET_INTERFACE ((obj), %s, %s))", _tmp85_, _tmp88_);
	_g_free0 (macro);
	macro = _tmp89_;
	_g_free0 (_tmp88_);
	_g_free0 (_tmp85_);
	_tmp90_ = decl_space;
	_tmp91_ = iface;
	_tmp92_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp91_, NULL);
	_tmp93_ = _tmp92_;
	_tmp94_ = g_strdup_printf ("%s_GET_INTERFACE(obj)", _tmp93_);
	_tmp95_ = _tmp94_;
	_tmp96_ = macro;
	_tmp97_ = vala_ccode_macro_replacement_new (_tmp95_, _tmp96_);
	_tmp98_ = _tmp97_;
	vala_ccode_file_add_type_declaration (_tmp90_, (ValaCCodeNode*) _tmp98_);
	_vala_ccode_node_unref0 (_tmp98_);
	_g_free0 (_tmp95_);
	_g_free0 (_tmp93_);
	_tmp99_ = decl_space;
	_tmp100_ = vala_ccode_newline_new ();
	_tmp101_ = _tmp100_;
	vala_ccode_file_add_type_declaration (_tmp99_, (ValaCCodeNode*) _tmp101_);
	_vala_ccode_node_unref0 (_tmp101_);
	_tmp102_ = decl_space;
	_tmp103_ = iface;
	_tmp104_ = vala_get_ccode_name ((ValaCodeNode*) _tmp103_);
	_tmp105_ = _tmp104_;
	_tmp106_ = g_strdup_printf ("struct _%s", _tmp105_);
	_tmp107_ = _tmp106_;
	_tmp108_ = iface;
	_tmp109_ = vala_get_ccode_name ((ValaCodeNode*) _tmp108_);
	_tmp110_ = _tmp109_;
	_tmp111_ = vala_ccode_variable_declarator_new (_tmp110_, NULL, NULL);
	_tmp112_ = _tmp111_;
	_tmp113_ = vala_ccode_type_definition_new (_tmp107_, (ValaCCodeDeclarator*) _tmp112_);
	_tmp114_ = _tmp113_;
	vala_ccode_file_add_type_declaration (_tmp102_, (ValaCCodeNode*) _tmp114_);
	_vala_ccode_node_unref0 (_tmp114_);
	_vala_ccode_node_unref0 (_tmp112_);
	_g_free0 (_tmp110_);
	_g_free0 (_tmp107_);
	_g_free0 (_tmp105_);
	_tmp115_ = decl_space;
	_tmp116_ = type_struct;
	_tmp117_ = vala_ccode_struct_get_name (_tmp116_);
	_tmp118_ = _tmp117_;
	_tmp119_ = g_strdup_printf ("struct %s", _tmp118_);
	_tmp120_ = _tmp119_;
	_tmp121_ = iface;
	_tmp122_ = vala_get_ccode_type_name (_tmp121_);
	_tmp123_ = _tmp122_;
	_tmp124_ = vala_ccode_variable_declarator_new (_tmp123_, NULL, NULL);
	_tmp125_ = _tmp124_;
	_tmp126_ = vala_ccode_type_definition_new (_tmp120_, (ValaCCodeDeclarator*) _tmp125_);
	_tmp127_ = _tmp126_;
	vala_ccode_file_add_type_declaration (_tmp115_, (ValaCCodeNode*) _tmp127_);
	_vala_ccode_node_unref0 (_tmp127_);
	_vala_ccode_node_unref0 (_tmp125_);
	_g_free0 (_tmp123_);
	_g_free0 (_tmp120_);
	_tmp128_ = type_struct;
	vala_ccode_struct_add_field (_tmp128_, "GTypeInterface", "parent_iface", 0, NULL);
	_tmp129_ = iface;
	_tmp130_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp129_, "GenericAccessors");
	_tmp131_ = _tmp130_;
	_tmp132_ = _tmp131_ != NULL;
	_vala_code_node_unref0 (_tmp131_);
	if (_tmp132_) {
		{
			ValaList* _p_list = NULL;
			ValaInterface* _tmp133_;
			ValaList* _tmp134_;
			gint _p_size = 0;
			ValaList* _tmp135_;
			gint _tmp136_;
			gint _tmp137_;
			gint _p_index = 0;
			_tmp133_ = iface;
			_tmp134_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) _tmp133_);
			_p_list = _tmp134_;
			_tmp135_ = _p_list;
			_tmp136_ = vala_collection_get_size ((ValaCollection*) _tmp135_);
			_tmp137_ = _tmp136_;
			_p_size = _tmp137_;
			_p_index = -1;
			while (TRUE) {
				gint _tmp138_;
				gint _tmp139_;
				gint _tmp140_;
				ValaTypeParameter* p = NULL;
				ValaList* _tmp141_;
				gint _tmp142_;
				gpointer _tmp143_;
				gchar* method_name = NULL;
				ValaTypeParameter* _tmp144_;
				const gchar* _tmp145_;
				const gchar* _tmp146_;
				gchar* _tmp147_;
				gchar* _tmp148_;
				gchar* _tmp149_;
				gchar* _tmp150_;
				ValaCCodeFunctionDeclarator* vdeclarator = NULL;
				const gchar* _tmp151_;
				ValaCCodeFunctionDeclarator* _tmp152_;
				ValaDataType* this_type = NULL;
				ValaInterface* _tmp153_;
				ValaDataType* _tmp154_;
				ValaCCodeFunctionDeclarator* _tmp155_;
				ValaDataType* _tmp156_;
				gchar* _tmp157_;
				gchar* _tmp158_;
				ValaCCodeParameter* _tmp159_;
				ValaCCodeParameter* _tmp160_;
				ValaCCodeDeclaration* vdecl = NULL;
				ValaCCodeDeclaration* _tmp161_;
				ValaCCodeDeclaration* _tmp162_;
				ValaCCodeFunctionDeclarator* _tmp163_;
				ValaCCodeStruct* _tmp164_;
				ValaCCodeDeclaration* _tmp165_;
				ValaTypeParameter* _tmp166_;
				const gchar* _tmp167_;
				const gchar* _tmp168_;
				gchar* _tmp169_;
				gchar* _tmp170_;
				gchar* _tmp171_;
				const gchar* _tmp172_;
				ValaCCodeFunctionDeclarator* _tmp173_;
				ValaInterface* _tmp174_;
				ValaDataType* _tmp175_;
				ValaCCodeFunctionDeclarator* _tmp176_;
				ValaDataType* _tmp177_;
				gchar* _tmp178_;
				gchar* _tmp179_;
				ValaCCodeParameter* _tmp180_;
				ValaCCodeParameter* _tmp181_;
				ValaCCodeDeclaration* _tmp182_;
				ValaCCodeDeclaration* _tmp183_;
				ValaCCodeFunctionDeclarator* _tmp184_;
				ValaCCodeStruct* _tmp185_;
				ValaCCodeDeclaration* _tmp186_;
				ValaTypeParameter* _tmp187_;
				const gchar* _tmp188_;
				const gchar* _tmp189_;
				gchar* _tmp190_;
				gchar* _tmp191_;
				gchar* _tmp192_;
				const gchar* _tmp193_;
				ValaCCodeFunctionDeclarator* _tmp194_;
				ValaInterface* _tmp195_;
				ValaDataType* _tmp196_;
				ValaCCodeFunctionDeclarator* _tmp197_;
				ValaDataType* _tmp198_;
				gchar* _tmp199_;
				gchar* _tmp200_;
				ValaCCodeParameter* _tmp201_;
				ValaCCodeParameter* _tmp202_;
				ValaCCodeDeclaration* _tmp203_;
				ValaCCodeDeclaration* _tmp204_;
				ValaCCodeFunctionDeclarator* _tmp205_;
				ValaCCodeStruct* _tmp206_;
				ValaCCodeDeclaration* _tmp207_;
				_tmp138_ = _p_index;
				_p_index = _tmp138_ + 1;
				_tmp139_ = _p_index;
				_tmp140_ = _p_size;
				if (!(_tmp139_ < _tmp140_)) {
					break;
				}
				_tmp141_ = _p_list;
				_tmp142_ = _p_index;
				_tmp143_ = vala_list_get (_tmp141_, _tmp142_);
				p = (ValaTypeParameter*) _tmp143_;
				_tmp144_ = p;
				_tmp145_ = vala_symbol_get_name ((ValaSymbol*) _tmp144_);
				_tmp146_ = _tmp145_;
				_tmp147_ = g_utf8_strdown (_tmp146_, (gssize) -1);
				_tmp148_ = _tmp147_;
				_tmp149_ = g_strdup_printf ("get_%s_type", _tmp148_);
				_tmp150_ = _tmp149_;
				_g_free0 (_tmp148_);
				method_name = _tmp150_;
				_tmp151_ = method_name;
				_tmp152_ = vala_ccode_function_declarator_new (_tmp151_);
				vdeclarator = _tmp152_;
				_tmp153_ = iface;
				_tmp154_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp153_);
				this_type = _tmp154_;
				_tmp155_ = vdeclarator;
				_tmp156_ = this_type;
				_tmp157_ = vala_get_ccode_name ((ValaCodeNode*) _tmp156_);
				_tmp158_ = _tmp157_;
				_tmp159_ = vala_ccode_parameter_new ("self", _tmp158_);
				_tmp160_ = _tmp159_;
				vala_ccode_function_declarator_add_parameter (_tmp155_, _tmp160_);
				_vala_ccode_node_unref0 (_tmp160_);
				_g_free0 (_tmp158_);
				_tmp161_ = vala_ccode_declaration_new ("GType");
				vdecl = _tmp161_;
				_tmp162_ = vdecl;
				_tmp163_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp162_, (ValaCCodeDeclarator*) _tmp163_);
				_tmp164_ = type_struct;
				_tmp165_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp164_, _tmp165_);
				_tmp166_ = p;
				_tmp167_ = vala_symbol_get_name ((ValaSymbol*) _tmp166_);
				_tmp168_ = _tmp167_;
				_tmp169_ = g_utf8_strdown (_tmp168_, (gssize) -1);
				_tmp170_ = _tmp169_;
				_tmp171_ = g_strdup_printf ("get_%s_dup_func", _tmp170_);
				_g_free0 (method_name);
				method_name = _tmp171_;
				_g_free0 (_tmp170_);
				_tmp172_ = method_name;
				_tmp173_ = vala_ccode_function_declarator_new (_tmp172_);
				_vala_ccode_node_unref0 (vdeclarator);
				vdeclarator = _tmp173_;
				_tmp174_ = iface;
				_tmp175_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp174_);
				_vala_code_node_unref0 (this_type);
				this_type = _tmp175_;
				_tmp176_ = vdeclarator;
				_tmp177_ = this_type;
				_tmp178_ = vala_get_ccode_name ((ValaCodeNode*) _tmp177_);
				_tmp179_ = _tmp178_;
				_tmp180_ = vala_ccode_parameter_new ("self", _tmp179_);
				_tmp181_ = _tmp180_;
				vala_ccode_function_declarator_add_parameter (_tmp176_, _tmp181_);
				_vala_ccode_node_unref0 (_tmp181_);
				_g_free0 (_tmp179_);
				_tmp182_ = vala_ccode_declaration_new ("GBoxedCopyFunc");
				_vala_ccode_node_unref0 (vdecl);
				vdecl = _tmp182_;
				_tmp183_ = vdecl;
				_tmp184_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp183_, (ValaCCodeDeclarator*) _tmp184_);
				_tmp185_ = type_struct;
				_tmp186_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp185_, _tmp186_);
				_tmp187_ = p;
				_tmp188_ = vala_symbol_get_name ((ValaSymbol*) _tmp187_);
				_tmp189_ = _tmp188_;
				_tmp190_ = g_utf8_strdown (_tmp189_, (gssize) -1);
				_tmp191_ = _tmp190_;
				_tmp192_ = g_strdup_printf ("get_%s_destroy_func", _tmp191_);
				_g_free0 (method_name);
				method_name = _tmp192_;
				_g_free0 (_tmp191_);
				_tmp193_ = method_name;
				_tmp194_ = vala_ccode_function_declarator_new (_tmp193_);
				_vala_ccode_node_unref0 (vdeclarator);
				vdeclarator = _tmp194_;
				_tmp195_ = iface;
				_tmp196_ = vala_ccode_base_module_get_data_type_for_symbol ((ValaTypeSymbol*) _tmp195_);
				_vala_code_node_unref0 (this_type);
				this_type = _tmp196_;
				_tmp197_ = vdeclarator;
				_tmp198_ = this_type;
				_tmp199_ = vala_get_ccode_name ((ValaCodeNode*) _tmp198_);
				_tmp200_ = _tmp199_;
				_tmp201_ = vala_ccode_parameter_new ("self", _tmp200_);
				_tmp202_ = _tmp201_;
				vala_ccode_function_declarator_add_parameter (_tmp197_, _tmp202_);
				_vala_ccode_node_unref0 (_tmp202_);
				_g_free0 (_tmp200_);
				_tmp203_ = vala_ccode_declaration_new ("GDestroyNotify");
				_vala_ccode_node_unref0 (vdecl);
				vdecl = _tmp203_;
				_tmp204_ = vdecl;
				_tmp205_ = vdeclarator;
				vala_ccode_declaration_add_declarator (_tmp204_, (ValaCCodeDeclarator*) _tmp205_);
				_tmp206_ = type_struct;
				_tmp207_ = vdecl;
				vala_ccode_struct_add_declaration (_tmp206_, _tmp207_);
				_vala_ccode_node_unref0 (vdecl);
				_vala_code_node_unref0 (this_type);
				_vala_ccode_node_unref0 (vdeclarator);
				_g_free0 (method_name);
				_vala_code_node_unref0 (p);
			}
			_vala_iterable_unref0 (_p_list);
		}
	}
	{
		ValaList* _sym_list = NULL;
		ValaInterface* _tmp208_;
		ValaList* _tmp209_;
		gint _sym_size = 0;
		ValaList* _tmp210_;
		gint _tmp211_;
		gint _tmp212_;
		gint _sym_index = 0;
		_tmp208_ = iface;
		_tmp209_ = vala_interface_get_virtuals (_tmp208_);
		_sym_list = _tmp209_;
		_tmp210_ = _sym_list;
		_tmp211_ = vala_collection_get_size ((ValaCollection*) _tmp210_);
		_tmp212_ = _tmp211_;
		_sym_size = _tmp212_;
		_sym_index = -1;
		while (TRUE) {
			gint _tmp213_;
			gint _tmp214_;
			gint _tmp215_;
			ValaSymbol* sym = NULL;
			ValaList* _tmp216_;
			gint _tmp217_;
			gpointer _tmp218_;
			ValaMethod* m = NULL;
			ValaSignal* sig = NULL;
			ValaProperty* prop = NULL;
			ValaSymbol* _tmp219_;
			ValaMethod* _tmp220_;
			ValaMethod* _tmp221_;
			_tmp213_ = _sym_index;
			_sym_index = _tmp213_ + 1;
			_tmp214_ = _sym_index;
			_tmp215_ = _sym_size;
			if (!(_tmp214_ < _tmp215_)) {
				break;
			}
			_tmp216_ = _sym_list;
			_tmp217_ = _sym_index;
			_tmp218_ = vala_list_get (_tmp216_, _tmp217_);
			sym = (ValaSymbol*) _tmp218_;
			_tmp219_ = sym;
			_tmp220_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp219_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp219_) : NULL);
			_vala_code_node_unref0 (m);
			m = _tmp220_;
			_tmp221_ = m;
			if (_tmp221_ != NULL) {
				ValaMethod* _tmp222_;
				ValaCCodeFile* _tmp223_;
				ValaCCodeStruct* _tmp224_;
				_tmp222_ = m;
				_tmp223_ = decl_space;
				_tmp224_ = type_struct;
				vala_gtype_module_generate_virtual_method_declaration (self, _tmp222_, _tmp223_, _tmp224_);
			} else {
				ValaSymbol* _tmp225_;
				ValaSignal* _tmp226_;
				ValaSignal* _tmp227_;
				_tmp225_ = sym;
				_tmp226_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp225_, VALA_TYPE_SIGNAL) ? ((ValaSignal*) _tmp225_) : NULL);
				_vala_code_node_unref0 (sig);
				sig = _tmp226_;
				_tmp227_ = sig;
				if (_tmp227_ != NULL) {
					ValaSignal* _tmp228_;
					ValaMethod* _tmp229_;
					ValaMethod* _tmp230_;
					_tmp228_ = sig;
					_tmp229_ = vala_signal_get_default_handler (_tmp228_);
					_tmp230_ = _tmp229_;
					if (_tmp230_ != NULL) {
						ValaSignal* _tmp231_;
						ValaMethod* _tmp232_;
						ValaMethod* _tmp233_;
						ValaCCodeFile* _tmp234_;
						ValaCCodeStruct* _tmp235_;
						_tmp231_ = sig;
						_tmp232_ = vala_signal_get_default_handler (_tmp231_);
						_tmp233_ = _tmp232_;
						_tmp234_ = decl_space;
						_tmp235_ = type_struct;
						vala_gtype_module_generate_virtual_method_declaration (self, _tmp233_, _tmp234_, _tmp235_);
					}
				} else {
					ValaSymbol* _tmp236_;
					ValaProperty* _tmp237_;
					ValaProperty* _tmp238_;
					_tmp236_ = sym;
					_tmp237_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp236_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp236_) : NULL);
					_vala_code_node_unref0 (prop);
					prop = _tmp237_;
					_tmp238_ = prop;
					if (_tmp238_ != NULL) {
						ValaProperty* _tmp239_;
						ValaDataType* _tmp240_;
						ValaDataType* _tmp241_;
						ValaCCodeFile* _tmp242_;
						ValaObjectTypeSymbol* t = NULL;
						ValaProperty* _tmp243_;
						ValaSymbol* _tmp244_;
						ValaSymbol* _tmp245_;
						ValaObjectTypeSymbol* _tmp246_;
						gboolean returns_real_struct = FALSE;
						ValaProperty* _tmp247_;
						ValaDataType* _tmp248_;
						ValaDataType* _tmp249_;
						gboolean _tmp250_;
						ValaObjectType* this_type = NULL;
						ValaObjectTypeSymbol* _tmp251_;
						ValaObjectType* _tmp252_;
						ValaCCodeParameter* cselfparam = NULL;
						ValaObjectType* _tmp253_;
						gchar* _tmp254_;
						gchar* _tmp255_;
						ValaCCodeParameter* _tmp256_;
						ValaCCodeParameter* _tmp257_;
						ValaProperty* _tmp258_;
						ValaPropertyAccessor* _tmp259_;
						ValaPropertyAccessor* _tmp260_;
						ValaProperty* _tmp314_;
						ValaPropertyAccessor* _tmp315_;
						ValaPropertyAccessor* _tmp316_;
						_tmp239_ = prop;
						_tmp240_ = vala_property_get_property_type (_tmp239_);
						_tmp241_ = _tmp240_;
						_tmp242_ = decl_space;
						vala_ccode_base_module_generate_type_declaration ((ValaCCodeBaseModule*) self, _tmp241_, _tmp242_);
						_tmp243_ = prop;
						_tmp244_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp243_);
						_tmp245_ = _tmp244_;
						_tmp246_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp245_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
						t = _tmp246_;
						_tmp247_ = prop;
						_tmp248_ = vala_property_get_property_type (_tmp247_);
						_tmp249_ = _tmp248_;
						_tmp250_ = vala_data_type_is_real_non_null_struct_type (_tmp249_);
						returns_real_struct = _tmp250_;
						_tmp251_ = t;
						_tmp252_ = vala_object_type_new (_tmp251_);
						this_type = _tmp252_;
						_tmp253_ = this_type;
						_tmp254_ = vala_get_ccode_name ((ValaCodeNode*) _tmp253_);
						_tmp255_ = _tmp254_;
						_tmp256_ = vala_ccode_parameter_new ("self", _tmp255_);
						_tmp257_ = _tmp256_;
						_g_free0 (_tmp255_);
						cselfparam = _tmp257_;
						_tmp258_ = prop;
						_tmp259_ = vala_property_get_get_accessor (_tmp258_);
						_tmp260_ = _tmp259_;
						if (_tmp260_ != NULL) {
							ValaCCodeFunctionDeclarator* vdeclarator = NULL;
							ValaProperty* _tmp261_;
							const gchar* _tmp262_;
							const gchar* _tmp263_;
							gchar* _tmp264_;
							gchar* _tmp265_;
							ValaCCodeFunctionDeclarator* _tmp266_;
							ValaCCodeFunctionDeclarator* _tmp267_;
							ValaCCodeFunctionDeclarator* _tmp268_;
							ValaCCodeParameter* _tmp269_;
							gchar* creturn_type = NULL;
							gboolean _tmp270_;
							ValaArrayType* array_type = NULL;
							ValaProperty* _tmp291_;
							ValaDataType* _tmp292_;
							ValaDataType* _tmp293_;
							ValaArrayType* _tmp294_;
							ValaArrayType* _tmp295_;
							ValaCCodeDeclaration* vdecl = NULL;
							const gchar* _tmp308_;
							ValaCCodeDeclaration* _tmp309_;
							ValaCCodeDeclaration* _tmp310_;
							ValaCCodeFunctionDeclarator* _tmp311_;
							ValaCCodeStruct* _tmp312_;
							ValaCCodeDeclaration* _tmp313_;
							_tmp261_ = prop;
							_tmp262_ = vala_symbol_get_name ((ValaSymbol*) _tmp261_);
							_tmp263_ = _tmp262_;
							_tmp264_ = g_strdup_printf ("get_%s", _tmp263_);
							_tmp265_ = _tmp264_;
							_tmp266_ = vala_ccode_function_declarator_new (_tmp265_);
							_tmp267_ = _tmp266_;
							_g_free0 (_tmp265_);
							vdeclarator = _tmp267_;
							_tmp268_ = vdeclarator;
							_tmp269_ = cselfparam;
							vala_ccode_function_declarator_add_parameter (_tmp268_, _tmp269_);
							_tmp270_ = returns_real_struct;
							if (_tmp270_) {
								ValaCCodeParameter* cvalueparam = NULL;
								ValaProperty* _tmp271_;
								ValaPropertyAccessor* _tmp272_;
								ValaPropertyAccessor* _tmp273_;
								ValaDataType* _tmp274_;
								ValaDataType* _tmp275_;
								gchar* _tmp276_;
								gchar* _tmp277_;
								gchar* _tmp278_;
								gchar* _tmp279_;
								ValaCCodeParameter* _tmp280_;
								ValaCCodeParameter* _tmp281_;
								ValaCCodeFunctionDeclarator* _tmp282_;
								ValaCCodeParameter* _tmp283_;
								gchar* _tmp284_;
								_tmp271_ = prop;
								_tmp272_ = vala_property_get_get_accessor (_tmp271_);
								_tmp273_ = _tmp272_;
								_tmp274_ = vala_property_accessor_get_value_type (_tmp273_);
								_tmp275_ = _tmp274_;
								_tmp276_ = vala_get_ccode_name ((ValaCodeNode*) _tmp275_);
								_tmp277_ = _tmp276_;
								_tmp278_ = g_strdup_printf ("%s *", _tmp277_);
								_tmp279_ = _tmp278_;
								_tmp280_ = vala_ccode_parameter_new ("value", _tmp279_);
								_tmp281_ = _tmp280_;
								_g_free0 (_tmp279_);
								_g_free0 (_tmp277_);
								cvalueparam = _tmp281_;
								_tmp282_ = vdeclarator;
								_tmp283_ = cvalueparam;
								vala_ccode_function_declarator_add_parameter (_tmp282_, _tmp283_);
								_tmp284_ = g_strdup ("void");
								_g_free0 (creturn_type);
								creturn_type = _tmp284_;
								_vala_ccode_node_unref0 (cvalueparam);
							} else {
								ValaProperty* _tmp285_;
								ValaPropertyAccessor* _tmp286_;
								ValaPropertyAccessor* _tmp287_;
								ValaDataType* _tmp288_;
								ValaDataType* _tmp289_;
								gchar* _tmp290_;
								_tmp285_ = prop;
								_tmp286_ = vala_property_get_get_accessor (_tmp285_);
								_tmp287_ = _tmp286_;
								_tmp288_ = vala_property_accessor_get_value_type (_tmp287_);
								_tmp289_ = _tmp288_;
								_tmp290_ = vala_get_ccode_name ((ValaCodeNode*) _tmp289_);
								_g_free0 (creturn_type);
								creturn_type = _tmp290_;
							}
							_tmp291_ = prop;
							_tmp292_ = vala_property_get_property_type (_tmp291_);
							_tmp293_ = _tmp292_;
							_tmp294_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp293_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp293_) : NULL);
							array_type = _tmp294_;
							_tmp295_ = array_type;
							if (_tmp295_ != NULL) {
								{
									gint dim = 0;
									dim = 1;
									{
										gboolean _tmp296_ = FALSE;
										_tmp296_ = TRUE;
										while (TRUE) {
											gint _tmp298_;
											ValaArrayType* _tmp299_;
											gint _tmp300_;
											gint _tmp301_;
											ValaCCodeFunctionDeclarator* _tmp302_;
											gint _tmp303_;
											gchar* _tmp304_;
											gchar* _tmp305_;
											ValaCCodeParameter* _tmp306_;
											ValaCCodeParameter* _tmp307_;
											if (!_tmp296_) {
												gint _tmp297_;
												_tmp297_ = dim;
												dim = _tmp297_ + 1;
											}
											_tmp296_ = FALSE;
											_tmp298_ = dim;
											_tmp299_ = array_type;
											_tmp300_ = vala_array_type_get_rank (_tmp299_);
											_tmp301_ = _tmp300_;
											if (!(_tmp298_ <= _tmp301_)) {
												break;
											}
											_tmp302_ = vdeclarator;
											_tmp303_ = dim;
											_tmp304_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp303_);
											_tmp305_ = _tmp304_;
											_tmp306_ = vala_ccode_parameter_new (_tmp305_, "int*");
											_tmp307_ = _tmp306_;
											vala_ccode_function_declarator_add_parameter (_tmp302_, _tmp307_);
											_vala_ccode_node_unref0 (_tmp307_);
											_g_free0 (_tmp305_);
										}
									}
								}
							}
							_tmp308_ = creturn_type;
							_tmp309_ = vala_ccode_declaration_new (_tmp308_);
							vdecl = _tmp309_;
							_tmp310_ = vdecl;
							_tmp311_ = vdeclarator;
							vala_ccode_declaration_add_declarator (_tmp310_, (ValaCCodeDeclarator*) _tmp311_);
							_tmp312_ = type_struct;
							_tmp313_ = vdecl;
							vala_ccode_struct_add_declaration (_tmp312_, _tmp313_);
							_vala_ccode_node_unref0 (vdecl);
							_vala_code_node_unref0 (array_type);
							_g_free0 (creturn_type);
							_vala_ccode_node_unref0 (vdeclarator);
						}
						_tmp314_ = prop;
						_tmp315_ = vala_property_get_set_accessor (_tmp314_);
						_tmp316_ = _tmp315_;
						if (_tmp316_ != NULL) {
							ValaCCodeFunctionDeclarator* vdeclarator = NULL;
							ValaProperty* _tmp317_;
							const gchar* _tmp318_;
							const gchar* _tmp319_;
							gchar* _tmp320_;
							gchar* _tmp321_;
							ValaCCodeFunctionDeclarator* _tmp322_;
							ValaCCodeFunctionDeclarator* _tmp323_;
							ValaCCodeFunctionDeclarator* _tmp324_;
							ValaCCodeParameter* _tmp325_;
							gboolean _tmp326_;
							ValaArrayType* array_type = NULL;
							ValaProperty* _tmp351_;
							ValaDataType* _tmp352_;
							ValaDataType* _tmp353_;
							ValaArrayType* _tmp354_;
							ValaArrayType* _tmp355_;
							ValaCCodeDeclaration* vdecl = NULL;
							ValaCCodeDeclaration* _tmp368_;
							ValaCCodeDeclaration* _tmp369_;
							ValaCCodeFunctionDeclarator* _tmp370_;
							ValaCCodeStruct* _tmp371_;
							ValaCCodeDeclaration* _tmp372_;
							_tmp317_ = prop;
							_tmp318_ = vala_symbol_get_name ((ValaSymbol*) _tmp317_);
							_tmp319_ = _tmp318_;
							_tmp320_ = g_strdup_printf ("set_%s", _tmp319_);
							_tmp321_ = _tmp320_;
							_tmp322_ = vala_ccode_function_declarator_new (_tmp321_);
							_tmp323_ = _tmp322_;
							_g_free0 (_tmp321_);
							vdeclarator = _tmp323_;
							_tmp324_ = vdeclarator;
							_tmp325_ = cselfparam;
							vala_ccode_function_declarator_add_parameter (_tmp324_, _tmp325_);
							_tmp326_ = returns_real_struct;
							if (_tmp326_) {
								ValaCCodeParameter* cvalueparam = NULL;
								ValaProperty* _tmp327_;
								ValaPropertyAccessor* _tmp328_;
								ValaPropertyAccessor* _tmp329_;
								ValaDataType* _tmp330_;
								ValaDataType* _tmp331_;
								gchar* _tmp332_;
								gchar* _tmp333_;
								gchar* _tmp334_;
								gchar* _tmp335_;
								ValaCCodeParameter* _tmp336_;
								ValaCCodeParameter* _tmp337_;
								ValaCCodeFunctionDeclarator* _tmp338_;
								ValaCCodeParameter* _tmp339_;
								_tmp327_ = prop;
								_tmp328_ = vala_property_get_set_accessor (_tmp327_);
								_tmp329_ = _tmp328_;
								_tmp330_ = vala_property_accessor_get_value_type (_tmp329_);
								_tmp331_ = _tmp330_;
								_tmp332_ = vala_get_ccode_name ((ValaCodeNode*) _tmp331_);
								_tmp333_ = _tmp332_;
								_tmp334_ = g_strdup_printf ("%s *", _tmp333_);
								_tmp335_ = _tmp334_;
								_tmp336_ = vala_ccode_parameter_new ("value", _tmp335_);
								_tmp337_ = _tmp336_;
								_g_free0 (_tmp335_);
								_g_free0 (_tmp333_);
								cvalueparam = _tmp337_;
								_tmp338_ = vdeclarator;
								_tmp339_ = cvalueparam;
								vala_ccode_function_declarator_add_parameter (_tmp338_, _tmp339_);
								_vala_ccode_node_unref0 (cvalueparam);
							} else {
								ValaCCodeParameter* cvalueparam = NULL;
								ValaProperty* _tmp340_;
								ValaPropertyAccessor* _tmp341_;
								ValaPropertyAccessor* _tmp342_;
								ValaDataType* _tmp343_;
								ValaDataType* _tmp344_;
								gchar* _tmp345_;
								gchar* _tmp346_;
								ValaCCodeParameter* _tmp347_;
								ValaCCodeParameter* _tmp348_;
								ValaCCodeFunctionDeclarator* _tmp349_;
								ValaCCodeParameter* _tmp350_;
								_tmp340_ = prop;
								_tmp341_ = vala_property_get_set_accessor (_tmp340_);
								_tmp342_ = _tmp341_;
								_tmp343_ = vala_property_accessor_get_value_type (_tmp342_);
								_tmp344_ = _tmp343_;
								_tmp345_ = vala_get_ccode_name ((ValaCodeNode*) _tmp344_);
								_tmp346_ = _tmp345_;
								_tmp347_ = vala_ccode_parameter_new ("value", _tmp346_);
								_tmp348_ = _tmp347_;
								_g_free0 (_tmp346_);
								cvalueparam = _tmp348_;
								_tmp349_ = vdeclarator;
								_tmp350_ = cvalueparam;
								vala_ccode_function_declarator_add_parameter (_tmp349_, _tmp350_);
								_vala_ccode_node_unref0 (cvalueparam);
							}
							_tmp351_ = prop;
							_tmp352_ = vala_property_get_property_type (_tmp351_);
							_tmp353_ = _tmp352_;
							_tmp354_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp353_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp353_) : NULL);
							array_type = _tmp354_;
							_tmp355_ = array_type;
							if (_tmp355_ != NULL) {
								{
									gint dim = 0;
									dim = 1;
									{
										gboolean _tmp356_ = FALSE;
										_tmp356_ = TRUE;
										while (TRUE) {
											gint _tmp358_;
											ValaArrayType* _tmp359_;
											gint _tmp360_;
											gint _tmp361_;
											ValaCCodeFunctionDeclarator* _tmp362_;
											gint _tmp363_;
											gchar* _tmp364_;
											gchar* _tmp365_;
											ValaCCodeParameter* _tmp366_;
											ValaCCodeParameter* _tmp367_;
											if (!_tmp356_) {
												gint _tmp357_;
												_tmp357_ = dim;
												dim = _tmp357_ + 1;
											}
											_tmp356_ = FALSE;
											_tmp358_ = dim;
											_tmp359_ = array_type;
											_tmp360_ = vala_array_type_get_rank (_tmp359_);
											_tmp361_ = _tmp360_;
											if (!(_tmp358_ <= _tmp361_)) {
												break;
											}
											_tmp362_ = vdeclarator;
											_tmp363_ = dim;
											_tmp364_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "value", _tmp363_);
											_tmp365_ = _tmp364_;
											_tmp366_ = vala_ccode_parameter_new (_tmp365_, "int");
											_tmp367_ = _tmp366_;
											vala_ccode_function_declarator_add_parameter (_tmp362_, _tmp367_);
											_vala_ccode_node_unref0 (_tmp367_);
											_g_free0 (_tmp365_);
										}
									}
								}
							}
							_tmp368_ = vala_ccode_declaration_new ("void");
							vdecl = _tmp368_;
							_tmp369_ = vdecl;
							_tmp370_ = vdeclarator;
							vala_ccode_declaration_add_declarator (_tmp369_, (ValaCCodeDeclarator*) _tmp370_);
							_tmp371_ = type_struct;
							_tmp372_ = vdecl;
							vala_ccode_struct_add_declaration (_tmp371_, _tmp372_);
							_vala_ccode_node_unref0 (vdecl);
							_vala_code_node_unref0 (array_type);
							_vala_ccode_node_unref0 (vdeclarator);
						}
						_vala_ccode_node_unref0 (cselfparam);
						_vala_code_node_unref0 (this_type);
						_vala_code_node_unref0 (t);
					} else {
						g_assert_not_reached ();
					}
				}
			}
			_vala_code_node_unref0 (prop);
			_vala_code_node_unref0 (sig);
			_vala_code_node_unref0 (m);
			_vala_code_node_unref0 (sym);
		}
		_vala_iterable_unref0 (_sym_list);
	}
	_tmp373_ = decl_space;
	_tmp374_ = type_struct;
	vala_ccode_file_add_type_definition (_tmp373_, (ValaCCodeNode*) _tmp374_);
	_tmp375_ = iface;
	_tmp376_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
	_tmp377_ = _tmp376_;
	_tmp378_ = vala_interface_register_function_new (_tmp375_, _tmp377_);
	type_fun = _tmp378_;
	_tmp379_ = type_fun;
	_tmp380_ = ((ValaCCodeBaseModule*) self)->in_plugin;
	vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp379_, _tmp380_, TRUE);
	_tmp381_ = decl_space;
	_tmp382_ = type_fun;
	_tmp383_ = vala_typeregister_function_get_declaration ((ValaTypeRegisterFunction*) _tmp382_);
	_tmp384_ = _tmp383_;
	vala_ccode_file_add_type_member_declaration (_tmp381_, (ValaCCodeNode*) _tmp384_);
	_vala_ccode_node_unref0 (_tmp384_);
	_vala_typeregister_function_unref0 (type_fun);
	_g_free0 (macro);
	_vala_ccode_node_unref0 (type_struct);
}


static void vala_gtype_module_real_visit_interface (ValaCodeVisitor* base, ValaInterface* iface) {
	ValaGTypeModule * self;
	ValaInterface* _tmp0_;
	ValaCCodeBaseModuleEmitContext* _tmp1_;
	ValaCCodeBaseModuleEmitContext* _tmp2_;
	ValaInterface* _tmp3_;
	ValaSourceReference* _tmp4_;
	ValaSourceReference* _tmp5_;
	ValaCCodeEnum* old_signal_enum = NULL;
	ValaCCodeEnum* _tmp6_;
	ValaCCodeEnum* _tmp7_;
	ValaInterface* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	gint _tmp11_;
	gint _tmp12_;
	gboolean _tmp13_;
	ValaCCodeEnum* _tmp23_;
	ValaInterface* _tmp24_;
	ValaCCodeFile* _tmp25_;
	ValaInterface* _tmp26_;
	gboolean _tmp27_;
	ValaInterface* _tmp30_;
	gboolean _tmp31_;
	ValaInterface* _tmp34_;
	ValaInterface* _tmp35_;
	ValaList* _tmp36_;
	ValaList* _tmp37_;
	gint _tmp38_;
	gint _tmp39_;
	gboolean _tmp40_;
	ValaInterface* _tmp74_;
	ValaInterface* _tmp75_;
	ValaComment* _tmp76_;
	ValaComment* _tmp77_;
	ValaInterfaceRegisterFunction* type_fun = NULL;
	ValaInterface* _tmp86_;
	ValaCodeContext* _tmp87_;
	ValaCodeContext* _tmp88_;
	ValaInterfaceRegisterFunction* _tmp89_;
	ValaInterfaceRegisterFunction* _tmp90_;
	gboolean _tmp91_;
	ValaCCodeFile* _tmp92_;
	ValaInterfaceRegisterFunction* _tmp93_;
	ValaCCodeFragment* _tmp94_;
	ValaCCodeFragment* _tmp95_;
	ValaCCodeFile* _tmp96_;
	ValaInterfaceRegisterFunction* _tmp97_;
	ValaCCodeFragment* _tmp98_;
	ValaCCodeFragment* _tmp99_;
	ValaCCodeEnum* _tmp100_;
	ValaCCodeEnum* _tmp101_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (iface != NULL);
	_tmp0_ = iface;
	_tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp2_);
	_vala_ccode_base_module_emit_context_unref0 (_tmp2_);
	_tmp3_ = iface;
	_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
	_tmp5_ = _tmp4_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
	_tmp6_ = ((ValaCCodeBaseModule*) self)->signal_enum;
	_tmp7_ = _vala_ccode_node_ref0 (_tmp6_);
	old_signal_enum = _tmp7_;
	_tmp8_ = iface;
	_tmp9_ = vala_get_ccode_name ((ValaCodeNode*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = strlen (_tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = _tmp12_ < 3;
	_g_free0 (_tmp10_);
	if (_tmp13_) {
		ValaInterface* _tmp14_;
		ValaInterface* _tmp15_;
		ValaSourceReference* _tmp16_;
		ValaSourceReference* _tmp17_;
		ValaInterface* _tmp18_;
		gchar* _tmp19_;
		gchar* _tmp20_;
		gchar* _tmp21_;
		gchar* _tmp22_;
		_tmp14_ = iface;
		vala_code_node_set_error ((ValaCodeNode*) _tmp14_, TRUE);
		_tmp15_ = iface;
		_tmp16_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp15_);
		_tmp17_ = _tmp16_;
		_tmp18_ = iface;
		_tmp19_ = vala_get_ccode_name ((ValaCodeNode*) _tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = g_strdup_printf ("Interface name `%s' is too short", _tmp20_);
		_tmp22_ = _tmp21_;
		vala_report_error (_tmp17_, _tmp22_);
		_g_free0 (_tmp22_);
		_g_free0 (_tmp20_);
		_vala_ccode_node_unref0 (old_signal_enum);
		return;
	}
	_tmp23_ = vala_ccode_enum_new (NULL);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
	((ValaCCodeBaseModule*) self)->signal_enum = _tmp23_;
	_tmp24_ = iface;
	_tmp25_ = ((ValaCCodeBaseModule*) self)->cfile;
	vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp24_, _tmp25_);
	_tmp26_ = iface;
	_tmp27_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp26_);
	if (!_tmp27_) {
		ValaInterface* _tmp28_;
		ValaCCodeFile* _tmp29_;
		_tmp28_ = iface;
		_tmp29_ = ((ValaCCodeBaseModule*) self)->header_file;
		vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp28_, _tmp29_);
	}
	_tmp30_ = iface;
	_tmp31_ = vala_symbol_is_private_symbol ((ValaSymbol*) _tmp30_);
	if (!_tmp31_) {
		ValaInterface* _tmp32_;
		ValaCCodeFile* _tmp33_;
		_tmp32_ = iface;
		_tmp33_ = ((ValaCCodeBaseModule*) self)->internal_header_file;
		vala_ccode_base_module_generate_interface_declaration ((ValaCCodeBaseModule*) self, _tmp32_, _tmp33_);
	}
	_tmp34_ = iface;
	vala_code_node_accept_children ((ValaCodeNode*) _tmp34_, (ValaCodeVisitor*) self);
	_tmp35_ = iface;
	_tmp36_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp35_);
	_tmp37_ = _tmp36_;
	_tmp38_ = vala_collection_get_size ((ValaCollection*) _tmp37_);
	_tmp39_ = _tmp38_;
	_tmp40_ = _tmp39_ > 0;
	_vala_iterable_unref0 (_tmp37_);
	if (_tmp40_) {
		gchar* last_signal = NULL;
		ValaInterface* _tmp41_;
		gchar* _tmp42_;
		gchar* _tmp43_;
		gchar* _tmp44_;
		gchar* _tmp45_;
		ValaCCodeEnum* _tmp46_;
		const gchar* _tmp47_;
		ValaCCodeEnumValue* _tmp48_;
		ValaCCodeEnumValue* _tmp49_;
		ValaCCodeFile* _tmp50_;
		ValaCCodeEnum* _tmp51_;
		ValaCCodeDeclaration* signal_array_decl = NULL;
		ValaCCodeDeclaration* _tmp52_;
		ValaCCodeDeclaration* _tmp53_;
		ValaCCodeDeclaration* _tmp54_;
		ValaCCodeModifiers _tmp55_;
		ValaCCodeModifiers _tmp56_;
		ValaCCodeDeclaration* _tmp57_;
		ValaInterface* _tmp58_;
		gchar* _tmp59_;
		gchar* _tmp60_;
		gchar* _tmp61_;
		gchar* _tmp62_;
		ValaCCodeConstant* _tmp63_;
		ValaCCodeConstant* _tmp64_;
		const gchar* _tmp65_;
		ValaCCodeIdentifier* _tmp66_;
		ValaCCodeIdentifier* _tmp67_;
		ValaCCodeDeclaratorSuffix* _tmp68_;
		ValaCCodeDeclaratorSuffix* _tmp69_;
		ValaCCodeVariableDeclarator* _tmp70_;
		ValaCCodeVariableDeclarator* _tmp71_;
		ValaCCodeFile* _tmp72_;
		ValaCCodeDeclaration* _tmp73_;
		_tmp41_ = iface;
		_tmp42_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp41_, NULL);
		_tmp43_ = _tmp42_;
		_tmp44_ = g_strdup_printf ("%s_NUM_SIGNALS", _tmp43_);
		_tmp45_ = _tmp44_;
		_g_free0 (_tmp43_);
		last_signal = _tmp45_;
		_tmp46_ = ((ValaCCodeBaseModule*) self)->signal_enum;
		_tmp47_ = last_signal;
		_tmp48_ = vala_ccode_enum_value_new (_tmp47_, NULL);
		_tmp49_ = _tmp48_;
		vala_ccode_enum_add_value (_tmp46_, _tmp49_);
		_vala_ccode_node_unref0 (_tmp49_);
		_tmp50_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp51_ = ((ValaCCodeBaseModule*) self)->signal_enum;
		vala_ccode_file_add_type_declaration (_tmp50_, (ValaCCodeNode*) _tmp51_);
		_tmp52_ = vala_ccode_declaration_new ("guint");
		signal_array_decl = _tmp52_;
		_tmp53_ = signal_array_decl;
		_tmp54_ = signal_array_decl;
		_tmp55_ = vala_ccode_node_get_modifiers ((ValaCCodeNode*) _tmp54_);
		_tmp56_ = _tmp55_;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp54_, _tmp56_ | VALA_CCODE_MODIFIERS_STATIC);
		_tmp57_ = signal_array_decl;
		_tmp58_ = iface;
		_tmp59_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp58_, NULL);
		_tmp60_ = _tmp59_;
		_tmp61_ = g_strdup_printf ("%s_signals", _tmp60_);
		_tmp62_ = _tmp61_;
		_tmp63_ = vala_ccode_constant_new ("{0}");
		_tmp64_ = _tmp63_;
		_tmp65_ = last_signal;
		_tmp66_ = vala_ccode_identifier_new (_tmp65_);
		_tmp67_ = _tmp66_;
		_tmp68_ = vala_ccode_declarator_suffix_new_with_array ((ValaCCodeExpression*) _tmp67_);
		_tmp69_ = _tmp68_;
		_tmp70_ = vala_ccode_variable_declarator_new (_tmp62_, (ValaCCodeExpression*) _tmp64_, _tmp69_);
		_tmp71_ = _tmp70_;
		vala_ccode_declaration_add_declarator (_tmp57_, (ValaCCodeDeclarator*) _tmp71_);
		_vala_ccode_node_unref0 (_tmp71_);
		_vala_ccode_declarator_suffix_unref0 (_tmp69_);
		_vala_ccode_node_unref0 (_tmp67_);
		_vala_ccode_node_unref0 (_tmp64_);
		_g_free0 (_tmp62_);
		_g_free0 (_tmp60_);
		_tmp72_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp73_ = signal_array_decl;
		vala_ccode_file_add_type_declaration (_tmp72_, (ValaCCodeNode*) _tmp73_);
		_vala_ccode_node_unref0 (signal_array_decl);
		_g_free0 (last_signal);
	}
	_tmp74_ = iface;
	vala_gtype_module_add_interface_base_init_function (self, _tmp74_);
	_tmp75_ = iface;
	_tmp76_ = vala_symbol_get_comment ((ValaSymbol*) _tmp75_);
	_tmp77_ = _tmp76_;
	if (_tmp77_ != NULL) {
		ValaCCodeFile* _tmp78_;
		ValaInterface* _tmp79_;
		ValaComment* _tmp80_;
		ValaComment* _tmp81_;
		const gchar* _tmp82_;
		const gchar* _tmp83_;
		ValaCCodeComment* _tmp84_;
		ValaCCodeComment* _tmp85_;
		_tmp78_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp79_ = iface;
		_tmp80_ = vala_symbol_get_comment ((ValaSymbol*) _tmp79_);
		_tmp81_ = _tmp80_;
		_tmp82_ = vala_comment_get_content (_tmp81_);
		_tmp83_ = _tmp82_;
		_tmp84_ = vala_ccode_comment_new (_tmp83_);
		_tmp85_ = _tmp84_;
		vala_ccode_file_add_type_member_definition (_tmp78_, (ValaCCodeNode*) _tmp85_);
		_vala_ccode_node_unref0 (_tmp85_);
	}
	_tmp86_ = iface;
	_tmp87_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
	_tmp88_ = _tmp87_;
	_tmp89_ = vala_interface_register_function_new (_tmp86_, _tmp88_);
	type_fun = _tmp89_;
	_tmp90_ = type_fun;
	_tmp91_ = ((ValaCCodeBaseModule*) self)->in_plugin;
	vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp90_, _tmp91_, FALSE);
	_tmp92_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp93_ = type_fun;
	_tmp94_ = vala_typeregister_function_get_source_declaration ((ValaTypeRegisterFunction*) _tmp93_);
	_tmp95_ = _tmp94_;
	vala_ccode_file_add_type_member_declaration (_tmp92_, (ValaCCodeNode*) _tmp95_);
	_vala_ccode_node_unref0 (_tmp95_);
	_tmp96_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp97_ = type_fun;
	_tmp98_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp97_);
	_tmp99_ = _tmp98_;
	vala_ccode_file_add_type_member_definition (_tmp96_, (ValaCCodeNode*) _tmp99_);
	_vala_ccode_node_unref0 (_tmp99_);
	_tmp100_ = old_signal_enum;
	_tmp101_ = _vala_ccode_node_ref0 (_tmp100_);
	_vala_ccode_node_unref0 (((ValaCCodeBaseModule*) self)->signal_enum);
	((ValaCCodeBaseModule*) self)->signal_enum = _tmp101_;
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_vala_typeregister_function_unref0 (type_fun);
	_vala_ccode_node_unref0 (old_signal_enum);
}


static gpointer _vala_iterable_ref0 (gpointer self) {
	return self ? vala_iterable_ref (self) : NULL;
}


static void vala_gtype_module_add_interface_base_init_function (ValaGTypeModule* self, ValaInterface* iface) {
	ValaInterface* _tmp0_;
	ValaCCodeBaseModuleEmitContext* _tmp1_;
	ValaCCodeBaseModuleEmitContext* _tmp2_;
	ValaCCodeFunction* base_init = NULL;
	ValaInterface* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	ValaCCodeFunction* _tmp8_;
	ValaCCodeFunction* _tmp9_;
	ValaCCodeFunction* _tmp10_;
	ValaInterface* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	ValaCCodeParameter* _tmp16_;
	ValaCCodeParameter* _tmp17_;
	ValaCCodeFunction* _tmp18_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeFunction* _tmp20_;
	ValaCCodeFunction* _tmp21_;
	ValaDataType* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	ValaCCodeConstant* _tmp25_;
	ValaCCodeConstant* _tmp26_;
	ValaCCodeVariableDeclarator* _tmp27_;
	ValaCCodeVariableDeclarator* _tmp28_;
	ValaCCodeFunction* _tmp29_;
	ValaCCodeFunction* _tmp30_;
	ValaCCodeIdentifier* _tmp31_;
	ValaCCodeIdentifier* _tmp32_;
	ValaCCodeUnaryExpression* _tmp33_;
	ValaCCodeUnaryExpression* _tmp34_;
	ValaCCodeFunction* _tmp35_;
	ValaCCodeFunction* _tmp36_;
	ValaCCodeIdentifier* _tmp37_;
	ValaCCodeIdentifier* _tmp38_;
	ValaCCodeConstant* _tmp39_;
	ValaCCodeConstant* _tmp40_;
	ValaInterface* _tmp41_;
	ValaTypeSymbol* _tmp42_;
	gboolean _tmp43_;
	ValaCCodeIdentifier* ciface = NULL;
	ValaCCodeIdentifier* _tmp88_;
	ValaCCodeFunction* _tmp246_;
	ValaCCodeFunction* _tmp247_;
	ValaCCodeFile* _tmp248_;
	ValaCCodeFunction* _tmp249_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (iface != NULL);
	_tmp0_ = iface;
	_tmp1_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp2_);
	_vala_ccode_base_module_emit_context_unref0 (_tmp2_);
	_tmp3_ = iface;
	_tmp4_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp3_, NULL);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_strdup_printf ("%s_base_init", _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = vala_ccode_function_new (_tmp7_, "void");
	_tmp9_ = _tmp8_;
	_g_free0 (_tmp7_);
	_g_free0 (_tmp5_);
	base_init = _tmp9_;
	_tmp10_ = base_init;
	_tmp11_ = iface;
	_tmp12_ = vala_get_ccode_name ((ValaCodeNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = g_strdup_printf ("%sIface *", _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = vala_ccode_parameter_new ("iface", _tmp15_);
	_tmp17_ = _tmp16_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp17_);
	_vala_ccode_node_unref0 (_tmp17_);
	_g_free0 (_tmp15_);
	_g_free0 (_tmp13_);
	_tmp18_ = base_init;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp18_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp19_ = base_init;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
	_tmp20_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp21_ = _tmp20_;
	_tmp22_ = ((ValaCCodeBaseModule*) self)->bool_type;
	_tmp23_ = vala_get_ccode_name ((ValaCodeNode*) _tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = vala_ccode_constant_new ("FALSE");
	_tmp26_ = _tmp25_;
	_tmp27_ = vala_ccode_variable_declarator_new ("initialized", (ValaCCodeExpression*) _tmp26_, NULL);
	_tmp28_ = _tmp27_;
	vala_ccode_function_add_declaration (_tmp21_, _tmp24_, (ValaCCodeDeclarator*) _tmp28_, VALA_CCODE_MODIFIERS_STATIC);
	_vala_ccode_node_unref0 (_tmp28_);
	_vala_ccode_node_unref0 (_tmp26_);
	_g_free0 (_tmp24_);
	_tmp29_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp30_ = _tmp29_;
	_tmp31_ = vala_ccode_identifier_new ("initialized");
	_tmp32_ = _tmp31_;
	_tmp33_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_LOGICAL_NEGATION, (ValaCCodeExpression*) _tmp32_);
	_tmp34_ = _tmp33_;
	vala_ccode_function_open_if (_tmp30_, (ValaCCodeExpression*) _tmp34_);
	_vala_ccode_node_unref0 (_tmp34_);
	_vala_ccode_node_unref0 (_tmp32_);
	_tmp35_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp36_ = _tmp35_;
	_tmp37_ = vala_ccode_identifier_new ("initialized");
	_tmp38_ = _tmp37_;
	_tmp39_ = vala_ccode_constant_new ("TRUE");
	_tmp40_ = _tmp39_;
	vala_ccode_function_add_assignment (_tmp36_, (ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp40_);
	_vala_ccode_node_unref0 (_tmp40_);
	_vala_ccode_node_unref0 (_tmp38_);
	_tmp41_ = iface;
	_tmp42_ = ((ValaCCodeBaseModule*) self)->gobject_type;
	_tmp43_ = vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp41_, _tmp42_);
	if (_tmp43_) {
		ValaList* props = NULL;
		ValaInterface* _tmp44_;
		ValaList* _tmp45_;
		_tmp44_ = iface;
		_tmp45_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp44_);
		props = _tmp45_;
		{
			ValaList* _prop_list = NULL;
			ValaList* _tmp46_;
			ValaList* _tmp47_;
			gint _prop_size = 0;
			ValaList* _tmp48_;
			gint _tmp49_;
			gint _tmp50_;
			gint _prop_index = 0;
			_tmp46_ = props;
			_tmp47_ = _vala_iterable_ref0 (_tmp46_);
			_prop_list = _tmp47_;
			_tmp48_ = _prop_list;
			_tmp49_ = vala_collection_get_size ((ValaCollection*) _tmp48_);
			_tmp50_ = _tmp49_;
			_prop_size = _tmp50_;
			_prop_index = -1;
			while (TRUE) {
				gint _tmp51_;
				gint _tmp52_;
				gint _tmp53_;
				ValaProperty* prop = NULL;
				ValaList* _tmp54_;
				gint _tmp55_;
				gpointer _tmp56_;
				ValaProperty* _tmp57_;
				gboolean _tmp58_;
				gboolean _tmp59_;
				_tmp51_ = _prop_index;
				_prop_index = _tmp51_ + 1;
				_tmp52_ = _prop_index;
				_tmp53_ = _prop_size;
				if (!(_tmp52_ < _tmp53_)) {
					break;
				}
				_tmp54_ = _prop_list;
				_tmp55_ = _prop_index;
				_tmp56_ = vala_list_get (_tmp54_, _tmp55_);
				prop = (ValaProperty*) _tmp56_;
				_tmp57_ = prop;
				_tmp58_ = vala_property_get_is_abstract (_tmp57_);
				_tmp59_ = _tmp58_;
				if (_tmp59_) {
					ValaProperty* _tmp60_;
					gboolean _tmp61_;
					ValaProperty* _tmp62_;
					ValaComment* _tmp63_;
					ValaComment* _tmp64_;
					ValaCCodeFunctionCall* cinst = NULL;
					ValaCCodeIdentifier* _tmp74_;
					ValaCCodeIdentifier* _tmp75_;
					ValaCCodeFunctionCall* _tmp76_;
					ValaCCodeFunctionCall* _tmp77_;
					ValaCCodeFunctionCall* _tmp78_;
					ValaCCodeIdentifier* _tmp79_;
					ValaCCodeIdentifier* _tmp80_;
					ValaCCodeFunctionCall* _tmp81_;
					ValaProperty* _tmp82_;
					ValaCCodeExpression* _tmp83_;
					ValaCCodeExpression* _tmp84_;
					ValaCCodeFunction* _tmp85_;
					ValaCCodeFunction* _tmp86_;
					ValaCCodeFunctionCall* _tmp87_;
					_tmp60_ = prop;
					_tmp61_ = vala_ccode_base_module_is_gobject_property ((ValaCCodeBaseModule*) self, _tmp60_);
					if (!_tmp61_) {
						_vala_code_node_unref0 (prop);
						continue;
					}
					_tmp62_ = prop;
					_tmp63_ = vala_symbol_get_comment ((ValaSymbol*) _tmp62_);
					_tmp64_ = _tmp63_;
					if (_tmp64_ != NULL) {
						ValaCCodeFunction* _tmp65_;
						ValaCCodeFunction* _tmp66_;
						ValaProperty* _tmp67_;
						ValaComment* _tmp68_;
						ValaComment* _tmp69_;
						const gchar* _tmp70_;
						const gchar* _tmp71_;
						ValaCCodeComment* _tmp72_;
						ValaCCodeComment* _tmp73_;
						_tmp65_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
						_tmp66_ = _tmp65_;
						_tmp67_ = prop;
						_tmp68_ = vala_symbol_get_comment ((ValaSymbol*) _tmp67_);
						_tmp69_ = _tmp68_;
						_tmp70_ = vala_comment_get_content (_tmp69_);
						_tmp71_ = _tmp70_;
						_tmp72_ = vala_ccode_comment_new (_tmp71_);
						_tmp73_ = _tmp72_;
						vala_ccode_function_add_statement (_tmp66_, (ValaCCodeNode*) _tmp73_);
						_vala_ccode_node_unref0 (_tmp73_);
					}
					_tmp74_ = vala_ccode_identifier_new ("g_object_interface_install_property");
					_tmp75_ = _tmp74_;
					_tmp76_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp75_);
					_tmp77_ = _tmp76_;
					_vala_ccode_node_unref0 (_tmp75_);
					cinst = _tmp77_;
					_tmp78_ = cinst;
					_tmp79_ = vala_ccode_identifier_new ("iface");
					_tmp80_ = _tmp79_;
					vala_ccode_function_call_add_argument (_tmp78_, (ValaCCodeExpression*) _tmp80_);
					_vala_ccode_node_unref0 (_tmp80_);
					_tmp81_ = cinst;
					_tmp82_ = prop;
					_tmp83_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, _tmp82_);
					_tmp84_ = _tmp83_;
					vala_ccode_function_call_add_argument (_tmp81_, _tmp84_);
					_vala_ccode_node_unref0 (_tmp84_);
					_tmp85_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp86_ = _tmp85_;
					_tmp87_ = cinst;
					vala_ccode_function_add_expression (_tmp86_, (ValaCCodeExpression*) _tmp87_);
					_vala_ccode_node_unref0 (cinst);
				}
				_vala_code_node_unref0 (prop);
			}
			_vala_iterable_unref0 (_prop_list);
		}
		_vala_iterable_unref0 (props);
	}
	_tmp88_ = vala_ccode_identifier_new ("iface");
	ciface = _tmp88_;
	{
		ValaList* _sig_list = NULL;
		ValaInterface* _tmp89_;
		ValaList* _tmp90_;
		gint _sig_size = 0;
		ValaList* _tmp91_;
		gint _tmp92_;
		gint _tmp93_;
		gint _sig_index = 0;
		_tmp89_ = iface;
		_tmp90_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp89_);
		_sig_list = _tmp90_;
		_tmp91_ = _sig_list;
		_tmp92_ = vala_collection_get_size ((ValaCollection*) _tmp91_);
		_tmp93_ = _tmp92_;
		_sig_size = _tmp93_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp94_;
			gint _tmp95_;
			gint _tmp96_;
			ValaSignal* sig = NULL;
			ValaList* _tmp97_;
			gint _tmp98_;
			gpointer _tmp99_;
			ValaSignal* _tmp100_;
			ValaMethod* _tmp101_;
			ValaMethod* _tmp102_;
			gchar* cname = NULL;
			ValaSignal* _tmp103_;
			ValaMethod* _tmp104_;
			ValaMethod* _tmp105_;
			gchar* _tmp106_;
			ValaCCodeFunction* _tmp107_;
			ValaCCodeFunction* _tmp108_;
			ValaCCodeIdentifier* _tmp109_;
			ValaSignal* _tmp110_;
			ValaMethod* _tmp111_;
			ValaMethod* _tmp112_;
			gchar* _tmp113_;
			gchar* _tmp114_;
			ValaCCodeMemberAccess* _tmp115_;
			ValaCCodeMemberAccess* _tmp116_;
			const gchar* _tmp117_;
			ValaCCodeIdentifier* _tmp118_;
			ValaCCodeIdentifier* _tmp119_;
			_tmp94_ = _sig_index;
			_sig_index = _tmp94_ + 1;
			_tmp95_ = _sig_index;
			_tmp96_ = _sig_size;
			if (!(_tmp95_ < _tmp96_)) {
				break;
			}
			_tmp97_ = _sig_list;
			_tmp98_ = _sig_index;
			_tmp99_ = vala_list_get (_tmp97_, _tmp98_);
			sig = (ValaSignal*) _tmp99_;
			_tmp100_ = sig;
			_tmp101_ = vala_signal_get_default_handler (_tmp100_);
			_tmp102_ = _tmp101_;
			if (_tmp102_ == NULL) {
				_vala_code_node_unref0 (sig);
				continue;
			}
			_tmp103_ = sig;
			_tmp104_ = vala_signal_get_default_handler (_tmp103_);
			_tmp105_ = _tmp104_;
			_tmp106_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp105_);
			cname = _tmp106_;
			_tmp107_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp108_ = _tmp107_;
			_tmp109_ = ciface;
			_tmp110_ = sig;
			_tmp111_ = vala_signal_get_default_handler (_tmp110_);
			_tmp112_ = _tmp111_;
			_tmp113_ = vala_get_ccode_vfunc_name (_tmp112_);
			_tmp114_ = _tmp113_;
			_tmp115_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp109_, _tmp114_);
			_tmp116_ = _tmp115_;
			_tmp117_ = cname;
			_tmp118_ = vala_ccode_identifier_new (_tmp117_);
			_tmp119_ = _tmp118_;
			vala_ccode_function_add_assignment (_tmp108_, (ValaCCodeExpression*) _tmp116_, (ValaCCodeExpression*) _tmp119_);
			_vala_ccode_node_unref0 (_tmp119_);
			_vala_ccode_node_unref0 (_tmp116_);
			_g_free0 (_tmp114_);
			_g_free0 (cname);
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _sig_list = NULL;
		ValaInterface* _tmp120_;
		ValaList* _tmp121_;
		gint _sig_size = 0;
		ValaList* _tmp122_;
		gint _tmp123_;
		gint _tmp124_;
		gint _sig_index = 0;
		_tmp120_ = iface;
		_tmp121_ = vala_object_type_symbol_get_signals ((ValaObjectTypeSymbol*) _tmp120_);
		_sig_list = _tmp121_;
		_tmp122_ = _sig_list;
		_tmp123_ = vala_collection_get_size ((ValaCollection*) _tmp122_);
		_tmp124_ = _tmp123_;
		_sig_size = _tmp124_;
		_sig_index = -1;
		while (TRUE) {
			gint _tmp125_;
			gint _tmp126_;
			gint _tmp127_;
			ValaSignal* sig = NULL;
			ValaList* _tmp128_;
			gint _tmp129_;
			gpointer _tmp130_;
			ValaSignal* _tmp131_;
			ValaComment* _tmp132_;
			ValaComment* _tmp133_;
			ValaCCodeFunction* _tmp143_;
			ValaCCodeFunction* _tmp144_;
			ValaSignal* _tmp145_;
			ValaInterface* _tmp146_;
			ValaCCodeExpression* _tmp147_;
			ValaCCodeExpression* _tmp148_;
			_tmp125_ = _sig_index;
			_sig_index = _tmp125_ + 1;
			_tmp126_ = _sig_index;
			_tmp127_ = _sig_size;
			if (!(_tmp126_ < _tmp127_)) {
				break;
			}
			_tmp128_ = _sig_list;
			_tmp129_ = _sig_index;
			_tmp130_ = vala_list_get (_tmp128_, _tmp129_);
			sig = (ValaSignal*) _tmp130_;
			_tmp131_ = sig;
			_tmp132_ = vala_symbol_get_comment ((ValaSymbol*) _tmp131_);
			_tmp133_ = _tmp132_;
			if (_tmp133_ != NULL) {
				ValaCCodeFunction* _tmp134_;
				ValaCCodeFunction* _tmp135_;
				ValaSignal* _tmp136_;
				ValaComment* _tmp137_;
				ValaComment* _tmp138_;
				const gchar* _tmp139_;
				const gchar* _tmp140_;
				ValaCCodeComment* _tmp141_;
				ValaCCodeComment* _tmp142_;
				_tmp134_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp135_ = _tmp134_;
				_tmp136_ = sig;
				_tmp137_ = vala_symbol_get_comment ((ValaSymbol*) _tmp136_);
				_tmp138_ = _tmp137_;
				_tmp139_ = vala_comment_get_content (_tmp138_);
				_tmp140_ = _tmp139_;
				_tmp141_ = vala_ccode_comment_new (_tmp140_);
				_tmp142_ = _tmp141_;
				vala_ccode_function_add_statement (_tmp135_, (ValaCCodeNode*) _tmp142_);
				_vala_ccode_node_unref0 (_tmp142_);
			}
			_tmp143_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp144_ = _tmp143_;
			_tmp145_ = sig;
			_tmp146_ = iface;
			_tmp147_ = vala_ccode_base_module_get_signal_creation ((ValaCCodeBaseModule*) self, _tmp145_, (ValaTypeSymbol*) _tmp146_);
			_tmp148_ = _tmp147_;
			vala_ccode_function_add_expression (_tmp144_, _tmp148_);
			_vala_ccode_node_unref0 (_tmp148_);
			_vala_code_node_unref0 (sig);
		}
		_vala_iterable_unref0 (_sig_list);
	}
	{
		ValaList* _m_list = NULL;
		ValaInterface* _tmp149_;
		ValaList* _tmp150_;
		gint _m_size = 0;
		ValaList* _tmp151_;
		gint _tmp152_;
		gint _tmp153_;
		gint _m_index = 0;
		_tmp149_ = iface;
		_tmp150_ = vala_object_type_symbol_get_methods ((ValaObjectTypeSymbol*) _tmp149_);
		_m_list = _tmp150_;
		_tmp151_ = _m_list;
		_tmp152_ = vala_collection_get_size ((ValaCollection*) _tmp151_);
		_tmp153_ = _tmp152_;
		_m_size = _tmp153_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp154_;
			gint _tmp155_;
			gint _tmp156_;
			ValaMethod* m = NULL;
			ValaList* _tmp157_;
			gint _tmp158_;
			gpointer _tmp159_;
			ValaMethod* _tmp160_;
			gboolean _tmp161_;
			gboolean _tmp162_;
			_tmp154_ = _m_index;
			_m_index = _tmp154_ + 1;
			_tmp155_ = _m_index;
			_tmp156_ = _m_size;
			if (!(_tmp155_ < _tmp156_)) {
				break;
			}
			_tmp157_ = _m_list;
			_tmp158_ = _m_index;
			_tmp159_ = vala_list_get (_tmp157_, _tmp158_);
			m = (ValaMethod*) _tmp159_;
			_tmp160_ = m;
			_tmp161_ = vala_method_get_is_virtual (_tmp160_);
			_tmp162_ = _tmp161_;
			if (_tmp162_) {
				gchar* cname = NULL;
				ValaMethod* _tmp163_;
				gchar* _tmp164_;
				ValaCCodeFunction* _tmp165_;
				ValaCCodeFunction* _tmp166_;
				ValaCCodeIdentifier* _tmp167_;
				ValaMethod* _tmp168_;
				gchar* _tmp169_;
				gchar* _tmp170_;
				ValaCCodeMemberAccess* _tmp171_;
				ValaCCodeMemberAccess* _tmp172_;
				const gchar* _tmp173_;
				ValaCCodeIdentifier* _tmp174_;
				ValaCCodeIdentifier* _tmp175_;
				ValaMethod* _tmp176_;
				gboolean _tmp177_;
				gboolean _tmp178_;
				_tmp163_ = m;
				_tmp164_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp163_);
				cname = _tmp164_;
				_tmp165_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp166_ = _tmp165_;
				_tmp167_ = ciface;
				_tmp168_ = m;
				_tmp169_ = vala_get_ccode_vfunc_name (_tmp168_);
				_tmp170_ = _tmp169_;
				_tmp171_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp167_, _tmp170_);
				_tmp172_ = _tmp171_;
				_tmp173_ = cname;
				_tmp174_ = vala_ccode_identifier_new (_tmp173_);
				_tmp175_ = _tmp174_;
				vala_ccode_function_add_assignment (_tmp166_, (ValaCCodeExpression*) _tmp172_, (ValaCCodeExpression*) _tmp175_);
				_vala_ccode_node_unref0 (_tmp175_);
				_vala_ccode_node_unref0 (_tmp172_);
				_g_free0 (_tmp170_);
				_tmp176_ = m;
				_tmp177_ = vala_method_get_coroutine (_tmp176_);
				_tmp178_ = _tmp177_;
				if (_tmp178_) {
					ValaCCodeFunction* _tmp179_;
					ValaCCodeFunction* _tmp180_;
					ValaCCodeIdentifier* _tmp181_;
					ValaMethod* _tmp182_;
					gchar* _tmp183_;
					gchar* _tmp184_;
					ValaCCodeMemberAccess* _tmp185_;
					ValaCCodeMemberAccess* _tmp186_;
					ValaMethod* _tmp187_;
					gchar* _tmp188_;
					gchar* _tmp189_;
					ValaCCodeIdentifier* _tmp190_;
					ValaCCodeIdentifier* _tmp191_;
					_tmp179_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp180_ = _tmp179_;
					_tmp181_ = ciface;
					_tmp182_ = m;
					_tmp183_ = vala_get_ccode_finish_vfunc_name (_tmp182_);
					_tmp184_ = _tmp183_;
					_tmp185_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp181_, _tmp184_);
					_tmp186_ = _tmp185_;
					_tmp187_ = m;
					_tmp188_ = vala_get_ccode_finish_real_name (_tmp187_);
					_tmp189_ = _tmp188_;
					_tmp190_ = vala_ccode_identifier_new (_tmp189_);
					_tmp191_ = _tmp190_;
					vala_ccode_function_add_assignment (_tmp180_, (ValaCCodeExpression*) _tmp186_, (ValaCCodeExpression*) _tmp191_);
					_vala_ccode_node_unref0 (_tmp191_);
					_g_free0 (_tmp189_);
					_vala_ccode_node_unref0 (_tmp186_);
					_g_free0 (_tmp184_);
				}
				_g_free0 (cname);
			}
			_vala_code_node_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	{
		ValaList* _prop_list = NULL;
		ValaInterface* _tmp192_;
		ValaList* _tmp193_;
		gint _prop_size = 0;
		ValaList* _tmp194_;
		gint _tmp195_;
		gint _tmp196_;
		gint _prop_index = 0;
		_tmp192_ = iface;
		_tmp193_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) _tmp192_);
		_prop_list = _tmp193_;
		_tmp194_ = _prop_list;
		_tmp195_ = vala_collection_get_size ((ValaCollection*) _tmp194_);
		_tmp196_ = _tmp195_;
		_prop_size = _tmp196_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp197_;
			gint _tmp198_;
			gint _tmp199_;
			ValaProperty* prop = NULL;
			ValaList* _tmp200_;
			gint _tmp201_;
			gpointer _tmp202_;
			ValaProperty* _tmp203_;
			gboolean _tmp204_;
			gboolean _tmp205_;
			_tmp197_ = _prop_index;
			_prop_index = _tmp197_ + 1;
			_tmp198_ = _prop_index;
			_tmp199_ = _prop_size;
			if (!(_tmp198_ < _tmp199_)) {
				break;
			}
			_tmp200_ = _prop_list;
			_tmp201_ = _prop_index;
			_tmp202_ = vala_list_get (_tmp200_, _tmp201_);
			prop = (ValaProperty*) _tmp202_;
			_tmp203_ = prop;
			_tmp204_ = vala_property_get_is_virtual (_tmp203_);
			_tmp205_ = _tmp204_;
			if (_tmp205_) {
				ValaProperty* _tmp206_;
				ValaPropertyAccessor* _tmp207_;
				ValaPropertyAccessor* _tmp208_;
				ValaProperty* _tmp226_;
				ValaPropertyAccessor* _tmp227_;
				ValaPropertyAccessor* _tmp228_;
				_tmp206_ = prop;
				_tmp207_ = vala_property_get_get_accessor (_tmp206_);
				_tmp208_ = _tmp207_;
				if (_tmp208_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp209_;
					ValaPropertyAccessor* _tmp210_;
					ValaPropertyAccessor* _tmp211_;
					gchar* _tmp212_;
					ValaCCodeFunction* _tmp213_;
					ValaCCodeFunction* _tmp214_;
					ValaCCodeIdentifier* _tmp215_;
					ValaProperty* _tmp216_;
					const gchar* _tmp217_;
					const gchar* _tmp218_;
					gchar* _tmp219_;
					gchar* _tmp220_;
					ValaCCodeMemberAccess* _tmp221_;
					ValaCCodeMemberAccess* _tmp222_;
					const gchar* _tmp223_;
					ValaCCodeIdentifier* _tmp224_;
					ValaCCodeIdentifier* _tmp225_;
					_tmp209_ = prop;
					_tmp210_ = vala_property_get_get_accessor (_tmp209_);
					_tmp211_ = _tmp210_;
					_tmp212_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp211_);
					cname = _tmp212_;
					_tmp213_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp214_ = _tmp213_;
					_tmp215_ = ciface;
					_tmp216_ = prop;
					_tmp217_ = vala_symbol_get_name ((ValaSymbol*) _tmp216_);
					_tmp218_ = _tmp217_;
					_tmp219_ = g_strdup_printf ("get_%s", _tmp218_);
					_tmp220_ = _tmp219_;
					_tmp221_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp215_, _tmp220_);
					_tmp222_ = _tmp221_;
					_tmp223_ = cname;
					_tmp224_ = vala_ccode_identifier_new (_tmp223_);
					_tmp225_ = _tmp224_;
					vala_ccode_function_add_assignment (_tmp214_, (ValaCCodeExpression*) _tmp222_, (ValaCCodeExpression*) _tmp225_);
					_vala_ccode_node_unref0 (_tmp225_);
					_vala_ccode_node_unref0 (_tmp222_);
					_g_free0 (_tmp220_);
					_g_free0 (cname);
				}
				_tmp226_ = prop;
				_tmp227_ = vala_property_get_set_accessor (_tmp226_);
				_tmp228_ = _tmp227_;
				if (_tmp228_ != NULL) {
					gchar* cname = NULL;
					ValaProperty* _tmp229_;
					ValaPropertyAccessor* _tmp230_;
					ValaPropertyAccessor* _tmp231_;
					gchar* _tmp232_;
					ValaCCodeFunction* _tmp233_;
					ValaCCodeFunction* _tmp234_;
					ValaCCodeIdentifier* _tmp235_;
					ValaProperty* _tmp236_;
					const gchar* _tmp237_;
					const gchar* _tmp238_;
					gchar* _tmp239_;
					gchar* _tmp240_;
					ValaCCodeMemberAccess* _tmp241_;
					ValaCCodeMemberAccess* _tmp242_;
					const gchar* _tmp243_;
					ValaCCodeIdentifier* _tmp244_;
					ValaCCodeIdentifier* _tmp245_;
					_tmp229_ = prop;
					_tmp230_ = vala_property_get_set_accessor (_tmp229_);
					_tmp231_ = _tmp230_;
					_tmp232_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp231_);
					cname = _tmp232_;
					_tmp233_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp234_ = _tmp233_;
					_tmp235_ = ciface;
					_tmp236_ = prop;
					_tmp237_ = vala_symbol_get_name ((ValaSymbol*) _tmp236_);
					_tmp238_ = _tmp237_;
					_tmp239_ = g_strdup_printf ("set_%s", _tmp238_);
					_tmp240_ = _tmp239_;
					_tmp241_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp235_, _tmp240_);
					_tmp242_ = _tmp241_;
					_tmp243_ = cname;
					_tmp244_ = vala_ccode_identifier_new (_tmp243_);
					_tmp245_ = _tmp244_;
					vala_ccode_function_add_assignment (_tmp234_, (ValaCCodeExpression*) _tmp242_, (ValaCCodeExpression*) _tmp245_);
					_vala_ccode_node_unref0 (_tmp245_);
					_vala_ccode_node_unref0 (_tmp242_);
					_g_free0 (_tmp240_);
					_g_free0 (cname);
				}
			}
			_vala_code_node_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp246_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp247_ = _tmp246_;
	vala_ccode_function_close (_tmp247_);
	vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
	_tmp248_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp249_ = base_init;
	vala_ccode_file_add_function (_tmp248_, _tmp249_);
	_vala_ccode_node_unref0 (ciface);
	_vala_ccode_node_unref0 (base_init);
}


static void vala_gtype_module_real_visit_struct (ValaCodeVisitor* base, ValaStruct* st) {
	ValaGTypeModule * self;
	ValaStruct* _tmp0_;
	ValaStruct* _tmp1_;
	gboolean _tmp2_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (st != NULL);
	_tmp0_ = st;
	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_struct ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp0_);
	_tmp1_ = st;
	_tmp2_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp1_);
	if (_tmp2_) {
		ValaStruct* _tmp3_;
		ValaSourceReference* _tmp4_;
		ValaSourceReference* _tmp5_;
		ValaStructRegisterFunction* type_fun = NULL;
		ValaStruct* _tmp6_;
		ValaCodeContext* _tmp7_;
		ValaCodeContext* _tmp8_;
		ValaStructRegisterFunction* _tmp9_;
		ValaStructRegisterFunction* _tmp10_;
		ValaCCodeFile* _tmp11_;
		ValaStructRegisterFunction* _tmp12_;
		ValaCCodeFragment* _tmp13_;
		ValaCCodeFragment* _tmp14_;
		_tmp3_ = st;
		_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
		_tmp5_ = _tmp4_;
		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
		_tmp6_ = st;
		_tmp7_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp8_ = _tmp7_;
		_tmp9_ = vala_struct_register_function_new (_tmp6_, _tmp8_);
		type_fun = _tmp9_;
		_tmp10_ = type_fun;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp10_, FALSE, FALSE);
		_tmp11_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp12_ = type_fun;
		_tmp13_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp12_);
		_tmp14_ = _tmp13_;
		vala_ccode_file_add_type_member_definition (_tmp11_, (ValaCCodeNode*) _tmp14_);
		_vala_ccode_node_unref0 (_tmp14_);
		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
		_vala_typeregister_function_unref0 (type_fun);
	}
}


static void vala_gtype_module_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) {
	ValaGTypeModule * self;
	ValaEnum* _tmp0_;
	ValaEnum* _tmp1_;
	gboolean _tmp2_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (en != NULL);
	_tmp0_ = en;
	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_enum ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp0_);
	_tmp1_ = en;
	_tmp2_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp1_);
	if (_tmp2_) {
		ValaEnum* _tmp3_;
		ValaSourceReference* _tmp4_;
		ValaSourceReference* _tmp5_;
		ValaEnumRegisterFunction* type_fun = NULL;
		ValaEnum* _tmp6_;
		ValaCodeContext* _tmp7_;
		ValaCodeContext* _tmp8_;
		ValaEnumRegisterFunction* _tmp9_;
		ValaEnumRegisterFunction* _tmp10_;
		ValaCCodeFile* _tmp11_;
		ValaEnumRegisterFunction* _tmp12_;
		ValaCCodeFragment* _tmp13_;
		ValaCCodeFragment* _tmp14_;
		_tmp3_ = en;
		_tmp4_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp3_);
		_tmp5_ = _tmp4_;
		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp5_);
		_tmp6_ = en;
		_tmp7_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp8_ = _tmp7_;
		_tmp9_ = vala_enum_register_function_new (_tmp6_, _tmp8_);
		type_fun = _tmp9_;
		_tmp10_ = type_fun;
		vala_typeregister_function_init_from_type ((ValaTypeRegisterFunction*) _tmp10_, FALSE, FALSE);
		_tmp11_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp12_ = type_fun;
		_tmp13_ = vala_typeregister_function_get_definition ((ValaTypeRegisterFunction*) _tmp12_);
		_tmp14_ = _tmp13_;
		vala_ccode_file_add_type_member_definition (_tmp11_, (ValaCCodeNode*) _tmp14_);
		_vala_ccode_node_unref0 (_tmp14_);
		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
		_vala_typeregister_function_unref0 (type_fun);
	}
}


static void vala_gtype_module_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr) {
	ValaGTypeModule * self;
	ValaMemberAccess* ma = NULL;
	ValaMethodCall* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValaMemberAccess* _tmp3_;
	ValaMethodType* mtype = NULL;
	ValaMethodCall* _tmp4_;
	ValaExpression* _tmp5_;
	ValaExpression* _tmp6_;
	ValaDataType* _tmp7_;
	ValaDataType* _tmp8_;
	ValaMethodType* _tmp9_;
	gboolean _tmp10_ = FALSE;
	gboolean _tmp11_ = FALSE;
	gboolean _tmp12_ = FALSE;
	gboolean _tmp13_ = FALSE;
	gboolean _tmp14_ = FALSE;
	ValaMethodType* _tmp15_;
	gboolean is_flags = FALSE;
	ValaMemberAccess* _tmp44_;
	ValaExpression* _tmp45_;
	ValaExpression* _tmp46_;
	ValaDataType* _tmp47_;
	ValaDataType* _tmp48_;
	ValaTypeSymbol* _tmp49_;
	ValaTypeSymbol* _tmp50_;
	gboolean _tmp51_;
	gboolean _tmp52_;
	ValaMethodCall* _tmp53_;
	ValaSourceReference* _tmp54_;
	ValaSourceReference* _tmp55_;
	const gchar* _tmp56_ = NULL;
	gboolean _tmp57_;
	ValaLocalVariable* temp_var = NULL;
	ValaCType* _tmp58_;
	ValaCType* _tmp59_;
	ValaMethodCall* _tmp60_;
	ValaLocalVariable* _tmp61_;
	ValaLocalVariable* _tmp62_;
	ValaLocalVariable* _tmp63_;
	ValaCCodeFunctionCall* class_ref = NULL;
	ValaCCodeIdentifier* _tmp64_;
	ValaCCodeIdentifier* _tmp65_;
	ValaCCodeFunctionCall* _tmp66_;
	ValaCCodeFunctionCall* _tmp67_;
	ValaCCodeFunctionCall* _tmp68_;
	ValaMemberAccess* _tmp69_;
	ValaExpression* _tmp70_;
	ValaExpression* _tmp71_;
	ValaDataType* _tmp72_;
	ValaDataType* _tmp73_;
	gchar* _tmp74_;
	gchar* _tmp75_;
	ValaCCodeIdentifier* _tmp76_;
	ValaCCodeIdentifier* _tmp77_;
	const gchar* _tmp78_ = NULL;
	gboolean _tmp79_;
	ValaCCodeFunctionCall* get_value = NULL;
	ValaCCodeIdentifier* _tmp80_;
	ValaCCodeIdentifier* _tmp81_;
	ValaCCodeFunctionCall* _tmp82_;
	ValaCCodeFunctionCall* _tmp83_;
	ValaCCodeFunctionCall* _tmp84_;
	ValaCCodeFunctionCall* _tmp85_;
	ValaCCodeFunctionCall* _tmp86_;
	ValaMethodCall* _tmp87_;
	ValaExpression* _tmp88_;
	ValaExpression* _tmp89_;
	ValaExpression* _tmp90_;
	ValaExpression* _tmp91_;
	ValaCCodeExpression* _tmp92_;
	ValaCCodeExpression* _tmp93_;
	ValaCCodeFunction* _tmp94_;
	ValaCCodeFunction* _tmp95_;
	ValaLocalVariable* _tmp96_;
	const gchar* _tmp97_;
	const gchar* _tmp98_;
	ValaCCodeExpression* _tmp99_;
	ValaCCodeExpression* _tmp100_;
	ValaCCodeFunctionCall* _tmp101_;
	ValaCCodeBinaryExpression* is_null_value = NULL;
	ValaLocalVariable* _tmp102_;
	const gchar* _tmp103_;
	const gchar* _tmp104_;
	ValaCCodeExpression* _tmp105_;
	ValaCCodeExpression* _tmp106_;
	ValaCCodeIdentifier* _tmp107_;
	ValaCCodeIdentifier* _tmp108_;
	ValaCCodeBinaryExpression* _tmp109_;
	ValaCCodeBinaryExpression* _tmp110_;
	ValaMethodCall* _tmp111_;
	ValaCCodeBinaryExpression* _tmp112_;
	ValaLocalVariable* _tmp113_;
	const gchar* _tmp114_;
	const gchar* _tmp115_;
	ValaCCodeExpression* _tmp116_;
	ValaCCodeExpression* _tmp117_;
	ValaCCodeMemberAccess* _tmp118_;
	ValaCCodeMemberAccess* _tmp119_;
	ValaCCodeIdentifier* _tmp120_;
	ValaCCodeIdentifier* _tmp121_;
	ValaCCodeConditionalExpression* _tmp122_;
	ValaCCodeConditionalExpression* _tmp123_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_method_call_get_call (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp2_) : NULL);
	ma = _tmp3_;
	_tmp4_ = expr;
	_tmp5_ = vala_method_call_get_call (_tmp4_);
	_tmp6_ = _tmp5_;
	_tmp7_ = vala_expression_get_value_type (_tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_METHOD_TYPE) ? ((ValaMethodType*) _tmp8_) : NULL);
	mtype = _tmp9_;
	_tmp15_ = mtype;
	if (_tmp15_ == NULL) {
		_tmp14_ = TRUE;
	} else {
		ValaMemberAccess* _tmp16_;
		_tmp16_ = ma;
		_tmp14_ = _tmp16_ == NULL;
	}
	if (_tmp14_) {
		_tmp13_ = TRUE;
	} else {
		ValaMemberAccess* _tmp17_;
		ValaExpression* _tmp18_;
		ValaExpression* _tmp19_;
		_tmp17_ = ma;
		_tmp18_ = vala_member_access_get_inner (_tmp17_);
		_tmp19_ = _tmp18_;
		_tmp13_ = _tmp19_ == NULL;
	}
	if (_tmp13_) {
		_tmp12_ = TRUE;
	} else {
		ValaMemberAccess* _tmp20_;
		ValaExpression* _tmp21_;
		ValaExpression* _tmp22_;
		ValaDataType* _tmp23_;
		ValaDataType* _tmp24_;
		_tmp20_ = ma;
		_tmp21_ = vala_member_access_get_inner (_tmp20_);
		_tmp22_ = _tmp21_;
		_tmp23_ = vala_expression_get_value_type (_tmp22_);
		_tmp24_ = _tmp23_;
		_tmp12_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, VALA_TYPE_ENUM_VALUE_TYPE);
	}
	if (_tmp12_) {
		_tmp11_ = TRUE;
	} else {
		ValaMemberAccess* _tmp25_;
		ValaExpression* _tmp26_;
		ValaExpression* _tmp27_;
		ValaDataType* _tmp28_;
		ValaDataType* _tmp29_;
		ValaTypeSymbol* _tmp30_;
		ValaTypeSymbol* _tmp31_;
		gboolean _tmp32_;
		_tmp25_ = ma;
		_tmp26_ = vala_member_access_get_inner (_tmp25_);
		_tmp27_ = _tmp26_;
		_tmp28_ = vala_expression_get_value_type (_tmp27_);
		_tmp29_ = _tmp28_;
		_tmp30_ = vala_data_type_get_data_type (_tmp29_);
		_tmp31_ = _tmp30_;
		_tmp32_ = vala_get_ccode_has_type_id (_tmp31_);
		_tmp11_ = !_tmp32_;
	}
	if (_tmp11_) {
		_tmp10_ = TRUE;
	} else {
		ValaMethodType* _tmp33_;
		ValaMethod* _tmp34_;
		ValaMethod* _tmp35_;
		ValaMemberAccess* _tmp36_;
		ValaExpression* _tmp37_;
		ValaExpression* _tmp38_;
		ValaDataType* _tmp39_;
		ValaDataType* _tmp40_;
		ValaMethod* _tmp41_;
		ValaMethod* _tmp42_;
		_tmp33_ = mtype;
		_tmp34_ = vala_method_type_get_method_symbol (_tmp33_);
		_tmp35_ = _tmp34_;
		_tmp36_ = ma;
		_tmp37_ = vala_member_access_get_inner (_tmp36_);
		_tmp38_ = _tmp37_;
		_tmp39_ = vala_expression_get_value_type (_tmp38_);
		_tmp40_ = _tmp39_;
		_tmp41_ = vala_enum_value_type_get_to_string_method (G_TYPE_CHECK_INSTANCE_CAST (_tmp40_, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType));
		_tmp42_ = _tmp41_;
		_tmp10_ = _tmp35_ != _tmp42_;
		_vala_code_node_unref0 (_tmp42_);
	}
	if (_tmp10_) {
		ValaMethodCall* _tmp43_;
		_tmp43_ = expr;
		VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp43_);
		_vala_code_node_unref0 (mtype);
		_vala_code_node_unref0 (ma);
		return;
	}
	_tmp44_ = ma;
	_tmp45_ = vala_member_access_get_inner (_tmp44_);
	_tmp46_ = _tmp45_;
	_tmp47_ = vala_expression_get_value_type (_tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = vala_value_type_get_type_symbol ((ValaValueType*) G_TYPE_CHECK_INSTANCE_CAST (_tmp48_, VALA_TYPE_ENUM_VALUE_TYPE, ValaEnumValueType));
	_tmp50_ = _tmp49_;
	_tmp51_ = vala_enum_get_is_flags (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_ENUM, ValaEnum));
	_tmp52_ = _tmp51_;
	is_flags = _tmp52_;
	_tmp53_ = expr;
	_tmp54_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp53_);
	_tmp55_ = _tmp54_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp55_);
	_tmp57_ = is_flags;
	if (_tmp57_) {
		_tmp56_ = "GFlagsValue*";
	} else {
		_tmp56_ = "GEnumValue*";
	}
	_tmp58_ = vala_ctype_new (_tmp56_);
	_tmp59_ = _tmp58_;
	_tmp60_ = expr;
	_tmp61_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, (ValaDataType*) _tmp59_, FALSE, (ValaCodeNode*) _tmp60_, FALSE);
	_tmp62_ = _tmp61_;
	_vala_code_node_unref0 (_tmp59_);
	temp_var = _tmp62_;
	_tmp63_ = temp_var;
	vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp63_);
	_tmp64_ = vala_ccode_identifier_new ("g_type_class_ref");
	_tmp65_ = _tmp64_;
	_tmp66_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp65_);
	_tmp67_ = _tmp66_;
	_vala_ccode_node_unref0 (_tmp65_);
	class_ref = _tmp67_;
	_tmp68_ = class_ref;
	_tmp69_ = ma;
	_tmp70_ = vala_member_access_get_inner (_tmp69_);
	_tmp71_ = _tmp70_;
	_tmp72_ = vala_expression_get_value_type (_tmp71_);
	_tmp73_ = _tmp72_;
	_tmp74_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp73_);
	_tmp75_ = _tmp74_;
	_tmp76_ = vala_ccode_identifier_new (_tmp75_);
	_tmp77_ = _tmp76_;
	vala_ccode_function_call_add_argument (_tmp68_, (ValaCCodeExpression*) _tmp77_);
	_vala_ccode_node_unref0 (_tmp77_);
	_g_free0 (_tmp75_);
	_tmp79_ = is_flags;
	if (_tmp79_) {
		_tmp78_ = "g_flags_get_first_value";
	} else {
		_tmp78_ = "g_enum_get_value";
	}
	_tmp80_ = vala_ccode_identifier_new (_tmp78_);
	_tmp81_ = _tmp80_;
	_tmp82_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp81_);
	_tmp83_ = _tmp82_;
	_vala_ccode_node_unref0 (_tmp81_);
	get_value = _tmp83_;
	_tmp84_ = get_value;
	_tmp85_ = class_ref;
	vala_ccode_function_call_add_argument (_tmp84_, (ValaCCodeExpression*) _tmp85_);
	_tmp86_ = get_value;
	_tmp87_ = expr;
	_tmp88_ = vala_method_call_get_call (_tmp87_);
	_tmp89_ = _tmp88_;
	_tmp90_ = vala_member_access_get_inner (G_TYPE_CHECK_INSTANCE_CAST (_tmp89_, VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess));
	_tmp91_ = _tmp90_;
	_tmp92_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp91_);
	_tmp93_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp92_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
	vala_ccode_function_call_add_argument (_tmp86_, _tmp93_);
	_vala_ccode_node_unref0 (_tmp93_);
	_tmp94_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp95_ = _tmp94_;
	_tmp96_ = temp_var;
	_tmp97_ = vala_symbol_get_name ((ValaSymbol*) _tmp96_);
	_tmp98_ = _tmp97_;
	_tmp99_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp98_);
	_tmp100_ = _tmp99_;
	_tmp101_ = get_value;
	vala_ccode_function_add_assignment (_tmp95_, _tmp100_, (ValaCCodeExpression*) _tmp101_);
	_vala_ccode_node_unref0 (_tmp100_);
	_tmp102_ = temp_var;
	_tmp103_ = vala_symbol_get_name ((ValaSymbol*) _tmp102_);
	_tmp104_ = _tmp103_;
	_tmp105_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp104_);
	_tmp106_ = _tmp105_;
	_tmp107_ = vala_ccode_identifier_new ("NULL");
	_tmp108_ = _tmp107_;
	_tmp109_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, _tmp106_, (ValaCCodeExpression*) _tmp108_);
	_tmp110_ = _tmp109_;
	_vala_ccode_node_unref0 (_tmp108_);
	_vala_ccode_node_unref0 (_tmp106_);
	is_null_value = _tmp110_;
	_tmp111_ = expr;
	_tmp112_ = is_null_value;
	_tmp113_ = temp_var;
	_tmp114_ = vala_symbol_get_name ((ValaSymbol*) _tmp113_);
	_tmp115_ = _tmp114_;
	_tmp116_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp115_);
	_tmp117_ = _tmp116_;
	_tmp118_ = vala_ccode_member_access_new_pointer (_tmp117_, "value_name");
	_tmp119_ = _tmp118_;
	_tmp120_ = vala_ccode_identifier_new ("NULL");
	_tmp121_ = _tmp120_;
	_tmp122_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp112_, (ValaCCodeExpression*) _tmp119_, (ValaCCodeExpression*) _tmp121_);
	_tmp123_ = _tmp122_;
	vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp111_, (ValaCCodeExpression*) _tmp123_);
	_vala_ccode_node_unref0 (_tmp123_);
	_vala_ccode_node_unref0 (_tmp121_);
	_vala_ccode_node_unref0 (_tmp119_);
	_vala_ccode_node_unref0 (_tmp117_);
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
	_vala_ccode_node_unref0 (is_null_value);
	_vala_ccode_node_unref0 (get_value);
	_vala_ccode_node_unref0 (class_ref);
	_vala_code_node_unref0 (temp_var);
	_vala_code_node_unref0 (mtype);
	_vala_code_node_unref0 (ma);
}


static void vala_gtype_module_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop) {
	ValaGTypeModule * self;
	ValaClass* cl = NULL;
	ValaTypeSymbol* _tmp0_;
	ValaTypeSymbol* _tmp1_;
	ValaClass* _tmp2_;
	ValaStruct* st = NULL;
	ValaTypeSymbol* _tmp3_;
	ValaTypeSymbol* _tmp4_;
	ValaStruct* _tmp5_;
	ValaProperty* base_prop = NULL;
	ValaProperty* _tmp6_;
	ValaProperty* _tmp7_;
	ValaProperty* _tmp8_;
	ValaProperty* _tmp9_;
	ValaProperty* _tmp10_;
	gboolean _tmp22_ = FALSE;
	gboolean _tmp23_ = FALSE;
	ValaProperty* _tmp24_;
	ValaAttribute* _tmp25_;
	ValaAttribute* _tmp26_;
	gboolean _tmp27_;
	ValaProperty* _tmp44_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (prop != NULL);
	_tmp0_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
	_tmp1_ = _tmp0_;
	_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp1_) : NULL);
	cl = _tmp2_;
	_tmp3_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
	_tmp4_ = _tmp3_;
	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp4_) : NULL);
	st = _tmp5_;
	_tmp6_ = prop;
	_tmp7_ = _vala_code_node_ref0 (_tmp6_);
	base_prop = _tmp7_;
	_tmp8_ = prop;
	_tmp9_ = vala_property_get_base_property (_tmp8_);
	_tmp10_ = _tmp9_;
	if (_tmp10_ != NULL) {
		ValaProperty* _tmp11_;
		ValaProperty* _tmp12_;
		ValaProperty* _tmp13_;
		ValaProperty* _tmp14_;
		_tmp11_ = prop;
		_tmp12_ = vala_property_get_base_property (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = _vala_code_node_ref0 (_tmp13_);
		_vala_code_node_unref0 (base_prop);
		base_prop = _tmp14_;
	} else {
		ValaProperty* _tmp15_;
		ValaProperty* _tmp16_;
		ValaProperty* _tmp17_;
		_tmp15_ = prop;
		_tmp16_ = vala_property_get_base_interface_property (_tmp15_);
		_tmp17_ = _tmp16_;
		if (_tmp17_ != NULL) {
			ValaProperty* _tmp18_;
			ValaProperty* _tmp19_;
			ValaProperty* _tmp20_;
			ValaProperty* _tmp21_;
			_tmp18_ = prop;
			_tmp19_ = vala_property_get_base_interface_property (_tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = _vala_code_node_ref0 (_tmp20_);
			_vala_code_node_unref0 (base_prop);
			base_prop = _tmp21_;
		}
	}
	_tmp24_ = base_prop;
	_tmp25_ = vala_code_node_get_attribute ((ValaCodeNode*) _tmp24_, "NoAccessorMethod");
	_tmp26_ = _tmp25_;
	_tmp27_ = _tmp26_ == NULL;
	_vala_code_node_unref0 (_tmp26_);
	if (_tmp27_) {
		ValaProperty* _tmp28_;
		const gchar* _tmp29_;
		const gchar* _tmp30_;
		_tmp28_ = prop;
		_tmp29_ = vala_symbol_get_name ((ValaSymbol*) _tmp28_);
		_tmp30_ = _tmp29_;
		_tmp23_ = g_strcmp0 (_tmp30_, "type") == 0;
	} else {
		_tmp23_ = FALSE;
	}
	if (_tmp23_) {
		gboolean _tmp31_ = FALSE;
		gboolean _tmp32_ = FALSE;
		ValaClass* _tmp33_;
		_tmp33_ = cl;
		if (_tmp33_ != NULL) {
			ValaClass* _tmp34_;
			gboolean _tmp35_;
			gboolean _tmp36_;
			_tmp34_ = cl;
			_tmp35_ = vala_class_get_is_compact (_tmp34_);
			_tmp36_ = _tmp35_;
			_tmp32_ = !_tmp36_;
		} else {
			_tmp32_ = FALSE;
		}
		if (_tmp32_) {
			_tmp31_ = TRUE;
		} else {
			gboolean _tmp37_ = FALSE;
			ValaStruct* _tmp38_;
			_tmp38_ = st;
			if (_tmp38_ != NULL) {
				ValaStruct* _tmp39_;
				gboolean _tmp40_;
				_tmp39_ = st;
				_tmp40_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp39_);
				_tmp37_ = _tmp40_;
			} else {
				_tmp37_ = FALSE;
			}
			_tmp31_ = _tmp37_;
		}
		_tmp22_ = _tmp31_;
	} else {
		_tmp22_ = FALSE;
	}
	if (_tmp22_) {
		ValaProperty* _tmp41_;
		ValaSourceReference* _tmp42_;
		ValaSourceReference* _tmp43_;
		_tmp41_ = prop;
		_tmp42_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp41_);
		_tmp43_ = _tmp42_;
		vala_report_error (_tmp43_, "Property 'type' not allowed");
		_vala_code_node_unref0 (base_prop);
		_vala_code_node_unref0 (st);
		_vala_code_node_unref0 (cl);
		return;
	}
	_tmp44_ = prop;
	VALA_CODE_VISITOR_CLASS (vala_gtype_module_parent_class)->visit_property ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GERROR_MODULE, ValaGErrorModule), _tmp44_);
	_vala_code_node_unref0 (base_prop);
	_vala_code_node_unref0 (st);
	_vala_code_node_unref0 (cl);
}


static void vala_gtype_module_real_create_type_check_statement (ValaCCodeBaseModule* base, ValaCodeNode* method_node, ValaDataType* ret_type, ValaTypeSymbol* t, gboolean non_null, const gchar* var_name) {
	ValaGTypeModule * self;
	ValaCCodeFunctionCall* ccheck = NULL;
	ValaCCodeFunctionCall* _tmp0_;
	ValaCodeContext* _tmp1_;
	ValaCodeContext* _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp4_;
	ValaCreationMethod* cm = NULL;
	ValaCodeNode* _tmp63_;
	ValaCreationMethod* _tmp64_;
	gboolean _tmp65_ = FALSE;
	ValaCreationMethod* _tmp66_;
	ValaCCodeFunction* _tmp99_;
	ValaCCodeFunction* _tmp100_;
	ValaCCodeFunctionCall* _tmp101_;
	self = (ValaGTypeModule*) base;
	g_return_if_fail (method_node != NULL);
	g_return_if_fail (ret_type != NULL);
	g_return_if_fail (t != NULL);
	g_return_if_fail (var_name != NULL);
	_tmp0_ = vala_ccode_function_call_new (NULL);
	ccheck = _tmp0_;
	_tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_code_context_get_assert (_tmp2_);
	_tmp4_ = _tmp3_;
	if (!_tmp4_) {
		_vala_ccode_node_unref0 (ccheck);
		return;
	} else {
		gboolean _tmp5_ = FALSE;
		ValaCodeContext* _tmp6_;
		ValaCodeContext* _tmp7_;
		gboolean _tmp8_;
		gboolean _tmp9_;
		_tmp6_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
		_tmp7_ = _tmp6_;
		_tmp8_ = vala_code_context_get_checking (_tmp7_);
		_tmp9_ = _tmp8_;
		if (_tmp9_) {
			gboolean _tmp10_ = FALSE;
			gboolean _tmp11_ = FALSE;
			ValaTypeSymbol* _tmp12_;
			_tmp12_ = t;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_CLASS)) {
				ValaTypeSymbol* _tmp13_;
				gboolean _tmp14_;
				gboolean _tmp15_;
				_tmp13_ = t;
				_tmp14_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_CLASS, ValaClass));
				_tmp15_ = _tmp14_;
				_tmp11_ = !_tmp15_;
			} else {
				_tmp11_ = FALSE;
			}
			if (_tmp11_) {
				_tmp10_ = TRUE;
			} else {
				ValaTypeSymbol* _tmp16_;
				_tmp16_ = t;
				_tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp16_, VALA_TYPE_INTERFACE);
			}
			_tmp5_ = _tmp10_;
		} else {
			_tmp5_ = FALSE;
		}
		if (_tmp5_) {
			ValaCCodeFunctionCall* ctype_check = NULL;
			ValaTypeSymbol* _tmp17_;
			gchar* _tmp18_;
			gchar* _tmp19_;
			ValaCCodeIdentifier* _tmp20_;
			ValaCCodeIdentifier* _tmp21_;
			ValaCCodeFunctionCall* _tmp22_;
			ValaCCodeFunctionCall* _tmp23_;
			ValaCCodeFunctionCall* _tmp24_;
			const gchar* _tmp25_;
			ValaCCodeIdentifier* _tmp26_;
			ValaCCodeIdentifier* _tmp27_;
			ValaCCodeExpression* cexpr = NULL;
			ValaCCodeFunctionCall* _tmp28_;
			ValaCCodeExpression* _tmp29_;
			gboolean _tmp30_;
			ValaCCodeFunctionCall* _tmp41_;
			ValaCCodeExpression* _tmp42_;
			_tmp17_ = t;
			_tmp18_ = vala_get_ccode_type_check_function (_tmp17_);
			_tmp19_ = _tmp18_;
			_tmp20_ = vala_ccode_identifier_new (_tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp21_);
			_tmp23_ = _tmp22_;
			_vala_ccode_node_unref0 (_tmp21_);
			_g_free0 (_tmp19_);
			ctype_check = _tmp23_;
			_tmp24_ = ctype_check;
			_tmp25_ = var_name;
			_tmp26_ = vala_ccode_identifier_new (_tmp25_);
			_tmp27_ = _tmp26_;
			vala_ccode_function_call_add_argument (_tmp24_, (ValaCCodeExpression*) _tmp27_);
			_vala_ccode_node_unref0 (_tmp27_);
			_tmp28_ = ctype_check;
			_tmp29_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp28_);
			cexpr = _tmp29_;
			_tmp30_ = non_null;
			if (!_tmp30_) {
				ValaCCodeBinaryExpression* cnull = NULL;
				const gchar* _tmp31_;
				ValaCCodeIdentifier* _tmp32_;
				ValaCCodeIdentifier* _tmp33_;
				ValaCCodeConstant* _tmp34_;
				ValaCCodeConstant* _tmp35_;
				ValaCCodeBinaryExpression* _tmp36_;
				ValaCCodeBinaryExpression* _tmp37_;
				ValaCCodeBinaryExpression* _tmp38_;
				ValaCCodeFunctionCall* _tmp39_;
				ValaCCodeBinaryExpression* _tmp40_;
				_tmp31_ = var_name;
				_tmp32_ = vala_ccode_identifier_new (_tmp31_);
				_tmp33_ = _tmp32_;
				_tmp34_ = vala_ccode_constant_new ("NULL");
				_tmp35_ = _tmp34_;
				_tmp36_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp33_, (ValaCCodeExpression*) _tmp35_);
				_tmp37_ = _tmp36_;
				_vala_ccode_node_unref0 (_tmp35_);
				_vala_ccode_node_unref0 (_tmp33_);
				cnull = _tmp37_;
				_tmp38_ = cnull;
				_tmp39_ = ctype_check;
				_tmp40_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_OR, (ValaCCodeExpression*) _tmp38_, (ValaCCodeExpression*) _tmp39_);
				_vala_ccode_node_unref0 (cexpr);
				cexpr = (ValaCCodeExpression*) _tmp40_;
				_vala_ccode_node_unref0 (cnull);
			}
			_tmp41_ = ccheck;
			_tmp42_ = cexpr;
			vala_ccode_function_call_add_argument (_tmp41_, _tmp42_);
			_vala_ccode_node_unref0 (cexpr);
			_vala_ccode_node_unref0 (ctype_check);
		} else {
			gboolean _tmp43_ = FALSE;
			gboolean _tmp44_;
			_tmp44_ = non_null;
			if (!_tmp44_) {
				_tmp43_ = TRUE;
			} else {
				gboolean _tmp45_ = FALSE;
				ValaTypeSymbol* _tmp46_;
				_tmp46_ = t;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp46_, VALA_TYPE_STRUCT)) {
					ValaTypeSymbol* _tmp47_;
					gboolean _tmp48_;
					_tmp47_ = t;
					_tmp48_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp47_, VALA_TYPE_STRUCT, ValaStruct));
					_tmp45_ = _tmp48_;
				} else {
					_tmp45_ = FALSE;
				}
				_tmp43_ = _tmp45_;
			}
			if (_tmp43_) {
				_vala_ccode_node_unref0 (ccheck);
				return;
			} else {
				gboolean _tmp49_ = FALSE;
				ValaTypeSymbol* _tmp50_;
				ValaClass* _tmp51_;
				_tmp50_ = t;
				_tmp51_ = ((ValaCCodeBaseModule*) self)->glist_type;
				if (_tmp50_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
					_tmp49_ = TRUE;
				} else {
					ValaTypeSymbol* _tmp52_;
					ValaClass* _tmp53_;
					_tmp52_ = t;
					_tmp53_ = ((ValaCCodeBaseModule*) self)->gslist_type;
					_tmp49_ = _tmp52_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp53_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol);
				}
				if (_tmp49_) {
					_vala_ccode_node_unref0 (ccheck);
					return;
				} else {
					ValaCCodeBinaryExpression* cnonnull = NULL;
					const gchar* _tmp54_;
					ValaCCodeIdentifier* _tmp55_;
					ValaCCodeIdentifier* _tmp56_;
					ValaCCodeConstant* _tmp57_;
					ValaCCodeConstant* _tmp58_;
					ValaCCodeBinaryExpression* _tmp59_;
					ValaCCodeBinaryExpression* _tmp60_;
					ValaCCodeFunctionCall* _tmp61_;
					ValaCCodeBinaryExpression* _tmp62_;
					_tmp54_ = var_name;
					_tmp55_ = vala_ccode_identifier_new (_tmp54_);
					_tmp56_ = _tmp55_;
					_tmp57_ = vala_ccode_constant_new ("NULL");
					_tmp58_ = _tmp57_;
					_tmp59_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp56_, (ValaCCodeExpression*) _tmp58_);
					_tmp60_ = _tmp59_;
					_vala_ccode_node_unref0 (_tmp58_);
					_vala_ccode_node_unref0 (_tmp56_);
					cnonnull = _tmp60_;
					_tmp61_ = ccheck;
					_tmp62_ = cnonnull;
					vala_ccode_function_call_add_argument (_tmp61_, (ValaCCodeExpression*) _tmp62_);
					_vala_ccode_node_unref0 (cnonnull);
				}
			}
		}
	}
	_tmp63_ = method_node;
	_tmp64_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp63_, VALA_TYPE_CREATION_METHOD) ? ((ValaCreationMethod*) _tmp63_) : NULL);
	cm = _tmp64_;
	_tmp66_ = cm;
	if (_tmp66_ != NULL) {
		ValaCreationMethod* _tmp67_;
		ValaSymbol* _tmp68_;
		ValaSymbol* _tmp69_;
		_tmp67_ = cm;
		_tmp68_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp67_);
		_tmp69_ = _tmp68_;
		_tmp65_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp69_, VALA_TYPE_OBJECT_TYPE_SYMBOL);
	} else {
		_tmp65_ = FALSE;
	}
	if (_tmp65_) {
		ValaCCodeFunctionCall* _tmp70_;
		ValaCCodeIdentifier* _tmp71_;
		ValaCCodeIdentifier* _tmp72_;
		ValaCCodeFunctionCall* _tmp73_;
		ValaCCodeConstant* _tmp74_;
		ValaCCodeConstant* _tmp75_;
		_tmp70_ = ccheck;
		_tmp71_ = vala_ccode_identifier_new ("g_return_val_if_fail");
		_tmp72_ = _tmp71_;
		vala_ccode_function_call_set_call (_tmp70_, (ValaCCodeExpression*) _tmp72_);
		_vala_ccode_node_unref0 (_tmp72_);
		_tmp73_ = ccheck;
		_tmp74_ = vala_ccode_constant_new ("NULL");
		_tmp75_ = _tmp74_;
		vala_ccode_function_call_add_argument (_tmp73_, (ValaCCodeExpression*) _tmp75_);
		_vala_ccode_node_unref0 (_tmp75_);
	} else {
		ValaDataType* _tmp76_;
		_tmp76_ = ret_type;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp76_, VALA_TYPE_VOID_TYPE)) {
			ValaCCodeFunctionCall* _tmp77_;
			ValaCCodeIdentifier* _tmp78_;
			ValaCCodeIdentifier* _tmp79_;
			_tmp77_ = ccheck;
			_tmp78_ = vala_ccode_identifier_new ("g_return_if_fail");
			_tmp79_ = _tmp78_;
			vala_ccode_function_call_set_call (_tmp77_, (ValaCCodeExpression*) _tmp79_);
			_vala_ccode_node_unref0 (_tmp79_);
		} else {
			ValaCCodeFunctionCall* _tmp80_;
			ValaCCodeIdentifier* _tmp81_;
			ValaCCodeIdentifier* _tmp82_;
			ValaCCodeExpression* cdefault = NULL;
			ValaDataType* _tmp83_;
			ValaCCodeExpression* _tmp84_;
			ValaCCodeExpression* _tmp85_;
			_tmp80_ = ccheck;
			_tmp81_ = vala_ccode_identifier_new ("g_return_val_if_fail");
			_tmp82_ = _tmp81_;
			vala_ccode_function_call_set_call (_tmp80_, (ValaCCodeExpression*) _tmp82_);
			_vala_ccode_node_unref0 (_tmp82_);
			_tmp83_ = ret_type;
			_tmp84_ = vala_ccode_base_module_default_value_for_type ((ValaCCodeBaseModule*) self, _tmp83_, FALSE);
			cdefault = _tmp84_;
			_tmp85_ = cdefault;
			if (_tmp85_ != NULL) {
				ValaCCodeFunctionCall* _tmp86_;
				ValaCCodeExpression* _tmp87_;
				_tmp86_ = ccheck;
				_tmp87_ = cdefault;
				vala_ccode_function_call_add_argument (_tmp86_, _tmp87_);
			} else {
				gboolean _tmp88_ = FALSE;
				ValaDataType* _tmp89_;
				ValaTypeSymbol* _tmp90_;
				ValaTypeSymbol* _tmp91_;
				_tmp89_ = ret_type;
				_tmp90_ = vala_data_type_get_data_type (_tmp89_);
				_tmp91_ = _tmp90_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp91_, VALA_TYPE_STRUCT)) {
					ValaDataType* _tmp92_;
					ValaTypeSymbol* _tmp93_;
					ValaTypeSymbol* _tmp94_;
					gboolean _tmp95_;
					_tmp92_ = ret_type;
					_tmp93_ = vala_data_type_get_data_type (_tmp92_);
					_tmp94_ = _tmp93_;
					_tmp95_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp94_, VALA_TYPE_STRUCT, ValaStruct));
					_tmp88_ = !_tmp95_;
				} else {
					_tmp88_ = FALSE;
				}
				if (_tmp88_) {
					ValaCCodeFunctionCall* _tmp96_;
					ValaCCodeIdentifier* _tmp97_;
					ValaCCodeIdentifier* _tmp98_;
					_tmp96_ = ccheck;
					_tmp97_ = vala_ccode_identifier_new ("result");
					_tmp98_ = _tmp97_;
					vala_ccode_function_call_add_argument (_tmp96_, (ValaCCodeExpression*) _tmp98_);
					_vala_ccode_node_unref0 (_tmp98_);
				} else {
					_vala_ccode_node_unref0 (cdefault);
					_vala_code_node_unref0 (cm);
					_vala_ccode_node_unref0 (ccheck);
					return;
				}
			}
			_vala_ccode_node_unref0 (cdefault);
		}
	}
	_tmp99_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp100_ = _tmp99_;
	_tmp101_ = ccheck;
	vala_ccode_function_add_expression (_tmp100_, (ValaCCodeExpression*) _tmp101_);
	_vala_code_node_unref0 (cm);
	_vala_ccode_node_unref0 (ccheck);
}


ValaGTypeModule* vala_gtype_module_construct (GType object_type) {
	ValaGTypeModule* self = NULL;
	self = (ValaGTypeModule*) vala_gerror_module_construct (object_type);
	return self;
}


ValaGTypeModule* vala_gtype_module_new (void) {
	return vala_gtype_module_construct (VALA_TYPE_GTYPE_MODULE);
}


static void vala_gtype_module_class_init (ValaGTypeModuleClass * klass) {
	vala_gtype_module_parent_class = g_type_class_peek_parent (klass);
	((ValaCCodeMethodModuleClass *) klass)->generate_parameter = (ValaCCodeParameter* (*) (ValaCCodeMethodModule *, ValaParameter*, ValaCCodeFile*, ValaMap*, ValaMap*)) vala_gtype_module_real_generate_parameter;
	((ValaCCodeBaseModuleClass *) klass)->generate_class_declaration = (void (*) (ValaCCodeBaseModule *, ValaClass*, ValaCCodeFile*)) vala_gtype_module_real_generate_class_declaration;
	((ValaCCodeBaseModuleClass *) klass)->generate_class_struct_declaration = (void (*) (ValaCCodeBaseModule *, ValaClass*, ValaCCodeFile*)) vala_gtype_module_real_generate_class_struct_declaration;
	((ValaGTypeModuleClass *) klass)->generate_virtual_method_declaration = (void (*) (ValaGTypeModule *, ValaMethod*, ValaCCodeFile*, ValaCCodeStruct*)) vala_gtype_module_real_generate_virtual_method_declaration;
	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor *, ValaClass*)) vala_gtype_module_real_visit_class;
	((ValaGTypeModuleClass *) klass)->generate_class_init = (void (*) (ValaGTypeModule *, ValaClass*)) vala_gtype_module_real_generate_class_init;
	((ValaGTypeModuleClass *) klass)->end_instance_init = (void (*) (ValaGTypeModule *, ValaClass*)) vala_gtype_module_real_end_instance_init;
	((ValaCCodeBaseModuleClass *) klass)->get_param_spec_cexpression = (ValaCCodeExpression* (*) (ValaCCodeBaseModule *, ValaProperty*)) vala_gtype_module_real_get_param_spec_cexpression;
	((ValaCCodeBaseModuleClass *) klass)->get_param_spec = (ValaCCodeExpression* (*) (ValaCCodeBaseModule *, ValaProperty*)) vala_gtype_module_real_get_param_spec;
	((ValaCCodeBaseModuleClass *) klass)->generate_interface_declaration = (void (*) (ValaCCodeBaseModule *, ValaInterface*, ValaCCodeFile*)) vala_gtype_module_real_generate_interface_declaration;
	((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor *, ValaInterface*)) vala_gtype_module_real_visit_interface;
	((ValaCodeVisitorClass *) klass)->visit_struct = (void (*) (ValaCodeVisitor *, ValaStruct*)) vala_gtype_module_real_visit_struct;
	((ValaCodeVisitorClass *) klass)->visit_enum = (void (*) (ValaCodeVisitor *, ValaEnum*)) vala_gtype_module_real_visit_enum;
	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor *, ValaMethodCall*)) vala_gtype_module_real_visit_method_call;
	((ValaCodeVisitorClass *) klass)->visit_property = (void (*) (ValaCodeVisitor *, ValaProperty*)) vala_gtype_module_real_visit_property;
	((ValaCCodeBaseModuleClass *) klass)->create_type_check_statement = (void (*) (ValaCCodeBaseModule *, ValaCodeNode*, ValaDataType*, ValaTypeSymbol*, gboolean, const gchar*)) vala_gtype_module_real_create_type_check_statement;
}


static void vala_gtype_module_instance_init (ValaGTypeModule * self) {
}


GType vala_gtype_module_get_type (void) {
	static volatile gsize vala_gtype_module_type_id__volatile = 0;
	if (g_once_init_enter (&vala_gtype_module_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ValaGTypeModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gtype_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGTypeModule), 0, (GInstanceInitFunc) vala_gtype_module_instance_init, NULL };
		GType vala_gtype_module_type_id;
		vala_gtype_module_type_id = g_type_register_static (VALA_TYPE_GERROR_MODULE, "ValaGTypeModule", &g_define_type_info, 0);
		g_once_init_leave (&vala_gtype_module_type_id__volatile, vala_gtype_module_type_id);
	}
	return vala_gtype_module_type_id__volatile;
}



