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

/* valagobjectmodule.vala
 *
 * Copyright (C) 2006-2011  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 "valacodegen.h"
#include <glib.h>
#include <vala.h>
#include <stdlib.h>
#include <string.h>
#include <valaccode.h>
#include <valagee.h>
#include <glib-object.h>

#define _vala_ccode_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_ccode_node_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_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_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_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)))

struct _ValaGObjectModulePrivate {
	gint signal_wrapper_id;
};

static gint ValaGObjectModule_private_offset;
static gpointer vala_gobject_module_parent_class = NULL;

static void vala_gobject_module_real_visit_class (ValaCodeVisitor* base,
                                           ValaClass* cl);
static gboolean vala_gobject_module_class_has_readable_properties (ValaGObjectModule* self,
                                                            ValaClass* cl);
static void vala_gobject_module_add_get_property_function (ValaGObjectModule* self,
                                                    ValaClass* cl);
static gboolean vala_gobject_module_class_has_writable_properties (ValaGObjectModule* self,
                                                            ValaClass* cl);
static void vala_gobject_module_add_set_property_function (ValaGObjectModule* self,
                                                    ValaClass* cl);
static void vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                                                   ValaClass* cl);
static void vala_gobject_module_add_guarded_expression (ValaGObjectModule* self,
                                                 ValaSymbol* sym,
                                                 ValaCCodeExpression* expression);
static void vala_gobject_module_emit_invalid_property_id_warn (ValaGObjectModule* self);
static void vala_gobject_module_real_visit_constructor (ValaCodeVisitor* base,
                                                 ValaConstructor* c);
static gchar* vala_gobject_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* base,
                                                          ValaDynamicSignal* node);
static void vala_gobject_module_real_visit_property (ValaCodeVisitor* base,
                                              ValaProperty* prop);
static void vala_gobject_module_real_visit_method_call (ValaCodeVisitor* base,
                                                 ValaMethodCall* expr);
static void vala_gobject_module_finalize (ValaCodeVisitor * obj);
static GType vala_gobject_module_get_type_once (void);

static inline gpointer
vala_gobject_module_get_instance_private (ValaGObjectModule* self)
{
	return G_STRUCT_MEMBER_P (self, ValaGObjectModule_private_offset);
}

static void
vala_gobject_module_real_visit_class (ValaCodeVisitor* base,
                                      ValaClass* cl)
{
	ValaGObjectModule * self;
	ValaTypeSymbol* _tmp0_;
	ValaSourceReference* _tmp1_;
	ValaSourceReference* _tmp2_;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	self = (ValaGObjectModule*) base;
	g_return_if_fail (cl != NULL);
	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_class ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), cl);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->gobject_type;
	if (!vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp0_)) {
		return;
	}
	_tmp1_ = vala_code_node_get_source_reference ((ValaCodeNode*) cl);
	_tmp2_ = _tmp1_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp2_);
	if (vala_gobject_module_class_has_readable_properties (self, cl)) {
		_tmp3_ = TRUE;
	} else {
		_tmp3_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
	}
	if (_tmp3_) {
		vala_gobject_module_add_get_property_function (self, cl);
	}
	if (vala_gobject_module_class_has_writable_properties (self, cl)) {
		_tmp4_ = TRUE;
	} else {
		_tmp4_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
	}
	if (_tmp4_) {
		vala_gobject_module_add_set_property_function (self, cl);
	}
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
}

static gchar*
string_replace (const gchar* self,
                const gchar* old,
                const gchar* replacement)
{
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	GError* _inner_error0_ = NULL;
	gchar* result;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (old != NULL, NULL);
	g_return_val_if_fail (replacement != NULL, NULL);
	if ((*((gchar*) self)) == '\0') {
		_tmp1_ = TRUE;
	} else {
		_tmp1_ = (*((gchar*) old)) == '\0';
	}
	if (_tmp1_) {
		_tmp0_ = TRUE;
	} else {
		_tmp0_ = g_strcmp0 (old, replacement) == 0;
	}
	if (_tmp0_) {
		gchar* _tmp2_;
		_tmp2_ = g_strdup (self);
		result = _tmp2_;
		return result;
	}
	{
		GRegex* regex = NULL;
		gchar* _tmp3_;
		gchar* _tmp4_;
		GRegex* _tmp5_;
		GRegex* _tmp6_;
		gchar* _tmp7_ = NULL;
		GRegex* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		_tmp3_ = g_regex_escape_string (old, -1);
		_tmp4_ = _tmp3_;
		_tmp5_ = g_regex_new (_tmp4_, 0, 0, &_inner_error0_);
		_tmp6_ = _tmp5_;
		_g_free0 (_tmp4_);
		regex = _tmp6_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			if (_inner_error0_->domain == G_REGEX_ERROR) {
				goto __catch0_g_regex_error;
			}
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
			g_clear_error (&_inner_error0_);
			return NULL;
		}
		_tmp8_ = regex;
		_tmp9_ = g_regex_replace_literal (_tmp8_, self, (gssize) -1, 0, replacement, 0, &_inner_error0_);
		_tmp7_ = _tmp9_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			_g_regex_unref0 (regex);
			if (_inner_error0_->domain == G_REGEX_ERROR) {
				goto __catch0_g_regex_error;
			}
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
			g_clear_error (&_inner_error0_);
			return NULL;
		}
		_tmp10_ = _tmp7_;
		_tmp7_ = NULL;
		result = _tmp10_;
		_g_free0 (_tmp7_);
		_g_regex_unref0 (regex);
		return result;
	}
	goto __finally0;
	__catch0_g_regex_error:
	{
		g_clear_error (&_inner_error0_);
		g_assert_not_reached ();
	}
	__finally0:
	g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
	g_clear_error (&_inner_error0_);
	return NULL;
}

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

static void
vala_gobject_module_real_generate_class_init (ValaGTypeModule* base,
                                              ValaClass* cl)
{
	ValaGObjectModule * self;
	ValaTypeSymbol* _tmp0_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp1_;
	ValaCCodeIdentifier* _tmp2_;
	ValaCCodeFunctionCall* _tmp3_;
	ValaCCodeFunctionCall* _tmp4_;
	ValaCCodeFunctionCall* _tmp5_;
	ValaCCodeIdentifier* _tmp6_;
	ValaCCodeIdentifier* _tmp7_;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp20_ = FALSE;
	ValaConstructor* _tmp32_;
	ValaConstructor* _tmp33_;
	gboolean _tmp52_ = FALSE;
	ValaList* _tmp53_;
	gint _tmp54_;
	gint _tmp55_;
	ValaList* props = NULL;
	ValaList* _tmp225_;
	ValaList* _tmp226_;
	self = (ValaGObjectModule*) base;
	g_return_if_fail (cl != NULL);
	_tmp0_ = ((ValaCCodeBaseModule*) self)->gobject_type;
	if (!vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) cl, _tmp0_)) {
		return;
	}
	_tmp1_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp2_);
	_tmp4_ = _tmp3_;
	_vala_ccode_node_unref0 (_tmp2_);
	ccall = _tmp4_;
	_tmp5_ = ccall;
	_tmp6_ = vala_ccode_identifier_new ("klass");
	_tmp7_ = _tmp6_;
	vala_ccode_function_call_add_argument (_tmp5_, (ValaCCodeExpression*) _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	if (vala_gobject_module_class_has_readable_properties (self, cl)) {
		_tmp8_ = TRUE;
	} else {
		_tmp8_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
	}
	if (_tmp8_) {
		ValaCCodeFunction* _tmp9_;
		ValaCCodeFunction* _tmp10_;
		ValaCCodeFunctionCall* _tmp11_;
		ValaCCodeMemberAccess* _tmp12_;
		ValaCCodeMemberAccess* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
		gchar* _tmp17_;
		ValaCCodeIdentifier* _tmp18_;
		ValaCCodeIdentifier* _tmp19_;
		_tmp9_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp10_ = _tmp9_;
		_tmp11_ = ccall;
		_tmp12_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp11_, "get_property");
		_tmp13_ = _tmp12_;
		_tmp14_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
		_tmp15_ = _tmp14_;
		_tmp16_ = g_strdup_printf ("_vala_%s_get_property", _tmp15_);
		_tmp17_ = _tmp16_;
		_tmp18_ = vala_ccode_identifier_new (_tmp17_);
		_tmp19_ = _tmp18_;
		vala_ccode_function_add_assignment (_tmp10_, (ValaCCodeExpression*) _tmp13_, (ValaCCodeExpression*) _tmp19_);
		_vala_ccode_node_unref0 (_tmp19_);
		_g_free0 (_tmp17_);
		_g_free0 (_tmp15_);
		_vala_ccode_node_unref0 (_tmp13_);
	}
	if (vala_gobject_module_class_has_writable_properties (self, cl)) {
		_tmp20_ = TRUE;
	} else {
		_tmp20_ = vala_object_type_symbol_has_type_parameters ((ValaObjectTypeSymbol*) cl);
	}
	if (_tmp20_) {
		ValaCCodeFunction* _tmp21_;
		ValaCCodeFunction* _tmp22_;
		ValaCCodeFunctionCall* _tmp23_;
		ValaCCodeMemberAccess* _tmp24_;
		ValaCCodeMemberAccess* _tmp25_;
		gchar* _tmp26_;
		gchar* _tmp27_;
		gchar* _tmp28_;
		gchar* _tmp29_;
		ValaCCodeIdentifier* _tmp30_;
		ValaCCodeIdentifier* _tmp31_;
		_tmp21_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp22_ = _tmp21_;
		_tmp23_ = ccall;
		_tmp24_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp23_, "set_property");
		_tmp25_ = _tmp24_;
		_tmp26_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
		_tmp27_ = _tmp26_;
		_tmp28_ = g_strdup_printf ("_vala_%s_set_property", _tmp27_);
		_tmp29_ = _tmp28_;
		_tmp30_ = vala_ccode_identifier_new (_tmp29_);
		_tmp31_ = _tmp30_;
		vala_ccode_function_add_assignment (_tmp22_, (ValaCCodeExpression*) _tmp25_, (ValaCCodeExpression*) _tmp31_);
		_vala_ccode_node_unref0 (_tmp31_);
		_g_free0 (_tmp29_);
		_g_free0 (_tmp27_);
		_vala_ccode_node_unref0 (_tmp25_);
	}
	_tmp32_ = vala_class_get_constructor (cl);
	_tmp33_ = _tmp32_;
	if (_tmp33_ != NULL) {
		ValaCCodeFunctionCall* ccast = NULL;
		ValaCCodeIdentifier* _tmp34_;
		ValaCCodeIdentifier* _tmp35_;
		ValaCCodeFunctionCall* _tmp36_;
		ValaCCodeFunctionCall* _tmp37_;
		ValaCCodeFunctionCall* _tmp38_;
		ValaCCodeIdentifier* _tmp39_;
		ValaCCodeIdentifier* _tmp40_;
		ValaCCodeFunction* _tmp41_;
		ValaCCodeFunction* _tmp42_;
		ValaCCodeFunctionCall* _tmp43_;
		ValaCCodeMemberAccess* _tmp44_;
		ValaCCodeMemberAccess* _tmp45_;
		gchar* _tmp46_;
		gchar* _tmp47_;
		gchar* _tmp48_;
		gchar* _tmp49_;
		ValaCCodeIdentifier* _tmp50_;
		ValaCCodeIdentifier* _tmp51_;
		_tmp34_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
		_tmp35_ = _tmp34_;
		_tmp36_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp35_);
		_tmp37_ = _tmp36_;
		_vala_ccode_node_unref0 (_tmp35_);
		ccast = _tmp37_;
		_tmp38_ = ccast;
		_tmp39_ = vala_ccode_identifier_new ("klass");
		_tmp40_ = _tmp39_;
		vala_ccode_function_call_add_argument (_tmp38_, (ValaCCodeExpression*) _tmp40_);
		_vala_ccode_node_unref0 (_tmp40_);
		_tmp41_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp42_ = _tmp41_;
		_tmp43_ = ccast;
		_tmp44_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp43_, "constructor");
		_tmp45_ = _tmp44_;
		_tmp46_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
		_tmp47_ = _tmp46_;
		_tmp48_ = g_strdup_printf ("%sconstructor", _tmp47_);
		_tmp49_ = _tmp48_;
		_tmp50_ = vala_ccode_identifier_new (_tmp49_);
		_tmp51_ = _tmp50_;
		vala_ccode_function_add_assignment (_tmp42_, (ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp51_);
		_vala_ccode_node_unref0 (_tmp51_);
		_g_free0 (_tmp49_);
		_g_free0 (_tmp47_);
		_vala_ccode_node_unref0 (_tmp45_);
		_vala_ccode_node_unref0 (ccast);
	}
	_tmp53_ = vala_object_type_symbol_get_fields ((ValaObjectTypeSymbol*) cl);
	_tmp54_ = vala_collection_get_size ((ValaCollection*) _tmp53_);
	_tmp55_ = _tmp54_;
	if (_tmp55_ > 0) {
		_tmp52_ = TRUE;
	} else {
		ValaDestructor* _tmp56_;
		ValaDestructor* _tmp57_;
		_tmp56_ = vala_class_get_destructor (cl);
		_tmp57_ = _tmp56_;
		_tmp52_ = _tmp57_ != NULL;
	}
	if (_tmp52_) {
		ValaCCodeFunctionCall* ccast = NULL;
		ValaCCodeIdentifier* _tmp58_;
		ValaCCodeIdentifier* _tmp59_;
		ValaCCodeFunctionCall* _tmp60_;
		ValaCCodeFunctionCall* _tmp61_;
		ValaCCodeFunctionCall* _tmp62_;
		ValaCCodeIdentifier* _tmp63_;
		ValaCCodeIdentifier* _tmp64_;
		ValaCCodeFunction* _tmp65_;
		ValaCCodeFunction* _tmp66_;
		ValaCCodeFunctionCall* _tmp67_;
		ValaCCodeMemberAccess* _tmp68_;
		ValaCCodeMemberAccess* _tmp69_;
		gchar* _tmp70_;
		gchar* _tmp71_;
		gchar* _tmp72_;
		gchar* _tmp73_;
		ValaCCodeIdentifier* _tmp74_;
		ValaCCodeIdentifier* _tmp75_;
		_tmp58_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
		_tmp59_ = _tmp58_;
		_tmp60_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp59_);
		_tmp61_ = _tmp60_;
		_vala_ccode_node_unref0 (_tmp59_);
		ccast = _tmp61_;
		_tmp62_ = ccast;
		_tmp63_ = vala_ccode_identifier_new ("klass");
		_tmp64_ = _tmp63_;
		vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp64_);
		_vala_ccode_node_unref0 (_tmp64_);
		_tmp65_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp66_ = _tmp65_;
		_tmp67_ = ccast;
		_tmp68_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp67_, "finalize");
		_tmp69_ = _tmp68_;
		_tmp70_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) cl);
		_tmp71_ = _tmp70_;
		_tmp72_ = g_strdup_printf ("%sfinalize", _tmp71_);
		_tmp73_ = _tmp72_;
		_tmp74_ = vala_ccode_identifier_new (_tmp73_);
		_tmp75_ = _tmp74_;
		vala_ccode_function_add_assignment (_tmp66_, (ValaCCodeExpression*) _tmp69_, (ValaCCodeExpression*) _tmp75_);
		_vala_ccode_node_unref0 (_tmp75_);
		_g_free0 (_tmp73_);
		_g_free0 (_tmp71_);
		_vala_ccode_node_unref0 (_tmp69_);
		_vala_ccode_node_unref0 (ccast);
	}
	{
		ValaList* _type_param_list = NULL;
		ValaList* _tmp76_;
		gint _type_param_size = 0;
		ValaList* _tmp77_;
		gint _tmp78_;
		gint _tmp79_;
		gint _type_param_index = 0;
		_tmp76_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
		_type_param_list = _tmp76_;
		_tmp77_ = _type_param_list;
		_tmp78_ = vala_collection_get_size ((ValaCollection*) _tmp77_);
		_tmp79_ = _tmp78_;
		_type_param_size = _tmp79_;
		_type_param_index = -1;
		while (TRUE) {
			gint _tmp80_;
			gint _tmp81_;
			ValaTypeParameter* type_param = NULL;
			ValaList* _tmp82_;
			gpointer _tmp83_;
			gchar* func_name = NULL;
			gchar* enum_value = NULL;
			ValaCCodeConstant* func_name_constant = NULL;
			ValaCCodeFunctionCall* cinst = NULL;
			ValaCCodeFunctionCall* cspec = NULL;
			ValaTypeParameter* _tmp84_;
			gchar* _tmp85_;
			const gchar* _tmp86_;
			gchar* _tmp87_;
			gchar* _tmp88_;
			gchar* _tmp89_;
			gchar* _tmp90_;
			ValaCCodeConstant* _tmp91_;
			gchar* _tmp92_;
			gchar* _tmp93_;
			const gchar* _tmp94_;
			gchar* _tmp95_;
			gchar* _tmp96_;
			gchar* _tmp97_;
			ValaCCodeIdentifier* _tmp98_;
			ValaCCodeIdentifier* _tmp99_;
			ValaCCodeFunctionCall* _tmp100_;
			ValaCCodeFunctionCall* _tmp101_;
			ValaCCodeFunctionCall* _tmp102_;
			ValaCCodeFunctionCall* _tmp103_;
			const gchar* _tmp104_;
			ValaCCodeConstant* _tmp105_;
			ValaCCodeConstant* _tmp106_;
			ValaCCodeIdentifier* _tmp107_;
			ValaCCodeIdentifier* _tmp108_;
			ValaCCodeFunctionCall* _tmp109_;
			ValaCCodeFunctionCall* _tmp110_;
			ValaCCodeConstant* _tmp111_;
			ValaCCodeFunctionCall* _tmp112_;
			ValaCCodeConstant* _tmp113_;
			ValaCCodeConstant* _tmp114_;
			ValaCCodeFunctionCall* _tmp115_;
			ValaCCodeConstant* _tmp116_;
			ValaCCodeConstant* _tmp117_;
			ValaCCodeFunctionCall* _tmp118_;
			ValaCCodeIdentifier* _tmp119_;
			ValaCCodeIdentifier* _tmp120_;
			ValaCCodeFunctionCall* _tmp121_;
			ValaCCodeConstant* _tmp122_;
			ValaCCodeConstant* _tmp123_;
			ValaCCodeFunctionCall* _tmp124_;
			ValaCCodeFunctionCall* _tmp125_;
			ValaCCodeFunction* _tmp126_;
			ValaCCodeFunction* _tmp127_;
			ValaCCodeFunctionCall* _tmp128_;
			ValaCCodeEnum* _tmp129_;
			const gchar* _tmp130_;
			ValaCCodeEnumValue* _tmp131_;
			ValaCCodeEnumValue* _tmp132_;
			ValaTypeParameter* _tmp133_;
			gchar* _tmp134_;
			const gchar* _tmp135_;
			gchar* _tmp136_;
			gchar* _tmp137_;
			gchar* _tmp138_;
			gchar* _tmp139_;
			ValaCCodeConstant* _tmp140_;
			gchar* _tmp141_;
			gchar* _tmp142_;
			const gchar* _tmp143_;
			gchar* _tmp144_;
			gchar* _tmp145_;
			gchar* _tmp146_;
			ValaCCodeIdentifier* _tmp147_;
			ValaCCodeIdentifier* _tmp148_;
			ValaCCodeFunctionCall* _tmp149_;
			ValaCCodeFunctionCall* _tmp150_;
			ValaCCodeFunctionCall* _tmp151_;
			ValaCCodeFunctionCall* _tmp152_;
			const gchar* _tmp153_;
			ValaCCodeConstant* _tmp154_;
			ValaCCodeConstant* _tmp155_;
			ValaCCodeIdentifier* _tmp156_;
			ValaCCodeIdentifier* _tmp157_;
			ValaCCodeFunctionCall* _tmp158_;
			ValaCCodeFunctionCall* _tmp159_;
			ValaCCodeConstant* _tmp160_;
			ValaCCodeFunctionCall* _tmp161_;
			ValaCCodeConstant* _tmp162_;
			ValaCCodeConstant* _tmp163_;
			ValaCCodeFunctionCall* _tmp164_;
			ValaCCodeConstant* _tmp165_;
			ValaCCodeConstant* _tmp166_;
			ValaCCodeFunctionCall* _tmp167_;
			ValaCCodeConstant* _tmp168_;
			ValaCCodeConstant* _tmp169_;
			ValaCCodeFunctionCall* _tmp170_;
			ValaCCodeFunctionCall* _tmp171_;
			ValaCCodeFunction* _tmp172_;
			ValaCCodeFunction* _tmp173_;
			ValaCCodeFunctionCall* _tmp174_;
			ValaCCodeEnum* _tmp175_;
			const gchar* _tmp176_;
			ValaCCodeEnumValue* _tmp177_;
			ValaCCodeEnumValue* _tmp178_;
			ValaTypeParameter* _tmp179_;
			gchar* _tmp180_;
			const gchar* _tmp181_;
			gchar* _tmp182_;
			gchar* _tmp183_;
			gchar* _tmp184_;
			gchar* _tmp185_;
			ValaCCodeConstant* _tmp186_;
			gchar* _tmp187_;
			gchar* _tmp188_;
			const gchar* _tmp189_;
			gchar* _tmp190_;
			gchar* _tmp191_;
			gchar* _tmp192_;
			ValaCCodeIdentifier* _tmp193_;
			ValaCCodeIdentifier* _tmp194_;
			ValaCCodeFunctionCall* _tmp195_;
			ValaCCodeFunctionCall* _tmp196_;
			ValaCCodeFunctionCall* _tmp197_;
			ValaCCodeFunctionCall* _tmp198_;
			const gchar* _tmp199_;
			ValaCCodeConstant* _tmp200_;
			ValaCCodeConstant* _tmp201_;
			ValaCCodeIdentifier* _tmp202_;
			ValaCCodeIdentifier* _tmp203_;
			ValaCCodeFunctionCall* _tmp204_;
			ValaCCodeFunctionCall* _tmp205_;
			ValaCCodeConstant* _tmp206_;
			ValaCCodeFunctionCall* _tmp207_;
			ValaCCodeConstant* _tmp208_;
			ValaCCodeConstant* _tmp209_;
			ValaCCodeFunctionCall* _tmp210_;
			ValaCCodeConstant* _tmp211_;
			ValaCCodeConstant* _tmp212_;
			ValaCCodeFunctionCall* _tmp213_;
			ValaCCodeConstant* _tmp214_;
			ValaCCodeConstant* _tmp215_;
			ValaCCodeFunctionCall* _tmp216_;
			ValaCCodeFunctionCall* _tmp217_;
			ValaCCodeFunction* _tmp218_;
			ValaCCodeFunction* _tmp219_;
			ValaCCodeFunctionCall* _tmp220_;
			ValaCCodeEnum* _tmp221_;
			const gchar* _tmp222_;
			ValaCCodeEnumValue* _tmp223_;
			ValaCCodeEnumValue* _tmp224_;
			_type_param_index = _type_param_index + 1;
			_tmp80_ = _type_param_index;
			_tmp81_ = _type_param_size;
			if (!(_tmp80_ < _tmp81_)) {
				break;
			}
			_tmp82_ = _type_param_list;
			_tmp83_ = vala_list_get (_tmp82_, _type_param_index);
			type_param = (ValaTypeParameter*) _tmp83_;
			_tmp84_ = type_param;
			_tmp85_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp84_);
			_g_free0 (func_name);
			func_name = _tmp85_;
			_tmp86_ = func_name;
			_tmp87_ = string_replace (_tmp86_, "_", "-");
			_tmp88_ = _tmp87_;
			_tmp89_ = g_strdup_printf ("\"%s\"", _tmp88_);
			_tmp90_ = _tmp89_;
			_tmp91_ = vala_ccode_constant_new (_tmp90_);
			_vala_ccode_node_unref0 (func_name_constant);
			func_name_constant = _tmp91_;
			_g_free0 (_tmp90_);
			_g_free0 (_tmp88_);
			_tmp92_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp93_ = _tmp92_;
			_tmp94_ = func_name;
			_tmp95_ = g_strdup_printf ("%s_%s", _tmp93_, _tmp94_);
			_tmp96_ = _tmp95_;
			_tmp97_ = g_ascii_strup (_tmp96_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp97_;
			_g_free0 (_tmp96_);
			_g_free0 (_tmp93_);
			_tmp98_ = vala_ccode_identifier_new ("g_object_class_install_property");
			_tmp99_ = _tmp98_;
			_tmp100_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp99_);
			_vala_ccode_node_unref0 (cinst);
			cinst = _tmp100_;
			_vala_ccode_node_unref0 (_tmp99_);
			_tmp101_ = cinst;
			_tmp102_ = ccall;
			vala_ccode_function_call_add_argument (_tmp101_, (ValaCCodeExpression*) _tmp102_);
			_tmp103_ = cinst;
			_tmp104_ = enum_value;
			_tmp105_ = vala_ccode_constant_new (_tmp104_);
			_tmp106_ = _tmp105_;
			vala_ccode_function_call_add_argument (_tmp103_, (ValaCCodeExpression*) _tmp106_);
			_vala_ccode_node_unref0 (_tmp106_);
			_tmp107_ = vala_ccode_identifier_new ("g_param_spec_gtype");
			_tmp108_ = _tmp107_;
			_tmp109_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp108_);
			_vala_ccode_node_unref0 (cspec);
			cspec = _tmp109_;
			_vala_ccode_node_unref0 (_tmp108_);
			_tmp110_ = cspec;
			_tmp111_ = func_name_constant;
			vala_ccode_function_call_add_argument (_tmp110_, (ValaCCodeExpression*) _tmp111_);
			_tmp112_ = cspec;
			_tmp113_ = vala_ccode_constant_new ("\"type\"");
			_tmp114_ = _tmp113_;
			vala_ccode_function_call_add_argument (_tmp112_, (ValaCCodeExpression*) _tmp114_);
			_vala_ccode_node_unref0 (_tmp114_);
			_tmp115_ = cspec;
			_tmp116_ = vala_ccode_constant_new ("\"type\"");
			_tmp117_ = _tmp116_;
			vala_ccode_function_call_add_argument (_tmp115_, (ValaCCodeExpression*) _tmp117_);
			_vala_ccode_node_unref0 (_tmp117_);
			_tmp118_ = cspec;
			_tmp119_ = vala_ccode_identifier_new ("G_TYPE_NONE");
			_tmp120_ = _tmp119_;
			vala_ccode_function_call_add_argument (_tmp118_, (ValaCCodeExpression*) _tmp120_);
			_vala_ccode_node_unref0 (_tmp120_);
			_tmp121_ = cspec;
			_tmp122_ = vala_ccode_constant_new ("G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY");
			_tmp123_ = _tmp122_;
			vala_ccode_function_call_add_argument (_tmp121_, (ValaCCodeExpression*) _tmp123_);
			_vala_ccode_node_unref0 (_tmp123_);
			_tmp124_ = cinst;
			_tmp125_ = cspec;
			vala_ccode_function_call_add_argument (_tmp124_, (ValaCCodeExpression*) _tmp125_);
			_tmp126_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp127_ = _tmp126_;
			_tmp128_ = cinst;
			vala_ccode_function_add_expression (_tmp127_, (ValaCCodeExpression*) _tmp128_);
			_tmp129_ = ((ValaCCodeBaseModule*) self)->prop_enum;
			_tmp130_ = enum_value;
			_tmp131_ = vala_ccode_enum_value_new (_tmp130_, NULL);
			_tmp132_ = _tmp131_;
			vala_ccode_enum_add_value (_tmp129_, _tmp132_);
			_vala_ccode_node_unref0 (_tmp132_);
			_tmp133_ = type_param;
			_tmp134_ = vala_get_ccode_copy_function ((ValaTypeSymbol*) _tmp133_);
			_g_free0 (func_name);
			func_name = _tmp134_;
			_tmp135_ = func_name;
			_tmp136_ = string_replace (_tmp135_, "_", "-");
			_tmp137_ = _tmp136_;
			_tmp138_ = g_strdup_printf ("\"%s\"", _tmp137_);
			_tmp139_ = _tmp138_;
			_tmp140_ = vala_ccode_constant_new (_tmp139_);
			_vala_ccode_node_unref0 (func_name_constant);
			func_name_constant = _tmp140_;
			_g_free0 (_tmp139_);
			_g_free0 (_tmp137_);
			_tmp141_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp142_ = _tmp141_;
			_tmp143_ = func_name;
			_tmp144_ = g_strdup_printf ("%s_%s", _tmp142_, _tmp143_);
			_tmp145_ = _tmp144_;
			_tmp146_ = g_ascii_strup (_tmp145_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp146_;
			_g_free0 (_tmp145_);
			_g_free0 (_tmp142_);
			_tmp147_ = vala_ccode_identifier_new ("g_object_class_install_property");
			_tmp148_ = _tmp147_;
			_tmp149_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp148_);
			_vala_ccode_node_unref0 (cinst);
			cinst = _tmp149_;
			_vala_ccode_node_unref0 (_tmp148_);
			_tmp150_ = cinst;
			_tmp151_ = ccall;
			vala_ccode_function_call_add_argument (_tmp150_, (ValaCCodeExpression*) _tmp151_);
			_tmp152_ = cinst;
			_tmp153_ = enum_value;
			_tmp154_ = vala_ccode_constant_new (_tmp153_);
			_tmp155_ = _tmp154_;
			vala_ccode_function_call_add_argument (_tmp152_, (ValaCCodeExpression*) _tmp155_);
			_vala_ccode_node_unref0 (_tmp155_);
			_tmp156_ = vala_ccode_identifier_new ("g_param_spec_pointer");
			_tmp157_ = _tmp156_;
			_tmp158_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp157_);
			_vala_ccode_node_unref0 (cspec);
			cspec = _tmp158_;
			_vala_ccode_node_unref0 (_tmp157_);
			_tmp159_ = cspec;
			_tmp160_ = func_name_constant;
			vala_ccode_function_call_add_argument (_tmp159_, (ValaCCodeExpression*) _tmp160_);
			_tmp161_ = cspec;
			_tmp162_ = vala_ccode_constant_new ("\"dup func\"");
			_tmp163_ = _tmp162_;
			vala_ccode_function_call_add_argument (_tmp161_, (ValaCCodeExpression*) _tmp163_);
			_vala_ccode_node_unref0 (_tmp163_);
			_tmp164_ = cspec;
			_tmp165_ = vala_ccode_constant_new ("\"dup func\"");
			_tmp166_ = _tmp165_;
			vala_ccode_function_call_add_argument (_tmp164_, (ValaCCodeExpression*) _tmp166_);
			_vala_ccode_node_unref0 (_tmp166_);
			_tmp167_ = cspec;
			_tmp168_ = vala_ccode_constant_new ("G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY");
			_tmp169_ = _tmp168_;
			vala_ccode_function_call_add_argument (_tmp167_, (ValaCCodeExpression*) _tmp169_);
			_vala_ccode_node_unref0 (_tmp169_);
			_tmp170_ = cinst;
			_tmp171_ = cspec;
			vala_ccode_function_call_add_argument (_tmp170_, (ValaCCodeExpression*) _tmp171_);
			_tmp172_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp173_ = _tmp172_;
			_tmp174_ = cinst;
			vala_ccode_function_add_expression (_tmp173_, (ValaCCodeExpression*) _tmp174_);
			_tmp175_ = ((ValaCCodeBaseModule*) self)->prop_enum;
			_tmp176_ = enum_value;
			_tmp177_ = vala_ccode_enum_value_new (_tmp176_, NULL);
			_tmp178_ = _tmp177_;
			vala_ccode_enum_add_value (_tmp175_, _tmp178_);
			_vala_ccode_node_unref0 (_tmp178_);
			_tmp179_ = type_param;
			_tmp180_ = vala_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp179_);
			_g_free0 (func_name);
			func_name = _tmp180_;
			_tmp181_ = func_name;
			_tmp182_ = string_replace (_tmp181_, "_", "-");
			_tmp183_ = _tmp182_;
			_tmp184_ = g_strdup_printf ("\"%s\"", _tmp183_);
			_tmp185_ = _tmp184_;
			_tmp186_ = vala_ccode_constant_new (_tmp185_);
			_vala_ccode_node_unref0 (func_name_constant);
			func_name_constant = _tmp186_;
			_g_free0 (_tmp185_);
			_g_free0 (_tmp183_);
			_tmp187_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp188_ = _tmp187_;
			_tmp189_ = func_name;
			_tmp190_ = g_strdup_printf ("%s_%s", _tmp188_, _tmp189_);
			_tmp191_ = _tmp190_;
			_tmp192_ = g_ascii_strup (_tmp191_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp192_;
			_g_free0 (_tmp191_);
			_g_free0 (_tmp188_);
			_tmp193_ = vala_ccode_identifier_new ("g_object_class_install_property");
			_tmp194_ = _tmp193_;
			_tmp195_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp194_);
			_vala_ccode_node_unref0 (cinst);
			cinst = _tmp195_;
			_vala_ccode_node_unref0 (_tmp194_);
			_tmp196_ = cinst;
			_tmp197_ = ccall;
			vala_ccode_function_call_add_argument (_tmp196_, (ValaCCodeExpression*) _tmp197_);
			_tmp198_ = cinst;
			_tmp199_ = enum_value;
			_tmp200_ = vala_ccode_constant_new (_tmp199_);
			_tmp201_ = _tmp200_;
			vala_ccode_function_call_add_argument (_tmp198_, (ValaCCodeExpression*) _tmp201_);
			_vala_ccode_node_unref0 (_tmp201_);
			_tmp202_ = vala_ccode_identifier_new ("g_param_spec_pointer");
			_tmp203_ = _tmp202_;
			_tmp204_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp203_);
			_vala_ccode_node_unref0 (cspec);
			cspec = _tmp204_;
			_vala_ccode_node_unref0 (_tmp203_);
			_tmp205_ = cspec;
			_tmp206_ = func_name_constant;
			vala_ccode_function_call_add_argument (_tmp205_, (ValaCCodeExpression*) _tmp206_);
			_tmp207_ = cspec;
			_tmp208_ = vala_ccode_constant_new ("\"destroy func\"");
			_tmp209_ = _tmp208_;
			vala_ccode_function_call_add_argument (_tmp207_, (ValaCCodeExpression*) _tmp209_);
			_vala_ccode_node_unref0 (_tmp209_);
			_tmp210_ = cspec;
			_tmp211_ = vala_ccode_constant_new ("\"destroy func\"");
			_tmp212_ = _tmp211_;
			vala_ccode_function_call_add_argument (_tmp210_, (ValaCCodeExpression*) _tmp212_);
			_vala_ccode_node_unref0 (_tmp212_);
			_tmp213_ = cspec;
			_tmp214_ = vala_ccode_constant_new ("G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY");
			_tmp215_ = _tmp214_;
			vala_ccode_function_call_add_argument (_tmp213_, (ValaCCodeExpression*) _tmp215_);
			_vala_ccode_node_unref0 (_tmp215_);
			_tmp216_ = cinst;
			_tmp217_ = cspec;
			vala_ccode_function_call_add_argument (_tmp216_, (ValaCCodeExpression*) _tmp217_);
			_tmp218_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp219_ = _tmp218_;
			_tmp220_ = cinst;
			vala_ccode_function_add_expression (_tmp219_, (ValaCCodeExpression*) _tmp220_);
			_tmp221_ = ((ValaCCodeBaseModule*) self)->prop_enum;
			_tmp222_ = enum_value;
			_tmp223_ = vala_ccode_enum_value_new (_tmp222_, NULL);
			_tmp224_ = _tmp223_;
			vala_ccode_enum_add_value (_tmp221_, _tmp224_);
			_vala_ccode_node_unref0 (_tmp224_);
			_vala_ccode_node_unref0 (cspec);
			_vala_ccode_node_unref0 (cinst);
			_vala_ccode_node_unref0 (func_name_constant);
			_g_free0 (enum_value);
			_g_free0 (func_name);
			_vala_code_node_unref0 (type_param);
		}
	}
	_tmp225_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
	_tmp226_ = _vala_iterable_ref0 (_tmp225_);
	props = _tmp226_;
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp227_;
		gint _prop_size = 0;
		ValaList* _tmp228_;
		gint _tmp229_;
		gint _tmp230_;
		gint _prop_index = 0;
		_tmp227_ = props;
		_prop_list = _tmp227_;
		_tmp228_ = _prop_list;
		_tmp229_ = vala_collection_get_size ((ValaCollection*) _tmp228_);
		_tmp230_ = _tmp229_;
		_prop_size = _tmp230_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp231_;
			gint _tmp232_;
			ValaProperty* prop = NULL;
			ValaList* _tmp233_;
			gpointer _tmp234_;
			ValaCodeContext* _tmp235_;
			ValaCodeContext* _tmp236_;
			ValaSemanticAnalyzer* _tmp237_;
			ValaSemanticAnalyzer* _tmp238_;
			ValaProperty* _tmp239_;
			ValaProperty* _tmp255_;
			ValaComment* _tmp256_;
			ValaComment* _tmp257_;
			ValaCCodeFunctionCall* cinst = NULL;
			ValaCCodeIdentifier* _tmp267_;
			ValaCCodeIdentifier* _tmp268_;
			ValaCCodeFunctionCall* _tmp269_;
			ValaCCodeFunctionCall* _tmp270_;
			ValaCCodeFunctionCall* _tmp271_;
			ValaCCodeFunctionCall* _tmp272_;
			ValaCCodeFunctionCall* _tmp273_;
			ValaProperty* _tmp274_;
			gchar* _tmp275_;
			gchar* _tmp276_;
			gchar* _tmp277_;
			gchar* _tmp278_;
			ValaCCodeConstant* _tmp279_;
			ValaCCodeConstant* _tmp280_;
			ValaCCodeFunctionCall* _tmp281_;
			ValaProperty* _tmp282_;
			ValaCCodeExpression* _tmp283_;
			ValaCCodeExpression* _tmp284_;
			ValaCCodeFunction* _tmp285_;
			ValaCCodeFunction* _tmp286_;
			ValaCCodeFunctionCall* _tmp287_;
			_prop_index = _prop_index + 1;
			_tmp231_ = _prop_index;
			_tmp232_ = _prop_size;
			if (!(_tmp231_ < _tmp232_)) {
				break;
			}
			_tmp233_ = _prop_list;
			_tmp234_ = vala_list_get (_tmp233_, _prop_index);
			prop = (ValaProperty*) _tmp234_;
			_tmp235_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp236_ = _tmp235_;
			_tmp237_ = vala_code_context_get_analyzer (_tmp236_);
			_tmp238_ = _tmp237_;
			_tmp239_ = prop;
			if (!vala_semantic_analyzer_is_gobject_property (_tmp238_, _tmp239_)) {
				ValaCodeContext* _tmp240_;
				ValaCodeContext* _tmp241_;
				ValaSemanticAnalyzer* _tmp242_;
				ValaSemanticAnalyzer* _tmp243_;
				ValaProperty* _tmp244_;
				ValaDataType* _tmp245_;
				ValaDataType* _tmp246_;
				_tmp240_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
				_tmp241_ = _tmp240_;
				_tmp242_ = vala_code_context_get_analyzer (_tmp241_);
				_tmp243_ = _tmp242_;
				_tmp244_ = prop;
				_tmp245_ = vala_property_get_property_type (_tmp244_);
				_tmp246_ = _tmp245_;
				if (!vala_semantic_analyzer_is_gobject_property_type (_tmp243_, _tmp246_)) {
					ValaProperty* _tmp247_;
					ValaSourceReference* _tmp248_;
					ValaSourceReference* _tmp249_;
					ValaProperty* _tmp250_;
					ValaDataType* _tmp251_;
					ValaDataType* _tmp252_;
					gchar* _tmp253_;
					gchar* _tmp254_;
					_tmp247_ = prop;
					_tmp248_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp247_);
					_tmp249_ = _tmp248_;
					_tmp250_ = prop;
					_tmp251_ = vala_property_get_property_type (_tmp250_);
					_tmp252_ = _tmp251_;
					_tmp253_ = vala_data_type_to_qualified_string (_tmp252_, NULL);
					_tmp254_ = _tmp253_;
					vala_report_warning (_tmp249_, "Type `%s' can not be used for a GLib.Object property", _tmp254_);
					_g_free0 (_tmp254_);
				}
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp255_ = prop;
			_tmp256_ = vala_symbol_get_comment ((ValaSymbol*) _tmp255_);
			_tmp257_ = _tmp256_;
			if (_tmp257_ != NULL) {
				ValaCCodeFunction* _tmp258_;
				ValaCCodeFunction* _tmp259_;
				ValaProperty* _tmp260_;
				ValaComment* _tmp261_;
				ValaComment* _tmp262_;
				const gchar* _tmp263_;
				const gchar* _tmp264_;
				ValaCCodeComment* _tmp265_;
				ValaCCodeComment* _tmp266_;
				_tmp258_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp259_ = _tmp258_;
				_tmp260_ = prop;
				_tmp261_ = vala_symbol_get_comment ((ValaSymbol*) _tmp260_);
				_tmp262_ = _tmp261_;
				_tmp263_ = vala_comment_get_content (_tmp262_);
				_tmp264_ = _tmp263_;
				_tmp265_ = vala_ccode_comment_new (_tmp264_);
				_tmp266_ = _tmp265_;
				vala_ccode_function_add_statement (_tmp259_, (ValaCCodeNode*) _tmp266_);
				_vala_ccode_node_unref0 (_tmp266_);
			}
			_tmp267_ = vala_ccode_identifier_new ("g_object_class_install_property");
			_tmp268_ = _tmp267_;
			_tmp269_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp268_);
			_tmp270_ = _tmp269_;
			_vala_ccode_node_unref0 (_tmp268_);
			cinst = _tmp270_;
			_tmp271_ = cinst;
			_tmp272_ = ccall;
			vala_ccode_function_call_add_argument (_tmp271_, (ValaCCodeExpression*) _tmp272_);
			_tmp273_ = cinst;
			_tmp274_ = prop;
			_tmp275_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp274_, NULL);
			_tmp276_ = _tmp275_;
			_tmp277_ = g_strdup_printf ("%s_PROPERTY", _tmp276_);
			_tmp278_ = _tmp277_;
			_tmp279_ = vala_ccode_constant_new (_tmp278_);
			_tmp280_ = _tmp279_;
			vala_ccode_function_call_add_argument (_tmp273_, (ValaCCodeExpression*) _tmp280_);
			_vala_ccode_node_unref0 (_tmp280_);
			_g_free0 (_tmp278_);
			_g_free0 (_tmp276_);
			_tmp281_ = cinst;
			_tmp282_ = prop;
			_tmp283_ = vala_ccode_base_module_get_param_spec ((ValaCCodeBaseModule*) self, _tmp282_);
			_tmp284_ = _tmp283_;
			vala_ccode_function_call_add_argument (_tmp281_, _tmp284_);
			_vala_ccode_node_unref0 (_tmp284_);
			_tmp285_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp286_ = _tmp285_;
			_tmp287_ = cinst;
			vala_ccode_function_add_expression (_tmp286_, (ValaCCodeExpression*) _tmp287_);
			_vala_ccode_node_unref0 (cinst);
			_vala_code_node_unref0 (prop);
		}
	}
	_vala_iterable_unref0 (props);
	_vala_ccode_node_unref0 (ccall);
}

static gboolean
vala_gobject_module_class_has_readable_properties (ValaGObjectModule* self,
                                                   ValaClass* cl)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (cl != NULL, FALSE);
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp0_;
		gint _prop_size = 0;
		ValaList* _tmp1_;
		gint _tmp2_;
		gint _tmp3_;
		gint _prop_index = 0;
		_tmp0_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
		_prop_list = _tmp0_;
		_tmp1_ = _prop_list;
		_tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_);
		_tmp3_ = _tmp2_;
		_prop_size = _tmp3_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp4_;
			gint _tmp5_;
			ValaProperty* prop = NULL;
			ValaList* _tmp6_;
			gpointer _tmp7_;
			ValaProperty* _tmp8_;
			ValaPropertyAccessor* _tmp9_;
			ValaPropertyAccessor* _tmp10_;
			_prop_index = _prop_index + 1;
			_tmp4_ = _prop_index;
			_tmp5_ = _prop_size;
			if (!(_tmp4_ < _tmp5_)) {
				break;
			}
			_tmp6_ = _prop_list;
			_tmp7_ = vala_list_get (_tmp6_, _prop_index);
			prop = (ValaProperty*) _tmp7_;
			_tmp8_ = prop;
			_tmp9_ = vala_property_get_get_accessor (_tmp8_);
			_tmp10_ = _tmp9_;
			if (_tmp10_ != NULL) {
				result = TRUE;
				_vala_code_node_unref0 (prop);
				return result;
			}
			_vala_code_node_unref0 (prop);
		}
	}
	result = FALSE;
	return result;
}

static gboolean
vala_gobject_module_class_has_writable_properties (ValaGObjectModule* self,
                                                   ValaClass* cl)
{
	gboolean result;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (cl != NULL, FALSE);
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp0_;
		gint _prop_size = 0;
		ValaList* _tmp1_;
		gint _tmp2_;
		gint _tmp3_;
		gint _prop_index = 0;
		_tmp0_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
		_prop_list = _tmp0_;
		_tmp1_ = _prop_list;
		_tmp2_ = vala_collection_get_size ((ValaCollection*) _tmp1_);
		_tmp3_ = _tmp2_;
		_prop_size = _tmp3_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp4_;
			gint _tmp5_;
			ValaProperty* prop = NULL;
			ValaList* _tmp6_;
			gpointer _tmp7_;
			ValaProperty* _tmp8_;
			ValaPropertyAccessor* _tmp9_;
			ValaPropertyAccessor* _tmp10_;
			_prop_index = _prop_index + 1;
			_tmp4_ = _prop_index;
			_tmp5_ = _prop_size;
			if (!(_tmp4_ < _tmp5_)) {
				break;
			}
			_tmp6_ = _prop_list;
			_tmp7_ = vala_list_get (_tmp6_, _prop_index);
			prop = (ValaProperty*) _tmp7_;
			_tmp8_ = prop;
			_tmp9_ = vala_property_get_set_accessor (_tmp8_);
			_tmp10_ = _tmp9_;
			if (_tmp10_ != NULL) {
				result = TRUE;
				_vala_code_node_unref0 (prop);
				return result;
			}
			_vala_code_node_unref0 (prop);
		}
	}
	result = FALSE;
	return result;
}

static void
vala_gobject_module_add_guarded_expression (ValaGObjectModule* self,
                                            ValaSymbol* sym,
                                            ValaCCodeExpression* expression)
{
	ValaVersionAttribute* _tmp0_;
	ValaVersionAttribute* _tmp1_;
	gboolean _tmp2_;
	gboolean _tmp3_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	g_return_if_fail (expression != NULL);
	_tmp0_ = vala_symbol_get_version (sym);
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_version_attribute_get_deprecated (_tmp1_);
	_tmp3_ = _tmp2_;
	if (_tmp3_) {
		ValaCCodeGGnucSection* guard = NULL;
		ValaCCodeGGnucSection* _tmp4_;
		ValaCCodeFunction* _tmp5_;
		ValaCCodeFunction* _tmp6_;
		ValaCCodeGGnucSection* _tmp7_;
		ValaCCodeGGnucSection* _tmp8_;
		ValaCCodeExpressionStatement* _tmp9_;
		ValaCCodeExpressionStatement* _tmp10_;
		_tmp4_ = vala_ccode_ggnuc_section_new (VALA_GGNUC_SECTION_TYPE_IGNORE_DEPRECATIONS);
		guard = _tmp4_;
		_tmp5_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp6_ = _tmp5_;
		_tmp7_ = guard;
		vala_ccode_function_add_statement (_tmp6_, (ValaCCodeNode*) _tmp7_);
		_tmp8_ = guard;
		_tmp9_ = vala_ccode_expression_statement_new (expression);
		_tmp10_ = _tmp9_;
		vala_ccode_fragment_append ((ValaCCodeFragment*) _tmp8_, (ValaCCodeNode*) _tmp10_);
		_vala_ccode_node_unref0 (_tmp10_);
		_vala_ccode_node_unref0 (guard);
	} else {
		ValaCCodeFunction* _tmp11_;
		ValaCCodeFunction* _tmp12_;
		_tmp11_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp12_ = _tmp11_;
		vala_ccode_function_add_expression (_tmp12_, expression);
	}
}

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

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

static void
vala_gobject_module_add_get_property_function (ValaGObjectModule* self,
                                               ValaClass* cl)
{
	ValaCCodeFunction* get_prop = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _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_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp20_;
	ValaCCodeIdentifier* _tmp21_;
	ValaCCodeFunctionCall* _tmp22_;
	ValaCCodeFunctionCall* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	ValaCCodeFunction* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	gchar* _tmp28_;
	gchar* _tmp29_;
	ValaCCodeFunctionCall* _tmp30_;
	ValaCCodeVariableDeclarator* _tmp31_;
	ValaCCodeVariableDeclarator* _tmp32_;
	ValaCCodeFunction* _tmp33_;
	ValaCCodeFunction* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeIdentifier* _tmp36_;
	ValaList* props = NULL;
	ValaList* _tmp37_;
	ValaList* _tmp38_;
	ValaCCodeFunction* _tmp409_;
	ValaCCodeFunction* _tmp410_;
	ValaCCodeFunction* _tmp411_;
	ValaCCodeFunction* _tmp412_;
	ValaCCodeFunction* _tmp413_;
	ValaCCodeFunction* _tmp414_;
	ValaCCodeFile* _tmp415_;
	ValaCCodeFunction* _tmp416_;
	ValaCCodeFile* _tmp417_;
	ValaCCodeFunction* _tmp418_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strdup_printf ("_vala_%s_get_property", _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	_g_free0 (_tmp1_);
	get_prop = _tmp5_;
	_tmp6_ = get_prop;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp6_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp7_ = get_prop;
	_tmp8_ = vala_ccode_parameter_new ("object", "GObject *");
	_tmp9_ = _tmp8_;
	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
	_vala_ccode_node_unref0 (_tmp9_);
	_tmp10_ = get_prop;
	_tmp11_ = vala_ccode_parameter_new ("property_id", "guint");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = get_prop;
	_tmp14_ = vala_ccode_parameter_new ("value", "GValue *");
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_tmp16_ = get_prop;
	_tmp17_ = vala_ccode_parameter_new ("pspec", "GParamSpec *");
	_tmp18_ = _tmp17_;
	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_tmp19_ = get_prop;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
	_tmp20_ = vala_ccode_identifier_new ("object");
	_tmp21_ = _tmp20_;
	_tmp22_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp21_, (ValaTypeSymbol*) cl);
	_tmp23_ = _tmp22_;
	_vala_ccode_node_unref0 (_tmp21_);
	ccall = _tmp23_;
	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
	_tmp27_ = _tmp26_;
	_tmp28_ = g_strdup_printf ("%s *", _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = ccall;
	_tmp31_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp30_, NULL);
	_tmp32_ = _tmp31_;
	vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp32_, 0);
	_vala_ccode_node_unref0 (_tmp32_);
	_g_free0 (_tmp29_);
	_g_free0 (_tmp27_);
	_tmp33_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp34_ = _tmp33_;
	_tmp35_ = vala_ccode_identifier_new ("property_id");
	_tmp36_ = _tmp35_;
	vala_ccode_function_open_switch (_tmp34_, (ValaCCodeExpression*) _tmp36_);
	_vala_ccode_node_unref0 (_tmp36_);
	_tmp37_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
	_tmp38_ = _vala_iterable_ref0 (_tmp37_);
	props = _tmp38_;
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp39_;
		gint _prop_size = 0;
		ValaList* _tmp40_;
		gint _tmp41_;
		gint _tmp42_;
		gint _prop_index = 0;
		_tmp39_ = props;
		_prop_list = _tmp39_;
		_tmp40_ = _prop_list;
		_tmp41_ = vala_collection_get_size ((ValaCollection*) _tmp40_);
		_tmp42_ = _tmp41_;
		_prop_size = _tmp42_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp43_;
			gint _tmp44_;
			ValaProperty* prop = NULL;
			ValaList* _tmp45_;
			gpointer _tmp46_;
			gboolean _tmp47_ = FALSE;
			ValaProperty* _tmp48_;
			ValaPropertyAccessor* _tmp49_;
			ValaPropertyAccessor* _tmp50_;
			ValaCodeContext* _tmp54_;
			ValaCodeContext* _tmp55_;
			ValaSemanticAnalyzer* _tmp56_;
			ValaSemanticAnalyzer* _tmp57_;
			ValaProperty* _tmp58_;
			ValaProperty* base_prop = NULL;
			ValaProperty* _tmp59_;
			ValaProperty* _tmp60_;
			ValaCCodeExpression* cself = NULL;
			ValaCCodeIdentifier* _tmp61_;
			ValaProperty* _tmp62_;
			ValaProperty* _tmp63_;
			ValaProperty* _tmp64_;
			ValaCCodeExpression* cfunc = NULL;
			gboolean _tmp126_ = FALSE;
			ValaProperty* _tmp127_;
			ValaCCodeFunction* _tmp141_;
			ValaCCodeFunction* _tmp142_;
			ValaProperty* _tmp143_;
			gchar* _tmp144_;
			gchar* _tmp145_;
			gchar* _tmp146_;
			gchar* _tmp147_;
			ValaCCodeIdentifier* _tmp148_;
			ValaCCodeIdentifier* _tmp149_;
			ValaProperty* _tmp150_;
			ValaDataType* _tmp151_;
			ValaDataType* _tmp152_;
			ValaCCodeFunction* _tmp303_;
			ValaCCodeFunction* _tmp304_;
			_prop_index = _prop_index + 1;
			_tmp43_ = _prop_index;
			_tmp44_ = _prop_size;
			if (!(_tmp43_ < _tmp44_)) {
				break;
			}
			_tmp45_ = _prop_list;
			_tmp46_ = vala_list_get (_tmp45_, _prop_index);
			prop = (ValaProperty*) _tmp46_;
			_tmp48_ = prop;
			_tmp49_ = vala_property_get_get_accessor (_tmp48_);
			_tmp50_ = _tmp49_;
			if (_tmp50_ == NULL) {
				_tmp47_ = TRUE;
			} else {
				ValaProperty* _tmp51_;
				gboolean _tmp52_;
				gboolean _tmp53_;
				_tmp51_ = prop;
				_tmp52_ = vala_property_get_is_abstract (_tmp51_);
				_tmp53_ = _tmp52_;
				_tmp47_ = _tmp53_;
			}
			if (_tmp47_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp54_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp55_ = _tmp54_;
			_tmp56_ = vala_code_context_get_analyzer (_tmp55_);
			_tmp57_ = _tmp56_;
			_tmp58_ = prop;
			if (!vala_semantic_analyzer_is_gobject_property (_tmp57_, _tmp58_)) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp59_ = prop;
			_tmp60_ = _vala_code_node_ref0 (_tmp59_);
			base_prop = _tmp60_;
			_tmp61_ = vala_ccode_identifier_new ("self");
			cself = (ValaCCodeExpression*) _tmp61_;
			_tmp62_ = prop;
			_tmp63_ = vala_property_get_base_property (_tmp62_);
			_tmp64_ = _tmp63_;
			if (_tmp64_ != NULL) {
				ValaClass* base_type = NULL;
				ValaProperty* _tmp65_;
				ValaProperty* _tmp66_;
				ValaProperty* _tmp67_;
				ValaSymbol* _tmp68_;
				ValaSymbol* _tmp69_;
				ValaClass* _tmp70_;
				ValaProperty* _tmp71_;
				ValaProperty* _tmp72_;
				ValaProperty* _tmp73_;
				ValaProperty* _tmp74_;
				ValaObjectType* _tmp75_;
				ValaObjectType* _tmp76_;
				ValaCCodeExpression* _tmp77_;
				ValaGLibValue* _tmp78_;
				ValaGLibValue* _tmp79_;
				ValaClass* _tmp80_;
				ValaObjectType* _tmp81_;
				ValaObjectType* _tmp82_;
				ValaProperty* _tmp83_;
				ValaTargetValue* _tmp84_;
				ValaTargetValue* _tmp85_;
				ValaCCodeExpression* _tmp86_;
				ValaCCodeExpression* _tmp87_;
				ValaProperty* _tmp88_;
				ValaProperty* _tmp89_;
				ValaProperty* _tmp90_;
				ValaPropertyAccessor* _tmp91_;
				ValaPropertyAccessor* _tmp92_;
				ValaCCodeFile* _tmp93_;
				_tmp65_ = prop;
				_tmp66_ = vala_property_get_base_property (_tmp65_);
				_tmp67_ = _tmp66_;
				_tmp68_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp67_);
				_tmp69_ = _tmp68_;
				_tmp70_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp69_, VALA_TYPE_CLASS, ValaClass));
				base_type = _tmp70_;
				_tmp71_ = prop;
				_tmp72_ = vala_property_get_base_property (_tmp71_);
				_tmp73_ = _tmp72_;
				_tmp74_ = _vala_code_node_ref0 (_tmp73_);
				_vala_code_node_unref0 (base_prop);
				base_prop = _tmp74_;
				_tmp75_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl, NULL);
				_tmp76_ = _tmp75_;
				_tmp77_ = cself;
				_tmp78_ = vala_glib_value_new ((ValaDataType*) _tmp76_, _tmp77_, TRUE);
				_tmp79_ = _tmp78_;
				_tmp80_ = base_type;
				_tmp81_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp80_, NULL);
				_tmp82_ = _tmp81_;
				_tmp83_ = prop;
				_tmp84_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp79_, (ValaDataType*) _tmp82_, (ValaCodeNode*) _tmp83_);
				_tmp85_ = _tmp84_;
				_tmp86_ = vala_get_cvalue_ (_tmp85_);
				_tmp87_ = _vala_ccode_node_ref0 (_tmp86_);
				_vala_ccode_node_unref0 (cself);
				cself = _tmp87_;
				_vala_target_value_unref0 (_tmp85_);
				_vala_code_node_unref0 (_tmp82_);
				_vala_target_value_unref0 (_tmp79_);
				_vala_code_node_unref0 (_tmp76_);
				_tmp88_ = prop;
				_tmp89_ = vala_property_get_base_property (_tmp88_);
				_tmp90_ = _tmp89_;
				_tmp91_ = vala_property_get_get_accessor (_tmp90_);
				_tmp92_ = _tmp91_;
				_tmp93_ = ((ValaCCodeBaseModule*) self)->cfile;
				vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp92_, _tmp93_);
				_vala_code_node_unref0 (base_type);
			} else {
				ValaProperty* _tmp94_;
				ValaProperty* _tmp95_;
				ValaProperty* _tmp96_;
				_tmp94_ = prop;
				_tmp95_ = vala_property_get_base_interface_property (_tmp94_);
				_tmp96_ = _tmp95_;
				if (_tmp96_ != NULL) {
					ValaInterface* base_type = NULL;
					ValaProperty* _tmp97_;
					ValaProperty* _tmp98_;
					ValaProperty* _tmp99_;
					ValaSymbol* _tmp100_;
					ValaSymbol* _tmp101_;
					ValaInterface* _tmp102_;
					ValaProperty* _tmp103_;
					ValaProperty* _tmp104_;
					ValaProperty* _tmp105_;
					ValaProperty* _tmp106_;
					ValaObjectType* _tmp107_;
					ValaObjectType* _tmp108_;
					ValaCCodeExpression* _tmp109_;
					ValaGLibValue* _tmp110_;
					ValaGLibValue* _tmp111_;
					ValaInterface* _tmp112_;
					ValaObjectType* _tmp113_;
					ValaObjectType* _tmp114_;
					ValaProperty* _tmp115_;
					ValaTargetValue* _tmp116_;
					ValaTargetValue* _tmp117_;
					ValaCCodeExpression* _tmp118_;
					ValaCCodeExpression* _tmp119_;
					ValaProperty* _tmp120_;
					ValaProperty* _tmp121_;
					ValaProperty* _tmp122_;
					ValaPropertyAccessor* _tmp123_;
					ValaPropertyAccessor* _tmp124_;
					ValaCCodeFile* _tmp125_;
					_tmp97_ = prop;
					_tmp98_ = vala_property_get_base_interface_property (_tmp97_);
					_tmp99_ = _tmp98_;
					_tmp100_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp99_);
					_tmp101_ = _tmp100_;
					_tmp102_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp101_, VALA_TYPE_INTERFACE, ValaInterface));
					base_type = _tmp102_;
					_tmp103_ = prop;
					_tmp104_ = vala_property_get_base_interface_property (_tmp103_);
					_tmp105_ = _tmp104_;
					_tmp106_ = _vala_code_node_ref0 (_tmp105_);
					_vala_code_node_unref0 (base_prop);
					base_prop = _tmp106_;
					_tmp107_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl, NULL);
					_tmp108_ = _tmp107_;
					_tmp109_ = cself;
					_tmp110_ = vala_glib_value_new ((ValaDataType*) _tmp108_, _tmp109_, TRUE);
					_tmp111_ = _tmp110_;
					_tmp112_ = base_type;
					_tmp113_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp112_, NULL);
					_tmp114_ = _tmp113_;
					_tmp115_ = prop;
					_tmp116_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp111_, (ValaDataType*) _tmp114_, (ValaCodeNode*) _tmp115_);
					_tmp117_ = _tmp116_;
					_tmp118_ = vala_get_cvalue_ (_tmp117_);
					_tmp119_ = _vala_ccode_node_ref0 (_tmp118_);
					_vala_ccode_node_unref0 (cself);
					cself = _tmp119_;
					_vala_target_value_unref0 (_tmp117_);
					_vala_code_node_unref0 (_tmp114_);
					_vala_target_value_unref0 (_tmp111_);
					_vala_code_node_unref0 (_tmp108_);
					_tmp120_ = prop;
					_tmp121_ = vala_property_get_base_interface_property (_tmp120_);
					_tmp122_ = _tmp121_;
					_tmp123_ = vala_property_get_get_accessor (_tmp122_);
					_tmp124_ = _tmp123_;
					_tmp125_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp124_, _tmp125_);
					_vala_code_node_unref0 (base_type);
				}
			}
			_tmp127_ = base_prop;
			if (!vala_get_ccode_no_accessor_method (_tmp127_)) {
				ValaProperty* _tmp128_;
				_tmp128_ = base_prop;
				_tmp126_ = !vala_get_ccode_concrete_accessor (_tmp128_);
			} else {
				_tmp126_ = FALSE;
			}
			if (_tmp126_) {
				ValaProperty* _tmp129_;
				ValaPropertyAccessor* _tmp130_;
				ValaPropertyAccessor* _tmp131_;
				gchar* _tmp132_;
				gchar* _tmp133_;
				ValaCCodeIdentifier* _tmp134_;
				_tmp129_ = base_prop;
				_tmp130_ = vala_property_get_get_accessor (_tmp129_);
				_tmp131_ = _tmp130_;
				_tmp132_ = vala_get_ccode_name ((ValaCodeNode*) _tmp131_);
				_tmp133_ = _tmp132_;
				_tmp134_ = vala_ccode_identifier_new (_tmp133_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp134_;
				_g_free0 (_tmp133_);
			} else {
				ValaProperty* _tmp135_;
				ValaPropertyAccessor* _tmp136_;
				ValaPropertyAccessor* _tmp137_;
				gchar* _tmp138_;
				gchar* _tmp139_;
				ValaCCodeIdentifier* _tmp140_;
				_tmp135_ = prop;
				_tmp136_ = vala_property_get_get_accessor (_tmp135_);
				_tmp137_ = _tmp136_;
				_tmp138_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp137_);
				_tmp139_ = _tmp138_;
				_tmp140_ = vala_ccode_identifier_new (_tmp139_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp140_;
				_g_free0 (_tmp139_);
			}
			_tmp141_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp142_ = _tmp141_;
			_tmp143_ = prop;
			_tmp144_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp143_, NULL);
			_tmp145_ = _tmp144_;
			_tmp146_ = g_strdup_printf ("%s_PROPERTY", _tmp145_);
			_tmp147_ = _tmp146_;
			_tmp148_ = vala_ccode_identifier_new (_tmp147_);
			_tmp149_ = _tmp148_;
			vala_ccode_function_add_case (_tmp142_, (ValaCCodeExpression*) _tmp149_);
			_vala_ccode_node_unref0 (_tmp149_);
			_g_free0 (_tmp147_);
			_g_free0 (_tmp145_);
			_tmp150_ = prop;
			_tmp151_ = vala_property_get_property_type (_tmp150_);
			_tmp152_ = _tmp151_;
			if (vala_data_type_is_real_struct_type (_tmp152_)) {
				ValaCCodeFunction* _tmp153_;
				ValaCCodeFunction* _tmp154_;
				ValaCCodeFunction* _tmp155_;
				ValaCCodeFunction* _tmp156_;
				ValaProperty* _tmp157_;
				ValaDataType* _tmp158_;
				ValaDataType* _tmp159_;
				gchar* _tmp160_;
				gchar* _tmp161_;
				ValaCCodeVariableDeclarator* _tmp162_;
				ValaCCodeVariableDeclarator* _tmp163_;
				ValaCCodeExpression* _tmp164_;
				ValaCCodeFunctionCall* _tmp165_;
				ValaCCodeFunctionCall* _tmp166_;
				ValaCCodeExpression* _tmp167_;
				ValaProperty* _tmp168_;
				ValaDataType* _tmp169_;
				ValaDataType* _tmp170_;
				gboolean _tmp171_;
				gboolean _tmp172_;
				ValaCCodeFunctionCall* csetcall = NULL;
				ValaCCodeFunctionCall* _tmp186_;
				ValaCCodeFunctionCall* _tmp187_;
				ValaProperty* _tmp188_;
				ValaDataType* _tmp189_;
				ValaDataType* _tmp190_;
				ValaCCodeExpression* _tmp191_;
				ValaCCodeExpression* _tmp192_;
				ValaCCodeFunctionCall* _tmp193_;
				ValaCCodeIdentifier* _tmp194_;
				ValaCCodeIdentifier* _tmp195_;
				ValaProperty* _tmp196_;
				ValaDataType* _tmp197_;
				ValaDataType* _tmp198_;
				gboolean _tmp199_;
				gboolean _tmp200_;
				ValaProperty* _tmp209_;
				ValaCCodeFunctionCall* _tmp210_;
				ValaProperty* _tmp211_;
				ValaPropertyAccessor* _tmp212_;
				ValaPropertyAccessor* _tmp213_;
				ValaDataType* _tmp214_;
				ValaDataType* _tmp215_;
				ValaCCodeFunction* _tmp229_;
				ValaCCodeFunction* _tmp230_;
				_tmp153_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp154_ = _tmp153_;
				vala_ccode_function_open_block (_tmp154_);
				_tmp155_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp156_ = _tmp155_;
				_tmp157_ = prop;
				_tmp158_ = vala_property_get_property_type (_tmp157_);
				_tmp159_ = _tmp158_;
				_tmp160_ = vala_get_ccode_name ((ValaCodeNode*) _tmp159_);
				_tmp161_ = _tmp160_;
				_tmp162_ = vala_ccode_variable_declarator_new ("boxed", NULL, NULL);
				_tmp163_ = _tmp162_;
				vala_ccode_function_add_declaration (_tmp156_, _tmp161_, (ValaCCodeDeclarator*) _tmp163_, 0);
				_vala_ccode_node_unref0 (_tmp163_);
				_g_free0 (_tmp161_);
				_tmp164_ = cfunc;
				_tmp165_ = vala_ccode_function_call_new (_tmp164_);
				_vala_ccode_node_unref0 (ccall);
				ccall = _tmp165_;
				_tmp166_ = ccall;
				_tmp167_ = cself;
				vala_ccode_function_call_add_argument (_tmp166_, _tmp167_);
				_tmp168_ = prop;
				_tmp169_ = vala_property_get_property_type (_tmp168_);
				_tmp170_ = _tmp169_;
				_tmp171_ = vala_data_type_get_nullable (_tmp170_);
				_tmp172_ = _tmp171_;
				if (_tmp172_) {
					ValaCCodeFunction* _tmp173_;
					ValaCCodeFunction* _tmp174_;
					ValaCCodeIdentifier* _tmp175_;
					ValaCCodeIdentifier* _tmp176_;
					ValaCCodeFunctionCall* _tmp177_;
					_tmp173_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp174_ = _tmp173_;
					_tmp175_ = vala_ccode_identifier_new ("boxed");
					_tmp176_ = _tmp175_;
					_tmp177_ = ccall;
					vala_ccode_function_add_assignment (_tmp174_, (ValaCCodeExpression*) _tmp176_, (ValaCCodeExpression*) _tmp177_);
					_vala_ccode_node_unref0 (_tmp176_);
				} else {
					ValaCCodeFunctionCall* _tmp178_;
					ValaCCodeIdentifier* _tmp179_;
					ValaCCodeIdentifier* _tmp180_;
					ValaCCodeUnaryExpression* _tmp181_;
					ValaCCodeUnaryExpression* _tmp182_;
					ValaCCodeFunction* _tmp183_;
					ValaCCodeFunction* _tmp184_;
					ValaCCodeFunctionCall* _tmp185_;
					_tmp178_ = ccall;
					_tmp179_ = vala_ccode_identifier_new ("boxed");
					_tmp180_ = _tmp179_;
					_tmp181_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp180_);
					_tmp182_ = _tmp181_;
					vala_ccode_function_call_add_argument (_tmp178_, (ValaCCodeExpression*) _tmp182_);
					_vala_ccode_node_unref0 (_tmp182_);
					_vala_ccode_node_unref0 (_tmp180_);
					_tmp183_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp184_ = _tmp183_;
					_tmp185_ = ccall;
					vala_ccode_function_add_expression (_tmp184_, (ValaCCodeExpression*) _tmp185_);
				}
				_tmp186_ = vala_ccode_function_call_new (NULL);
				csetcall = _tmp186_;
				_tmp187_ = csetcall;
				_tmp188_ = prop;
				_tmp189_ = vala_property_get_property_type (_tmp188_);
				_tmp190_ = _tmp189_;
				_tmp191_ = vala_ccode_base_module_get_value_setter_function ((ValaCCodeBaseModule*) self, _tmp190_);
				_tmp192_ = _tmp191_;
				vala_ccode_function_call_set_call (_tmp187_, _tmp192_);
				_vala_ccode_node_unref0 (_tmp192_);
				_tmp193_ = csetcall;
				_tmp194_ = vala_ccode_identifier_new ("value");
				_tmp195_ = _tmp194_;
				vala_ccode_function_call_add_argument (_tmp193_, (ValaCCodeExpression*) _tmp195_);
				_vala_ccode_node_unref0 (_tmp195_);
				_tmp196_ = prop;
				_tmp197_ = vala_property_get_property_type (_tmp196_);
				_tmp198_ = _tmp197_;
				_tmp199_ = vala_data_type_get_nullable (_tmp198_);
				_tmp200_ = _tmp199_;
				if (_tmp200_) {
					ValaCCodeFunctionCall* _tmp201_;
					ValaCCodeIdentifier* _tmp202_;
					ValaCCodeIdentifier* _tmp203_;
					_tmp201_ = csetcall;
					_tmp202_ = vala_ccode_identifier_new ("boxed");
					_tmp203_ = _tmp202_;
					vala_ccode_function_call_add_argument (_tmp201_, (ValaCCodeExpression*) _tmp203_);
					_vala_ccode_node_unref0 (_tmp203_);
				} else {
					ValaCCodeFunctionCall* _tmp204_;
					ValaCCodeIdentifier* _tmp205_;
					ValaCCodeIdentifier* _tmp206_;
					ValaCCodeUnaryExpression* _tmp207_;
					ValaCCodeUnaryExpression* _tmp208_;
					_tmp204_ = csetcall;
					_tmp205_ = vala_ccode_identifier_new ("boxed");
					_tmp206_ = _tmp205_;
					_tmp207_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp206_);
					_tmp208_ = _tmp207_;
					vala_ccode_function_call_add_argument (_tmp204_, (ValaCCodeExpression*) _tmp208_);
					_vala_ccode_node_unref0 (_tmp208_);
					_vala_ccode_node_unref0 (_tmp206_);
				}
				_tmp209_ = prop;
				_tmp210_ = csetcall;
				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp209_, (ValaCCodeExpression*) _tmp210_);
				_tmp211_ = prop;
				_tmp212_ = vala_property_get_get_accessor (_tmp211_);
				_tmp213_ = _tmp212_;
				_tmp214_ = vala_property_accessor_get_value_type (_tmp213_);
				_tmp215_ = _tmp214_;
				if (vala_ccode_base_module_requires_destroy (_tmp215_)) {
					ValaCCodeFunction* _tmp216_;
					ValaCCodeFunction* _tmp217_;
					ValaProperty* _tmp218_;
					ValaPropertyAccessor* _tmp219_;
					ValaPropertyAccessor* _tmp220_;
					ValaDataType* _tmp221_;
					ValaDataType* _tmp222_;
					ValaCCodeIdentifier* _tmp223_;
					ValaCCodeIdentifier* _tmp224_;
					ValaGLibValue* _tmp225_;
					ValaGLibValue* _tmp226_;
					ValaCCodeExpression* _tmp227_;
					ValaCCodeExpression* _tmp228_;
					_tmp216_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp217_ = _tmp216_;
					_tmp218_ = prop;
					_tmp219_ = vala_property_get_get_accessor (_tmp218_);
					_tmp220_ = _tmp219_;
					_tmp221_ = vala_property_accessor_get_value_type (_tmp220_);
					_tmp222_ = _tmp221_;
					_tmp223_ = vala_ccode_identifier_new ("boxed");
					_tmp224_ = _tmp223_;
					_tmp225_ = vala_glib_value_new (_tmp222_, (ValaCCodeExpression*) _tmp224_, TRUE);
					_tmp226_ = _tmp225_;
					_tmp227_ = vala_ccode_base_module_destroy_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp226_, FALSE);
					_tmp228_ = _tmp227_;
					vala_ccode_function_add_expression (_tmp217_, _tmp228_);
					_vala_ccode_node_unref0 (_tmp228_);
					_vala_target_value_unref0 (_tmp226_);
					_vala_ccode_node_unref0 (_tmp224_);
				}
				_tmp229_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp230_ = _tmp229_;
				vala_ccode_function_close (_tmp230_);
				_vala_ccode_node_unref0 (csetcall);
			} else {
				ValaCCodeExpression* _tmp231_;
				ValaCCodeFunctionCall* _tmp232_;
				ValaCCodeFunctionCall* _tmp233_;
				ValaCCodeExpression* _tmp234_;
				ValaArrayType* array_type = NULL;
				ValaProperty* _tmp235_;
				ValaDataType* _tmp236_;
				ValaDataType* _tmp237_;
				ValaArrayType* _tmp238_;
				gboolean _tmp239_ = FALSE;
				gboolean _tmp240_ = FALSE;
				ValaArrayType* _tmp241_;
				ValaCCodeFunctionCall* csetcall = NULL;
				ValaCCodeFunctionCall* _tmp262_;
				ValaProperty* _tmp263_;
				ValaPropertyAccessor* _tmp264_;
				ValaPropertyAccessor* _tmp265_;
				ValaDataType* _tmp266_;
				ValaDataType* _tmp267_;
				gboolean _tmp268_;
				gboolean _tmp269_;
				ValaCCodeFunctionCall* _tmp282_;
				ValaCCodeIdentifier* _tmp283_;
				ValaCCodeIdentifier* _tmp284_;
				ValaCCodeFunctionCall* _tmp285_;
				ValaCCodeFunctionCall* _tmp286_;
				ValaProperty* _tmp287_;
				ValaCCodeFunctionCall* _tmp288_;
				gboolean _tmp289_ = FALSE;
				gboolean _tmp290_ = FALSE;
				ValaArrayType* _tmp291_;
				_tmp231_ = cfunc;
				_tmp232_ = vala_ccode_function_call_new (_tmp231_);
				_vala_ccode_node_unref0 (ccall);
				ccall = _tmp232_;
				_tmp233_ = ccall;
				_tmp234_ = cself;
				vala_ccode_function_call_add_argument (_tmp233_, _tmp234_);
				_tmp235_ = prop;
				_tmp236_ = vala_property_get_property_type (_tmp235_);
				_tmp237_ = _tmp236_;
				_tmp238_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp237_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp237_) : NULL);
				array_type = _tmp238_;
				_tmp241_ = array_type;
				if (_tmp241_ != NULL) {
					ValaProperty* _tmp242_;
					_tmp242_ = prop;
					_tmp240_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp242_);
				} else {
					_tmp240_ = FALSE;
				}
				if (_tmp240_) {
					ValaArrayType* _tmp243_;
					ValaDataType* _tmp244_;
					ValaDataType* _tmp245_;
					ValaTypeSymbol* _tmp246_;
					ValaTypeSymbol* _tmp247_;
					ValaDataType* _tmp248_;
					ValaTypeSymbol* _tmp249_;
					ValaTypeSymbol* _tmp250_;
					_tmp243_ = array_type;
					_tmp244_ = vala_array_type_get_element_type (_tmp243_);
					_tmp245_ = _tmp244_;
					_tmp246_ = vala_data_type_get_type_symbol (_tmp245_);
					_tmp247_ = _tmp246_;
					_tmp248_ = ((ValaCCodeBaseModule*) self)->string_type;
					_tmp249_ = vala_data_type_get_type_symbol (_tmp248_);
					_tmp250_ = _tmp249_;
					_tmp239_ = _tmp247_ == _tmp250_;
				} else {
					_tmp239_ = FALSE;
				}
				if (_tmp239_) {
					ValaCCodeFunction* _tmp251_;
					ValaCCodeFunction* _tmp252_;
					ValaCCodeFunction* _tmp253_;
					ValaCCodeFunction* _tmp254_;
					ValaCCodeVariableDeclarator* _tmp255_;
					ValaCCodeVariableDeclarator* _tmp256_;
					ValaCCodeFunctionCall* _tmp257_;
					ValaCCodeIdentifier* _tmp258_;
					ValaCCodeIdentifier* _tmp259_;
					ValaCCodeUnaryExpression* _tmp260_;
					ValaCCodeUnaryExpression* _tmp261_;
					_tmp251_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp252_ = _tmp251_;
					vala_ccode_function_open_block (_tmp252_);
					_tmp253_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp254_ = _tmp253_;
					_tmp255_ = vala_ccode_variable_declarator_new ("length", NULL, NULL);
					_tmp256_ = _tmp255_;
					vala_ccode_function_add_declaration (_tmp254_, "int", (ValaCCodeDeclarator*) _tmp256_, 0);
					_vala_ccode_node_unref0 (_tmp256_);
					_tmp257_ = ccall;
					_tmp258_ = vala_ccode_identifier_new ("length");
					_tmp259_ = _tmp258_;
					_tmp260_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp259_);
					_tmp261_ = _tmp260_;
					vala_ccode_function_call_add_argument (_tmp257_, (ValaCCodeExpression*) _tmp261_);
					_vala_ccode_node_unref0 (_tmp261_);
					_vala_ccode_node_unref0 (_tmp259_);
				}
				_tmp262_ = vala_ccode_function_call_new (NULL);
				csetcall = _tmp262_;
				_tmp263_ = prop;
				_tmp264_ = vala_property_get_get_accessor (_tmp263_);
				_tmp265_ = _tmp264_;
				_tmp266_ = vala_property_accessor_get_value_type (_tmp265_);
				_tmp267_ = _tmp266_;
				_tmp268_ = vala_data_type_get_value_owned (_tmp267_);
				_tmp269_ = _tmp268_;
				if (_tmp269_) {
					ValaCCodeFunctionCall* _tmp270_;
					ValaProperty* _tmp271_;
					ValaDataType* _tmp272_;
					ValaDataType* _tmp273_;
					ValaCCodeExpression* _tmp274_;
					ValaCCodeExpression* _tmp275_;
					_tmp270_ = csetcall;
					_tmp271_ = prop;
					_tmp272_ = vala_property_get_property_type (_tmp271_);
					_tmp273_ = _tmp272_;
					_tmp274_ = vala_ccode_base_module_get_value_taker_function ((ValaCCodeBaseModule*) self, _tmp273_);
					_tmp275_ = _tmp274_;
					vala_ccode_function_call_set_call (_tmp270_, _tmp275_);
					_vala_ccode_node_unref0 (_tmp275_);
				} else {
					ValaCCodeFunctionCall* _tmp276_;
					ValaProperty* _tmp277_;
					ValaDataType* _tmp278_;
					ValaDataType* _tmp279_;
					ValaCCodeExpression* _tmp280_;
					ValaCCodeExpression* _tmp281_;
					_tmp276_ = csetcall;
					_tmp277_ = prop;
					_tmp278_ = vala_property_get_property_type (_tmp277_);
					_tmp279_ = _tmp278_;
					_tmp280_ = vala_ccode_base_module_get_value_setter_function ((ValaCCodeBaseModule*) self, _tmp279_);
					_tmp281_ = _tmp280_;
					vala_ccode_function_call_set_call (_tmp276_, _tmp281_);
					_vala_ccode_node_unref0 (_tmp281_);
				}
				_tmp282_ = csetcall;
				_tmp283_ = vala_ccode_identifier_new ("value");
				_tmp284_ = _tmp283_;
				vala_ccode_function_call_add_argument (_tmp282_, (ValaCCodeExpression*) _tmp284_);
				_vala_ccode_node_unref0 (_tmp284_);
				_tmp285_ = csetcall;
				_tmp286_ = ccall;
				vala_ccode_function_call_add_argument (_tmp285_, (ValaCCodeExpression*) _tmp286_);
				_tmp287_ = prop;
				_tmp288_ = csetcall;
				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp287_, (ValaCCodeExpression*) _tmp288_);
				_tmp291_ = array_type;
				if (_tmp291_ != NULL) {
					ValaProperty* _tmp292_;
					_tmp292_ = prop;
					_tmp290_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp292_);
				} else {
					_tmp290_ = FALSE;
				}
				if (_tmp290_) {
					ValaArrayType* _tmp293_;
					ValaDataType* _tmp294_;
					ValaDataType* _tmp295_;
					ValaTypeSymbol* _tmp296_;
					ValaTypeSymbol* _tmp297_;
					ValaDataType* _tmp298_;
					ValaTypeSymbol* _tmp299_;
					ValaTypeSymbol* _tmp300_;
					_tmp293_ = array_type;
					_tmp294_ = vala_array_type_get_element_type (_tmp293_);
					_tmp295_ = _tmp294_;
					_tmp296_ = vala_data_type_get_type_symbol (_tmp295_);
					_tmp297_ = _tmp296_;
					_tmp298_ = ((ValaCCodeBaseModule*) self)->string_type;
					_tmp299_ = vala_data_type_get_type_symbol (_tmp298_);
					_tmp300_ = _tmp299_;
					_tmp289_ = _tmp297_ == _tmp300_;
				} else {
					_tmp289_ = FALSE;
				}
				if (_tmp289_) {
					ValaCCodeFunction* _tmp301_;
					ValaCCodeFunction* _tmp302_;
					_tmp301_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp302_ = _tmp301_;
					vala_ccode_function_close (_tmp302_);
				}
				_vala_ccode_node_unref0 (csetcall);
				_vala_code_node_unref0 (array_type);
			}
			_tmp303_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp304_ = _tmp303_;
			vala_ccode_function_add_break (_tmp304_);
			_vala_ccode_node_unref0 (cfunc);
			_vala_ccode_node_unref0 (cself);
			_vala_code_node_unref0 (base_prop);
			_vala_code_node_unref0 (prop);
		}
	}
	{
		ValaList* _type_param_list = NULL;
		ValaList* _tmp305_;
		gint _type_param_size = 0;
		ValaList* _tmp306_;
		gint _tmp307_;
		gint _tmp308_;
		gint _type_param_index = 0;
		_tmp305_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
		_type_param_list = _tmp305_;
		_tmp306_ = _type_param_list;
		_tmp307_ = vala_collection_get_size ((ValaCollection*) _tmp306_);
		_tmp308_ = _tmp307_;
		_type_param_size = _tmp308_;
		_type_param_index = -1;
		while (TRUE) {
			gint _tmp309_;
			gint _tmp310_;
			ValaTypeParameter* type_param = NULL;
			ValaList* _tmp311_;
			gpointer _tmp312_;
			gchar* func_name = NULL;
			gchar* enum_value = NULL;
			ValaCCodeMemberAccess* cfield = NULL;
			ValaCCodeFunctionCall* csetcall = NULL;
			ValaTypeParameter* _tmp313_;
			gchar* _tmp314_;
			gchar* _tmp315_;
			gchar* _tmp316_;
			const gchar* _tmp317_;
			gchar* _tmp318_;
			gchar* _tmp319_;
			gchar* _tmp320_;
			ValaCCodeFunction* _tmp321_;
			ValaCCodeFunction* _tmp322_;
			const gchar* _tmp323_;
			ValaCCodeIdentifier* _tmp324_;
			ValaCCodeIdentifier* _tmp325_;
			ValaCCodeIdentifier* _tmp326_;
			ValaCCodeIdentifier* _tmp327_;
			ValaCCodeMemberAccess* _tmp328_;
			ValaCCodeMemberAccess* _tmp329_;
			const gchar* _tmp330_;
			ValaCCodeMemberAccess* _tmp331_;
			ValaCCodeIdentifier* _tmp332_;
			ValaCCodeIdentifier* _tmp333_;
			ValaCCodeFunctionCall* _tmp334_;
			ValaCCodeFunctionCall* _tmp335_;
			ValaCCodeIdentifier* _tmp336_;
			ValaCCodeIdentifier* _tmp337_;
			ValaCCodeFunctionCall* _tmp338_;
			ValaCCodeMemberAccess* _tmp339_;
			ValaCCodeFunction* _tmp340_;
			ValaCCodeFunction* _tmp341_;
			ValaCCodeFunctionCall* _tmp342_;
			ValaCCodeFunction* _tmp343_;
			ValaCCodeFunction* _tmp344_;
			ValaTypeParameter* _tmp345_;
			gchar* _tmp346_;
			gchar* _tmp347_;
			gchar* _tmp348_;
			const gchar* _tmp349_;
			gchar* _tmp350_;
			gchar* _tmp351_;
			gchar* _tmp352_;
			ValaCCodeFunction* _tmp353_;
			ValaCCodeFunction* _tmp354_;
			const gchar* _tmp355_;
			ValaCCodeIdentifier* _tmp356_;
			ValaCCodeIdentifier* _tmp357_;
			ValaCCodeIdentifier* _tmp358_;
			ValaCCodeIdentifier* _tmp359_;
			ValaCCodeMemberAccess* _tmp360_;
			ValaCCodeMemberAccess* _tmp361_;
			const gchar* _tmp362_;
			ValaCCodeMemberAccess* _tmp363_;
			ValaCCodeIdentifier* _tmp364_;
			ValaCCodeIdentifier* _tmp365_;
			ValaCCodeFunctionCall* _tmp366_;
			ValaCCodeFunctionCall* _tmp367_;
			ValaCCodeIdentifier* _tmp368_;
			ValaCCodeIdentifier* _tmp369_;
			ValaCCodeFunctionCall* _tmp370_;
			ValaCCodeMemberAccess* _tmp371_;
			ValaCCodeFunction* _tmp372_;
			ValaCCodeFunction* _tmp373_;
			ValaCCodeFunctionCall* _tmp374_;
			ValaCCodeFunction* _tmp375_;
			ValaCCodeFunction* _tmp376_;
			ValaTypeParameter* _tmp377_;
			gchar* _tmp378_;
			gchar* _tmp379_;
			gchar* _tmp380_;
			const gchar* _tmp381_;
			gchar* _tmp382_;
			gchar* _tmp383_;
			gchar* _tmp384_;
			ValaCCodeFunction* _tmp385_;
			ValaCCodeFunction* _tmp386_;
			const gchar* _tmp387_;
			ValaCCodeIdentifier* _tmp388_;
			ValaCCodeIdentifier* _tmp389_;
			ValaCCodeIdentifier* _tmp390_;
			ValaCCodeIdentifier* _tmp391_;
			ValaCCodeMemberAccess* _tmp392_;
			ValaCCodeMemberAccess* _tmp393_;
			const gchar* _tmp394_;
			ValaCCodeMemberAccess* _tmp395_;
			ValaCCodeIdentifier* _tmp396_;
			ValaCCodeIdentifier* _tmp397_;
			ValaCCodeFunctionCall* _tmp398_;
			ValaCCodeFunctionCall* _tmp399_;
			ValaCCodeIdentifier* _tmp400_;
			ValaCCodeIdentifier* _tmp401_;
			ValaCCodeFunctionCall* _tmp402_;
			ValaCCodeMemberAccess* _tmp403_;
			ValaCCodeFunction* _tmp404_;
			ValaCCodeFunction* _tmp405_;
			ValaCCodeFunctionCall* _tmp406_;
			ValaCCodeFunction* _tmp407_;
			ValaCCodeFunction* _tmp408_;
			_type_param_index = _type_param_index + 1;
			_tmp309_ = _type_param_index;
			_tmp310_ = _type_param_size;
			if (!(_tmp309_ < _tmp310_)) {
				break;
			}
			_tmp311_ = _type_param_list;
			_tmp312_ = vala_list_get (_tmp311_, _type_param_index);
			type_param = (ValaTypeParameter*) _tmp312_;
			_tmp313_ = type_param;
			_tmp314_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp313_);
			_g_free0 (func_name);
			func_name = _tmp314_;
			_tmp315_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp316_ = _tmp315_;
			_tmp317_ = func_name;
			_tmp318_ = g_strdup_printf ("%s_%s", _tmp316_, _tmp317_);
			_tmp319_ = _tmp318_;
			_tmp320_ = g_ascii_strup (_tmp319_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp320_;
			_g_free0 (_tmp319_);
			_g_free0 (_tmp316_);
			_tmp321_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp322_ = _tmp321_;
			_tmp323_ = enum_value;
			_tmp324_ = vala_ccode_identifier_new (_tmp323_);
			_tmp325_ = _tmp324_;
			vala_ccode_function_add_case (_tmp322_, (ValaCCodeExpression*) _tmp325_);
			_vala_ccode_node_unref0 (_tmp325_);
			_tmp326_ = vala_ccode_identifier_new ("self");
			_tmp327_ = _tmp326_;
			_tmp328_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp327_, "priv");
			_tmp329_ = _tmp328_;
			_tmp330_ = func_name;
			_tmp331_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp329_, _tmp330_);
			_vala_ccode_node_unref0 (cfield);
			cfield = _tmp331_;
			_vala_ccode_node_unref0 (_tmp329_);
			_vala_ccode_node_unref0 (_tmp327_);
			_tmp332_ = vala_ccode_identifier_new ("g_value_set_gtype");
			_tmp333_ = _tmp332_;
			_tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_);
			_vala_ccode_node_unref0 (csetcall);
			csetcall = _tmp334_;
			_vala_ccode_node_unref0 (_tmp333_);
			_tmp335_ = csetcall;
			_tmp336_ = vala_ccode_identifier_new ("value");
			_tmp337_ = _tmp336_;
			vala_ccode_function_call_add_argument (_tmp335_, (ValaCCodeExpression*) _tmp337_);
			_vala_ccode_node_unref0 (_tmp337_);
			_tmp338_ = csetcall;
			_tmp339_ = cfield;
			vala_ccode_function_call_add_argument (_tmp338_, (ValaCCodeExpression*) _tmp339_);
			_tmp340_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp341_ = _tmp340_;
			_tmp342_ = csetcall;
			vala_ccode_function_add_expression (_tmp341_, (ValaCCodeExpression*) _tmp342_);
			_tmp343_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp344_ = _tmp343_;
			vala_ccode_function_add_break (_tmp344_);
			_tmp345_ = type_param;
			_tmp346_ = vala_get_ccode_copy_function ((ValaTypeSymbol*) _tmp345_);
			_g_free0 (func_name);
			func_name = _tmp346_;
			_tmp347_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp348_ = _tmp347_;
			_tmp349_ = func_name;
			_tmp350_ = g_strdup_printf ("%s_%s", _tmp348_, _tmp349_);
			_tmp351_ = _tmp350_;
			_tmp352_ = g_ascii_strup (_tmp351_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp352_;
			_g_free0 (_tmp351_);
			_g_free0 (_tmp348_);
			_tmp353_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp354_ = _tmp353_;
			_tmp355_ = enum_value;
			_tmp356_ = vala_ccode_identifier_new (_tmp355_);
			_tmp357_ = _tmp356_;
			vala_ccode_function_add_case (_tmp354_, (ValaCCodeExpression*) _tmp357_);
			_vala_ccode_node_unref0 (_tmp357_);
			_tmp358_ = vala_ccode_identifier_new ("self");
			_tmp359_ = _tmp358_;
			_tmp360_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp359_, "priv");
			_tmp361_ = _tmp360_;
			_tmp362_ = func_name;
			_tmp363_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp361_, _tmp362_);
			_vala_ccode_node_unref0 (cfield);
			cfield = _tmp363_;
			_vala_ccode_node_unref0 (_tmp361_);
			_vala_ccode_node_unref0 (_tmp359_);
			_tmp364_ = vala_ccode_identifier_new ("g_value_set_pointer");
			_tmp365_ = _tmp364_;
			_tmp366_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp365_);
			_vala_ccode_node_unref0 (csetcall);
			csetcall = _tmp366_;
			_vala_ccode_node_unref0 (_tmp365_);
			_tmp367_ = csetcall;
			_tmp368_ = vala_ccode_identifier_new ("value");
			_tmp369_ = _tmp368_;
			vala_ccode_function_call_add_argument (_tmp367_, (ValaCCodeExpression*) _tmp369_);
			_vala_ccode_node_unref0 (_tmp369_);
			_tmp370_ = csetcall;
			_tmp371_ = cfield;
			vala_ccode_function_call_add_argument (_tmp370_, (ValaCCodeExpression*) _tmp371_);
			_tmp372_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp373_ = _tmp372_;
			_tmp374_ = csetcall;
			vala_ccode_function_add_expression (_tmp373_, (ValaCCodeExpression*) _tmp374_);
			_tmp375_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp376_ = _tmp375_;
			vala_ccode_function_add_break (_tmp376_);
			_tmp377_ = type_param;
			_tmp378_ = vala_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp377_);
			_g_free0 (func_name);
			func_name = _tmp378_;
			_tmp379_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp380_ = _tmp379_;
			_tmp381_ = func_name;
			_tmp382_ = g_strdup_printf ("%s_%s", _tmp380_, _tmp381_);
			_tmp383_ = _tmp382_;
			_tmp384_ = g_ascii_strup (_tmp383_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp384_;
			_g_free0 (_tmp383_);
			_g_free0 (_tmp380_);
			_tmp385_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp386_ = _tmp385_;
			_tmp387_ = enum_value;
			_tmp388_ = vala_ccode_identifier_new (_tmp387_);
			_tmp389_ = _tmp388_;
			vala_ccode_function_add_case (_tmp386_, (ValaCCodeExpression*) _tmp389_);
			_vala_ccode_node_unref0 (_tmp389_);
			_tmp390_ = vala_ccode_identifier_new ("self");
			_tmp391_ = _tmp390_;
			_tmp392_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp391_, "priv");
			_tmp393_ = _tmp392_;
			_tmp394_ = func_name;
			_tmp395_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp393_, _tmp394_);
			_vala_ccode_node_unref0 (cfield);
			cfield = _tmp395_;
			_vala_ccode_node_unref0 (_tmp393_);
			_vala_ccode_node_unref0 (_tmp391_);
			_tmp396_ = vala_ccode_identifier_new ("g_value_set_pointer");
			_tmp397_ = _tmp396_;
			_tmp398_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp397_);
			_vala_ccode_node_unref0 (csetcall);
			csetcall = _tmp398_;
			_vala_ccode_node_unref0 (_tmp397_);
			_tmp399_ = csetcall;
			_tmp400_ = vala_ccode_identifier_new ("value");
			_tmp401_ = _tmp400_;
			vala_ccode_function_call_add_argument (_tmp399_, (ValaCCodeExpression*) _tmp401_);
			_vala_ccode_node_unref0 (_tmp401_);
			_tmp402_ = csetcall;
			_tmp403_ = cfield;
			vala_ccode_function_call_add_argument (_tmp402_, (ValaCCodeExpression*) _tmp403_);
			_tmp404_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp405_ = _tmp404_;
			_tmp406_ = csetcall;
			vala_ccode_function_add_expression (_tmp405_, (ValaCCodeExpression*) _tmp406_);
			_tmp407_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp408_ = _tmp407_;
			vala_ccode_function_add_break (_tmp408_);
			_vala_ccode_node_unref0 (csetcall);
			_vala_ccode_node_unref0 (cfield);
			_g_free0 (enum_value);
			_g_free0 (func_name);
			_vala_code_node_unref0 (type_param);
		}
	}
	_tmp409_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp410_ = _tmp409_;
	vala_ccode_function_add_default (_tmp410_);
	vala_gobject_module_emit_invalid_property_id_warn (self);
	_tmp411_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp412_ = _tmp411_;
	vala_ccode_function_add_break (_tmp412_);
	_tmp413_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp414_ = _tmp413_;
	vala_ccode_function_close (_tmp414_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp415_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp416_ = get_prop;
	vala_ccode_file_add_function_declaration (_tmp415_, _tmp416_);
	_tmp417_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp418_ = get_prop;
	vala_ccode_file_add_function (_tmp417_, _tmp418_);
	_vala_iterable_unref0 (props);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (get_prop);
}

static void
vala_gobject_module_add_set_property_function (ValaGObjectModule* self,
                                               ValaClass* cl)
{
	ValaCCodeFunction* set_prop = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValaCCodeFunction* _tmp4_;
	ValaCCodeFunction* _tmp5_;
	ValaCCodeFunction* _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_;
	ValaCCodeFunction* _tmp19_;
	ValaCCodeFunctionCall* ccall = NULL;
	ValaCCodeIdentifier* _tmp20_;
	ValaCCodeIdentifier* _tmp21_;
	ValaCCodeFunctionCall* _tmp22_;
	ValaCCodeFunctionCall* _tmp23_;
	ValaCCodeFunction* _tmp24_;
	ValaCCodeFunction* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	gchar* _tmp28_;
	gchar* _tmp29_;
	ValaCCodeFunctionCall* _tmp30_;
	ValaCCodeVariableDeclarator* _tmp31_;
	ValaCCodeVariableDeclarator* _tmp32_;
	ValaCCodeFunction* _tmp33_;
	ValaCCodeFunction* _tmp34_;
	ValaCCodeIdentifier* _tmp35_;
	ValaCCodeIdentifier* _tmp36_;
	ValaList* props = NULL;
	ValaList* _tmp37_;
	ValaList* _tmp38_;
	ValaCCodeFunction* _tmp344_;
	ValaCCodeFunction* _tmp345_;
	ValaCCodeFunction* _tmp346_;
	ValaCCodeFunction* _tmp347_;
	ValaCCodeFunction* _tmp348_;
	ValaCCodeFunction* _tmp349_;
	ValaCCodeFile* _tmp350_;
	ValaCCodeFunction* _tmp351_;
	ValaCCodeFile* _tmp352_;
	ValaCCodeFunction* _tmp353_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (cl != NULL);
	_tmp0_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strdup_printf ("_vala_%s_set_property", _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_function_new (_tmp3_, "void");
	_tmp5_ = _tmp4_;
	_g_free0 (_tmp3_);
	_g_free0 (_tmp1_);
	set_prop = _tmp5_;
	_tmp6_ = set_prop;
	vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp6_, VALA_CCODE_MODIFIERS_STATIC);
	_tmp7_ = set_prop;
	_tmp8_ = vala_ccode_parameter_new ("object", "GObject *");
	_tmp9_ = _tmp8_;
	vala_ccode_function_add_parameter (_tmp7_, _tmp9_);
	_vala_ccode_node_unref0 (_tmp9_);
	_tmp10_ = set_prop;
	_tmp11_ = vala_ccode_parameter_new ("property_id", "guint");
	_tmp12_ = _tmp11_;
	vala_ccode_function_add_parameter (_tmp10_, _tmp12_);
	_vala_ccode_node_unref0 (_tmp12_);
	_tmp13_ = set_prop;
	_tmp14_ = vala_ccode_parameter_new ("value", "const GValue *");
	_tmp15_ = _tmp14_;
	vala_ccode_function_add_parameter (_tmp13_, _tmp15_);
	_vala_ccode_node_unref0 (_tmp15_);
	_tmp16_ = set_prop;
	_tmp17_ = vala_ccode_parameter_new ("pspec", "GParamSpec *");
	_tmp18_ = _tmp17_;
	vala_ccode_function_add_parameter (_tmp16_, _tmp18_);
	_vala_ccode_node_unref0 (_tmp18_);
	_tmp19_ = set_prop;
	vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp19_);
	_tmp20_ = vala_ccode_identifier_new ("object");
	_tmp21_ = _tmp20_;
	_tmp22_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp21_, (ValaTypeSymbol*) cl);
	_tmp23_ = _tmp22_;
	_vala_ccode_node_unref0 (_tmp21_);
	ccall = _tmp23_;
	_tmp24_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp25_ = _tmp24_;
	_tmp26_ = vala_get_ccode_name ((ValaCodeNode*) cl);
	_tmp27_ = _tmp26_;
	_tmp28_ = g_strdup_printf ("%s *", _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = ccall;
	_tmp31_ = vala_ccode_variable_declarator_new ("self", (ValaCCodeExpression*) _tmp30_, NULL);
	_tmp32_ = _tmp31_;
	vala_ccode_function_add_declaration (_tmp25_, _tmp29_, (ValaCCodeDeclarator*) _tmp32_, 0);
	_vala_ccode_node_unref0 (_tmp32_);
	_g_free0 (_tmp29_);
	_g_free0 (_tmp27_);
	_tmp33_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp34_ = _tmp33_;
	_tmp35_ = vala_ccode_identifier_new ("property_id");
	_tmp36_ = _tmp35_;
	vala_ccode_function_open_switch (_tmp34_, (ValaCCodeExpression*) _tmp36_);
	_vala_ccode_node_unref0 (_tmp36_);
	_tmp37_ = vala_object_type_symbol_get_properties ((ValaObjectTypeSymbol*) cl);
	_tmp38_ = _vala_iterable_ref0 (_tmp37_);
	props = _tmp38_;
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp39_;
		gint _prop_size = 0;
		ValaList* _tmp40_;
		gint _tmp41_;
		gint _tmp42_;
		gint _prop_index = 0;
		_tmp39_ = props;
		_prop_list = _tmp39_;
		_tmp40_ = _prop_list;
		_tmp41_ = vala_collection_get_size ((ValaCollection*) _tmp40_);
		_tmp42_ = _tmp41_;
		_prop_size = _tmp42_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp43_;
			gint _tmp44_;
			ValaProperty* prop = NULL;
			ValaList* _tmp45_;
			gpointer _tmp46_;
			gboolean _tmp47_ = FALSE;
			ValaProperty* _tmp48_;
			ValaPropertyAccessor* _tmp49_;
			ValaPropertyAccessor* _tmp50_;
			ValaCodeContext* _tmp54_;
			ValaCodeContext* _tmp55_;
			ValaSemanticAnalyzer* _tmp56_;
			ValaSemanticAnalyzer* _tmp57_;
			ValaProperty* _tmp58_;
			ValaProperty* base_prop = NULL;
			ValaProperty* _tmp59_;
			ValaProperty* _tmp60_;
			ValaCCodeExpression* cself = NULL;
			ValaCCodeIdentifier* _tmp61_;
			ValaProperty* _tmp62_;
			ValaProperty* _tmp63_;
			ValaProperty* _tmp64_;
			ValaCCodeExpression* cfunc = NULL;
			gboolean _tmp126_ = FALSE;
			ValaProperty* _tmp127_;
			ValaCCodeFunction* _tmp141_;
			ValaCCodeFunction* _tmp142_;
			ValaProperty* _tmp143_;
			gchar* _tmp144_;
			gchar* _tmp145_;
			gchar* _tmp146_;
			gchar* _tmp147_;
			ValaCCodeIdentifier* _tmp148_;
			ValaCCodeIdentifier* _tmp149_;
			ValaCCodeExpression* _tmp150_;
			ValaCCodeFunctionCall* _tmp151_;
			ValaCCodeFunctionCall* _tmp152_;
			ValaCCodeExpression* _tmp153_;
			gboolean _tmp154_ = FALSE;
			ValaProperty* _tmp155_;
			ValaDataType* _tmp156_;
			ValaDataType* _tmp157_;
			ValaCCodeFunction* _tmp241_;
			ValaCCodeFunction* _tmp242_;
			_prop_index = _prop_index + 1;
			_tmp43_ = _prop_index;
			_tmp44_ = _prop_size;
			if (!(_tmp43_ < _tmp44_)) {
				break;
			}
			_tmp45_ = _prop_list;
			_tmp46_ = vala_list_get (_tmp45_, _prop_index);
			prop = (ValaProperty*) _tmp46_;
			_tmp48_ = prop;
			_tmp49_ = vala_property_get_set_accessor (_tmp48_);
			_tmp50_ = _tmp49_;
			if (_tmp50_ == NULL) {
				_tmp47_ = TRUE;
			} else {
				ValaProperty* _tmp51_;
				gboolean _tmp52_;
				gboolean _tmp53_;
				_tmp51_ = prop;
				_tmp52_ = vala_property_get_is_abstract (_tmp51_);
				_tmp53_ = _tmp52_;
				_tmp47_ = _tmp53_;
			}
			if (_tmp47_) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp54_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp55_ = _tmp54_;
			_tmp56_ = vala_code_context_get_analyzer (_tmp55_);
			_tmp57_ = _tmp56_;
			_tmp58_ = prop;
			if (!vala_semantic_analyzer_is_gobject_property (_tmp57_, _tmp58_)) {
				_vala_code_node_unref0 (prop);
				continue;
			}
			_tmp59_ = prop;
			_tmp60_ = _vala_code_node_ref0 (_tmp59_);
			base_prop = _tmp60_;
			_tmp61_ = vala_ccode_identifier_new ("self");
			cself = (ValaCCodeExpression*) _tmp61_;
			_tmp62_ = prop;
			_tmp63_ = vala_property_get_base_property (_tmp62_);
			_tmp64_ = _tmp63_;
			if (_tmp64_ != NULL) {
				ValaClass* base_type = NULL;
				ValaProperty* _tmp65_;
				ValaProperty* _tmp66_;
				ValaProperty* _tmp67_;
				ValaSymbol* _tmp68_;
				ValaSymbol* _tmp69_;
				ValaClass* _tmp70_;
				ValaProperty* _tmp71_;
				ValaProperty* _tmp72_;
				ValaProperty* _tmp73_;
				ValaProperty* _tmp74_;
				ValaObjectType* _tmp75_;
				ValaObjectType* _tmp76_;
				ValaCCodeExpression* _tmp77_;
				ValaGLibValue* _tmp78_;
				ValaGLibValue* _tmp79_;
				ValaClass* _tmp80_;
				ValaObjectType* _tmp81_;
				ValaObjectType* _tmp82_;
				ValaProperty* _tmp83_;
				ValaTargetValue* _tmp84_;
				ValaTargetValue* _tmp85_;
				ValaCCodeExpression* _tmp86_;
				ValaCCodeExpression* _tmp87_;
				ValaProperty* _tmp88_;
				ValaProperty* _tmp89_;
				ValaProperty* _tmp90_;
				ValaPropertyAccessor* _tmp91_;
				ValaPropertyAccessor* _tmp92_;
				ValaCCodeFile* _tmp93_;
				_tmp65_ = prop;
				_tmp66_ = vala_property_get_base_property (_tmp65_);
				_tmp67_ = _tmp66_;
				_tmp68_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp67_);
				_tmp69_ = _tmp68_;
				_tmp70_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp69_, VALA_TYPE_CLASS, ValaClass));
				base_type = _tmp70_;
				_tmp71_ = prop;
				_tmp72_ = vala_property_get_base_property (_tmp71_);
				_tmp73_ = _tmp72_;
				_tmp74_ = _vala_code_node_ref0 (_tmp73_);
				_vala_code_node_unref0 (base_prop);
				base_prop = _tmp74_;
				_tmp75_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl, NULL);
				_tmp76_ = _tmp75_;
				_tmp77_ = cself;
				_tmp78_ = vala_glib_value_new ((ValaDataType*) _tmp76_, _tmp77_, TRUE);
				_tmp79_ = _tmp78_;
				_tmp80_ = base_type;
				_tmp81_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp80_, NULL);
				_tmp82_ = _tmp81_;
				_tmp83_ = prop;
				_tmp84_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp79_, (ValaDataType*) _tmp82_, (ValaCodeNode*) _tmp83_);
				_tmp85_ = _tmp84_;
				_tmp86_ = vala_get_cvalue_ (_tmp85_);
				_tmp87_ = _vala_ccode_node_ref0 (_tmp86_);
				_vala_ccode_node_unref0 (cself);
				cself = _tmp87_;
				_vala_target_value_unref0 (_tmp85_);
				_vala_code_node_unref0 (_tmp82_);
				_vala_target_value_unref0 (_tmp79_);
				_vala_code_node_unref0 (_tmp76_);
				_tmp88_ = prop;
				_tmp89_ = vala_property_get_base_property (_tmp88_);
				_tmp90_ = _tmp89_;
				_tmp91_ = vala_property_get_set_accessor (_tmp90_);
				_tmp92_ = _tmp91_;
				_tmp93_ = ((ValaCCodeBaseModule*) self)->cfile;
				vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp92_, _tmp93_);
				_vala_code_node_unref0 (base_type);
			} else {
				ValaProperty* _tmp94_;
				ValaProperty* _tmp95_;
				ValaProperty* _tmp96_;
				_tmp94_ = prop;
				_tmp95_ = vala_property_get_base_interface_property (_tmp94_);
				_tmp96_ = _tmp95_;
				if (_tmp96_ != NULL) {
					ValaInterface* base_type = NULL;
					ValaProperty* _tmp97_;
					ValaProperty* _tmp98_;
					ValaProperty* _tmp99_;
					ValaSymbol* _tmp100_;
					ValaSymbol* _tmp101_;
					ValaInterface* _tmp102_;
					ValaProperty* _tmp103_;
					ValaProperty* _tmp104_;
					ValaProperty* _tmp105_;
					ValaProperty* _tmp106_;
					ValaObjectType* _tmp107_;
					ValaObjectType* _tmp108_;
					ValaCCodeExpression* _tmp109_;
					ValaGLibValue* _tmp110_;
					ValaGLibValue* _tmp111_;
					ValaInterface* _tmp112_;
					ValaObjectType* _tmp113_;
					ValaObjectType* _tmp114_;
					ValaProperty* _tmp115_;
					ValaTargetValue* _tmp116_;
					ValaTargetValue* _tmp117_;
					ValaCCodeExpression* _tmp118_;
					ValaCCodeExpression* _tmp119_;
					ValaProperty* _tmp120_;
					ValaProperty* _tmp121_;
					ValaProperty* _tmp122_;
					ValaPropertyAccessor* _tmp123_;
					ValaPropertyAccessor* _tmp124_;
					ValaCCodeFile* _tmp125_;
					_tmp97_ = prop;
					_tmp98_ = vala_property_get_base_interface_property (_tmp97_);
					_tmp99_ = _tmp98_;
					_tmp100_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp99_);
					_tmp101_ = _tmp100_;
					_tmp102_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp101_, VALA_TYPE_INTERFACE, ValaInterface));
					base_type = _tmp102_;
					_tmp103_ = prop;
					_tmp104_ = vala_property_get_base_interface_property (_tmp103_);
					_tmp105_ = _tmp104_;
					_tmp106_ = _vala_code_node_ref0 (_tmp105_);
					_vala_code_node_unref0 (base_prop);
					base_prop = _tmp106_;
					_tmp107_ = vala_object_type_new ((ValaObjectTypeSymbol*) cl, NULL);
					_tmp108_ = _tmp107_;
					_tmp109_ = cself;
					_tmp110_ = vala_glib_value_new ((ValaDataType*) _tmp108_, _tmp109_, TRUE);
					_tmp111_ = _tmp110_;
					_tmp112_ = base_type;
					_tmp113_ = vala_object_type_new ((ValaObjectTypeSymbol*) _tmp112_, NULL);
					_tmp114_ = _tmp113_;
					_tmp115_ = prop;
					_tmp116_ = vala_ccode_base_module_transform_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp111_, (ValaDataType*) _tmp114_, (ValaCodeNode*) _tmp115_);
					_tmp117_ = _tmp116_;
					_tmp118_ = vala_get_cvalue_ (_tmp117_);
					_tmp119_ = _vala_ccode_node_ref0 (_tmp118_);
					_vala_ccode_node_unref0 (cself);
					cself = _tmp119_;
					_vala_target_value_unref0 (_tmp117_);
					_vala_code_node_unref0 (_tmp114_);
					_vala_target_value_unref0 (_tmp111_);
					_vala_code_node_unref0 (_tmp108_);
					_tmp120_ = prop;
					_tmp121_ = vala_property_get_base_interface_property (_tmp120_);
					_tmp122_ = _tmp121_;
					_tmp123_ = vala_property_get_set_accessor (_tmp122_);
					_tmp124_ = _tmp123_;
					_tmp125_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp124_, _tmp125_);
					_vala_code_node_unref0 (base_type);
				}
			}
			_tmp127_ = base_prop;
			if (!vala_get_ccode_no_accessor_method (_tmp127_)) {
				ValaProperty* _tmp128_;
				_tmp128_ = base_prop;
				_tmp126_ = !vala_get_ccode_concrete_accessor (_tmp128_);
			} else {
				_tmp126_ = FALSE;
			}
			if (_tmp126_) {
				ValaProperty* _tmp129_;
				ValaPropertyAccessor* _tmp130_;
				ValaPropertyAccessor* _tmp131_;
				gchar* _tmp132_;
				gchar* _tmp133_;
				ValaCCodeIdentifier* _tmp134_;
				_tmp129_ = base_prop;
				_tmp130_ = vala_property_get_set_accessor (_tmp129_);
				_tmp131_ = _tmp130_;
				_tmp132_ = vala_get_ccode_name ((ValaCodeNode*) _tmp131_);
				_tmp133_ = _tmp132_;
				_tmp134_ = vala_ccode_identifier_new (_tmp133_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp134_;
				_g_free0 (_tmp133_);
			} else {
				ValaProperty* _tmp135_;
				ValaPropertyAccessor* _tmp136_;
				ValaPropertyAccessor* _tmp137_;
				gchar* _tmp138_;
				gchar* _tmp139_;
				ValaCCodeIdentifier* _tmp140_;
				_tmp135_ = prop;
				_tmp136_ = vala_property_get_set_accessor (_tmp135_);
				_tmp137_ = _tmp136_;
				_tmp138_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp137_);
				_tmp139_ = _tmp138_;
				_tmp140_ = vala_ccode_identifier_new (_tmp139_);
				_vala_ccode_node_unref0 (cfunc);
				cfunc = (ValaCCodeExpression*) _tmp140_;
				_g_free0 (_tmp139_);
			}
			_tmp141_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp142_ = _tmp141_;
			_tmp143_ = prop;
			_tmp144_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp143_, NULL);
			_tmp145_ = _tmp144_;
			_tmp146_ = g_strdup_printf ("%s_PROPERTY", _tmp145_);
			_tmp147_ = _tmp146_;
			_tmp148_ = vala_ccode_identifier_new (_tmp147_);
			_tmp149_ = _tmp148_;
			vala_ccode_function_add_case (_tmp142_, (ValaCCodeExpression*) _tmp149_);
			_vala_ccode_node_unref0 (_tmp149_);
			_g_free0 (_tmp147_);
			_g_free0 (_tmp145_);
			_tmp150_ = cfunc;
			_tmp151_ = vala_ccode_function_call_new (_tmp150_);
			_vala_ccode_node_unref0 (ccall);
			ccall = _tmp151_;
			_tmp152_ = ccall;
			_tmp153_ = cself;
			vala_ccode_function_call_add_argument (_tmp152_, _tmp153_);
			_tmp155_ = prop;
			_tmp156_ = vala_property_get_property_type (_tmp155_);
			_tmp157_ = _tmp156_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp157_, VALA_TYPE_ARRAY_TYPE)) {
				ValaProperty* _tmp158_;
				ValaDataType* _tmp159_;
				ValaDataType* _tmp160_;
				ValaDataType* _tmp161_;
				ValaDataType* _tmp162_;
				ValaTypeSymbol* _tmp163_;
				ValaTypeSymbol* _tmp164_;
				ValaDataType* _tmp165_;
				ValaTypeSymbol* _tmp166_;
				ValaTypeSymbol* _tmp167_;
				_tmp158_ = prop;
				_tmp159_ = vala_property_get_property_type (_tmp158_);
				_tmp160_ = _tmp159_;
				_tmp161_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp160_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
				_tmp162_ = _tmp161_;
				_tmp163_ = vala_data_type_get_type_symbol (_tmp162_);
				_tmp164_ = _tmp163_;
				_tmp165_ = ((ValaCCodeBaseModule*) self)->string_type;
				_tmp166_ = vala_data_type_get_type_symbol (_tmp165_);
				_tmp167_ = _tmp166_;
				_tmp154_ = _tmp164_ == _tmp167_;
			} else {
				_tmp154_ = FALSE;
			}
			if (_tmp154_) {
				ValaCCodeFunction* _tmp168_;
				ValaCCodeFunction* _tmp169_;
				ValaCCodeFunction* _tmp170_;
				ValaCCodeFunction* _tmp171_;
				ValaCCodeVariableDeclarator* _tmp172_;
				ValaCCodeVariableDeclarator* _tmp173_;
				ValaCCodeFunctionCall* cgetcall = NULL;
				ValaCCodeIdentifier* _tmp174_;
				ValaCCodeIdentifier* _tmp175_;
				ValaCCodeFunctionCall* _tmp176_;
				ValaCCodeFunctionCall* _tmp177_;
				ValaCCodeFunctionCall* _tmp178_;
				ValaCCodeIdentifier* _tmp179_;
				ValaCCodeIdentifier* _tmp180_;
				ValaCCodeFunction* _tmp181_;
				ValaCCodeFunction* _tmp182_;
				ValaCCodeIdentifier* _tmp183_;
				ValaCCodeIdentifier* _tmp184_;
				ValaCCodeFunctionCall* _tmp185_;
				ValaCCodeFunctionCall* _tmp186_;
				ValaCCodeIdentifier* _tmp187_;
				ValaCCodeIdentifier* _tmp188_;
				ValaProperty* _tmp189_;
				ValaProperty* _tmp211_;
				ValaCCodeFunctionCall* _tmp212_;
				ValaCCodeFunction* _tmp213_;
				ValaCCodeFunction* _tmp214_;
				_tmp168_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp169_ = _tmp168_;
				vala_ccode_function_open_block (_tmp169_);
				_tmp170_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp171_ = _tmp170_;
				_tmp172_ = vala_ccode_variable_declarator_new ("boxed", NULL, NULL);
				_tmp173_ = _tmp172_;
				vala_ccode_function_add_declaration (_tmp171_, "gpointer", (ValaCCodeDeclarator*) _tmp173_, 0);
				_vala_ccode_node_unref0 (_tmp173_);
				_tmp174_ = vala_ccode_identifier_new ("g_value_get_boxed");
				_tmp175_ = _tmp174_;
				_tmp176_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp175_);
				_tmp177_ = _tmp176_;
				_vala_ccode_node_unref0 (_tmp175_);
				cgetcall = _tmp177_;
				_tmp178_ = cgetcall;
				_tmp179_ = vala_ccode_identifier_new ("value");
				_tmp180_ = _tmp179_;
				vala_ccode_function_call_add_argument (_tmp178_, (ValaCCodeExpression*) _tmp180_);
				_vala_ccode_node_unref0 (_tmp180_);
				_tmp181_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp182_ = _tmp181_;
				_tmp183_ = vala_ccode_identifier_new ("boxed");
				_tmp184_ = _tmp183_;
				_tmp185_ = cgetcall;
				vala_ccode_function_add_assignment (_tmp182_, (ValaCCodeExpression*) _tmp184_, (ValaCCodeExpression*) _tmp185_);
				_vala_ccode_node_unref0 (_tmp184_);
				_tmp186_ = ccall;
				_tmp187_ = vala_ccode_identifier_new ("boxed");
				_tmp188_ = _tmp187_;
				vala_ccode_function_call_add_argument (_tmp186_, (ValaCCodeExpression*) _tmp188_);
				_vala_ccode_node_unref0 (_tmp188_);
				_tmp189_ = prop;
				if (vala_get_ccode_array_length ((ValaCodeNode*) _tmp189_)) {
					ValaCCodeBinaryExpression* cisnull = NULL;
					ValaCCodeIdentifier* _tmp190_;
					ValaCCodeIdentifier* _tmp191_;
					ValaCCodeConstant* _tmp192_;
					ValaCCodeConstant* _tmp193_;
					ValaCCodeBinaryExpression* _tmp194_;
					ValaCCodeBinaryExpression* _tmp195_;
					ValaCCodeFunctionCall* cstrvlen = NULL;
					ValaCCodeIdentifier* _tmp196_;
					ValaCCodeIdentifier* _tmp197_;
					ValaCCodeFunctionCall* _tmp198_;
					ValaCCodeFunctionCall* _tmp199_;
					ValaCCodeFunctionCall* _tmp200_;
					ValaCCodeIdentifier* _tmp201_;
					ValaCCodeIdentifier* _tmp202_;
					ValaCCodeConditionalExpression* ccond = NULL;
					ValaCCodeBinaryExpression* _tmp203_;
					ValaCCodeConstant* _tmp204_;
					ValaCCodeConstant* _tmp205_;
					ValaCCodeFunctionCall* _tmp206_;
					ValaCCodeConditionalExpression* _tmp207_;
					ValaCCodeConditionalExpression* _tmp208_;
					ValaCCodeFunctionCall* _tmp209_;
					ValaCCodeConditionalExpression* _tmp210_;
					_tmp190_ = vala_ccode_identifier_new ("boxed");
					_tmp191_ = _tmp190_;
					_tmp192_ = vala_ccode_constant_new ("NULL");
					_tmp193_ = _tmp192_;
					_tmp194_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_EQUALITY, (ValaCCodeExpression*) _tmp191_, (ValaCCodeExpression*) _tmp193_);
					_tmp195_ = _tmp194_;
					_vala_ccode_node_unref0 (_tmp193_);
					_vala_ccode_node_unref0 (_tmp191_);
					cisnull = _tmp195_;
					_tmp196_ = vala_ccode_identifier_new ("g_strv_length");
					_tmp197_ = _tmp196_;
					_tmp198_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp197_);
					_tmp199_ = _tmp198_;
					_vala_ccode_node_unref0 (_tmp197_);
					cstrvlen = _tmp199_;
					_tmp200_ = cstrvlen;
					_tmp201_ = vala_ccode_identifier_new ("boxed");
					_tmp202_ = _tmp201_;
					vala_ccode_function_call_add_argument (_tmp200_, (ValaCCodeExpression*) _tmp202_);
					_vala_ccode_node_unref0 (_tmp202_);
					_tmp203_ = cisnull;
					_tmp204_ = vala_ccode_constant_new ("0");
					_tmp205_ = _tmp204_;
					_tmp206_ = cstrvlen;
					_tmp207_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp203_, (ValaCCodeExpression*) _tmp205_, (ValaCCodeExpression*) _tmp206_);
					_tmp208_ = _tmp207_;
					_vala_ccode_node_unref0 (_tmp205_);
					ccond = _tmp208_;
					_tmp209_ = ccall;
					_tmp210_ = ccond;
					vala_ccode_function_call_add_argument (_tmp209_, (ValaCCodeExpression*) _tmp210_);
					_vala_ccode_node_unref0 (ccond);
					_vala_ccode_node_unref0 (cstrvlen);
					_vala_ccode_node_unref0 (cisnull);
				}
				_tmp211_ = prop;
				_tmp212_ = ccall;
				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp211_, (ValaCCodeExpression*) _tmp212_);
				_tmp213_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp214_ = _tmp213_;
				vala_ccode_function_close (_tmp214_);
				_vala_ccode_node_unref0 (cgetcall);
			} else {
				ValaCCodeFunctionCall* cgetcall = NULL;
				ValaCCodeFunctionCall* _tmp215_;
				ValaProperty* _tmp216_;
				ValaDataType* _tmp217_;
				ValaDataType* _tmp218_;
				ValaTypeSymbol* _tmp219_;
				ValaTypeSymbol* _tmp220_;
				ValaCCodeFunctionCall* _tmp234_;
				ValaCCodeIdentifier* _tmp235_;
				ValaCCodeIdentifier* _tmp236_;
				ValaCCodeFunctionCall* _tmp237_;
				ValaCCodeFunctionCall* _tmp238_;
				ValaProperty* _tmp239_;
				ValaCCodeFunctionCall* _tmp240_;
				_tmp215_ = vala_ccode_function_call_new (NULL);
				cgetcall = _tmp215_;
				_tmp216_ = prop;
				_tmp217_ = vala_property_get_property_type (_tmp216_);
				_tmp218_ = _tmp217_;
				_tmp219_ = vala_data_type_get_type_symbol (_tmp218_);
				_tmp220_ = _tmp219_;
				if (_tmp220_ != NULL) {
					ValaCCodeFunctionCall* _tmp221_;
					ValaProperty* _tmp222_;
					ValaDataType* _tmp223_;
					ValaDataType* _tmp224_;
					ValaTypeSymbol* _tmp225_;
					ValaTypeSymbol* _tmp226_;
					gchar* _tmp227_;
					gchar* _tmp228_;
					ValaCCodeIdentifier* _tmp229_;
					ValaCCodeIdentifier* _tmp230_;
					_tmp221_ = cgetcall;
					_tmp222_ = prop;
					_tmp223_ = vala_property_get_property_type (_tmp222_);
					_tmp224_ = _tmp223_;
					_tmp225_ = vala_data_type_get_type_symbol (_tmp224_);
					_tmp226_ = _tmp225_;
					_tmp227_ = vala_get_ccode_get_value_function ((ValaCodeNode*) _tmp226_);
					_tmp228_ = _tmp227_;
					_tmp229_ = vala_ccode_identifier_new (_tmp228_);
					_tmp230_ = _tmp229_;
					vala_ccode_function_call_set_call (_tmp221_, (ValaCCodeExpression*) _tmp230_);
					_vala_ccode_node_unref0 (_tmp230_);
					_g_free0 (_tmp228_);
				} else {
					ValaCCodeFunctionCall* _tmp231_;
					ValaCCodeIdentifier* _tmp232_;
					ValaCCodeIdentifier* _tmp233_;
					_tmp231_ = cgetcall;
					_tmp232_ = vala_ccode_identifier_new ("g_value_get_pointer");
					_tmp233_ = _tmp232_;
					vala_ccode_function_call_set_call (_tmp231_, (ValaCCodeExpression*) _tmp233_);
					_vala_ccode_node_unref0 (_tmp233_);
				}
				_tmp234_ = cgetcall;
				_tmp235_ = vala_ccode_identifier_new ("value");
				_tmp236_ = _tmp235_;
				vala_ccode_function_call_add_argument (_tmp234_, (ValaCCodeExpression*) _tmp236_);
				_vala_ccode_node_unref0 (_tmp236_);
				_tmp237_ = ccall;
				_tmp238_ = cgetcall;
				vala_ccode_function_call_add_argument (_tmp237_, (ValaCCodeExpression*) _tmp238_);
				_tmp239_ = prop;
				_tmp240_ = ccall;
				vala_gobject_module_add_guarded_expression (self, (ValaSymbol*) _tmp239_, (ValaCCodeExpression*) _tmp240_);
				_vala_ccode_node_unref0 (cgetcall);
			}
			_tmp241_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp242_ = _tmp241_;
			vala_ccode_function_add_break (_tmp242_);
			_vala_ccode_node_unref0 (cfunc);
			_vala_ccode_node_unref0 (cself);
			_vala_code_node_unref0 (base_prop);
			_vala_code_node_unref0 (prop);
		}
	}
	{
		ValaList* _type_param_list = NULL;
		ValaList* _tmp243_;
		gint _type_param_size = 0;
		ValaList* _tmp244_;
		gint _tmp245_;
		gint _tmp246_;
		gint _type_param_index = 0;
		_tmp243_ = vala_object_type_symbol_get_type_parameters ((ValaObjectTypeSymbol*) cl);
		_type_param_list = _tmp243_;
		_tmp244_ = _type_param_list;
		_tmp245_ = vala_collection_get_size ((ValaCollection*) _tmp244_);
		_tmp246_ = _tmp245_;
		_type_param_size = _tmp246_;
		_type_param_index = -1;
		while (TRUE) {
			gint _tmp247_;
			gint _tmp248_;
			ValaTypeParameter* type_param = NULL;
			ValaList* _tmp249_;
			gpointer _tmp250_;
			gchar* func_name = NULL;
			gchar* enum_value = NULL;
			ValaCCodeMemberAccess* cfield = NULL;
			ValaCCodeFunctionCall* cgetcall = NULL;
			ValaTypeParameter* _tmp251_;
			gchar* _tmp252_;
			gchar* _tmp253_;
			gchar* _tmp254_;
			const gchar* _tmp255_;
			gchar* _tmp256_;
			gchar* _tmp257_;
			gchar* _tmp258_;
			ValaCCodeFunction* _tmp259_;
			ValaCCodeFunction* _tmp260_;
			const gchar* _tmp261_;
			ValaCCodeIdentifier* _tmp262_;
			ValaCCodeIdentifier* _tmp263_;
			ValaCCodeIdentifier* _tmp264_;
			ValaCCodeIdentifier* _tmp265_;
			ValaCCodeMemberAccess* _tmp266_;
			ValaCCodeMemberAccess* _tmp267_;
			const gchar* _tmp268_;
			ValaCCodeMemberAccess* _tmp269_;
			ValaCCodeIdentifier* _tmp270_;
			ValaCCodeIdentifier* _tmp271_;
			ValaCCodeFunctionCall* _tmp272_;
			ValaCCodeFunctionCall* _tmp273_;
			ValaCCodeIdentifier* _tmp274_;
			ValaCCodeIdentifier* _tmp275_;
			ValaCCodeFunction* _tmp276_;
			ValaCCodeFunction* _tmp277_;
			ValaCCodeMemberAccess* _tmp278_;
			ValaCCodeFunctionCall* _tmp279_;
			ValaCCodeFunction* _tmp280_;
			ValaCCodeFunction* _tmp281_;
			ValaTypeParameter* _tmp282_;
			gchar* _tmp283_;
			gchar* _tmp284_;
			gchar* _tmp285_;
			const gchar* _tmp286_;
			gchar* _tmp287_;
			gchar* _tmp288_;
			gchar* _tmp289_;
			ValaCCodeFunction* _tmp290_;
			ValaCCodeFunction* _tmp291_;
			const gchar* _tmp292_;
			ValaCCodeIdentifier* _tmp293_;
			ValaCCodeIdentifier* _tmp294_;
			ValaCCodeIdentifier* _tmp295_;
			ValaCCodeIdentifier* _tmp296_;
			ValaCCodeMemberAccess* _tmp297_;
			ValaCCodeMemberAccess* _tmp298_;
			const gchar* _tmp299_;
			ValaCCodeMemberAccess* _tmp300_;
			ValaCCodeIdentifier* _tmp301_;
			ValaCCodeIdentifier* _tmp302_;
			ValaCCodeFunctionCall* _tmp303_;
			ValaCCodeFunctionCall* _tmp304_;
			ValaCCodeIdentifier* _tmp305_;
			ValaCCodeIdentifier* _tmp306_;
			ValaCCodeFunction* _tmp307_;
			ValaCCodeFunction* _tmp308_;
			ValaCCodeMemberAccess* _tmp309_;
			ValaCCodeFunctionCall* _tmp310_;
			ValaCCodeFunction* _tmp311_;
			ValaCCodeFunction* _tmp312_;
			ValaTypeParameter* _tmp313_;
			gchar* _tmp314_;
			gchar* _tmp315_;
			gchar* _tmp316_;
			const gchar* _tmp317_;
			gchar* _tmp318_;
			gchar* _tmp319_;
			gchar* _tmp320_;
			ValaCCodeFunction* _tmp321_;
			ValaCCodeFunction* _tmp322_;
			const gchar* _tmp323_;
			ValaCCodeIdentifier* _tmp324_;
			ValaCCodeIdentifier* _tmp325_;
			ValaCCodeIdentifier* _tmp326_;
			ValaCCodeIdentifier* _tmp327_;
			ValaCCodeMemberAccess* _tmp328_;
			ValaCCodeMemberAccess* _tmp329_;
			const gchar* _tmp330_;
			ValaCCodeMemberAccess* _tmp331_;
			ValaCCodeIdentifier* _tmp332_;
			ValaCCodeIdentifier* _tmp333_;
			ValaCCodeFunctionCall* _tmp334_;
			ValaCCodeFunctionCall* _tmp335_;
			ValaCCodeIdentifier* _tmp336_;
			ValaCCodeIdentifier* _tmp337_;
			ValaCCodeFunction* _tmp338_;
			ValaCCodeFunction* _tmp339_;
			ValaCCodeMemberAccess* _tmp340_;
			ValaCCodeFunctionCall* _tmp341_;
			ValaCCodeFunction* _tmp342_;
			ValaCCodeFunction* _tmp343_;
			_type_param_index = _type_param_index + 1;
			_tmp247_ = _type_param_index;
			_tmp248_ = _type_param_size;
			if (!(_tmp247_ < _tmp248_)) {
				break;
			}
			_tmp249_ = _type_param_list;
			_tmp250_ = vala_list_get (_tmp249_, _type_param_index);
			type_param = (ValaTypeParameter*) _tmp250_;
			_tmp251_ = type_param;
			_tmp252_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp251_);
			_g_free0 (func_name);
			func_name = _tmp252_;
			_tmp253_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp254_ = _tmp253_;
			_tmp255_ = func_name;
			_tmp256_ = g_strdup_printf ("%s_%s", _tmp254_, _tmp255_);
			_tmp257_ = _tmp256_;
			_tmp258_ = g_ascii_strup (_tmp257_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp258_;
			_g_free0 (_tmp257_);
			_g_free0 (_tmp254_);
			_tmp259_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp260_ = _tmp259_;
			_tmp261_ = enum_value;
			_tmp262_ = vala_ccode_identifier_new (_tmp261_);
			_tmp263_ = _tmp262_;
			vala_ccode_function_add_case (_tmp260_, (ValaCCodeExpression*) _tmp263_);
			_vala_ccode_node_unref0 (_tmp263_);
			_tmp264_ = vala_ccode_identifier_new ("self");
			_tmp265_ = _tmp264_;
			_tmp266_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp265_, "priv");
			_tmp267_ = _tmp266_;
			_tmp268_ = func_name;
			_tmp269_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp267_, _tmp268_);
			_vala_ccode_node_unref0 (cfield);
			cfield = _tmp269_;
			_vala_ccode_node_unref0 (_tmp267_);
			_vala_ccode_node_unref0 (_tmp265_);
			_tmp270_ = vala_ccode_identifier_new ("g_value_get_gtype");
			_tmp271_ = _tmp270_;
			_tmp272_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp271_);
			_vala_ccode_node_unref0 (cgetcall);
			cgetcall = _tmp272_;
			_vala_ccode_node_unref0 (_tmp271_);
			_tmp273_ = cgetcall;
			_tmp274_ = vala_ccode_identifier_new ("value");
			_tmp275_ = _tmp274_;
			vala_ccode_function_call_add_argument (_tmp273_, (ValaCCodeExpression*) _tmp275_);
			_vala_ccode_node_unref0 (_tmp275_);
			_tmp276_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp277_ = _tmp276_;
			_tmp278_ = cfield;
			_tmp279_ = cgetcall;
			vala_ccode_function_add_assignment (_tmp277_, (ValaCCodeExpression*) _tmp278_, (ValaCCodeExpression*) _tmp279_);
			_tmp280_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp281_ = _tmp280_;
			vala_ccode_function_add_break (_tmp281_);
			_tmp282_ = type_param;
			_tmp283_ = vala_get_ccode_copy_function ((ValaTypeSymbol*) _tmp282_);
			_g_free0 (func_name);
			func_name = _tmp283_;
			_tmp284_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp285_ = _tmp284_;
			_tmp286_ = func_name;
			_tmp287_ = g_strdup_printf ("%s_%s", _tmp285_, _tmp286_);
			_tmp288_ = _tmp287_;
			_tmp289_ = g_ascii_strup (_tmp288_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp289_;
			_g_free0 (_tmp288_);
			_g_free0 (_tmp285_);
			_tmp290_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp291_ = _tmp290_;
			_tmp292_ = enum_value;
			_tmp293_ = vala_ccode_identifier_new (_tmp292_);
			_tmp294_ = _tmp293_;
			vala_ccode_function_add_case (_tmp291_, (ValaCCodeExpression*) _tmp294_);
			_vala_ccode_node_unref0 (_tmp294_);
			_tmp295_ = vala_ccode_identifier_new ("self");
			_tmp296_ = _tmp295_;
			_tmp297_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp296_, "priv");
			_tmp298_ = _tmp297_;
			_tmp299_ = func_name;
			_tmp300_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp298_, _tmp299_);
			_vala_ccode_node_unref0 (cfield);
			cfield = _tmp300_;
			_vala_ccode_node_unref0 (_tmp298_);
			_vala_ccode_node_unref0 (_tmp296_);
			_tmp301_ = vala_ccode_identifier_new ("g_value_get_pointer");
			_tmp302_ = _tmp301_;
			_tmp303_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp302_);
			_vala_ccode_node_unref0 (cgetcall);
			cgetcall = _tmp303_;
			_vala_ccode_node_unref0 (_tmp302_);
			_tmp304_ = cgetcall;
			_tmp305_ = vala_ccode_identifier_new ("value");
			_tmp306_ = _tmp305_;
			vala_ccode_function_call_add_argument (_tmp304_, (ValaCCodeExpression*) _tmp306_);
			_vala_ccode_node_unref0 (_tmp306_);
			_tmp307_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp308_ = _tmp307_;
			_tmp309_ = cfield;
			_tmp310_ = cgetcall;
			vala_ccode_function_add_assignment (_tmp308_, (ValaCCodeExpression*) _tmp309_, (ValaCCodeExpression*) _tmp310_);
			_tmp311_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp312_ = _tmp311_;
			vala_ccode_function_add_break (_tmp312_);
			_tmp313_ = type_param;
			_tmp314_ = vala_get_ccode_destroy_function ((ValaTypeSymbol*) _tmp313_);
			_g_free0 (func_name);
			func_name = _tmp314_;
			_tmp315_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) cl, NULL);
			_tmp316_ = _tmp315_;
			_tmp317_ = func_name;
			_tmp318_ = g_strdup_printf ("%s_%s", _tmp316_, _tmp317_);
			_tmp319_ = _tmp318_;
			_tmp320_ = g_ascii_strup (_tmp319_, (gssize) -1);
			_g_free0 (enum_value);
			enum_value = _tmp320_;
			_g_free0 (_tmp319_);
			_g_free0 (_tmp316_);
			_tmp321_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp322_ = _tmp321_;
			_tmp323_ = enum_value;
			_tmp324_ = vala_ccode_identifier_new (_tmp323_);
			_tmp325_ = _tmp324_;
			vala_ccode_function_add_case (_tmp322_, (ValaCCodeExpression*) _tmp325_);
			_vala_ccode_node_unref0 (_tmp325_);
			_tmp326_ = vala_ccode_identifier_new ("self");
			_tmp327_ = _tmp326_;
			_tmp328_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp327_, "priv");
			_tmp329_ = _tmp328_;
			_tmp330_ = func_name;
			_tmp331_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp329_, _tmp330_);
			_vala_ccode_node_unref0 (cfield);
			cfield = _tmp331_;
			_vala_ccode_node_unref0 (_tmp329_);
			_vala_ccode_node_unref0 (_tmp327_);
			_tmp332_ = vala_ccode_identifier_new ("g_value_get_pointer");
			_tmp333_ = _tmp332_;
			_tmp334_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp333_);
			_vala_ccode_node_unref0 (cgetcall);
			cgetcall = _tmp334_;
			_vala_ccode_node_unref0 (_tmp333_);
			_tmp335_ = cgetcall;
			_tmp336_ = vala_ccode_identifier_new ("value");
			_tmp337_ = _tmp336_;
			vala_ccode_function_call_add_argument (_tmp335_, (ValaCCodeExpression*) _tmp337_);
			_vala_ccode_node_unref0 (_tmp337_);
			_tmp338_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp339_ = _tmp338_;
			_tmp340_ = cfield;
			_tmp341_ = cgetcall;
			vala_ccode_function_add_assignment (_tmp339_, (ValaCCodeExpression*) _tmp340_, (ValaCCodeExpression*) _tmp341_);
			_tmp342_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp343_ = _tmp342_;
			vala_ccode_function_add_break (_tmp343_);
			_vala_ccode_node_unref0 (cgetcall);
			_vala_ccode_node_unref0 (cfield);
			_g_free0 (enum_value);
			_g_free0 (func_name);
			_vala_code_node_unref0 (type_param);
		}
	}
	_tmp344_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp345_ = _tmp344_;
	vala_ccode_function_add_default (_tmp345_);
	vala_gobject_module_emit_invalid_property_id_warn (self);
	_tmp346_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp347_ = _tmp346_;
	vala_ccode_function_add_break (_tmp347_);
	_tmp348_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp349_ = _tmp348_;
	vala_ccode_function_close (_tmp349_);
	vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
	_tmp350_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp351_ = set_prop;
	vala_ccode_file_add_function_declaration (_tmp350_, _tmp351_);
	_tmp352_ = ((ValaCCodeBaseModule*) self)->cfile;
	_tmp353_ = set_prop;
	vala_ccode_file_add_function (_tmp352_, _tmp353_);
	_vala_iterable_unref0 (props);
	_vala_ccode_node_unref0 (ccall);
	_vala_ccode_node_unref0 (set_prop);
}

static void
vala_gobject_module_emit_invalid_property_id_warn (ValaGObjectModule* self)
{
	ValaCCodeFunctionCall* cwarn = NULL;
	ValaCCodeIdentifier* _tmp0_;
	ValaCCodeIdentifier* _tmp1_;
	ValaCCodeFunctionCall* _tmp2_;
	ValaCCodeFunctionCall* _tmp3_;
	ValaCCodeIdentifier* _tmp4_;
	ValaCCodeIdentifier* _tmp5_;
	ValaCCodeIdentifier* _tmp6_;
	ValaCCodeIdentifier* _tmp7_;
	ValaCCodeIdentifier* _tmp8_;
	ValaCCodeIdentifier* _tmp9_;
	ValaCCodeFunction* _tmp10_;
	ValaCCodeFunction* _tmp11_;
	g_return_if_fail (self != NULL);
	_tmp0_ = vala_ccode_identifier_new ("G_OBJECT_WARN_INVALID_PROPERTY_ID");
	_tmp1_ = _tmp0_;
	_tmp2_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp1_);
	_tmp3_ = _tmp2_;
	_vala_ccode_node_unref0 (_tmp1_);
	cwarn = _tmp3_;
	_tmp4_ = vala_ccode_identifier_new ("object");
	_tmp5_ = _tmp4_;
	vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp5_);
	_vala_ccode_node_unref0 (_tmp5_);
	_tmp6_ = vala_ccode_identifier_new ("property_id");
	_tmp7_ = _tmp6_;
	vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp7_);
	_vala_ccode_node_unref0 (_tmp7_);
	_tmp8_ = vala_ccode_identifier_new ("pspec");
	_tmp9_ = _tmp8_;
	vala_ccode_function_call_add_argument (cwarn, (ValaCCodeExpression*) _tmp9_);
	_vala_ccode_node_unref0 (_tmp9_);
	_tmp10_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
	_tmp11_ = _tmp10_;
	vala_ccode_function_add_expression (_tmp11_, (ValaCCodeExpression*) cwarn);
	_vala_ccode_node_unref0 (cwarn);
}

static void
vala_gobject_module_real_visit_constructor (ValaCodeVisitor* base,
                                            ValaConstructor* c)
{
	ValaGObjectModule * self;
	ValaSourceReference* _tmp0_;
	ValaSourceReference* _tmp1_;
	ValaClass* cl = NULL;
	ValaSymbol* _tmp2_;
	ValaSymbol* _tmp3_;
	ValaClass* _tmp4_;
	ValaMemberBinding _tmp5_;
	ValaMemberBinding _tmp6_;
	self = (ValaGObjectModule*) base;
	g_return_if_fail (c != NULL);
	_tmp0_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
	_tmp1_ = _tmp0_;
	vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp1_);
	_tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) c);
	_tmp3_ = _tmp2_;
	_tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_CLASS, ValaClass));
	cl = _tmp4_;
	_tmp5_ = vala_constructor_get_binding (c);
	_tmp6_ = _tmp5_;
	if (_tmp6_ == VALA_MEMBER_BINDING_INSTANCE) {
		ValaClass* _tmp7_;
		ValaTypeSymbol* _tmp8_;
		ValaCCodeBaseModuleEmitContext* _tmp11_;
		ValaCCodeBaseModuleEmitContext* _tmp12_;
		ValaCCodeFunction* function = NULL;
		ValaClass* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
		gchar* _tmp17_;
		ValaCCodeFunction* _tmp18_;
		ValaCCodeFunction* _tmp19_;
		ValaCCodeFunction* _tmp20_;
		ValaCCodeFunction* _tmp21_;
		ValaCCodeParameter* _tmp22_;
		ValaCCodeParameter* _tmp23_;
		ValaCCodeFunction* _tmp24_;
		ValaCCodeParameter* _tmp25_;
		ValaCCodeParameter* _tmp26_;
		ValaCCodeFunction* _tmp27_;
		ValaCCodeParameter* _tmp28_;
		ValaCCodeParameter* _tmp29_;
		ValaCCodeFile* _tmp30_;
		ValaCCodeFunction* _tmp31_;
		ValaCCodeFunction* _tmp32_;
		ValaCCodeFunction* _tmp33_;
		ValaCCodeFunction* _tmp34_;
		ValaCCodeVariableDeclarator* _tmp35_;
		ValaCCodeVariableDeclarator* _tmp36_;
		ValaCCodeFunction* _tmp37_;
		ValaCCodeFunction* _tmp38_;
		ValaCCodeVariableDeclarator* _tmp39_;
		ValaCCodeVariableDeclarator* _tmp40_;
		ValaClass* _tmp41_;
		gboolean _tmp42_;
		gboolean _tmp43_;
		ValaCCodeFunctionCall* ccast = NULL;
		ValaCCodeIdentifier* _tmp202_;
		ValaCCodeIdentifier* _tmp203_;
		ValaCCodeFunctionCall* _tmp204_;
		ValaCCodeFunctionCall* _tmp205_;
		ValaCCodeFunctionCall* _tmp206_;
		ValaClass* _tmp207_;
		gchar* _tmp208_;
		gchar* _tmp209_;
		gchar* _tmp210_;
		gchar* _tmp211_;
		ValaCCodeIdentifier* _tmp212_;
		ValaCCodeIdentifier* _tmp213_;
		ValaCCodeFunction* _tmp214_;
		ValaCCodeFunction* _tmp215_;
		ValaCCodeIdentifier* _tmp216_;
		ValaCCodeIdentifier* _tmp217_;
		ValaCCodeFunctionCall* _tmp218_;
		ValaCCodeFunctionCall* ccall = NULL;
		ValaCCodeIdentifier* _tmp219_;
		ValaCCodeIdentifier* _tmp220_;
		ValaCCodeMemberAccess* _tmp221_;
		ValaCCodeMemberAccess* _tmp222_;
		ValaCCodeFunctionCall* _tmp223_;
		ValaCCodeFunctionCall* _tmp224_;
		ValaCCodeFunctionCall* _tmp225_;
		ValaCCodeIdentifier* _tmp226_;
		ValaCCodeIdentifier* _tmp227_;
		ValaCCodeFunctionCall* _tmp228_;
		ValaCCodeIdentifier* _tmp229_;
		ValaCCodeIdentifier* _tmp230_;
		ValaCCodeFunctionCall* _tmp231_;
		ValaCCodeIdentifier* _tmp232_;
		ValaCCodeIdentifier* _tmp233_;
		ValaCCodeFunction* _tmp234_;
		ValaCCodeFunction* _tmp235_;
		ValaCCodeIdentifier* _tmp236_;
		ValaCCodeIdentifier* _tmp237_;
		ValaCCodeFunctionCall* _tmp238_;
		ValaCCodeIdentifier* _tmp239_;
		ValaCCodeIdentifier* _tmp240_;
		ValaClass* _tmp241_;
		ValaCCodeFunctionCall* _tmp242_;
		ValaCCodeFunction* _tmp243_;
		ValaCCodeFunction* _tmp244_;
		ValaClass* _tmp245_;
		gchar* _tmp246_;
		gchar* _tmp247_;
		gchar* _tmp248_;
		gchar* _tmp249_;
		ValaCCodeVariableDeclarator* _tmp250_;
		ValaCCodeVariableDeclarator* _tmp251_;
		ValaCCodeFunction* _tmp252_;
		ValaCCodeFunction* _tmp253_;
		ValaCCodeIdentifier* _tmp254_;
		ValaCCodeIdentifier* _tmp255_;
		ValaCCodeFunctionCall* _tmp256_;
		ValaBlock* _tmp257_;
		ValaBlock* _tmp258_;
		gboolean _tmp259_;
		gboolean _tmp260_;
		ValaClass* _tmp271_;
		gboolean _tmp272_;
		gboolean _tmp273_;
		ValaCCodeFunction* _tmp327_;
		ValaCCodeFunction* _tmp328_;
		ValaCCodeIdentifier* _tmp329_;
		ValaCCodeIdentifier* _tmp330_;
		ValaCCodeFile* _tmp331_;
		ValaCCodeFunction* _tmp332_;
		_tmp7_ = cl;
		_tmp8_ = ((ValaCCodeBaseModule*) self)->gobject_type;
		if (!vala_typesymbol_is_subtype_of ((ValaTypeSymbol*) _tmp7_, _tmp8_)) {
			ValaSourceReference* _tmp9_;
			ValaSourceReference* _tmp10_;
			_tmp9_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
			_tmp10_ = _tmp9_;
			vala_report_error (_tmp10_, "construct blocks require GLib.Object");
			vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
			_vala_code_node_unref0 (cl);
			return;
		}
		_tmp11_ = vala_ccode_base_module_emit_context_new ((ValaSymbol*) c);
		_tmp12_ = _tmp11_;
		vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp12_);
		_vala_ccode_base_module_emit_context_unref0 (_tmp12_);
		_tmp13_ = cl;
		_tmp14_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = g_strdup_printf ("%sconstructor", _tmp15_);
		_tmp17_ = _tmp16_;
		_tmp18_ = vala_ccode_function_new (_tmp17_, "GObject *");
		_tmp19_ = _tmp18_;
		_g_free0 (_tmp17_);
		_g_free0 (_tmp15_);
		function = _tmp19_;
		_tmp20_ = function;
		vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp20_, VALA_CCODE_MODIFIERS_STATIC);
		_tmp21_ = function;
		_tmp22_ = vala_ccode_parameter_new ("type", "GType");
		_tmp23_ = _tmp22_;
		vala_ccode_function_add_parameter (_tmp21_, _tmp23_);
		_vala_ccode_node_unref0 (_tmp23_);
		_tmp24_ = function;
		_tmp25_ = vala_ccode_parameter_new ("n_construct_properties", "guint");
		_tmp26_ = _tmp25_;
		vala_ccode_function_add_parameter (_tmp24_, _tmp26_);
		_vala_ccode_node_unref0 (_tmp26_);
		_tmp27_ = function;
		_tmp28_ = vala_ccode_parameter_new ("construct_properties", "GObjectConstructParam *");
		_tmp29_ = _tmp28_;
		vala_ccode_function_add_parameter (_tmp27_, _tmp29_);
		_vala_ccode_node_unref0 (_tmp29_);
		_tmp30_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp31_ = function;
		vala_ccode_file_add_function_declaration (_tmp30_, _tmp31_);
		_tmp32_ = function;
		vala_ccode_base_module_push_function ((ValaCCodeBaseModule*) self, _tmp32_);
		_tmp33_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp34_ = _tmp33_;
		_tmp35_ = vala_ccode_variable_declarator_new ("obj", NULL, NULL);
		_tmp36_ = _tmp35_;
		vala_ccode_function_add_declaration (_tmp34_, "GObject *", (ValaCCodeDeclarator*) _tmp36_, 0);
		_vala_ccode_node_unref0 (_tmp36_);
		_tmp37_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp38_ = _tmp37_;
		_tmp39_ = vala_ccode_variable_declarator_new ("parent_class", NULL, NULL);
		_tmp40_ = _tmp39_;
		vala_ccode_function_add_declaration (_tmp38_, "GObjectClass *", (ValaCCodeDeclarator*) _tmp40_, 0);
		_vala_ccode_node_unref0 (_tmp40_);
		_tmp41_ = cl;
		_tmp42_ = vala_class_get_is_singleton (_tmp41_);
		_tmp43_ = _tmp42_;
		if (_tmp43_) {
			gchar* singleton_ref_name = NULL;
			ValaClass* _tmp44_;
			gchar* _tmp45_;
			gchar* _tmp46_;
			gchar* _tmp47_;
			gchar* _tmp48_;
			gchar* singleton_lock_name = NULL;
			ValaClass* _tmp49_;
			gchar* _tmp50_;
			gchar* _tmp51_;
			gchar* _tmp52_;
			gchar* _tmp53_;
			gchar* singleton_once_name = NULL;
			ValaClass* _tmp54_;
			gchar* _tmp55_;
			gchar* _tmp56_;
			gchar* _tmp57_;
			gchar* _tmp58_;
			ValaCCodeDeclaration* singleton_ref = NULL;
			ValaCCodeDeclaration* _tmp59_;
			ValaCCodeDeclaration* _tmp60_;
			const gchar* _tmp61_;
			ValaCCodeConstant* _tmp62_;
			ValaCCodeConstant* _tmp63_;
			ValaCCodeVariableDeclarator* _tmp64_;
			ValaCCodeVariableDeclarator* _tmp65_;
			ValaCCodeDeclaration* _tmp66_;
			ValaCCodeFunction* _tmp67_;
			ValaCCodeFunction* _tmp68_;
			ValaCCodeDeclaration* _tmp69_;
			ValaCCodeDeclaration* mutex_lock = NULL;
			ValaCCodeDeclaration* _tmp70_;
			ValaCCodeDeclaration* _tmp71_;
			const gchar* _tmp72_;
			ValaCCodeVariableDeclarator* _tmp73_;
			ValaCCodeVariableDeclarator* _tmp74_;
			ValaCCodeDeclaration* _tmp75_;
			ValaCCodeFunction* _tmp76_;
			ValaCCodeFunction* _tmp77_;
			ValaCCodeDeclaration* _tmp78_;
			ValaCCodeDeclaration* once_lock = NULL;
			ValaCCodeDeclaration* _tmp79_;
			ValaCCodeDeclaration* _tmp80_;
			const gchar* _tmp81_;
			ValaCCodeConstant* _tmp82_;
			ValaCCodeConstant* _tmp83_;
			ValaCCodeVariableDeclarator* _tmp84_;
			ValaCCodeVariableDeclarator* _tmp85_;
			ValaCodeContext* _tmp86_;
			ValaCodeContext* _tmp87_;
			ValaCCodeFunction* _tmp90_;
			ValaCCodeFunction* _tmp91_;
			ValaCCodeDeclaration* _tmp92_;
			ValaCCodeFunctionCall* once_init = NULL;
			ValaCCodeIdentifier* _tmp93_;
			ValaCCodeIdentifier* _tmp94_;
			ValaCCodeFunctionCall* _tmp95_;
			ValaCCodeFunctionCall* _tmp96_;
			ValaCCodeFunctionCall* _tmp97_;
			const gchar* _tmp98_;
			ValaCCodeIdentifier* _tmp99_;
			ValaCCodeIdentifier* _tmp100_;
			ValaCCodeUnaryExpression* _tmp101_;
			ValaCCodeUnaryExpression* _tmp102_;
			ValaCCodeBlock* once_block = NULL;
			ValaCCodeBlock* _tmp103_;
			ValaCCodeFunctionCall* singleton_mutex_init = NULL;
			ValaCCodeIdentifier* _tmp104_;
			ValaCCodeIdentifier* _tmp105_;
			ValaCCodeFunctionCall* _tmp106_;
			ValaCCodeFunctionCall* _tmp107_;
			ValaCCodeFunctionCall* _tmp108_;
			const gchar* _tmp109_;
			ValaCCodeIdentifier* _tmp110_;
			ValaCCodeIdentifier* _tmp111_;
			ValaCCodeUnaryExpression* _tmp112_;
			ValaCCodeUnaryExpression* _tmp113_;
			ValaCCodeBlock* _tmp114_;
			ValaCCodeFunctionCall* _tmp115_;
			ValaCCodeExpressionStatement* _tmp116_;
			ValaCCodeExpressionStatement* _tmp117_;
			ValaCCodeFunctionCall* once_leave = NULL;
			ValaCCodeIdentifier* _tmp118_;
			ValaCCodeIdentifier* _tmp119_;
			ValaCCodeFunctionCall* _tmp120_;
			ValaCCodeFunctionCall* _tmp121_;
			ValaCCodeFunctionCall* _tmp122_;
			const gchar* _tmp123_;
			ValaCCodeIdentifier* _tmp124_;
			ValaCCodeIdentifier* _tmp125_;
			ValaCCodeUnaryExpression* _tmp126_;
			ValaCCodeUnaryExpression* _tmp127_;
			ValaCCodeFunctionCall* _tmp128_;
			ValaCCodeConstant* _tmp129_;
			ValaCCodeConstant* _tmp130_;
			ValaCCodeBlock* _tmp131_;
			ValaCCodeFunctionCall* _tmp132_;
			ValaCCodeExpressionStatement* _tmp133_;
			ValaCCodeExpressionStatement* _tmp134_;
			ValaCCodeIfStatement* if_once = NULL;
			ValaCCodeFunctionCall* _tmp135_;
			ValaCCodeBlock* _tmp136_;
			ValaCCodeIfStatement* _tmp137_;
			ValaCCodeFunction* _tmp138_;
			ValaCCodeFunction* _tmp139_;
			ValaCCodeIfStatement* _tmp140_;
			ValaCCodeFunctionCall* singleton_mutex_lock = NULL;
			ValaCCodeIdentifier* _tmp141_;
			ValaCCodeIdentifier* _tmp142_;
			ValaCCodeFunctionCall* _tmp143_;
			ValaCCodeFunctionCall* _tmp144_;
			ValaCCodeFunctionCall* _tmp145_;
			const gchar* _tmp146_;
			ValaCCodeIdentifier* _tmp147_;
			ValaCCodeIdentifier* _tmp148_;
			ValaCCodeUnaryExpression* _tmp149_;
			ValaCCodeUnaryExpression* _tmp150_;
			ValaCCodeFunction* _tmp151_;
			ValaCCodeFunction* _tmp152_;
			ValaCCodeFunctionCall* _tmp153_;
			ValaCCodeExpressionStatement* _tmp154_;
			ValaCCodeExpressionStatement* _tmp155_;
			ValaCCodeBinaryExpression* check_existance = NULL;
			const gchar* _tmp156_;
			ValaCCodeIdentifier* _tmp157_;
			ValaCCodeIdentifier* _tmp158_;
			ValaCCodeConstant* _tmp159_;
			ValaCCodeConstant* _tmp160_;
			ValaCCodeBinaryExpression* _tmp161_;
			ValaCCodeBinaryExpression* _tmp162_;
			ValaCCodeBlock* return_singleton = NULL;
			ValaCCodeBlock* _tmp163_;
			ValaCCodeFunctionCall* ref_object = NULL;
			ValaCCodeIdentifier* _tmp164_;
			ValaCCodeIdentifier* _tmp165_;
			ValaCCodeFunctionCall* _tmp166_;
			ValaCCodeFunctionCall* _tmp167_;
			ValaCCodeFunctionCall* _tmp168_;
			const gchar* _tmp169_;
			ValaCCodeIdentifier* _tmp170_;
			ValaCCodeIdentifier* _tmp171_;
			ValaCCodeBlock* _tmp172_;
			ValaCCodeFunctionCall* _tmp173_;
			ValaCCodeExpressionStatement* _tmp174_;
			ValaCCodeExpressionStatement* _tmp175_;
			ValaCCodeFunctionCall* singleton_mutex_unlock = NULL;
			ValaCCodeIdentifier* _tmp176_;
			ValaCCodeIdentifier* _tmp177_;
			ValaCCodeFunctionCall* _tmp178_;
			ValaCCodeFunctionCall* _tmp179_;
			ValaCCodeFunctionCall* _tmp180_;
			const gchar* _tmp181_;
			ValaCCodeIdentifier* _tmp182_;
			ValaCCodeIdentifier* _tmp183_;
			ValaCCodeUnaryExpression* _tmp184_;
			ValaCCodeUnaryExpression* _tmp185_;
			ValaCCodeBlock* _tmp186_;
			ValaCCodeFunctionCall* _tmp187_;
			ValaCCodeExpressionStatement* _tmp188_;
			ValaCCodeExpressionStatement* _tmp189_;
			ValaCCodeBlock* _tmp190_;
			const gchar* _tmp191_;
			ValaCCodeIdentifier* _tmp192_;
			ValaCCodeIdentifier* _tmp193_;
			ValaCCodeReturnStatement* _tmp194_;
			ValaCCodeReturnStatement* _tmp195_;
			ValaCCodeIfStatement* if_singleton_alive = NULL;
			ValaCCodeBinaryExpression* _tmp196_;
			ValaCCodeBlock* _tmp197_;
			ValaCCodeIfStatement* _tmp198_;
			ValaCCodeFunction* _tmp199_;
			ValaCCodeFunction* _tmp200_;
			ValaCCodeIfStatement* _tmp201_;
			_tmp44_ = cl;
			_tmp45_ = vala_get_ccode_name ((ValaCodeNode*) _tmp44_);
			_tmp46_ = _tmp45_;
			_tmp47_ = g_strdup_printf ("%s_singleton__ref", _tmp46_);
			_tmp48_ = _tmp47_;
			_g_free0 (_tmp46_);
			singleton_ref_name = _tmp48_;
			_tmp49_ = cl;
			_tmp50_ = vala_get_ccode_name ((ValaCodeNode*) _tmp49_);
			_tmp51_ = _tmp50_;
			_tmp52_ = g_strdup_printf ("%s_singleton__lock", _tmp51_);
			_tmp53_ = _tmp52_;
			_g_free0 (_tmp51_);
			singleton_lock_name = _tmp53_;
			_tmp54_ = cl;
			_tmp55_ = vala_get_ccode_name ((ValaCodeNode*) _tmp54_);
			_tmp56_ = _tmp55_;
			_tmp57_ = g_strdup_printf ("%s_singleton__once", _tmp56_);
			_tmp58_ = _tmp57_;
			_g_free0 (_tmp56_);
			singleton_once_name = _tmp58_;
			_tmp59_ = vala_ccode_declaration_new ("GObject *");
			singleton_ref = _tmp59_;
			_tmp60_ = singleton_ref;
			_tmp61_ = singleton_ref_name;
			_tmp62_ = vala_ccode_constant_new ("NULL");
			_tmp63_ = _tmp62_;
			_tmp64_ = vala_ccode_variable_declarator_new (_tmp61_, (ValaCCodeExpression*) _tmp63_, NULL);
			_tmp65_ = _tmp64_;
			vala_ccode_declaration_add_declarator (_tmp60_, (ValaCCodeDeclarator*) _tmp65_);
			_vala_ccode_node_unref0 (_tmp65_);
			_vala_ccode_node_unref0 (_tmp63_);
			_tmp66_ = singleton_ref;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp66_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp67_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp68_ = _tmp67_;
			_tmp69_ = singleton_ref;
			vala_ccode_function_add_statement (_tmp68_, (ValaCCodeNode*) _tmp69_);
			_tmp70_ = vala_ccode_declaration_new ("GMutex");
			mutex_lock = _tmp70_;
			_tmp71_ = mutex_lock;
			_tmp72_ = singleton_lock_name;
			_tmp73_ = vala_ccode_variable_declarator_new (_tmp72_, NULL, NULL);
			_tmp74_ = _tmp73_;
			vala_ccode_declaration_add_declarator (_tmp71_, (ValaCCodeDeclarator*) _tmp74_);
			_vala_ccode_node_unref0 (_tmp74_);
			_tmp75_ = mutex_lock;
			vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp75_, VALA_CCODE_MODIFIERS_STATIC);
			_tmp76_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp77_ = _tmp76_;
			_tmp78_ = mutex_lock;
			vala_ccode_function_add_statement (_tmp77_, (ValaCCodeNode*) _tmp78_);
			_tmp79_ = vala_ccode_declaration_new ("gsize");
			once_lock = _tmp79_;
			_tmp80_ = once_lock;
			_tmp81_ = singleton_once_name;
			_tmp82_ = vala_ccode_constant_new ("0");
			_tmp83_ = _tmp82_;
			_tmp84_ = vala_ccode_variable_declarator_new (_tmp81_, (ValaCCodeExpression*) _tmp83_, NULL);
			_tmp85_ = _tmp84_;
			vala_ccode_declaration_add_declarator (_tmp80_, (ValaCCodeDeclarator*) _tmp85_);
			_vala_ccode_node_unref0 (_tmp85_);
			_vala_ccode_node_unref0 (_tmp83_);
			_tmp86_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
			_tmp87_ = _tmp86_;
			if (vala_code_context_require_glib_version (_tmp87_, 2, 68)) {
				ValaCCodeDeclaration* _tmp88_;
				_tmp88_ = once_lock;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp88_, VALA_CCODE_MODIFIERS_STATIC);
			} else {
				ValaCCodeDeclaration* _tmp89_;
				_tmp89_ = once_lock;
				vala_ccode_node_set_modifiers ((ValaCCodeNode*) _tmp89_, VALA_CCODE_MODIFIERS_STATIC | VALA_CCODE_MODIFIERS_VOLATILE);
			}
			_tmp90_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp91_ = _tmp90_;
			_tmp92_ = once_lock;
			vala_ccode_function_add_statement (_tmp91_, (ValaCCodeNode*) _tmp92_);
			_tmp93_ = vala_ccode_identifier_new ("g_once_init_enter");
			_tmp94_ = _tmp93_;
			_tmp95_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp94_);
			_tmp96_ = _tmp95_;
			_vala_ccode_node_unref0 (_tmp94_);
			once_init = _tmp96_;
			_tmp97_ = once_init;
			_tmp98_ = singleton_once_name;
			_tmp99_ = vala_ccode_identifier_new (_tmp98_);
			_tmp100_ = _tmp99_;
			_tmp101_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp100_);
			_tmp102_ = _tmp101_;
			vala_ccode_function_call_add_argument (_tmp97_, (ValaCCodeExpression*) _tmp102_);
			_vala_ccode_node_unref0 (_tmp102_);
			_vala_ccode_node_unref0 (_tmp100_);
			_tmp103_ = vala_ccode_block_new ();
			once_block = _tmp103_;
			_tmp104_ = vala_ccode_identifier_new ("g_mutex_init");
			_tmp105_ = _tmp104_;
			_tmp106_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp105_);
			_tmp107_ = _tmp106_;
			_vala_ccode_node_unref0 (_tmp105_);
			singleton_mutex_init = _tmp107_;
			_tmp108_ = singleton_mutex_init;
			_tmp109_ = singleton_lock_name;
			_tmp110_ = vala_ccode_identifier_new (_tmp109_);
			_tmp111_ = _tmp110_;
			_tmp112_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp111_);
			_tmp113_ = _tmp112_;
			vala_ccode_function_call_add_argument (_tmp108_, (ValaCCodeExpression*) _tmp113_);
			_vala_ccode_node_unref0 (_tmp113_);
			_vala_ccode_node_unref0 (_tmp111_);
			_tmp114_ = once_block;
			_tmp115_ = singleton_mutex_init;
			_tmp116_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp115_);
			_tmp117_ = _tmp116_;
			vala_ccode_block_add_statement (_tmp114_, (ValaCCodeNode*) _tmp117_);
			_vala_ccode_node_unref0 (_tmp117_);
			_tmp118_ = vala_ccode_identifier_new ("g_once_init_leave");
			_tmp119_ = _tmp118_;
			_tmp120_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp119_);
			_tmp121_ = _tmp120_;
			_vala_ccode_node_unref0 (_tmp119_);
			once_leave = _tmp121_;
			_tmp122_ = once_leave;
			_tmp123_ = singleton_once_name;
			_tmp124_ = vala_ccode_identifier_new (_tmp123_);
			_tmp125_ = _tmp124_;
			_tmp126_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp125_);
			_tmp127_ = _tmp126_;
			vala_ccode_function_call_add_argument (_tmp122_, (ValaCCodeExpression*) _tmp127_);
			_vala_ccode_node_unref0 (_tmp127_);
			_vala_ccode_node_unref0 (_tmp125_);
			_tmp128_ = once_leave;
			_tmp129_ = vala_ccode_constant_new ("42");
			_tmp130_ = _tmp129_;
			vala_ccode_function_call_add_argument (_tmp128_, (ValaCCodeExpression*) _tmp130_);
			_vala_ccode_node_unref0 (_tmp130_);
			_tmp131_ = once_block;
			_tmp132_ = once_leave;
			_tmp133_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp132_);
			_tmp134_ = _tmp133_;
			vala_ccode_block_add_statement (_tmp131_, (ValaCCodeNode*) _tmp134_);
			_vala_ccode_node_unref0 (_tmp134_);
			_tmp135_ = once_init;
			_tmp136_ = once_block;
			_tmp137_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp135_, (ValaCCodeStatement*) _tmp136_, NULL);
			if_once = _tmp137_;
			_tmp138_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp139_ = _tmp138_;
			_tmp140_ = if_once;
			vala_ccode_function_add_statement (_tmp139_, (ValaCCodeNode*) _tmp140_);
			_tmp141_ = vala_ccode_identifier_new ("g_mutex_lock");
			_tmp142_ = _tmp141_;
			_tmp143_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp142_);
			_tmp144_ = _tmp143_;
			_vala_ccode_node_unref0 (_tmp142_);
			singleton_mutex_lock = _tmp144_;
			_tmp145_ = singleton_mutex_lock;
			_tmp146_ = singleton_lock_name;
			_tmp147_ = vala_ccode_identifier_new (_tmp146_);
			_tmp148_ = _tmp147_;
			_tmp149_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp148_);
			_tmp150_ = _tmp149_;
			vala_ccode_function_call_add_argument (_tmp145_, (ValaCCodeExpression*) _tmp150_);
			_vala_ccode_node_unref0 (_tmp150_);
			_vala_ccode_node_unref0 (_tmp148_);
			_tmp151_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp152_ = _tmp151_;
			_tmp153_ = singleton_mutex_lock;
			_tmp154_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp153_);
			_tmp155_ = _tmp154_;
			vala_ccode_function_add_statement (_tmp152_, (ValaCCodeNode*) _tmp155_);
			_vala_ccode_node_unref0 (_tmp155_);
			_tmp156_ = singleton_ref_name;
			_tmp157_ = vala_ccode_identifier_new (_tmp156_);
			_tmp158_ = _tmp157_;
			_tmp159_ = vala_ccode_constant_new ("NULL");
			_tmp160_ = _tmp159_;
			_tmp161_ = vala_ccode_binary_expression_new (VALA_CCODE_BINARY_OPERATOR_INEQUALITY, (ValaCCodeExpression*) _tmp158_, (ValaCCodeExpression*) _tmp160_);
			_tmp162_ = _tmp161_;
			_vala_ccode_node_unref0 (_tmp160_);
			_vala_ccode_node_unref0 (_tmp158_);
			check_existance = _tmp162_;
			_tmp163_ = vala_ccode_block_new ();
			return_singleton = _tmp163_;
			_tmp164_ = vala_ccode_identifier_new ("g_object_ref");
			_tmp165_ = _tmp164_;
			_tmp166_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp165_);
			_tmp167_ = _tmp166_;
			_vala_ccode_node_unref0 (_tmp165_);
			ref_object = _tmp167_;
			_tmp168_ = ref_object;
			_tmp169_ = singleton_ref_name;
			_tmp170_ = vala_ccode_identifier_new (_tmp169_);
			_tmp171_ = _tmp170_;
			vala_ccode_function_call_add_argument (_tmp168_, (ValaCCodeExpression*) _tmp171_);
			_vala_ccode_node_unref0 (_tmp171_);
			_tmp172_ = return_singleton;
			_tmp173_ = ref_object;
			_tmp174_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp173_);
			_tmp175_ = _tmp174_;
			vala_ccode_block_add_statement (_tmp172_, (ValaCCodeNode*) _tmp175_);
			_vala_ccode_node_unref0 (_tmp175_);
			_tmp176_ = vala_ccode_identifier_new ("g_mutex_unlock");
			_tmp177_ = _tmp176_;
			_tmp178_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp177_);
			_tmp179_ = _tmp178_;
			_vala_ccode_node_unref0 (_tmp177_);
			singleton_mutex_unlock = _tmp179_;
			_tmp180_ = singleton_mutex_unlock;
			_tmp181_ = singleton_lock_name;
			_tmp182_ = vala_ccode_identifier_new (_tmp181_);
			_tmp183_ = _tmp182_;
			_tmp184_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp183_);
			_tmp185_ = _tmp184_;
			vala_ccode_function_call_add_argument (_tmp180_, (ValaCCodeExpression*) _tmp185_);
			_vala_ccode_node_unref0 (_tmp185_);
			_vala_ccode_node_unref0 (_tmp183_);
			_tmp186_ = return_singleton;
			_tmp187_ = singleton_mutex_unlock;
			_tmp188_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp187_);
			_tmp189_ = _tmp188_;
			vala_ccode_block_add_statement (_tmp186_, (ValaCCodeNode*) _tmp189_);
			_vala_ccode_node_unref0 (_tmp189_);
			_tmp190_ = return_singleton;
			_tmp191_ = singleton_ref_name;
			_tmp192_ = vala_ccode_identifier_new (_tmp191_);
			_tmp193_ = _tmp192_;
			_tmp194_ = vala_ccode_return_statement_new ((ValaCCodeExpression*) _tmp193_);
			_tmp195_ = _tmp194_;
			vala_ccode_block_add_statement (_tmp190_, (ValaCCodeNode*) _tmp195_);
			_vala_ccode_node_unref0 (_tmp195_);
			_vala_ccode_node_unref0 (_tmp193_);
			_tmp196_ = check_existance;
			_tmp197_ = return_singleton;
			_tmp198_ = vala_ccode_if_statement_new ((ValaCCodeExpression*) _tmp196_, (ValaCCodeStatement*) _tmp197_, NULL);
			if_singleton_alive = _tmp198_;
			_tmp199_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp200_ = _tmp199_;
			_tmp201_ = if_singleton_alive;
			vala_ccode_function_add_statement (_tmp200_, (ValaCCodeNode*) _tmp201_);
			_vala_ccode_node_unref0 (if_singleton_alive);
			_vala_ccode_node_unref0 (singleton_mutex_unlock);
			_vala_ccode_node_unref0 (ref_object);
			_vala_ccode_node_unref0 (return_singleton);
			_vala_ccode_node_unref0 (check_existance);
			_vala_ccode_node_unref0 (singleton_mutex_lock);
			_vala_ccode_node_unref0 (if_once);
			_vala_ccode_node_unref0 (once_leave);
			_vala_ccode_node_unref0 (singleton_mutex_init);
			_vala_ccode_node_unref0 (once_block);
			_vala_ccode_node_unref0 (once_init);
			_vala_ccode_node_unref0 (once_lock);
			_vala_ccode_node_unref0 (mutex_lock);
			_vala_ccode_node_unref0 (singleton_ref);
			_g_free0 (singleton_once_name);
			_g_free0 (singleton_lock_name);
			_g_free0 (singleton_ref_name);
		}
		_tmp202_ = vala_ccode_identifier_new ("G_OBJECT_CLASS");
		_tmp203_ = _tmp202_;
		_tmp204_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp203_);
		_tmp205_ = _tmp204_;
		_vala_ccode_node_unref0 (_tmp203_);
		ccast = _tmp205_;
		_tmp206_ = ccast;
		_tmp207_ = cl;
		_tmp208_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp207_, NULL);
		_tmp209_ = _tmp208_;
		_tmp210_ = g_strdup_printf ("%s_parent_class", _tmp209_);
		_tmp211_ = _tmp210_;
		_tmp212_ = vala_ccode_identifier_new (_tmp211_);
		_tmp213_ = _tmp212_;
		vala_ccode_function_call_add_argument (_tmp206_, (ValaCCodeExpression*) _tmp213_);
		_vala_ccode_node_unref0 (_tmp213_);
		_g_free0 (_tmp211_);
		_g_free0 (_tmp209_);
		_tmp214_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp215_ = _tmp214_;
		_tmp216_ = vala_ccode_identifier_new ("parent_class");
		_tmp217_ = _tmp216_;
		_tmp218_ = ccast;
		vala_ccode_function_add_assignment (_tmp215_, (ValaCCodeExpression*) _tmp217_, (ValaCCodeExpression*) _tmp218_);
		_vala_ccode_node_unref0 (_tmp217_);
		_tmp219_ = vala_ccode_identifier_new ("parent_class");
		_tmp220_ = _tmp219_;
		_tmp221_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp220_, "constructor");
		_tmp222_ = _tmp221_;
		_tmp223_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp222_);
		_tmp224_ = _tmp223_;
		_vala_ccode_node_unref0 (_tmp222_);
		_vala_ccode_node_unref0 (_tmp220_);
		ccall = _tmp224_;
		_tmp225_ = ccall;
		_tmp226_ = vala_ccode_identifier_new ("type");
		_tmp227_ = _tmp226_;
		vala_ccode_function_call_add_argument (_tmp225_, (ValaCCodeExpression*) _tmp227_);
		_vala_ccode_node_unref0 (_tmp227_);
		_tmp228_ = ccall;
		_tmp229_ = vala_ccode_identifier_new ("n_construct_properties");
		_tmp230_ = _tmp229_;
		vala_ccode_function_call_add_argument (_tmp228_, (ValaCCodeExpression*) _tmp230_);
		_vala_ccode_node_unref0 (_tmp230_);
		_tmp231_ = ccall;
		_tmp232_ = vala_ccode_identifier_new ("construct_properties");
		_tmp233_ = _tmp232_;
		vala_ccode_function_call_add_argument (_tmp231_, (ValaCCodeExpression*) _tmp233_);
		_vala_ccode_node_unref0 (_tmp233_);
		_tmp234_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp235_ = _tmp234_;
		_tmp236_ = vala_ccode_identifier_new ("obj");
		_tmp237_ = _tmp236_;
		_tmp238_ = ccall;
		vala_ccode_function_add_assignment (_tmp235_, (ValaCCodeExpression*) _tmp237_, (ValaCCodeExpression*) _tmp238_);
		_vala_ccode_node_unref0 (_tmp237_);
		_tmp239_ = vala_ccode_identifier_new ("obj");
		_tmp240_ = _tmp239_;
		_tmp241_ = cl;
		_tmp242_ = vala_ccode_base_module_generate_instance_cast ((ValaCCodeBaseModule*) self, (ValaCCodeExpression*) _tmp240_, (ValaTypeSymbol*) _tmp241_);
		_vala_ccode_node_unref0 (ccall);
		ccall = _tmp242_;
		_vala_ccode_node_unref0 (_tmp240_);
		_tmp243_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp244_ = _tmp243_;
		_tmp245_ = cl;
		_tmp246_ = vala_get_ccode_name ((ValaCodeNode*) _tmp245_);
		_tmp247_ = _tmp246_;
		_tmp248_ = g_strdup_printf ("%s *", _tmp247_);
		_tmp249_ = _tmp248_;
		_tmp250_ = vala_ccode_variable_declarator_new ("self", NULL, NULL);
		_tmp251_ = _tmp250_;
		vala_ccode_function_add_declaration (_tmp244_, _tmp249_, (ValaCCodeDeclarator*) _tmp251_, 0);
		_vala_ccode_node_unref0 (_tmp251_);
		_g_free0 (_tmp249_);
		_g_free0 (_tmp247_);
		_tmp252_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp253_ = _tmp252_;
		_tmp254_ = vala_ccode_identifier_new ("self");
		_tmp255_ = _tmp254_;
		_tmp256_ = ccall;
		vala_ccode_function_add_assignment (_tmp253_, (ValaCCodeExpression*) _tmp255_, (ValaCCodeExpression*) _tmp256_);
		_vala_ccode_node_unref0 (_tmp255_);
		_tmp257_ = vala_subroutine_get_body ((ValaSubroutine*) c);
		_tmp258_ = _tmp257_;
		vala_code_node_emit ((ValaCodeNode*) _tmp258_, (ValaCodeGenerator*) self);
		_tmp259_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
		_tmp260_ = _tmp259_;
		if (_tmp260_) {
			ValaCCodeFunction* _tmp261_;
			ValaCCodeFunction* _tmp262_;
			gint _tmp263_;
			gint _tmp264_;
			gchar* _tmp265_;
			gchar* _tmp266_;
			ValaCCodeConstant* _tmp267_;
			ValaCCodeConstant* _tmp268_;
			ValaCCodeVariableDeclarator* _tmp269_;
			ValaCCodeVariableDeclarator* _tmp270_;
			_tmp261_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp262_ = _tmp261_;
			_tmp263_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
			_tmp264_ = _tmp263_;
			_tmp265_ = g_strdup_printf ("_inner_error%d_", _tmp264_);
			_tmp266_ = _tmp265_;
			_tmp267_ = vala_ccode_constant_new ("NULL");
			_tmp268_ = _tmp267_;
			_tmp269_ = vala_ccode_variable_declarator_new_zero (_tmp266_, (ValaCCodeExpression*) _tmp268_, NULL);
			_tmp270_ = _tmp269_;
			vala_ccode_function_add_declaration (_tmp262_, "GError*", (ValaCCodeDeclarator*) _tmp270_, 0);
			_vala_ccode_node_unref0 (_tmp270_);
			_vala_ccode_node_unref0 (_tmp268_);
			_g_free0 (_tmp266_);
		}
		_tmp271_ = cl;
		_tmp272_ = vala_class_get_is_singleton (_tmp271_);
		_tmp273_ = _tmp272_;
		if (_tmp273_) {
			gchar* singleton_ref_name = NULL;
			ValaClass* _tmp274_;
			gchar* _tmp275_;
			gchar* _tmp276_;
			gchar* _tmp277_;
			gchar* _tmp278_;
			gchar* singleton_lock_name = NULL;
			ValaClass* _tmp279_;
			gchar* _tmp280_;
			gchar* _tmp281_;
			gchar* _tmp282_;
			gchar* _tmp283_;
			ValaCCodeFunction* _tmp284_;
			ValaCCodeFunction* _tmp285_;
			const gchar* _tmp286_;
			ValaCCodeIdentifier* _tmp287_;
			ValaCCodeIdentifier* _tmp288_;
			ValaCCodeIdentifier* _tmp289_;
			ValaCCodeIdentifier* _tmp290_;
			ValaCCodeFunctionCall* set_weak_ref_to_volatile = NULL;
			ValaCCodeIdentifier* _tmp291_;
			ValaCCodeIdentifier* _tmp292_;
			ValaCCodeFunctionCall* _tmp293_;
			ValaCCodeFunctionCall* _tmp294_;
			ValaCCodeFunctionCall* _tmp295_;
			const gchar* _tmp296_;
			ValaCCodeIdentifier* _tmp297_;
			ValaCCodeIdentifier* _tmp298_;
			ValaCCodeFunctionCall* _tmp299_;
			const gchar* _tmp300_;
			ValaCCodeIdentifier* _tmp301_;
			ValaCCodeIdentifier* _tmp302_;
			ValaCCodeUnaryExpression* _tmp303_;
			ValaCCodeUnaryExpression* _tmp304_;
			ValaCCodeCastExpression* _tmp305_;
			ValaCCodeCastExpression* _tmp306_;
			ValaCCodeFunction* _tmp307_;
			ValaCCodeFunction* _tmp308_;
			ValaCCodeFunctionCall* _tmp309_;
			ValaCCodeExpressionStatement* _tmp310_;
			ValaCCodeExpressionStatement* _tmp311_;
			ValaCCodeFunctionCall* final_singleton_mutex_unlock = NULL;
			ValaCCodeIdentifier* _tmp312_;
			ValaCCodeIdentifier* _tmp313_;
			ValaCCodeFunctionCall* _tmp314_;
			ValaCCodeFunctionCall* _tmp315_;
			ValaCCodeFunctionCall* _tmp316_;
			const gchar* _tmp317_;
			ValaCCodeIdentifier* _tmp318_;
			ValaCCodeIdentifier* _tmp319_;
			ValaCCodeUnaryExpression* _tmp320_;
			ValaCCodeUnaryExpression* _tmp321_;
			ValaCCodeFunction* _tmp322_;
			ValaCCodeFunction* _tmp323_;
			ValaCCodeFunctionCall* _tmp324_;
			ValaCCodeExpressionStatement* _tmp325_;
			ValaCCodeExpressionStatement* _tmp326_;
			_tmp274_ = cl;
			_tmp275_ = vala_get_ccode_name ((ValaCodeNode*) _tmp274_);
			_tmp276_ = _tmp275_;
			_tmp277_ = g_strdup_printf ("%s_singleton__ref", _tmp276_);
			_tmp278_ = _tmp277_;
			_g_free0 (_tmp276_);
			singleton_ref_name = _tmp278_;
			_tmp279_ = cl;
			_tmp280_ = vala_get_ccode_name ((ValaCodeNode*) _tmp279_);
			_tmp281_ = _tmp280_;
			_tmp282_ = g_strdup_printf ("%s_singleton__lock", _tmp281_);
			_tmp283_ = _tmp282_;
			_g_free0 (_tmp281_);
			singleton_lock_name = _tmp283_;
			_tmp284_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp285_ = _tmp284_;
			_tmp286_ = singleton_ref_name;
			_tmp287_ = vala_ccode_identifier_new (_tmp286_);
			_tmp288_ = _tmp287_;
			_tmp289_ = vala_ccode_identifier_new ("obj");
			_tmp290_ = _tmp289_;
			vala_ccode_function_add_assignment (_tmp285_, (ValaCCodeExpression*) _tmp288_, (ValaCCodeExpression*) _tmp290_);
			_vala_ccode_node_unref0 (_tmp290_);
			_vala_ccode_node_unref0 (_tmp288_);
			_tmp291_ = vala_ccode_identifier_new ("g_object_add_weak_pointer");
			_tmp292_ = _tmp291_;
			_tmp293_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp292_);
			_tmp294_ = _tmp293_;
			_vala_ccode_node_unref0 (_tmp292_);
			set_weak_ref_to_volatile = _tmp294_;
			_tmp295_ = set_weak_ref_to_volatile;
			_tmp296_ = singleton_ref_name;
			_tmp297_ = vala_ccode_identifier_new (_tmp296_);
			_tmp298_ = _tmp297_;
			vala_ccode_function_call_add_argument (_tmp295_, (ValaCCodeExpression*) _tmp298_);
			_vala_ccode_node_unref0 (_tmp298_);
			_tmp299_ = set_weak_ref_to_volatile;
			_tmp300_ = singleton_ref_name;
			_tmp301_ = vala_ccode_identifier_new (_tmp300_);
			_tmp302_ = _tmp301_;
			_tmp303_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp302_);
			_tmp304_ = _tmp303_;
			_tmp305_ = vala_ccode_cast_expression_new ((ValaCCodeExpression*) _tmp304_, "gpointer");
			_tmp306_ = _tmp305_;
			vala_ccode_function_call_add_argument (_tmp299_, (ValaCCodeExpression*) _tmp306_);
			_vala_ccode_node_unref0 (_tmp306_);
			_vala_ccode_node_unref0 (_tmp304_);
			_vala_ccode_node_unref0 (_tmp302_);
			_tmp307_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp308_ = _tmp307_;
			_tmp309_ = set_weak_ref_to_volatile;
			_tmp310_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp309_);
			_tmp311_ = _tmp310_;
			vala_ccode_function_add_statement (_tmp308_, (ValaCCodeNode*) _tmp311_);
			_vala_ccode_node_unref0 (_tmp311_);
			_tmp312_ = vala_ccode_identifier_new ("g_mutex_unlock");
			_tmp313_ = _tmp312_;
			_tmp314_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp313_);
			_tmp315_ = _tmp314_;
			_vala_ccode_node_unref0 (_tmp313_);
			final_singleton_mutex_unlock = _tmp315_;
			_tmp316_ = final_singleton_mutex_unlock;
			_tmp317_ = singleton_lock_name;
			_tmp318_ = vala_ccode_identifier_new (_tmp317_);
			_tmp319_ = _tmp318_;
			_tmp320_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, (ValaCCodeExpression*) _tmp319_);
			_tmp321_ = _tmp320_;
			vala_ccode_function_call_add_argument (_tmp316_, (ValaCCodeExpression*) _tmp321_);
			_vala_ccode_node_unref0 (_tmp321_);
			_vala_ccode_node_unref0 (_tmp319_);
			_tmp322_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
			_tmp323_ = _tmp322_;
			_tmp324_ = final_singleton_mutex_unlock;
			_tmp325_ = vala_ccode_expression_statement_new ((ValaCCodeExpression*) _tmp324_);
			_tmp326_ = _tmp325_;
			vala_ccode_function_add_statement (_tmp323_, (ValaCCodeNode*) _tmp326_);
			_vala_ccode_node_unref0 (_tmp326_);
			_vala_ccode_node_unref0 (final_singleton_mutex_unlock);
			_vala_ccode_node_unref0 (set_weak_ref_to_volatile);
			_g_free0 (singleton_lock_name);
			_g_free0 (singleton_ref_name);
		}
		_tmp327_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
		_tmp328_ = _tmp327_;
		_tmp329_ = vala_ccode_identifier_new ("obj");
		_tmp330_ = _tmp329_;
		vala_ccode_function_add_return (_tmp328_, (ValaCCodeExpression*) _tmp330_);
		_vala_ccode_node_unref0 (_tmp330_);
		vala_ccode_base_module_pop_function ((ValaCCodeBaseModule*) self);
		_tmp331_ = ((ValaCCodeBaseModule*) self)->cfile;
		_tmp332_ = function;
		vala_ccode_file_add_function (_tmp331_, _tmp332_);
		vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
		_vala_ccode_node_unref0 (ccall);
		_vala_ccode_node_unref0 (ccast);
		_vala_ccode_node_unref0 (function);
	} else {
		ValaMemberBinding _tmp333_;
		ValaMemberBinding _tmp334_;
		_tmp333_ = vala_constructor_get_binding (c);
		_tmp334_ = _tmp333_;
		if (_tmp334_ == VALA_MEMBER_BINDING_CLASS) {
			ValaClass* _tmp335_;
			gboolean _tmp336_;
			gboolean _tmp337_;
			ValaCCodeBaseModuleEmitContext* _tmp340_;
			ValaBlock* _tmp341_;
			ValaBlock* _tmp342_;
			gboolean _tmp343_;
			gboolean _tmp344_;
			_tmp335_ = cl;
			_tmp336_ = vala_class_get_is_compact (_tmp335_);
			_tmp337_ = _tmp336_;
			if (_tmp337_) {
				ValaSourceReference* _tmp338_;
				ValaSourceReference* _tmp339_;
				_tmp338_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
				_tmp339_ = _tmp338_;
				vala_report_error (_tmp339_, "class constructors are not supported in compact classes");
				vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
				_vala_code_node_unref0 (cl);
				return;
			}
			_tmp340_ = ((ValaCCodeBaseModule*) self)->base_init_context;
			vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp340_);
			_tmp341_ = vala_subroutine_get_body ((ValaSubroutine*) c);
			_tmp342_ = _tmp341_;
			vala_code_node_emit ((ValaCodeNode*) _tmp342_, (ValaCodeGenerator*) self);
			_tmp343_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
			_tmp344_ = _tmp343_;
			if (_tmp344_) {
				ValaCCodeFunction* _tmp345_;
				ValaCCodeFunction* _tmp346_;
				gint _tmp347_;
				gint _tmp348_;
				gchar* _tmp349_;
				gchar* _tmp350_;
				ValaCCodeConstant* _tmp351_;
				ValaCCodeConstant* _tmp352_;
				ValaCCodeVariableDeclarator* _tmp353_;
				ValaCCodeVariableDeclarator* _tmp354_;
				_tmp345_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
				_tmp346_ = _tmp345_;
				_tmp347_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
				_tmp348_ = _tmp347_;
				_tmp349_ = g_strdup_printf ("_inner_error%d_", _tmp348_);
				_tmp350_ = _tmp349_;
				_tmp351_ = vala_ccode_constant_new ("NULL");
				_tmp352_ = _tmp351_;
				_tmp353_ = vala_ccode_variable_declarator_new_zero (_tmp350_, (ValaCCodeExpression*) _tmp352_, NULL);
				_tmp354_ = _tmp353_;
				vala_ccode_function_add_declaration (_tmp346_, "GError*", (ValaCCodeDeclarator*) _tmp354_, 0);
				_vala_ccode_node_unref0 (_tmp354_);
				_vala_ccode_node_unref0 (_tmp352_);
				_g_free0 (_tmp350_);
			}
			vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
		} else {
			ValaMemberBinding _tmp355_;
			ValaMemberBinding _tmp356_;
			_tmp355_ = vala_constructor_get_binding (c);
			_tmp356_ = _tmp355_;
			if (_tmp356_ == VALA_MEMBER_BINDING_STATIC) {
				ValaClass* _tmp357_;
				gboolean _tmp358_;
				gboolean _tmp359_;
				ValaCCodeBaseModuleEmitContext* _tmp362_;
				ValaBlock* _tmp363_;
				ValaBlock* _tmp364_;
				gboolean _tmp365_;
				gboolean _tmp366_;
				_tmp357_ = cl;
				_tmp358_ = vala_class_get_is_compact (_tmp357_);
				_tmp359_ = _tmp358_;
				if (_tmp359_) {
					ValaSourceReference* _tmp360_;
					ValaSourceReference* _tmp361_;
					_tmp360_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
					_tmp361_ = _tmp360_;
					vala_report_error (_tmp361_, "static constructors are not supported in compact classes");
					vala_code_node_set_error ((ValaCodeNode*) c, TRUE);
					_vala_code_node_unref0 (cl);
					return;
				}
				_tmp362_ = ((ValaCCodeBaseModule*) self)->class_init_context;
				vala_ccode_base_module_push_context ((ValaCCodeBaseModule*) self, _tmp362_);
				_tmp363_ = vala_subroutine_get_body ((ValaSubroutine*) c);
				_tmp364_ = _tmp363_;
				vala_code_node_emit ((ValaCodeNode*) _tmp364_, (ValaCodeGenerator*) self);
				_tmp365_ = vala_ccode_base_module_get_current_method_inner_error ((ValaCCodeBaseModule*) self);
				_tmp366_ = _tmp365_;
				if (_tmp366_) {
					ValaCCodeFunction* _tmp367_;
					ValaCCodeFunction* _tmp368_;
					gint _tmp369_;
					gint _tmp370_;
					gchar* _tmp371_;
					gchar* _tmp372_;
					ValaCCodeConstant* _tmp373_;
					ValaCCodeConstant* _tmp374_;
					ValaCCodeVariableDeclarator* _tmp375_;
					ValaCCodeVariableDeclarator* _tmp376_;
					_tmp367_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
					_tmp368_ = _tmp367_;
					_tmp369_ = vala_ccode_base_module_get_current_inner_error_id ((ValaCCodeBaseModule*) self);
					_tmp370_ = _tmp369_;
					_tmp371_ = g_strdup_printf ("_inner_error%d_", _tmp370_);
					_tmp372_ = _tmp371_;
					_tmp373_ = vala_ccode_constant_new ("NULL");
					_tmp374_ = _tmp373_;
					_tmp375_ = vala_ccode_variable_declarator_new_zero (_tmp372_, (ValaCCodeExpression*) _tmp374_, NULL);
					_tmp376_ = _tmp375_;
					vala_ccode_function_add_declaration (_tmp368_, "GError*", (ValaCCodeDeclarator*) _tmp376_, 0);
					_vala_ccode_node_unref0 (_tmp376_);
					_vala_ccode_node_unref0 (_tmp374_);
					_g_free0 (_tmp372_);
				}
				vala_ccode_base_module_pop_context ((ValaCCodeBaseModule*) self);
			} else {
				ValaSourceReference* _tmp377_;
				ValaSourceReference* _tmp378_;
				_tmp377_ = vala_code_node_get_source_reference ((ValaCodeNode*) c);
				_tmp378_ = _tmp377_;
				vala_report_error (_tmp378_, "internal error: constructors must have instance, class, or static bind" \
"ing");
			}
		}
	}
	vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
	_vala_code_node_unref0 (cl);
}

static gchar*
vala_gobject_module_real_get_dynamic_signal_cname (ValaCCodeBaseModule* base,
                                                   ValaDynamicSignal* node)
{
	ValaGObjectModule * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gint _tmp2_;
	gchar* _tmp3_;
	gchar* result;
	self = (ValaGObjectModule*) base;
	g_return_val_if_fail (node != NULL, NULL);
	_tmp0_ = vala_symbol_get_name ((ValaSymbol*) node);
	_tmp1_ = _tmp0_;
	_tmp2_ = self->priv->signal_wrapper_id;
	self->priv->signal_wrapper_id = _tmp2_ + 1;
	_tmp3_ = g_strdup_printf ("dynamic_%s%d_", _tmp1_, _tmp2_);
	result = _tmp3_;
	return result;
}

static void
vala_gobject_module_real_visit_property (ValaCodeVisitor* base,
                                         ValaProperty* prop)
{
	ValaGObjectModule * self;
	gboolean _tmp0_ = FALSE;
	ValaCodeContext* _tmp1_;
	ValaCodeContext* _tmp2_;
	ValaSemanticAnalyzer* _tmp3_;
	ValaSemanticAnalyzer* _tmp4_;
	self = (ValaGObjectModule*) base;
	g_return_if_fail (prop != NULL);
	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_property ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), prop);
	_tmp1_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_code_context_get_analyzer (_tmp2_);
	_tmp4_ = _tmp3_;
	if (vala_semantic_analyzer_is_gobject_property (_tmp4_, prop)) {
		ValaSymbol* _tmp5_;
		ValaSymbol* _tmp6_;
		_tmp5_ = vala_symbol_get_parent_symbol ((ValaSymbol*) prop);
		_tmp6_ = _tmp5_;
		_tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_CLASS);
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		ValaCCodeEnum* _tmp7_;
		gchar* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		gchar* _tmp11_;
		ValaCCodeEnumValue* _tmp12_;
		ValaCCodeEnumValue* _tmp13_;
		_tmp7_ = ((ValaCCodeBaseModule*) self)->prop_enum;
		_tmp8_ = vala_get_ccode_upper_case_name ((ValaSymbol*) prop, NULL);
		_tmp9_ = _tmp8_;
		_tmp10_ = g_strdup_printf ("%s_PROPERTY", _tmp9_);
		_tmp11_ = _tmp10_;
		_tmp12_ = vala_ccode_enum_value_new (_tmp11_, NULL);
		_tmp13_ = _tmp12_;
		vala_ccode_enum_add_value (_tmp7_, _tmp13_);
		_vala_ccode_node_unref0 (_tmp13_);
		_g_free0 (_tmp11_);
		_g_free0 (_tmp9_);
	}
}

static void
vala_gobject_module_real_visit_method_call (ValaCodeVisitor* base,
                                            ValaMethodCall* expr)
{
	ValaGObjectModule * self;
	ValaExpression* _tmp0_;
	ValaExpression* _tmp1_;
	self = (ValaGObjectModule*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = vala_callable_expression_get_call ((ValaCallableExpression*) expr);
	_tmp1_ = _tmp0_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_MEMBER_ACCESS)) {
		ValaSourceReference* _tmp2_;
		ValaSourceReference* _tmp3_;
		ValaMemberAccess* ma = NULL;
		ValaExpression* _tmp4_;
		ValaExpression* _tmp5_;
		ValaMemberAccess* _tmp6_;
		gboolean _tmp7_ = FALSE;
		gboolean _tmp8_ = FALSE;
		ValaMemberAccess* _tmp9_;
		ValaExpression* _tmp10_;
		ValaExpression* _tmp11_;
		_tmp2_ = vala_code_node_get_source_reference ((ValaCodeNode*) expr);
		_tmp3_ = _tmp2_;
		vala_ccode_base_module_push_line ((ValaCCodeBaseModule*) self, _tmp3_);
		_tmp4_ = vala_callable_expression_get_call ((ValaCallableExpression*) expr);
		_tmp5_ = _tmp4_;
		_tmp6_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_MEMBER_ACCESS) ? ((ValaMemberAccess*) _tmp5_) : NULL);
		ma = _tmp6_;
		_tmp9_ = ma;
		_tmp10_ = vala_member_access_get_inner (_tmp9_);
		_tmp11_ = _tmp10_;
		if (_tmp11_ != NULL) {
			ValaMemberAccess* _tmp12_;
			ValaExpression* _tmp13_;
			ValaExpression* _tmp14_;
			ValaSymbol* _tmp15_;
			ValaSymbol* _tmp16_;
			ValaTypeSymbol* _tmp17_;
			_tmp12_ = ma;
			_tmp13_ = vala_member_access_get_inner (_tmp12_);
			_tmp14_ = _tmp13_;
			_tmp15_ = vala_expression_get_symbol_reference (_tmp14_);
			_tmp16_ = _tmp15_;
			_tmp17_ = ((ValaCCodeBaseModule*) self)->gobject_type;
			_tmp8_ = _tmp16_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, VALA_TYPE_SYMBOL, ValaSymbol);
		} else {
			_tmp8_ = FALSE;
		}
		if (_tmp8_) {
			gboolean _tmp18_ = FALSE;
			gboolean _tmp19_ = FALSE;
			gboolean _tmp20_ = FALSE;
			ValaMemberAccess* _tmp21_;
			const gchar* _tmp22_;
			const gchar* _tmp23_;
			_tmp21_ = ma;
			_tmp22_ = vala_member_access_get_member_name (_tmp21_);
			_tmp23_ = _tmp22_;
			if (g_strcmp0 (_tmp23_, "new") == 0) {
				_tmp20_ = TRUE;
			} else {
				ValaMemberAccess* _tmp24_;
				const gchar* _tmp25_;
				const gchar* _tmp26_;
				_tmp24_ = ma;
				_tmp25_ = vala_member_access_get_member_name (_tmp24_);
				_tmp26_ = _tmp25_;
				_tmp20_ = g_strcmp0 (_tmp26_, "newv") == 0;
			}
			if (_tmp20_) {
				_tmp19_ = TRUE;
			} else {
				ValaMemberAccess* _tmp27_;
				const gchar* _tmp28_;
				const gchar* _tmp29_;
				_tmp27_ = ma;
				_tmp28_ = vala_member_access_get_member_name (_tmp27_);
				_tmp29_ = _tmp28_;
				_tmp19_ = g_strcmp0 (_tmp29_, "new_valist") == 0;
			}
			if (_tmp19_) {
				_tmp18_ = TRUE;
			} else {
				ValaMemberAccess* _tmp30_;
				const gchar* _tmp31_;
				const gchar* _tmp32_;
				_tmp30_ = ma;
				_tmp31_ = vala_member_access_get_member_name (_tmp30_);
				_tmp32_ = _tmp31_;
				_tmp18_ = g_strcmp0 (_tmp32_, "new_with_properties") == 0;
			}
			_tmp7_ = _tmp18_;
		} else {
			_tmp7_ = FALSE;
		}
		if (_tmp7_) {
			ValaCCodeFunctionCall* initiallyunowned_ccall = NULL;
			ValaCCodeIdentifier* _tmp33_;
			ValaCCodeIdentifier* _tmp34_;
			ValaCCodeFunctionCall* _tmp35_;
			ValaCCodeFunctionCall* _tmp36_;
			ValaCCodeFunctionCall* _tmp37_;
			ValaCCodeExpression* _tmp38_;
			ValaCCodeFunctionCall* sink_ref_ccall = NULL;
			ValaCCodeIdentifier* _tmp39_;
			ValaCCodeIdentifier* _tmp40_;
			ValaCCodeFunctionCall* _tmp41_;
			ValaCCodeFunctionCall* _tmp42_;
			ValaCCodeFunctionCall* _tmp43_;
			ValaCCodeExpression* _tmp44_;
			ValaCCodeConditionalExpression* cexpr = NULL;
			ValaCCodeFunctionCall* _tmp45_;
			ValaCCodeFunctionCall* _tmp46_;
			ValaCCodeExpression* _tmp47_;
			ValaCCodeConditionalExpression* _tmp48_;
			ValaDataType* _tmp49_;
			ValaDataType* _tmp50_;
			ValaCCodeConditionalExpression* _tmp51_;
			ValaGLibValue* _tmp52_;
			ValaGLibValue* _tmp53_;
			ValaTargetValue* _tmp54_;
			ValaTargetValue* _tmp55_;
			VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), expr);
			_tmp33_ = vala_ccode_identifier_new ("G_IS_INITIALLY_UNOWNED");
			_tmp34_ = _tmp33_;
			_tmp35_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp34_);
			_tmp36_ = _tmp35_;
			_vala_ccode_node_unref0 (_tmp34_);
			initiallyunowned_ccall = _tmp36_;
			_tmp37_ = initiallyunowned_ccall;
			_tmp38_ = vala_get_cvalue ((ValaExpression*) expr);
			vala_ccode_function_call_add_argument (_tmp37_, _tmp38_);
			_tmp39_ = vala_ccode_identifier_new ("g_object_ref_sink");
			_tmp40_ = _tmp39_;
			_tmp41_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp40_);
			_tmp42_ = _tmp41_;
			_vala_ccode_node_unref0 (_tmp40_);
			sink_ref_ccall = _tmp42_;
			_tmp43_ = sink_ref_ccall;
			_tmp44_ = vala_get_cvalue ((ValaExpression*) expr);
			vala_ccode_function_call_add_argument (_tmp43_, _tmp44_);
			_tmp45_ = initiallyunowned_ccall;
			_tmp46_ = sink_ref_ccall;
			_tmp47_ = vala_get_cvalue ((ValaExpression*) expr);
			_tmp48_ = vala_ccode_conditional_expression_new ((ValaCCodeExpression*) _tmp45_, (ValaCCodeExpression*) _tmp46_, _tmp47_);
			cexpr = _tmp48_;
			_tmp49_ = vala_expression_get_value_type ((ValaExpression*) expr);
			_tmp50_ = _tmp49_;
			_tmp51_ = cexpr;
			_tmp52_ = vala_glib_value_new (_tmp50_, (ValaCCodeExpression*) _tmp51_, FALSE);
			_tmp53_ = _tmp52_;
			_tmp54_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp53_, (ValaCodeNode*) expr, NULL);
			_tmp55_ = _tmp54_;
			vala_expression_set_target_value ((ValaExpression*) expr, _tmp55_);
			_vala_target_value_unref0 (_tmp55_);
			_vala_target_value_unref0 (_tmp53_);
			_vala_ccode_node_unref0 (cexpr);
			_vala_ccode_node_unref0 (sink_ref_ccall);
			_vala_ccode_node_unref0 (initiallyunowned_ccall);
			_vala_code_node_unref0 (ma);
			return;
		} else {
			ValaMemberAccess* _tmp56_;
			ValaSymbol* _tmp57_;
			ValaSymbol* _tmp58_;
			ValaTypeSymbol* _tmp59_;
			_tmp56_ = ma;
			_tmp57_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp56_);
			_tmp58_ = _tmp57_;
			_tmp59_ = ((ValaCCodeBaseModule*) self)->gobject_type;
			if (_tmp58_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, VALA_TYPE_SYMBOL, ValaSymbol)) {
				{
					ValaList* _arg_list = NULL;
					ValaList* _tmp60_;
					gint _arg_size = 0;
					ValaList* _tmp61_;
					gint _tmp62_;
					gint _tmp63_;
					gint _arg_index = 0;
					_tmp60_ = vala_callable_expression_get_argument_list ((ValaCallableExpression*) expr);
					_arg_list = _tmp60_;
					_tmp61_ = _arg_list;
					_tmp62_ = vala_collection_get_size ((ValaCollection*) _tmp61_);
					_tmp63_ = _tmp62_;
					_arg_size = _tmp63_;
					_arg_index = -1;
					while (TRUE) {
						gint _tmp64_;
						gint _tmp65_;
						ValaExpression* arg = NULL;
						ValaList* _tmp66_;
						gpointer _tmp67_;
						ValaNamedArgument* named_argument = NULL;
						ValaExpression* _tmp68_;
						ValaNamedArgument* _tmp69_;
						ValaNamedArgument* _tmp70_;
						ValaProperty* prop = NULL;
						ValaClass* _tmp74_;
						ValaClass* _tmp75_;
						ValaNamedArgument* _tmp76_;
						const gchar* _tmp77_;
						const gchar* _tmp78_;
						ValaSymbol* _tmp79_;
						ValaProperty* _tmp80_;
						ValaProperty* _tmp81_;
						ValaCodeContext* _tmp92_;
						ValaCodeContext* _tmp93_;
						ValaSemanticAnalyzer* _tmp94_;
						ValaSemanticAnalyzer* _tmp95_;
						ValaProperty* _tmp96_;
						ValaExpression* _tmp103_;
						ValaDataType* _tmp104_;
						ValaDataType* _tmp105_;
						ValaProperty* _tmp106_;
						ValaDataType* _tmp107_;
						ValaDataType* _tmp108_;
						_arg_index = _arg_index + 1;
						_tmp64_ = _arg_index;
						_tmp65_ = _arg_size;
						if (!(_tmp64_ < _tmp65_)) {
							break;
						}
						_tmp66_ = _arg_list;
						_tmp67_ = vala_list_get (_tmp66_, _arg_index);
						arg = (ValaExpression*) _tmp67_;
						_tmp68_ = arg;
						_tmp69_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp68_, VALA_TYPE_NAMED_ARGUMENT) ? ((ValaNamedArgument*) _tmp68_) : NULL);
						named_argument = _tmp69_;
						_tmp70_ = named_argument;
						if (_tmp70_ == NULL) {
							ValaExpression* _tmp71_;
							ValaSourceReference* _tmp72_;
							ValaSourceReference* _tmp73_;
							_tmp71_ = arg;
							_tmp72_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp71_);
							_tmp73_ = _tmp72_;
							vala_report_error (_tmp73_, "Named argument expected");
							_vala_code_node_unref0 (named_argument);
							_vala_code_node_unref0 (arg);
							break;
						}
						_tmp74_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
						_tmp75_ = _tmp74_;
						_tmp76_ = named_argument;
						_tmp77_ = vala_named_argument_get_name (_tmp76_);
						_tmp78_ = _tmp77_;
						_tmp79_ = vala_semantic_analyzer_symbol_lookup_inherited ((ValaSymbol*) _tmp75_, _tmp78_);
						_tmp80_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp79_, VALA_TYPE_PROPERTY) ? ((ValaProperty*) _tmp79_) : NULL;
						if (_tmp80_ == NULL) {
							_vala_code_node_unref0 (_tmp79_);
						}
						prop = _tmp80_;
						_tmp81_ = prop;
						if (_tmp81_ == NULL) {
							ValaExpression* _tmp82_;
							ValaSourceReference* _tmp83_;
							ValaSourceReference* _tmp84_;
							ValaNamedArgument* _tmp85_;
							const gchar* _tmp86_;
							const gchar* _tmp87_;
							ValaClass* _tmp88_;
							ValaClass* _tmp89_;
							gchar* _tmp90_;
							gchar* _tmp91_;
							_tmp82_ = arg;
							_tmp83_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp82_);
							_tmp84_ = _tmp83_;
							_tmp85_ = named_argument;
							_tmp86_ = vala_named_argument_get_name (_tmp85_);
							_tmp87_ = _tmp86_;
							_tmp88_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
							_tmp89_ = _tmp88_;
							_tmp90_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp89_);
							_tmp91_ = _tmp90_;
							vala_report_error (_tmp84_, "Property `%s' not found in `%s'", _tmp87_, _tmp91_);
							_g_free0 (_tmp91_);
							_vala_code_node_unref0 (prop);
							_vala_code_node_unref0 (named_argument);
							_vala_code_node_unref0 (arg);
							break;
						}
						_tmp92_ = vala_ccode_base_module_get_context ((ValaCCodeBaseModule*) self);
						_tmp93_ = _tmp92_;
						_tmp94_ = vala_code_context_get_analyzer (_tmp93_);
						_tmp95_ = _tmp94_;
						_tmp96_ = prop;
						if (!vala_semantic_analyzer_is_gobject_property (_tmp95_, _tmp96_)) {
							ValaExpression* _tmp97_;
							ValaSourceReference* _tmp98_;
							ValaSourceReference* _tmp99_;
							ValaNamedArgument* _tmp100_;
							const gchar* _tmp101_;
							const gchar* _tmp102_;
							_tmp97_ = arg;
							_tmp98_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp97_);
							_tmp99_ = _tmp98_;
							_tmp100_ = named_argument;
							_tmp101_ = vala_named_argument_get_name (_tmp100_);
							_tmp102_ = _tmp101_;
							vala_report_error (_tmp99_, "Property `%s' not supported in Object (property: value) constructor ch" \
"ain up", _tmp102_);
							_vala_code_node_unref0 (prop);
							_vala_code_node_unref0 (named_argument);
							_vala_code_node_unref0 (arg);
							break;
						}
						_tmp103_ = arg;
						_tmp104_ = vala_expression_get_value_type (_tmp103_);
						_tmp105_ = _tmp104_;
						_tmp106_ = prop;
						_tmp107_ = vala_property_get_property_type (_tmp106_);
						_tmp108_ = _tmp107_;
						if (!vala_data_type_compatible (_tmp105_, _tmp108_)) {
							ValaExpression* _tmp109_;
							ValaSourceReference* _tmp110_;
							ValaSourceReference* _tmp111_;
							ValaExpression* _tmp112_;
							ValaDataType* _tmp113_;
							ValaDataType* _tmp114_;
							gchar* _tmp115_;
							gchar* _tmp116_;
							ValaProperty* _tmp117_;
							ValaDataType* _tmp118_;
							ValaDataType* _tmp119_;
							gchar* _tmp120_;
							gchar* _tmp121_;
							_tmp109_ = arg;
							_tmp110_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp109_);
							_tmp111_ = _tmp110_;
							_tmp112_ = arg;
							_tmp113_ = vala_expression_get_value_type (_tmp112_);
							_tmp114_ = _tmp113_;
							_tmp115_ = vala_code_node_to_string ((ValaCodeNode*) _tmp114_);
							_tmp116_ = _tmp115_;
							_tmp117_ = prop;
							_tmp118_ = vala_property_get_property_type (_tmp117_);
							_tmp119_ = _tmp118_;
							_tmp120_ = vala_code_node_to_string ((ValaCodeNode*) _tmp119_);
							_tmp121_ = _tmp120_;
							vala_report_error (_tmp111_, "Cannot convert from `%s' to `%s'", _tmp116_, _tmp121_);
							_g_free0 (_tmp121_);
							_g_free0 (_tmp116_);
							_vala_code_node_unref0 (prop);
							_vala_code_node_unref0 (named_argument);
							_vala_code_node_unref0 (arg);
							break;
						}
						_vala_code_node_unref0 (prop);
						_vala_code_node_unref0 (named_argument);
						_vala_code_node_unref0 (arg);
					}
				}
			}
		}
		vala_ccode_base_module_pop_line ((ValaCCodeBaseModule*) self);
		_vala_code_node_unref0 (ma);
	}
	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->visit_method_call ((ValaCodeVisitor*) G_TYPE_CHECK_INSTANCE_CAST (self, VALA_TYPE_GTYPE_MODULE, ValaGTypeModule), expr);
}

ValaGObjectModule*
vala_gobject_module_construct (GType object_type)
{
	ValaGObjectModule* self = NULL;
	self = (ValaGObjectModule*) vala_gtype_module_construct (object_type);
	return self;
}

ValaGObjectModule*
vala_gobject_module_new (void)
{
	return vala_gobject_module_construct (VALA_TYPE_GOBJECT_MODULE);
}

static void
vala_gobject_module_class_init (ValaGObjectModuleClass * klass,
                                gpointer klass_data)
{
	vala_gobject_module_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->finalize = vala_gobject_module_finalize;
	g_type_class_adjust_private_offset (klass, &ValaGObjectModule_private_offset);
	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor*, ValaClass*)) vala_gobject_module_real_visit_class;
	((ValaGTypeModuleClass *) klass)->generate_class_init = (void (*) (ValaGTypeModule*, ValaClass*)) vala_gobject_module_real_generate_class_init;
	((ValaCodeVisitorClass *) klass)->visit_constructor = (void (*) (ValaCodeVisitor*, ValaConstructor*)) vala_gobject_module_real_visit_constructor;
	((ValaCCodeBaseModuleClass *) klass)->get_dynamic_signal_cname = (gchar* (*) (ValaCCodeBaseModule*, ValaDynamicSignal*)) vala_gobject_module_real_get_dynamic_signal_cname;
	((ValaCodeVisitorClass *) klass)->visit_property = (void (*) (ValaCodeVisitor*, ValaProperty*)) vala_gobject_module_real_visit_property;
	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_gobject_module_real_visit_method_call;
}

static void
vala_gobject_module_instance_init (ValaGObjectModule * self,
                                   gpointer klass)
{
	self->priv = vala_gobject_module_get_instance_private (self);
}

static void
vala_gobject_module_finalize (ValaCodeVisitor * obj)
{
	ValaGObjectModule * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_GOBJECT_MODULE, ValaGObjectModule);
	VALA_CODE_VISITOR_CLASS (vala_gobject_module_parent_class)->finalize (obj);
}

static GType
vala_gobject_module_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ValaGObjectModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_gobject_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaGObjectModule), 0, (GInstanceInitFunc) vala_gobject_module_instance_init, NULL };
	GType vala_gobject_module_type_id;
	vala_gobject_module_type_id = g_type_register_static (VALA_TYPE_GTYPE_MODULE, "ValaGObjectModule", &g_define_type_info, 0);
	ValaGObjectModule_private_offset = g_type_add_instance_private (vala_gobject_module_type_id, sizeof (ValaGObjectModulePrivate));
	return vala_gobject_module_type_id;
}

GType
vala_gobject_module_get_type (void)
{
	static volatile gsize vala_gobject_module_type_id__once = 0;
	if (g_once_init_enter (&vala_gobject_module_type_id__once)) {
		GType vala_gobject_module_type_id;
		vala_gobject_module_type_id = vala_gobject_module_get_type_once ();
		g_once_init_leave (&vala_gobject_module_type_id__once, vala_gobject_module_type_id);
	}
	return vala_gobject_module_type_id__once;
}

