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

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

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

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

#include <glib.h>
#include <glib-object.h>
#include "valacodegen.h"
#include <vala.h>
#include <valaccode.h>
#include <stdlib.h>
#include <string.h>
#include <valagee.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 _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_target_value_unref0(var) ((var == NULL) ? NULL : (var = (vala_target_value_unref (var), NULL)))

#define VALA_TYPE_GLIB_VALUE (vala_glib_value_get_type ())
#define VALA_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValue))
#define VALA_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass))
#define VALA_IS_GLIB_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GLIB_VALUE))
#define VALA_IS_GLIB_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GLIB_VALUE))
#define VALA_GLIB_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GLIB_VALUE, ValaGLibValueClass))

typedef struct _ValaGLibValue ValaGLibValue;
typedef struct _ValaGLibValueClass ValaGLibValueClass;
typedef struct _ValaGLibValuePrivate ValaGLibValuePrivate;
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

struct _ValaGLibValue {
	ValaTargetValue parent_instance;
	ValaGLibValuePrivate * priv;
	ValaCCodeExpression* cvalue;
	gboolean lvalue;
	gboolean non_null;
	gchar* ctype;
	ValaList* array_length_cvalues;
	ValaCCodeExpression* array_size_cvalue;
	gboolean array_null_terminated;
	ValaCCodeExpression* array_length_cexpr;
	ValaCCodeExpression* delegate_target_cvalue;
	ValaCCodeExpression* delegate_target_destroy_notify_cvalue;
};

struct _ValaGLibValueClass {
	ValaTargetValueClass parent_class;
};


static gpointer vala_ccode_member_access_module_parent_class = NULL;

static void vala_ccode_member_access_module_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr);
G_GNUC_INTERNAL GType vala_glib_value_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static ValaTargetValue* vala_ccode_member_access_module_real_get_local_cvalue (ValaCCodeBaseModule* base, ValaLocalVariable* local);
G_GNUC_INTERNAL ValaGLibValue* vala_glib_value_new (ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue);
G_GNUC_INTERNAL ValaGLibValue* vala_glib_value_construct (GType object_type, ValaDataType* value_type, ValaCCodeExpression* cvalue, gboolean lvalue);
G_GNUC_INTERNAL void vala_glib_value_append_array_length_cvalue (ValaGLibValue* self, ValaCCodeExpression* length_cvalue);
static ValaTargetValue* vala_ccode_member_access_module_real_get_parameter_cvalue (ValaCCodeBaseModule* base, ValaParameter* param);
static ValaTargetValue* vala_ccode_member_access_module_real_get_field_cvalue (ValaCCodeBaseModule* base, ValaField* field, ValaTargetValue* instance);
static ValaTargetValue* vala_ccode_member_access_module_real_load_variable (ValaCCodeBaseModule* base, ValaVariable* variable, ValaTargetValue* value);
static ValaTargetValue* vala_ccode_member_access_module_real_load_local (ValaCodeGenerator* base, ValaLocalVariable* local);
static ValaTargetValue* vala_ccode_member_access_module_real_load_parameter (ValaCodeGenerator* base, ValaParameter* param);
static ValaTargetValue* vala_ccode_member_access_module_real_load_this_parameter (ValaCCodeBaseModule* base, ValaTypeSymbol* sym);
static ValaTargetValue* vala_ccode_member_access_module_real_load_field (ValaCodeGenerator* base, ValaField* field, ValaTargetValue* instance);


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 gpointer _vala_target_value_ref0 (gpointer self) {
	return self ? vala_target_value_ref (self) : NULL;
}


static void vala_ccode_member_access_module_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr) {
	ValaCCodeMemberAccessModule * self;
	ValaCCodeExpression* pub_inst = NULL;
	ValaMemberAccess* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValaArrayType* array_type = NULL;
	ValaMemberAccess* _tmp7_;
	ValaDataType* _tmp8_;
	ValaDataType* _tmp9_;
	ValaArrayType* _tmp10_;
	ValaDelegateType* delegate_type = NULL;
	ValaMemberAccess* _tmp11_;
	ValaDataType* _tmp12_;
	ValaDataType* _tmp13_;
	ValaDelegateType* _tmp14_;
	ValaMemberAccess* _tmp15_;
	ValaSymbol* _tmp16_;
	ValaSymbol* _tmp17_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_if_fail (expr != NULL);
	pub_inst = NULL;
	_tmp0_ = expr;
	_tmp1_ = vala_member_access_get_inner (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != NULL) {
		ValaMemberAccess* _tmp3_;
		ValaExpression* _tmp4_;
		ValaExpression* _tmp5_;
		ValaCCodeExpression* _tmp6_;
		_tmp3_ = expr;
		_tmp4_ = vala_member_access_get_inner (_tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp5_);
		_vala_ccode_node_unref0 (pub_inst);
		pub_inst = _tmp6_;
	}
	_tmp7_ = expr;
	_tmp8_ = vala_expression_get_value_type ((ValaExpression*) _tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp9_) : NULL);
	array_type = _tmp10_;
	_tmp11_ = expr;
	_tmp12_ = vala_expression_get_value_type ((ValaExpression*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp13_) : NULL);
	delegate_type = _tmp14_;
	_tmp15_ = expr;
	_tmp16_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp15_);
	_tmp17_ = _tmp16_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_METHOD)) {
		ValaMethod* m = NULL;
		ValaMemberAccess* _tmp18_;
		ValaSymbol* _tmp19_;
		ValaSymbol* _tmp20_;
		ValaMethod* _tmp21_;
		gboolean _tmp22_ = FALSE;
		gboolean _tmp23_ = FALSE;
		gboolean _tmp24_ = FALSE;
		ValaMethod* _tmp25_;
		ValaMemberAccess* _tmp41_;
		ValaExpression* _tmp42_;
		ValaExpression* _tmp43_;
		ValaMethod* _tmp105_;
		ValaMethod* _tmp106_;
		ValaMethod* _tmp107_;
		ValaMemberAccess* _tmp168_;
		ValaCCodeConstant* _tmp169_;
		ValaCCodeConstant* _tmp170_;
		ValaMethod* _tmp171_;
		ValaMemberBinding _tmp172_;
		ValaMemberBinding _tmp173_;
		_tmp18_ = expr;
		_tmp19_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, VALA_TYPE_METHOD, ValaMethod));
		m = _tmp21_;
		_tmp25_ = m;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_DYNAMIC_METHOD)) {
			_tmp24_ = TRUE;
		} else {
			ValaMethod* _tmp26_;
			_tmp26_ = m;
			_tmp24_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, VALA_TYPE_ARRAY_MOVE_METHOD);
		}
		if (_tmp24_) {
			_tmp23_ = TRUE;
		} else {
			ValaMethod* _tmp27_;
			_tmp27_ = m;
			_tmp23_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp27_, VALA_TYPE_ARRAY_RESIZE_METHOD);
		}
		if (_tmp23_) {
			_tmp22_ = TRUE;
		} else {
			ValaMethod* _tmp28_;
			_tmp28_ = m;
			_tmp22_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp28_, VALA_TYPE_ARRAY_COPY_METHOD);
		}
		if (!_tmp22_) {
			ValaMethod* _tmp29_;
			ValaCCodeFile* _tmp30_;
			gboolean _tmp31_ = FALSE;
			ValaMethod* _tmp32_;
			gboolean _tmp33_;
			gboolean _tmp34_;
			_tmp29_ = m;
			_tmp30_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_base_module_generate_method_declaration ((ValaCCodeBaseModule*) self, _tmp29_, _tmp30_);
			_tmp32_ = m;
			_tmp33_ = vala_symbol_get_external ((ValaSymbol*) _tmp32_);
			_tmp34_ = _tmp33_;
			if (!_tmp34_) {
				ValaMethod* _tmp35_;
				gboolean _tmp36_;
				gboolean _tmp37_;
				_tmp35_ = m;
				_tmp36_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp35_);
				_tmp37_ = _tmp36_;
				_tmp31_ = _tmp37_;
			} else {
				_tmp31_ = FALSE;
			}
			if (_tmp31_) {
				ValaMethod* _tmp38_;
				gboolean _tmp39_;
				_tmp38_ = m;
				_tmp39_ = vala_ccode_base_module_add_generated_external_symbol ((ValaCCodeBaseModule*) self, (ValaSymbol*) _tmp38_);
				if (_tmp39_) {
					ValaMethod* _tmp40_;
					_tmp40_ = m;
					vala_code_visitor_visit_method ((ValaCodeVisitor*) self, _tmp40_);
				}
			}
		}
		_tmp41_ = expr;
		_tmp42_ = vala_member_access_get_inner (_tmp41_);
		_tmp43_ = _tmp42_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp43_, VALA_TYPE_BASE_ACCESS)) {
			ValaMethod* _tmp44_;
			ValaMethod* _tmp45_;
			ValaMethod* _tmp46_;
			_tmp44_ = m;
			_tmp45_ = vala_method_get_base_method (_tmp44_);
			_tmp46_ = _tmp45_;
			if (_tmp46_ != NULL) {
				ValaClass* base_class = NULL;
				ValaMethod* _tmp47_;
				ValaMethod* _tmp48_;
				ValaMethod* _tmp49_;
				ValaSymbol* _tmp50_;
				ValaSymbol* _tmp51_;
				ValaClass* _tmp52_;
				ValaCCodeFunctionCall* vcast = NULL;
				ValaClass* _tmp53_;
				gchar* _tmp54_;
				gchar* _tmp55_;
				gchar* _tmp56_;
				gchar* _tmp57_;
				ValaCCodeIdentifier* _tmp58_;
				ValaCCodeIdentifier* _tmp59_;
				ValaCCodeFunctionCall* _tmp60_;
				ValaCCodeFunctionCall* _tmp61_;
				ValaCCodeFunctionCall* _tmp62_;
				ValaClass* _tmp63_;
				ValaClass* _tmp64_;
				gchar* _tmp65_;
				gchar* _tmp66_;
				gchar* _tmp67_;
				gchar* _tmp68_;
				ValaCCodeIdentifier* _tmp69_;
				ValaCCodeIdentifier* _tmp70_;
				ValaMemberAccess* _tmp71_;
				ValaCCodeFunctionCall* _tmp72_;
				ValaMethod* _tmp73_;
				gchar* _tmp74_;
				gchar* _tmp75_;
				ValaCCodeMemberAccess* _tmp76_;
				ValaCCodeMemberAccess* _tmp77_;
				_tmp47_ = m;
				_tmp48_ = vala_method_get_base_method (_tmp47_);
				_tmp49_ = _tmp48_;
				_tmp50_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp49_);
				_tmp51_ = _tmp50_;
				_tmp52_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp51_, VALA_TYPE_CLASS, ValaClass));
				base_class = _tmp52_;
				_tmp53_ = base_class;
				_tmp54_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp53_, NULL);
				_tmp55_ = _tmp54_;
				_tmp56_ = g_strdup_printf ("%s_CLASS", _tmp55_);
				_tmp57_ = _tmp56_;
				_tmp58_ = vala_ccode_identifier_new (_tmp57_);
				_tmp59_ = _tmp58_;
				_tmp60_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp59_);
				_tmp61_ = _tmp60_;
				_vala_ccode_node_unref0 (_tmp59_);
				_g_free0 (_tmp57_);
				_g_free0 (_tmp55_);
				vcast = _tmp61_;
				_tmp62_ = vcast;
				_tmp63_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
				_tmp64_ = _tmp63_;
				_tmp65_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp64_, NULL);
				_tmp66_ = _tmp65_;
				_tmp67_ = g_strdup_printf ("%s_parent_class", _tmp66_);
				_tmp68_ = _tmp67_;
				_tmp69_ = vala_ccode_identifier_new (_tmp68_);
				_tmp70_ = _tmp69_;
				vala_ccode_function_call_add_argument (_tmp62_, (ValaCCodeExpression*) _tmp70_);
				_vala_ccode_node_unref0 (_tmp70_);
				_g_free0 (_tmp68_);
				_g_free0 (_tmp66_);
				_tmp71_ = expr;
				_tmp72_ = vcast;
				_tmp73_ = m;
				_tmp74_ = vala_get_ccode_vfunc_name (_tmp73_);
				_tmp75_ = _tmp74_;
				_tmp76_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp72_, _tmp75_);
				_tmp77_ = _tmp76_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp71_, (ValaCCodeExpression*) _tmp77_);
				_vala_ccode_node_unref0 (_tmp77_);
				_g_free0 (_tmp75_);
				_vala_ccode_node_unref0 (vcast);
				_vala_code_node_unref0 (base_class);
				_vala_code_node_unref0 (m);
				_vala_code_node_unref0 (delegate_type);
				_vala_code_node_unref0 (array_type);
				_vala_ccode_node_unref0 (pub_inst);
				return;
			} else {
				ValaMethod* _tmp78_;
				ValaMethod* _tmp79_;
				ValaMethod* _tmp80_;
				_tmp78_ = m;
				_tmp79_ = vala_method_get_base_interface_method (_tmp78_);
				_tmp80_ = _tmp79_;
				if (_tmp80_ != NULL) {
					ValaInterface* base_iface = NULL;
					ValaMethod* _tmp81_;
					ValaMethod* _tmp82_;
					ValaMethod* _tmp83_;
					ValaSymbol* _tmp84_;
					ValaSymbol* _tmp85_;
					ValaInterface* _tmp86_;
					gchar* parent_iface_var = NULL;
					ValaClass* _tmp87_;
					ValaClass* _tmp88_;
					gchar* _tmp89_;
					gchar* _tmp90_;
					ValaInterface* _tmp91_;
					gchar* _tmp92_;
					gchar* _tmp93_;
					gchar* _tmp94_;
					gchar* _tmp95_;
					ValaMemberAccess* _tmp96_;
					const gchar* _tmp97_;
					ValaCCodeIdentifier* _tmp98_;
					ValaCCodeIdentifier* _tmp99_;
					ValaMethod* _tmp100_;
					gchar* _tmp101_;
					gchar* _tmp102_;
					ValaCCodeMemberAccess* _tmp103_;
					ValaCCodeMemberAccess* _tmp104_;
					_tmp81_ = m;
					_tmp82_ = vala_method_get_base_interface_method (_tmp81_);
					_tmp83_ = _tmp82_;
					_tmp84_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp83_);
					_tmp85_ = _tmp84_;
					_tmp86_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp85_, VALA_TYPE_INTERFACE, ValaInterface));
					base_iface = _tmp86_;
					_tmp87_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
					_tmp88_ = _tmp87_;
					_tmp89_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp88_, NULL);
					_tmp90_ = _tmp89_;
					_tmp91_ = base_iface;
					_tmp92_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp91_, NULL);
					_tmp93_ = _tmp92_;
					_tmp94_ = g_strdup_printf ("%s_%s_parent_iface", _tmp90_, _tmp93_);
					_tmp95_ = _tmp94_;
					_g_free0 (_tmp93_);
					_g_free0 (_tmp90_);
					parent_iface_var = _tmp95_;
					_tmp96_ = expr;
					_tmp97_ = parent_iface_var;
					_tmp98_ = vala_ccode_identifier_new (_tmp97_);
					_tmp99_ = _tmp98_;
					_tmp100_ = m;
					_tmp101_ = vala_get_ccode_vfunc_name (_tmp100_);
					_tmp102_ = _tmp101_;
					_tmp103_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp99_, _tmp102_);
					_tmp104_ = _tmp103_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp96_, (ValaCCodeExpression*) _tmp104_);
					_vala_ccode_node_unref0 (_tmp104_);
					_g_free0 (_tmp102_);
					_vala_ccode_node_unref0 (_tmp99_);
					_g_free0 (parent_iface_var);
					_vala_code_node_unref0 (base_iface);
					_vala_code_node_unref0 (m);
					_vala_code_node_unref0 (delegate_type);
					_vala_code_node_unref0 (array_type);
					_vala_ccode_node_unref0 (pub_inst);
					return;
				}
			}
		}
		_tmp105_ = m;
		_tmp106_ = vala_method_get_base_method (_tmp105_);
		_tmp107_ = _tmp106_;
		if (_tmp107_ != NULL) {
			ValaMethod* _tmp108_;
			ValaMethod* _tmp109_;
			ValaMethod* _tmp110_;
			gboolean _tmp111_;
			_tmp108_ = m;
			_tmp109_ = vala_method_get_base_method (_tmp108_);
			_tmp110_ = _tmp109_;
			_tmp111_ = vala_ccode_base_module_method_has_wrapper ((ValaCCodeBaseModule*) self, _tmp110_);
			if (!_tmp111_) {
				ValaClass* base_class = NULL;
				ValaMethod* _tmp112_;
				ValaMethod* _tmp113_;
				ValaMethod* _tmp114_;
				ValaSymbol* _tmp115_;
				ValaSymbol* _tmp116_;
				ValaClass* _tmp117_;
				ValaCCodeFunctionCall* vclass = NULL;
				ValaClass* _tmp118_;
				gchar* _tmp119_;
				gchar* _tmp120_;
				gchar* _tmp121_;
				gchar* _tmp122_;
				ValaCCodeIdentifier* _tmp123_;
				ValaCCodeIdentifier* _tmp124_;
				ValaCCodeFunctionCall* _tmp125_;
				ValaCCodeFunctionCall* _tmp126_;
				ValaCCodeFunctionCall* _tmp127_;
				ValaCCodeExpression* _tmp128_;
				ValaMemberAccess* _tmp129_;
				ValaCCodeFunctionCall* _tmp130_;
				ValaMethod* _tmp131_;
				gchar* _tmp132_;
				gchar* _tmp133_;
				ValaCCodeMemberAccess* _tmp134_;
				ValaCCodeMemberAccess* _tmp135_;
				_tmp112_ = m;
				_tmp113_ = vala_method_get_base_method (_tmp112_);
				_tmp114_ = _tmp113_;
				_tmp115_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp114_);
				_tmp116_ = _tmp115_;
				_tmp117_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp116_, VALA_TYPE_CLASS, ValaClass));
				base_class = _tmp117_;
				_tmp118_ = base_class;
				_tmp119_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp118_, NULL);
				_tmp120_ = _tmp119_;
				_tmp121_ = g_strdup_printf ("%s_GET_CLASS", _tmp120_);
				_tmp122_ = _tmp121_;
				_tmp123_ = vala_ccode_identifier_new (_tmp122_);
				_tmp124_ = _tmp123_;
				_tmp125_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp124_);
				_tmp126_ = _tmp125_;
				_vala_ccode_node_unref0 (_tmp124_);
				_g_free0 (_tmp122_);
				_g_free0 (_tmp120_);
				vclass = _tmp126_;
				_tmp127_ = vclass;
				_tmp128_ = pub_inst;
				vala_ccode_function_call_add_argument (_tmp127_, _tmp128_);
				_tmp129_ = expr;
				_tmp130_ = vclass;
				_tmp131_ = m;
				_tmp132_ = vala_get_ccode_vfunc_name (_tmp131_);
				_tmp133_ = _tmp132_;
				_tmp134_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp130_, _tmp133_);
				_tmp135_ = _tmp134_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp129_, (ValaCCodeExpression*) _tmp135_);
				_vala_ccode_node_unref0 (_tmp135_);
				_g_free0 (_tmp133_);
				_vala_ccode_node_unref0 (vclass);
				_vala_code_node_unref0 (base_class);
			} else {
				ValaMemberAccess* _tmp136_;
				ValaMethod* _tmp137_;
				ValaMethod* _tmp138_;
				ValaMethod* _tmp139_;
				gchar* _tmp140_;
				gchar* _tmp141_;
				ValaCCodeIdentifier* _tmp142_;
				ValaCCodeIdentifier* _tmp143_;
				_tmp136_ = expr;
				_tmp137_ = m;
				_tmp138_ = vala_method_get_base_method (_tmp137_);
				_tmp139_ = _tmp138_;
				_tmp140_ = vala_get_ccode_name ((ValaCodeNode*) _tmp139_);
				_tmp141_ = _tmp140_;
				_tmp142_ = vala_ccode_identifier_new (_tmp141_);
				_tmp143_ = _tmp142_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp136_, (ValaCCodeExpression*) _tmp143_);
				_vala_ccode_node_unref0 (_tmp143_);
				_g_free0 (_tmp141_);
			}
		} else {
			ValaMethod* _tmp144_;
			ValaMethod* _tmp145_;
			ValaMethod* _tmp146_;
			_tmp144_ = m;
			_tmp145_ = vala_method_get_base_interface_method (_tmp144_);
			_tmp146_ = _tmp145_;
			if (_tmp146_ != NULL) {
				ValaMemberAccess* _tmp147_;
				ValaMethod* _tmp148_;
				ValaMethod* _tmp149_;
				ValaMethod* _tmp150_;
				gchar* _tmp151_;
				gchar* _tmp152_;
				ValaCCodeIdentifier* _tmp153_;
				ValaCCodeIdentifier* _tmp154_;
				_tmp147_ = expr;
				_tmp148_ = m;
				_tmp149_ = vala_method_get_base_interface_method (_tmp148_);
				_tmp150_ = _tmp149_;
				_tmp151_ = vala_get_ccode_name ((ValaCodeNode*) _tmp150_);
				_tmp152_ = _tmp151_;
				_tmp153_ = vala_ccode_identifier_new (_tmp152_);
				_tmp154_ = _tmp153_;
				vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp147_, (ValaCCodeExpression*) _tmp154_);
				_vala_ccode_node_unref0 (_tmp154_);
				_g_free0 (_tmp152_);
			} else {
				ValaMethod* _tmp155_;
				_tmp155_ = m;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp155_, VALA_TYPE_CREATION_METHOD)) {
					ValaMemberAccess* _tmp156_;
					ValaMethod* _tmp157_;
					gchar* _tmp158_;
					gchar* _tmp159_;
					ValaCCodeIdentifier* _tmp160_;
					ValaCCodeIdentifier* _tmp161_;
					_tmp156_ = expr;
					_tmp157_ = m;
					_tmp158_ = vala_get_ccode_real_name ((ValaSymbol*) _tmp157_);
					_tmp159_ = _tmp158_;
					_tmp160_ = vala_ccode_identifier_new (_tmp159_);
					_tmp161_ = _tmp160_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp156_, (ValaCCodeExpression*) _tmp161_);
					_vala_ccode_node_unref0 (_tmp161_);
					_g_free0 (_tmp159_);
				} else {
					ValaMemberAccess* _tmp162_;
					ValaMethod* _tmp163_;
					gchar* _tmp164_;
					gchar* _tmp165_;
					ValaCCodeIdentifier* _tmp166_;
					ValaCCodeIdentifier* _tmp167_;
					_tmp162_ = expr;
					_tmp163_ = m;
					_tmp164_ = vala_get_ccode_name ((ValaCodeNode*) _tmp163_);
					_tmp165_ = _tmp164_;
					_tmp166_ = vala_ccode_identifier_new (_tmp165_);
					_tmp167_ = _tmp166_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp162_, (ValaCCodeExpression*) _tmp167_);
					_vala_ccode_node_unref0 (_tmp167_);
					_g_free0 (_tmp165_);
				}
			}
		}
		_tmp168_ = expr;
		_tmp169_ = vala_ccode_constant_new ("NULL");
		_tmp170_ = _tmp169_;
		vala_ccode_base_module_set_delegate_target_destroy_notify ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp168_, (ValaCCodeExpression*) _tmp170_);
		_vala_ccode_node_unref0 (_tmp170_);
		_tmp171_ = m;
		_tmp172_ = vala_method_get_binding (_tmp171_);
		_tmp173_ = _tmp172_;
		if (_tmp173_ == VALA_MEMBER_BINDING_STATIC) {
			ValaMemberAccess* _tmp174_;
			ValaCCodeConstant* _tmp175_;
			ValaCCodeConstant* _tmp176_;
			_tmp174_ = expr;
			_tmp175_ = vala_ccode_constant_new ("NULL");
			_tmp176_ = _tmp175_;
			vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp174_, (ValaCCodeExpression*) _tmp176_);
			_vala_ccode_node_unref0 (_tmp176_);
		} else {
			ValaMethod* _tmp177_;
			gboolean _tmp178_;
			gboolean _tmp179_;
			_tmp177_ = m;
			_tmp178_ = vala_method_get_is_async_callback (_tmp177_);
			_tmp179_ = _tmp178_;
			if (_tmp179_) {
				ValaMethod* _tmp180_;
				ValaMethod* _tmp181_;
				gboolean _tmp182_;
				gboolean _tmp183_;
				_tmp180_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
				_tmp181_ = _tmp180_;
				_tmp182_ = vala_method_get_closure (_tmp181_);
				_tmp183_ = _tmp182_;
				if (_tmp183_) {
					ValaBlock* block = NULL;
					ValaMethod* _tmp184_;
					ValaSymbol* _tmp185_;
					ValaSymbol* _tmp186_;
					ValaBlock* _tmp187_;
					ValaBlock* _tmp188_;
					ValaBlock* _tmp189_;
					ValaMemberAccess* _tmp190_;
					ValaBlock* _tmp191_;
					gint _tmp192_;
					gchar* _tmp193_;
					gchar* _tmp194_;
					ValaCCodeExpression* _tmp195_;
					ValaCCodeExpression* _tmp196_;
					ValaCCodeMemberAccess* _tmp197_;
					ValaCCodeMemberAccess* _tmp198_;
					_tmp184_ = m;
					_tmp185_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp184_);
					_tmp186_ = _tmp185_;
					_tmp187_ = vala_subroutine_get_body ((ValaSubroutine*) G_TYPE_CHECK_INSTANCE_CAST (_tmp186_, VALA_TYPE_METHOD, ValaMethod));
					_tmp188_ = _tmp187_;
					_tmp189_ = _vala_code_node_ref0 (_tmp188_);
					block = _tmp189_;
					_tmp190_ = expr;
					_tmp191_ = block;
					_tmp192_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp191_);
					_tmp193_ = g_strdup_printf ("_data%d_", _tmp192_);
					_tmp194_ = _tmp193_;
					_tmp195_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp194_);
					_tmp196_ = _tmp195_;
					_tmp197_ = vala_ccode_member_access_new_pointer (_tmp196_, "_async_data_");
					_tmp198_ = _tmp197_;
					vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp190_, (ValaCCodeExpression*) _tmp198_);
					_vala_ccode_node_unref0 (_tmp198_);
					_vala_ccode_node_unref0 (_tmp196_);
					_g_free0 (_tmp194_);
					_vala_code_node_unref0 (block);
				} else {
					ValaMemberAccess* _tmp199_;
					ValaCCodeIdentifier* _tmp200_;
					ValaCCodeIdentifier* _tmp201_;
					_tmp199_ = expr;
					_tmp200_ = vala_ccode_identifier_new ("_data_");
					_tmp201_ = _tmp200_;
					vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp199_, (ValaCCodeExpression*) _tmp201_);
					_vala_ccode_node_unref0 (_tmp201_);
				}
			} else {
				gboolean _tmp202_ = FALSE;
				ValaMemberAccess* _tmp203_;
				ValaExpression* _tmp204_;
				ValaExpression* _tmp205_;
				_tmp203_ = expr;
				_tmp204_ = vala_member_access_get_inner (_tmp203_);
				_tmp205_ = _tmp204_;
				if (_tmp205_ != NULL) {
					ValaMemberAccess* _tmp206_;
					gboolean _tmp207_;
					gboolean _tmp208_;
					_tmp206_ = expr;
					_tmp207_ = vala_member_access_get_prototype_access (_tmp206_);
					_tmp208_ = _tmp207_;
					_tmp202_ = !_tmp208_;
				} else {
					_tmp202_ = FALSE;
				}
				if (_tmp202_) {
					ValaCCodeExpression* delegate_target = NULL;
					ValaMemberAccess* _tmp209_;
					ValaExpression* _tmp210_;
					ValaExpression* _tmp211_;
					ValaCCodeExpression* _tmp212_;
					ValaMemberAccess* _tmp213_;
					ValaDataType* _tmp214_;
					ValaDataType* _tmp215_;
					ValaDelegateType* _tmp216_;
					gboolean _tmp217_ = FALSE;
					gboolean _tmp218_ = FALSE;
					gboolean _tmp219_ = FALSE;
					ValaMemberAccess* _tmp220_;
					ValaDataType* _tmp221_;
					ValaDataType* _tmp222_;
					gboolean _tmp223_;
					gboolean _tmp224_;
					ValaMemberAccess* _tmp269_;
					ValaCCodeExpression* _tmp270_;
					_tmp209_ = expr;
					_tmp210_ = vala_member_access_get_inner (_tmp209_);
					_tmp211_ = _tmp210_;
					_tmp212_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp211_);
					delegate_target = G_TYPE_CHECK_INSTANCE_CAST (_tmp212_, VALA_TYPE_CCODE_EXPRESSION, ValaCCodeExpression);
					_tmp213_ = expr;
					_tmp214_ = vala_expression_get_target_type ((ValaExpression*) _tmp213_);
					_tmp215_ = _tmp214_;
					_tmp216_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp215_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp215_) : NULL);
					_vala_code_node_unref0 (delegate_type);
					delegate_type = _tmp216_;
					_tmp220_ = expr;
					_tmp221_ = vala_expression_get_value_type ((ValaExpression*) _tmp220_);
					_tmp222_ = _tmp221_;
					_tmp223_ = vala_data_type_get_value_owned (_tmp222_);
					_tmp224_ = _tmp223_;
					if (_tmp224_) {
						_tmp219_ = TRUE;
					} else {
						gboolean _tmp225_ = FALSE;
						ValaDelegateType* _tmp226_;
						_tmp226_ = delegate_type;
						if (_tmp226_ != NULL) {
							ValaDelegateType* _tmp227_;
							gboolean _tmp228_;
							gboolean _tmp229_;
							_tmp227_ = delegate_type;
							_tmp228_ = vala_delegate_type_get_is_called_once (_tmp227_);
							_tmp229_ = _tmp228_;
							_tmp225_ = _tmp229_;
						} else {
							_tmp225_ = FALSE;
						}
						_tmp219_ = _tmp225_;
					}
					if (_tmp219_) {
						ValaMemberAccess* _tmp230_;
						ValaExpression* _tmp231_;
						ValaExpression* _tmp232_;
						ValaDataType* _tmp233_;
						ValaDataType* _tmp234_;
						ValaTypeSymbol* _tmp235_;
						ValaTypeSymbol* _tmp236_;
						_tmp230_ = expr;
						_tmp231_ = vala_member_access_get_inner (_tmp230_);
						_tmp232_ = _tmp231_;
						_tmp233_ = vala_expression_get_value_type (_tmp232_);
						_tmp234_ = _tmp233_;
						_tmp235_ = vala_data_type_get_data_type (_tmp234_);
						_tmp236_ = _tmp235_;
						_tmp218_ = _tmp236_ != NULL;
					} else {
						_tmp218_ = FALSE;
					}
					if (_tmp218_) {
						ValaMemberAccess* _tmp237_;
						ValaExpression* _tmp238_;
						ValaExpression* _tmp239_;
						ValaDataType* _tmp240_;
						ValaDataType* _tmp241_;
						ValaTypeSymbol* _tmp242_;
						ValaTypeSymbol* _tmp243_;
						gboolean _tmp244_;
						_tmp237_ = expr;
						_tmp238_ = vala_member_access_get_inner (_tmp237_);
						_tmp239_ = _tmp238_;
						_tmp240_ = vala_expression_get_value_type (_tmp239_);
						_tmp241_ = _tmp240_;
						_tmp242_ = vala_data_type_get_data_type (_tmp241_);
						_tmp243_ = _tmp242_;
						_tmp244_ = vala_is_reference_counting (_tmp243_);
						_tmp217_ = _tmp244_;
					} else {
						_tmp217_ = FALSE;
					}
					if (_tmp217_) {
						ValaCCodeFunctionCall* ref_call = NULL;
						ValaMemberAccess* _tmp245_;
						ValaExpression* _tmp246_;
						ValaExpression* _tmp247_;
						ValaDataType* _tmp248_;
						ValaDataType* _tmp249_;
						ValaMemberAccess* _tmp250_;
						ValaSourceReference* _tmp251_;
						ValaSourceReference* _tmp252_;
						ValaCCodeExpression* _tmp253_;
						ValaCCodeExpression* _tmp254_;
						ValaCCodeFunctionCall* _tmp255_;
						ValaCCodeFunctionCall* _tmp256_;
						ValaCCodeFunctionCall* _tmp257_;
						ValaCCodeExpression* _tmp258_;
						ValaCCodeFunctionCall* _tmp259_;
						ValaCCodeExpression* _tmp260_;
						ValaMemberAccess* _tmp261_;
						ValaMemberAccess* _tmp262_;
						ValaExpression* _tmp263_;
						ValaExpression* _tmp264_;
						ValaDataType* _tmp265_;
						ValaDataType* _tmp266_;
						ValaCCodeExpression* _tmp267_;
						ValaCCodeExpression* _tmp268_;
						_tmp245_ = expr;
						_tmp246_ = vala_member_access_get_inner (_tmp245_);
						_tmp247_ = _tmp246_;
						_tmp248_ = vala_expression_get_value_type (_tmp247_);
						_tmp249_ = _tmp248_;
						_tmp250_ = expr;
						_tmp251_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp250_);
						_tmp252_ = _tmp251_;
						_tmp253_ = vala_ccode_base_module_get_dup_func_expression ((ValaCCodeBaseModule*) self, _tmp249_, _tmp252_, FALSE);
						_tmp254_ = _tmp253_;
						_tmp255_ = vala_ccode_function_call_new (_tmp254_);
						_tmp256_ = _tmp255_;
						_vala_ccode_node_unref0 (_tmp254_);
						ref_call = _tmp256_;
						_tmp257_ = ref_call;
						_tmp258_ = delegate_target;
						vala_ccode_function_call_add_argument (_tmp257_, _tmp258_);
						_tmp259_ = ref_call;
						_tmp260_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp259_);
						_vala_ccode_node_unref0 (delegate_target);
						delegate_target = _tmp260_;
						_tmp261_ = expr;
						_tmp262_ = expr;
						_tmp263_ = vala_member_access_get_inner (_tmp262_);
						_tmp264_ = _tmp263_;
						_tmp265_ = vala_expression_get_value_type (_tmp264_);
						_tmp266_ = _tmp265_;
						_tmp267_ = vala_ccode_base_module_get_destroy_func_expression ((ValaCCodeBaseModule*) self, _tmp266_, FALSE);
						_tmp268_ = _tmp267_;
						vala_ccode_base_module_set_delegate_target_destroy_notify ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp261_, _tmp268_);
						_vala_ccode_node_unref0 (_tmp268_);
						_vala_ccode_node_unref0 (ref_call);
					}
					_tmp269_ = expr;
					_tmp270_ = delegate_target;
					vala_ccode_base_module_set_delegate_target ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp269_, _tmp270_);
					_vala_ccode_node_unref0 (delegate_target);
				}
			}
		}
		_vala_code_node_unref0 (m);
	} else {
		ValaMemberAccess* _tmp271_;
		ValaSymbol* _tmp272_;
		ValaSymbol* _tmp273_;
		_tmp271_ = expr;
		_tmp272_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp271_);
		_tmp273_ = _tmp272_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp273_, VALA_TYPE_ARRAY_LENGTH_FIELD)) {
			gboolean _tmp274_ = FALSE;
			ValaMemberAccess* _tmp275_;
			ValaDataType* _tmp276_;
			ValaDataType* _tmp277_;
			ValaMemberAccess* _tmp284_;
			ValaMemberAccess* _tmp285_;
			ValaExpression* _tmp286_;
			ValaExpression* _tmp287_;
			ValaCCodeExpression* _tmp288_;
			ValaCCodeExpression* _tmp289_;
			_tmp275_ = expr;
			_tmp276_ = vala_expression_get_value_type ((ValaExpression*) _tmp275_);
			_tmp277_ = _tmp276_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp277_, VALA_TYPE_ARRAY_TYPE)) {
				ValaMemberAccess* _tmp278_;
				ValaCodeNode* _tmp279_;
				ValaCodeNode* _tmp280_;
				_tmp278_ = expr;
				_tmp279_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp278_);
				_tmp280_ = _tmp279_;
				_tmp274_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp280_, VALA_TYPE_ELEMENT_ACCESS);
			} else {
				_tmp274_ = FALSE;
			}
			if (_tmp274_) {
				ValaMemberAccess* _tmp281_;
				ValaSourceReference* _tmp282_;
				ValaSourceReference* _tmp283_;
				_tmp281_ = expr;
				_tmp282_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp281_);
				_tmp283_ = _tmp282_;
				vala_report_error (_tmp283_, "unsupported use of length field of multi-dimensional array");
			}
			_tmp284_ = expr;
			_tmp285_ = expr;
			_tmp286_ = vala_member_access_get_inner (_tmp285_);
			_tmp287_ = _tmp286_;
			_tmp288_ = vala_ccode_base_module_get_array_length_cexpression ((ValaCCodeBaseModule*) self, _tmp287_, 1);
			_tmp289_ = _tmp288_;
			vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp284_, _tmp289_);
			_vala_ccode_node_unref0 (_tmp289_);
		} else {
			ValaMemberAccess* _tmp290_;
			ValaSymbol* _tmp291_;
			ValaSymbol* _tmp292_;
			_tmp290_ = expr;
			_tmp291_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp290_);
			_tmp292_ = _tmp291_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp292_, VALA_TYPE_FIELD)) {
				ValaField* field = NULL;
				ValaMemberAccess* _tmp293_;
				ValaSymbol* _tmp294_;
				ValaSymbol* _tmp295_;
				ValaField* _tmp296_;
				ValaMemberAccess* _tmp297_;
				gboolean _tmp298_;
				gboolean _tmp299_;
				_tmp293_ = expr;
				_tmp294_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp293_);
				_tmp295_ = _tmp294_;
				_tmp296_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp295_, VALA_TYPE_FIELD, ValaField));
				field = _tmp296_;
				_tmp297_ = expr;
				_tmp298_ = vala_expression_get_lvalue ((ValaExpression*) _tmp297_);
				_tmp299_ = _tmp298_;
				if (_tmp299_) {
					ValaTargetValue* _tmp300_ = NULL;
					ValaMemberAccess* _tmp301_;
					ValaExpression* _tmp302_;
					ValaExpression* _tmp303_;
					ValaMemberAccess* _tmp309_;
					ValaField* _tmp310_;
					ValaTargetValue* _tmp311_;
					ValaTargetValue* _tmp312_;
					_tmp301_ = expr;
					_tmp302_ = vala_member_access_get_inner (_tmp301_);
					_tmp303_ = _tmp302_;
					if (_tmp303_ != NULL) {
						ValaMemberAccess* _tmp304_;
						ValaExpression* _tmp305_;
						ValaExpression* _tmp306_;
						ValaTargetValue* _tmp307_;
						ValaTargetValue* _tmp308_;
						_tmp304_ = expr;
						_tmp305_ = vala_member_access_get_inner (_tmp304_);
						_tmp306_ = _tmp305_;
						_tmp307_ = vala_expression_get_target_value (_tmp306_);
						_tmp308_ = _tmp307_;
						_tmp300_ = _tmp308_;
					} else {
						_tmp300_ = NULL;
					}
					_tmp309_ = expr;
					_tmp310_ = field;
					_tmp311_ = vala_ccode_base_module_get_field_cvalue ((ValaCCodeBaseModule*) self, _tmp310_, _tmp300_);
					_tmp312_ = _tmp311_;
					vala_expression_set_target_value ((ValaExpression*) _tmp309_, _tmp312_);
					_vala_target_value_unref0 (_tmp312_);
				} else {
					ValaTargetValue* _tmp313_ = NULL;
					ValaMemberAccess* _tmp314_;
					ValaExpression* _tmp315_;
					ValaExpression* _tmp316_;
					ValaMemberAccess* _tmp322_;
					ValaField* _tmp323_;
					ValaTargetValue* _tmp324_;
					ValaTargetValue* _tmp325_;
					_tmp314_ = expr;
					_tmp315_ = vala_member_access_get_inner (_tmp314_);
					_tmp316_ = _tmp315_;
					if (_tmp316_ != NULL) {
						ValaMemberAccess* _tmp317_;
						ValaExpression* _tmp318_;
						ValaExpression* _tmp319_;
						ValaTargetValue* _tmp320_;
						ValaTargetValue* _tmp321_;
						_tmp317_ = expr;
						_tmp318_ = vala_member_access_get_inner (_tmp317_);
						_tmp319_ = _tmp318_;
						_tmp320_ = vala_expression_get_target_value (_tmp319_);
						_tmp321_ = _tmp320_;
						_tmp313_ = _tmp321_;
					} else {
						_tmp313_ = NULL;
					}
					_tmp322_ = expr;
					_tmp323_ = field;
					_tmp324_ = vala_code_generator_load_field ((ValaCodeGenerator*) self, _tmp323_, _tmp313_);
					_tmp325_ = _tmp324_;
					vala_expression_set_target_value ((ValaExpression*) _tmp322_, _tmp325_);
					_vala_target_value_unref0 (_tmp325_);
				}
				_vala_code_node_unref0 (field);
			} else {
				ValaMemberAccess* _tmp326_;
				ValaSymbol* _tmp327_;
				ValaSymbol* _tmp328_;
				_tmp326_ = expr;
				_tmp327_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp326_);
				_tmp328_ = _tmp327_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp328_, VALA_TYPE_ENUM_VALUE)) {
					ValaEnumValue* ev = NULL;
					ValaMemberAccess* _tmp329_;
					ValaSymbol* _tmp330_;
					ValaSymbol* _tmp331_;
					ValaEnumValue* _tmp332_;
					ValaEnumValue* _tmp333_;
					ValaSymbol* _tmp334_;
					ValaSymbol* _tmp335_;
					ValaCCodeFile* _tmp336_;
					ValaMemberAccess* _tmp337_;
					ValaEnumValue* _tmp338_;
					gchar* _tmp339_;
					gchar* _tmp340_;
					ValaCCodeConstant* _tmp341_;
					ValaCCodeConstant* _tmp342_;
					_tmp329_ = expr;
					_tmp330_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp329_);
					_tmp331_ = _tmp330_;
					_tmp332_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp331_, VALA_TYPE_ENUM_VALUE, ValaEnumValue));
					ev = _tmp332_;
					_tmp333_ = ev;
					_tmp334_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp333_);
					_tmp335_ = _tmp334_;
					_tmp336_ = ((ValaCCodeBaseModule*) self)->cfile;
					vala_ccode_base_module_generate_enum_declaration ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp335_, VALA_TYPE_ENUM, ValaEnum), _tmp336_);
					_tmp337_ = expr;
					_tmp338_ = ev;
					_tmp339_ = vala_get_ccode_name ((ValaCodeNode*) _tmp338_);
					_tmp340_ = _tmp339_;
					_tmp341_ = vala_ccode_constant_new (_tmp340_);
					_tmp342_ = _tmp341_;
					vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp337_, (ValaCCodeExpression*) _tmp342_);
					_vala_ccode_node_unref0 (_tmp342_);
					_g_free0 (_tmp340_);
					_vala_code_node_unref0 (ev);
				} else {
					ValaMemberAccess* _tmp343_;
					ValaSymbol* _tmp344_;
					ValaSymbol* _tmp345_;
					_tmp343_ = expr;
					_tmp344_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp343_);
					_tmp345_ = _tmp344_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp345_, VALA_TYPE_CONSTANT)) {
						ValaConstant* c = NULL;
						ValaMemberAccess* _tmp346_;
						ValaSymbol* _tmp347_;
						ValaSymbol* _tmp348_;
						ValaConstant* _tmp349_;
						gboolean _tmp350_ = FALSE;
						gboolean _tmp351_ = FALSE;
						ValaConstant* _tmp352_;
						ValaSourceReference* _tmp353_;
						ValaSourceReference* _tmp354_;
						ValaConstant* _tmp368_;
						ValaCCodeFile* _tmp369_;
						gchar* fn = NULL;
						ValaConstant* _tmp370_;
						gchar* _tmp371_;
						const gchar* _tmp372_;
						ValaArrayType* _tmp419_;
						_tmp346_ = expr;
						_tmp347_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp346_);
						_tmp348_ = _tmp347_;
						_tmp349_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp348_, VALA_TYPE_CONSTANT, ValaConstant));
						c = _tmp349_;
						_tmp352_ = c;
						_tmp353_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp352_);
						_tmp354_ = _tmp353_;
						if (_tmp354_ != NULL) {
							ValaMemberAccess* _tmp355_;
							ValaSourceReference* _tmp356_;
							ValaSourceReference* _tmp357_;
							_tmp355_ = expr;
							_tmp356_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp355_);
							_tmp357_ = _tmp356_;
							_tmp351_ = _tmp357_ != NULL;
						} else {
							_tmp351_ = FALSE;
						}
						if (_tmp351_) {
							ValaConstant* _tmp358_;
							ValaSourceReference* _tmp359_;
							ValaSourceReference* _tmp360_;
							ValaSourceFile* _tmp361_;
							ValaSourceFile* _tmp362_;
							ValaMemberAccess* _tmp363_;
							ValaSourceReference* _tmp364_;
							ValaSourceReference* _tmp365_;
							ValaSourceFile* _tmp366_;
							ValaSourceFile* _tmp367_;
							_tmp358_ = c;
							_tmp359_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp358_);
							_tmp360_ = _tmp359_;
							_tmp361_ = vala_source_reference_get_file (_tmp360_);
							_tmp362_ = _tmp361_;
							_tmp363_ = expr;
							_tmp364_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp363_);
							_tmp365_ = _tmp364_;
							_tmp366_ = vala_source_reference_get_file (_tmp365_);
							_tmp367_ = _tmp366_;
							_tmp350_ = _tmp362_ == _tmp367_;
						} else {
							_tmp350_ = FALSE;
						}
						_tmp368_ = c;
						_tmp369_ = ((ValaCCodeBaseModule*) self)->cfile;
						vala_ccode_base_module_generate_constant_declaration ((ValaCCodeBaseModule*) self, _tmp368_, _tmp369_, _tmp350_);
						_tmp370_ = c;
						_tmp371_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp370_);
						fn = _tmp371_;
						_tmp372_ = fn;
						if (g_strcmp0 (_tmp372_, "GLib.Log.FILE") == 0) {
							gchar* s = NULL;
							ValaMemberAccess* _tmp373_;
							ValaSourceReference* _tmp374_;
							ValaSourceReference* _tmp375_;
							ValaSourceFile* _tmp376_;
							ValaSourceFile* _tmp377_;
							const gchar* _tmp378_;
							const gchar* _tmp379_;
							gchar* _tmp380_;
							ValaMemberAccess* _tmp381_;
							const gchar* _tmp382_;
							gchar* _tmp383_;
							gchar* _tmp384_;
							ValaCCodeConstant* _tmp385_;
							ValaCCodeConstant* _tmp386_;
							_tmp373_ = expr;
							_tmp374_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp373_);
							_tmp375_ = _tmp374_;
							_tmp376_ = vala_source_reference_get_file (_tmp375_);
							_tmp377_ = _tmp376_;
							_tmp378_ = vala_source_file_get_filename (_tmp377_);
							_tmp379_ = _tmp378_;
							_tmp380_ = g_path_get_basename (_tmp379_);
							s = _tmp380_;
							_tmp381_ = expr;
							_tmp382_ = s;
							_tmp383_ = g_strdup_printf ("\"%s\"", _tmp382_);
							_tmp384_ = _tmp383_;
							_tmp385_ = vala_ccode_constant_new (_tmp384_);
							_tmp386_ = _tmp385_;
							vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp381_, (ValaCCodeExpression*) _tmp386_);
							_vala_ccode_node_unref0 (_tmp386_);
							_g_free0 (_tmp384_);
							_g_free0 (s);
						} else {
							const gchar* _tmp387_;
							_tmp387_ = fn;
							if (g_strcmp0 (_tmp387_, "GLib.Log.LINE") == 0) {
								gint i = 0;
								ValaMemberAccess* _tmp388_;
								ValaSourceReference* _tmp389_;
								ValaSourceReference* _tmp390_;
								ValaSourceLocation _tmp391_ = {0};
								ValaSourceLocation _tmp392_;
								gint _tmp393_;
								ValaMemberAccess* _tmp394_;
								gint _tmp395_;
								gchar* _tmp396_;
								gchar* _tmp397_;
								ValaCCodeConstant* _tmp398_;
								ValaCCodeConstant* _tmp399_;
								_tmp388_ = expr;
								_tmp389_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp388_);
								_tmp390_ = _tmp389_;
								vala_source_reference_get_begin (_tmp390_, &_tmp391_);
								_tmp392_ = _tmp391_;
								_tmp393_ = _tmp392_.line;
								i = _tmp393_;
								_tmp394_ = expr;
								_tmp395_ = i;
								_tmp396_ = g_strdup_printf ("%d", _tmp395_);
								_tmp397_ = _tmp396_;
								_tmp398_ = vala_ccode_constant_new (_tmp397_);
								_tmp399_ = _tmp398_;
								vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp394_, (ValaCCodeExpression*) _tmp399_);
								_vala_ccode_node_unref0 (_tmp399_);
								_g_free0 (_tmp397_);
							} else {
								const gchar* _tmp400_;
								_tmp400_ = fn;
								if (g_strcmp0 (_tmp400_, "GLib.Log.METHOD") == 0) {
									gchar* s = NULL;
									gchar* _tmp401_;
									ValaMethod* _tmp402_;
									ValaMethod* _tmp403_;
									ValaMemberAccess* _tmp407_;
									const gchar* _tmp408_;
									gchar* _tmp409_;
									gchar* _tmp410_;
									ValaCCodeConstant* _tmp411_;
									ValaCCodeConstant* _tmp412_;
									_tmp401_ = g_strdup ("");
									s = _tmp401_;
									_tmp402_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
									_tmp403_ = _tmp402_;
									if (_tmp403_ != NULL) {
										ValaMethod* _tmp404_;
										ValaMethod* _tmp405_;
										gchar* _tmp406_;
										_tmp404_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
										_tmp405_ = _tmp404_;
										_tmp406_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp405_);
										_g_free0 (s);
										s = _tmp406_;
									}
									_tmp407_ = expr;
									_tmp408_ = s;
									_tmp409_ = g_strdup_printf ("\"%s\"", _tmp408_);
									_tmp410_ = _tmp409_;
									_tmp411_ = vala_ccode_constant_new (_tmp410_);
									_tmp412_ = _tmp411_;
									vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp407_, (ValaCCodeExpression*) _tmp412_);
									_vala_ccode_node_unref0 (_tmp412_);
									_g_free0 (_tmp410_);
									_g_free0 (s);
								} else {
									ValaMemberAccess* _tmp413_;
									ValaConstant* _tmp414_;
									gchar* _tmp415_;
									gchar* _tmp416_;
									ValaCCodeIdentifier* _tmp417_;
									ValaCCodeIdentifier* _tmp418_;
									_tmp413_ = expr;
									_tmp414_ = c;
									_tmp415_ = vala_get_ccode_name ((ValaCodeNode*) _tmp414_);
									_tmp416_ = _tmp415_;
									_tmp417_ = vala_ccode_identifier_new (_tmp416_);
									_tmp418_ = _tmp417_;
									vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp413_, (ValaCCodeExpression*) _tmp418_);
									_vala_ccode_node_unref0 (_tmp418_);
									_g_free0 (_tmp416_);
								}
							}
						}
						_tmp419_ = array_type;
						if (_tmp419_ != NULL) {
							ValaCCodeFunctionCall* ccall = NULL;
							ValaCCodeIdentifier* _tmp420_;
							ValaCCodeIdentifier* _tmp421_;
							ValaCCodeFunctionCall* _tmp422_;
							ValaCCodeFunctionCall* _tmp423_;
							ValaCCodeFunctionCall* _tmp424_;
							ValaConstant* _tmp425_;
							gchar* _tmp426_;
							gchar* _tmp427_;
							ValaCCodeIdentifier* _tmp428_;
							ValaCCodeIdentifier* _tmp429_;
							ValaMemberAccess* _tmp430_;
							ValaCCodeFunctionCall* _tmp431_;
							_tmp420_ = vala_ccode_identifier_new ("G_N_ELEMENTS");
							_tmp421_ = _tmp420_;
							_tmp422_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp421_);
							_tmp423_ = _tmp422_;
							_vala_ccode_node_unref0 (_tmp421_);
							ccall = _tmp423_;
							_tmp424_ = ccall;
							_tmp425_ = c;
							_tmp426_ = vala_get_ccode_name ((ValaCodeNode*) _tmp425_);
							_tmp427_ = _tmp426_;
							_tmp428_ = vala_ccode_identifier_new (_tmp427_);
							_tmp429_ = _tmp428_;
							vala_ccode_function_call_add_argument (_tmp424_, (ValaCCodeExpression*) _tmp429_);
							_vala_ccode_node_unref0 (_tmp429_);
							_g_free0 (_tmp427_);
							_tmp430_ = expr;
							_tmp431_ = ccall;
							vala_ccode_base_module_append_array_length ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp430_, (ValaCCodeExpression*) _tmp431_);
							_vala_ccode_node_unref0 (ccall);
						}
						_g_free0 (fn);
						_vala_code_node_unref0 (c);
					} else {
						ValaMemberAccess* _tmp432_;
						ValaSymbol* _tmp433_;
						ValaSymbol* _tmp434_;
						_tmp432_ = expr;
						_tmp433_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp432_);
						_tmp434_ = _tmp433_;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp434_, VALA_TYPE_PROPERTY)) {
							ValaProperty* prop = NULL;
							ValaMemberAccess* _tmp435_;
							ValaSymbol* _tmp436_;
							ValaSymbol* _tmp437_;
							ValaProperty* _tmp438_;
							ValaProperty* _tmp439_;
							ValaMemberAccess* _tmp454_;
							ValaExpression* _tmp455_;
							ValaExpression* _tmp456_;
							ValaMemberAccess* _tmp841_;
							ValaTargetValue* _tmp842_;
							ValaTargetValue* _tmp843_;
							ValaMemberAccess* _tmp844_;
							ValaDataType* _tmp845_;
							ValaDataType* _tmp846_;
							ValaMemberAccess* _tmp847_;
							ValaMemberAccess* _tmp848_;
							ValaTargetValue* _tmp849_;
							ValaTargetValue* _tmp850_;
							ValaMemberAccess* _tmp851_;
							ValaTargetValue* _tmp852_;
							ValaTargetValue* _tmp853_;
							_tmp435_ = expr;
							_tmp436_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp435_);
							_tmp437_ = _tmp436_;
							_tmp438_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp437_, VALA_TYPE_PROPERTY, ValaProperty));
							prop = _tmp438_;
							_tmp439_ = prop;
							if (!G_TYPE_CHECK_INSTANCE_TYPE (_tmp439_, VALA_TYPE_DYNAMIC_PROPERTY)) {
								ValaProperty* _tmp440_;
								ValaPropertyAccessor* _tmp441_;
								ValaPropertyAccessor* _tmp442_;
								ValaCCodeFile* _tmp443_;
								gboolean _tmp444_ = FALSE;
								ValaProperty* _tmp445_;
								gboolean _tmp446_;
								gboolean _tmp447_;
								_tmp440_ = prop;
								_tmp441_ = vala_property_get_get_accessor (_tmp440_);
								_tmp442_ = _tmp441_;
								_tmp443_ = ((ValaCCodeBaseModule*) self)->cfile;
								vala_ccode_base_module_generate_property_accessor_declaration ((ValaCCodeBaseModule*) self, _tmp442_, _tmp443_);
								_tmp445_ = prop;
								_tmp446_ = vala_symbol_get_external ((ValaSymbol*) _tmp445_);
								_tmp447_ = _tmp446_;
								if (!_tmp447_) {
									ValaProperty* _tmp448_;
									gboolean _tmp449_;
									gboolean _tmp450_;
									_tmp448_ = prop;
									_tmp449_ = vala_symbol_get_external_package ((ValaSymbol*) _tmp448_);
									_tmp450_ = _tmp449_;
									_tmp444_ = _tmp450_;
								} else {
									_tmp444_ = FALSE;
								}
								if (_tmp444_) {
									ValaProperty* _tmp451_;
									gboolean _tmp452_;
									_tmp451_ = prop;
									_tmp452_ = vala_ccode_base_module_add_generated_external_symbol ((ValaCCodeBaseModule*) self, (ValaSymbol*) _tmp451_);
									if (_tmp452_) {
										ValaProperty* _tmp453_;
										_tmp453_ = prop;
										vala_code_visitor_visit_property ((ValaCodeVisitor*) self, _tmp453_);
									}
								}
							}
							_tmp454_ = expr;
							_tmp455_ = vala_member_access_get_inner (_tmp454_);
							_tmp456_ = _tmp455_;
							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp456_, VALA_TYPE_BASE_ACCESS)) {
								ValaProperty* base_prop = NULL;
								ValaProperty* _tmp457_;
								ValaProperty* _tmp458_;
								ValaProperty* _tmp459_;
								ValaProperty* _tmp460_;
								ValaProperty* _tmp461_;
								ValaProperty* _tmp473_;
								ValaSymbol* _tmp474_;
								ValaSymbol* _tmp475_;
								_tmp457_ = prop;
								_tmp458_ = _vala_code_node_ref0 (_tmp457_);
								base_prop = _tmp458_;
								_tmp459_ = prop;
								_tmp460_ = vala_property_get_base_property (_tmp459_);
								_tmp461_ = _tmp460_;
								if (_tmp461_ != NULL) {
									ValaProperty* _tmp462_;
									ValaProperty* _tmp463_;
									ValaProperty* _tmp464_;
									ValaProperty* _tmp465_;
									_tmp462_ = prop;
									_tmp463_ = vala_property_get_base_property (_tmp462_);
									_tmp464_ = _tmp463_;
									_tmp465_ = _vala_code_node_ref0 (_tmp464_);
									_vala_code_node_unref0 (base_prop);
									base_prop = _tmp465_;
								} else {
									ValaProperty* _tmp466_;
									ValaProperty* _tmp467_;
									ValaProperty* _tmp468_;
									_tmp466_ = prop;
									_tmp467_ = vala_property_get_base_interface_property (_tmp466_);
									_tmp468_ = _tmp467_;
									if (_tmp468_ != NULL) {
										ValaProperty* _tmp469_;
										ValaProperty* _tmp470_;
										ValaProperty* _tmp471_;
										ValaProperty* _tmp472_;
										_tmp469_ = prop;
										_tmp470_ = vala_property_get_base_interface_property (_tmp469_);
										_tmp471_ = _tmp470_;
										_tmp472_ = _vala_code_node_ref0 (_tmp471_);
										_vala_code_node_unref0 (base_prop);
										base_prop = _tmp472_;
									}
								}
								_tmp473_ = base_prop;
								_tmp474_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp473_);
								_tmp475_ = _tmp474_;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp475_, VALA_TYPE_CLASS)) {
									ValaClass* base_class = NULL;
									ValaProperty* _tmp476_;
									ValaSymbol* _tmp477_;
									ValaSymbol* _tmp478_;
									ValaClass* _tmp479_;
									ValaCCodeFunctionCall* vcast = NULL;
									ValaClass* _tmp480_;
									gchar* _tmp481_;
									gchar* _tmp482_;
									gchar* _tmp483_;
									gchar* _tmp484_;
									ValaCCodeIdentifier* _tmp485_;
									ValaCCodeIdentifier* _tmp486_;
									ValaCCodeFunctionCall* _tmp487_;
									ValaCCodeFunctionCall* _tmp488_;
									ValaCCodeFunctionCall* _tmp489_;
									ValaClass* _tmp490_;
									ValaClass* _tmp491_;
									gchar* _tmp492_;
									gchar* _tmp493_;
									gchar* _tmp494_;
									gchar* _tmp495_;
									ValaCCodeIdentifier* _tmp496_;
									ValaCCodeIdentifier* _tmp497_;
									ValaCCodeFunctionCall* ccall = NULL;
									ValaCCodeFunctionCall* _tmp498_;
									ValaProperty* _tmp499_;
									const gchar* _tmp500_;
									const gchar* _tmp501_;
									gchar* _tmp502_;
									gchar* _tmp503_;
									ValaCCodeMemberAccess* _tmp504_;
									ValaCCodeMemberAccess* _tmp505_;
									ValaCCodeFunctionCall* _tmp506_;
									ValaCCodeFunctionCall* _tmp507_;
									ValaCCodeFunctionCall* _tmp508_;
									ValaMemberAccess* _tmp509_;
									ValaExpression* _tmp510_;
									ValaExpression* _tmp511_;
									ValaCCodeExpression* _tmp512_;
									ValaCCodeExpression* _tmp513_;
									ValaProperty* _tmp514_;
									ValaDataType* _tmp515_;
									ValaDataType* _tmp516_;
									gboolean _tmp517_;
									_tmp476_ = base_prop;
									_tmp477_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp476_);
									_tmp478_ = _tmp477_;
									_tmp479_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp478_, VALA_TYPE_CLASS, ValaClass));
									base_class = _tmp479_;
									_tmp480_ = base_class;
									_tmp481_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp480_, NULL);
									_tmp482_ = _tmp481_;
									_tmp483_ = g_strdup_printf ("%s_CLASS", _tmp482_);
									_tmp484_ = _tmp483_;
									_tmp485_ = vala_ccode_identifier_new (_tmp484_);
									_tmp486_ = _tmp485_;
									_tmp487_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp486_);
									_tmp488_ = _tmp487_;
									_vala_ccode_node_unref0 (_tmp486_);
									_g_free0 (_tmp484_);
									_g_free0 (_tmp482_);
									vcast = _tmp488_;
									_tmp489_ = vcast;
									_tmp490_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
									_tmp491_ = _tmp490_;
									_tmp492_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp491_, NULL);
									_tmp493_ = _tmp492_;
									_tmp494_ = g_strdup_printf ("%s_parent_class", _tmp493_);
									_tmp495_ = _tmp494_;
									_tmp496_ = vala_ccode_identifier_new (_tmp495_);
									_tmp497_ = _tmp496_;
									vala_ccode_function_call_add_argument (_tmp489_, (ValaCCodeExpression*) _tmp497_);
									_vala_ccode_node_unref0 (_tmp497_);
									_g_free0 (_tmp495_);
									_g_free0 (_tmp493_);
									_tmp498_ = vcast;
									_tmp499_ = prop;
									_tmp500_ = vala_symbol_get_name ((ValaSymbol*) _tmp499_);
									_tmp501_ = _tmp500_;
									_tmp502_ = g_strdup_printf ("get_%s", _tmp501_);
									_tmp503_ = _tmp502_;
									_tmp504_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp498_, _tmp503_);
									_tmp505_ = _tmp504_;
									_tmp506_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp505_);
									_tmp507_ = _tmp506_;
									_vala_ccode_node_unref0 (_tmp505_);
									_g_free0 (_tmp503_);
									ccall = _tmp507_;
									_tmp508_ = ccall;
									_tmp509_ = expr;
									_tmp510_ = vala_member_access_get_inner (_tmp509_);
									_tmp511_ = _tmp510_;
									_tmp512_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp511_);
									_tmp513_ = _tmp512_;
									vala_ccode_function_call_add_argument (_tmp508_, _tmp513_);
									_vala_ccode_node_unref0 (_tmp513_);
									_tmp514_ = prop;
									_tmp515_ = vala_property_get_property_type (_tmp514_);
									_tmp516_ = _tmp515_;
									_tmp517_ = vala_data_type_is_real_non_null_struct_type (_tmp516_);
									if (_tmp517_) {
										ValaGLibValue* temp_value = NULL;
										ValaProperty* _tmp518_;
										ValaPropertyAccessor* _tmp519_;
										ValaPropertyAccessor* _tmp520_;
										ValaDataType* _tmp521_;
										ValaDataType* _tmp522_;
										ValaMemberAccess* _tmp523_;
										ValaTargetValue* _tmp524_;
										ValaMemberAccess* _tmp525_;
										ValaGLibValue* _tmp526_;
										ValaTargetValue* _tmp527_;
										ValaTargetValue* _tmp528_;
										ValaCCodeExpression* ctemp = NULL;
										ValaGLibValue* _tmp529_;
										ValaCCodeExpression* _tmp530_;
										ValaCCodeFunctionCall* _tmp531_;
										ValaCCodeExpression* _tmp532_;
										ValaCCodeUnaryExpression* _tmp533_;
										ValaCCodeUnaryExpression* _tmp534_;
										ValaCCodeFunction* _tmp535_;
										ValaCCodeFunction* _tmp536_;
										ValaCCodeFunctionCall* _tmp537_;
										_tmp518_ = prop;
										_tmp519_ = vala_property_get_get_accessor (_tmp518_);
										_tmp520_ = _tmp519_;
										_tmp521_ = vala_property_accessor_get_value_type (_tmp520_);
										_tmp522_ = _tmp521_;
										_tmp523_ = expr;
										_tmp524_ = vala_ccode_base_module_create_temp_value ((ValaCCodeBaseModule*) self, _tmp522_, FALSE, (ValaCodeNode*) _tmp523_, NULL);
										temp_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp524_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
										_tmp525_ = expr;
										_tmp526_ = temp_value;
										_tmp527_ = vala_ccode_base_module_load_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp526_);
										_tmp528_ = _tmp527_;
										vala_expression_set_target_value ((ValaExpression*) _tmp525_, _tmp528_);
										_vala_target_value_unref0 (_tmp528_);
										_tmp529_ = temp_value;
										_tmp530_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp529_);
										ctemp = _tmp530_;
										_tmp531_ = ccall;
										_tmp532_ = ctemp;
										_tmp533_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp532_);
										_tmp534_ = _tmp533_;
										vala_ccode_function_call_add_argument (_tmp531_, (ValaCCodeExpression*) _tmp534_);
										_vala_ccode_node_unref0 (_tmp534_);
										_tmp535_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
										_tmp536_ = _tmp535_;
										_tmp537_ = ccall;
										vala_ccode_function_add_expression (_tmp536_, (ValaCCodeExpression*) _tmp537_);
										_vala_ccode_node_unref0 (ctemp);
										_vala_target_value_unref0 (temp_value);
									} else {
										ValaMemberAccess* _tmp538_;
										ValaCCodeFunctionCall* _tmp539_;
										_tmp538_ = expr;
										_tmp539_ = ccall;
										vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp538_, (ValaCCodeExpression*) _tmp539_);
									}
									_vala_ccode_node_unref0 (ccall);
									_vala_ccode_node_unref0 (vcast);
									_vala_code_node_unref0 (base_class);
								} else {
									ValaProperty* _tmp540_;
									ValaSymbol* _tmp541_;
									ValaSymbol* _tmp542_;
									_tmp540_ = base_prop;
									_tmp541_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp540_);
									_tmp542_ = _tmp541_;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp542_, VALA_TYPE_INTERFACE)) {
										ValaInterface* base_iface = NULL;
										ValaProperty* _tmp543_;
										ValaSymbol* _tmp544_;
										ValaSymbol* _tmp545_;
										ValaInterface* _tmp546_;
										gchar* parent_iface_var = NULL;
										ValaClass* _tmp547_;
										ValaClass* _tmp548_;
										gchar* _tmp549_;
										gchar* _tmp550_;
										ValaInterface* _tmp551_;
										gchar* _tmp552_;
										gchar* _tmp553_;
										gchar* _tmp554_;
										gchar* _tmp555_;
										ValaCCodeFunctionCall* ccall = NULL;
										const gchar* _tmp556_;
										ValaCCodeIdentifier* _tmp557_;
										ValaCCodeIdentifier* _tmp558_;
										ValaProperty* _tmp559_;
										const gchar* _tmp560_;
										const gchar* _tmp561_;
										gchar* _tmp562_;
										gchar* _tmp563_;
										ValaCCodeMemberAccess* _tmp564_;
										ValaCCodeMemberAccess* _tmp565_;
										ValaCCodeFunctionCall* _tmp566_;
										ValaCCodeFunctionCall* _tmp567_;
										ValaCCodeFunctionCall* _tmp568_;
										ValaMemberAccess* _tmp569_;
										ValaExpression* _tmp570_;
										ValaExpression* _tmp571_;
										ValaCCodeExpression* _tmp572_;
										ValaCCodeExpression* _tmp573_;
										ValaProperty* _tmp574_;
										ValaDataType* _tmp575_;
										ValaDataType* _tmp576_;
										gboolean _tmp577_;
										_tmp543_ = base_prop;
										_tmp544_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp543_);
										_tmp545_ = _tmp544_;
										_tmp546_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp545_, VALA_TYPE_INTERFACE, ValaInterface));
										base_iface = _tmp546_;
										_tmp547_ = vala_ccode_base_module_get_current_class ((ValaCCodeBaseModule*) self);
										_tmp548_ = _tmp547_;
										_tmp549_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp548_, NULL);
										_tmp550_ = _tmp549_;
										_tmp551_ = base_iface;
										_tmp552_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp551_, NULL);
										_tmp553_ = _tmp552_;
										_tmp554_ = g_strdup_printf ("%s_%s_parent_iface", _tmp550_, _tmp553_);
										_tmp555_ = _tmp554_;
										_g_free0 (_tmp553_);
										_g_free0 (_tmp550_);
										parent_iface_var = _tmp555_;
										_tmp556_ = parent_iface_var;
										_tmp557_ = vala_ccode_identifier_new (_tmp556_);
										_tmp558_ = _tmp557_;
										_tmp559_ = prop;
										_tmp560_ = vala_symbol_get_name ((ValaSymbol*) _tmp559_);
										_tmp561_ = _tmp560_;
										_tmp562_ = g_strdup_printf ("get_%s", _tmp561_);
										_tmp563_ = _tmp562_;
										_tmp564_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp558_, _tmp563_);
										_tmp565_ = _tmp564_;
										_tmp566_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp565_);
										_tmp567_ = _tmp566_;
										_vala_ccode_node_unref0 (_tmp565_);
										_g_free0 (_tmp563_);
										_vala_ccode_node_unref0 (_tmp558_);
										ccall = _tmp567_;
										_tmp568_ = ccall;
										_tmp569_ = expr;
										_tmp570_ = vala_member_access_get_inner (_tmp569_);
										_tmp571_ = _tmp570_;
										_tmp572_ = vala_ccode_base_module_get_cvalue ((ValaCCodeBaseModule*) self, _tmp571_);
										_tmp573_ = _tmp572_;
										vala_ccode_function_call_add_argument (_tmp568_, _tmp573_);
										_vala_ccode_node_unref0 (_tmp573_);
										_tmp574_ = prop;
										_tmp575_ = vala_property_get_property_type (_tmp574_);
										_tmp576_ = _tmp575_;
										_tmp577_ = vala_data_type_is_real_non_null_struct_type (_tmp576_);
										if (_tmp577_) {
											ValaGLibValue* temp_value = NULL;
											ValaProperty* _tmp578_;
											ValaPropertyAccessor* _tmp579_;
											ValaPropertyAccessor* _tmp580_;
											ValaDataType* _tmp581_;
											ValaDataType* _tmp582_;
											ValaMemberAccess* _tmp583_;
											ValaTargetValue* _tmp584_;
											ValaMemberAccess* _tmp585_;
											ValaGLibValue* _tmp586_;
											ValaTargetValue* _tmp587_;
											ValaTargetValue* _tmp588_;
											ValaCCodeExpression* ctemp = NULL;
											ValaGLibValue* _tmp589_;
											ValaCCodeExpression* _tmp590_;
											ValaCCodeFunctionCall* _tmp591_;
											ValaCCodeExpression* _tmp592_;
											ValaCCodeUnaryExpression* _tmp593_;
											ValaCCodeUnaryExpression* _tmp594_;
											ValaCCodeFunction* _tmp595_;
											ValaCCodeFunction* _tmp596_;
											ValaCCodeFunctionCall* _tmp597_;
											_tmp578_ = prop;
											_tmp579_ = vala_property_get_get_accessor (_tmp578_);
											_tmp580_ = _tmp579_;
											_tmp581_ = vala_property_accessor_get_value_type (_tmp580_);
											_tmp582_ = _tmp581_;
											_tmp583_ = expr;
											_tmp584_ = vala_ccode_base_module_create_temp_value ((ValaCCodeBaseModule*) self, _tmp582_, FALSE, (ValaCodeNode*) _tmp583_, NULL);
											temp_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp584_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
											_tmp585_ = expr;
											_tmp586_ = temp_value;
											_tmp587_ = vala_ccode_base_module_load_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp586_);
											_tmp588_ = _tmp587_;
											vala_expression_set_target_value ((ValaExpression*) _tmp585_, _tmp588_);
											_vala_target_value_unref0 (_tmp588_);
											_tmp589_ = temp_value;
											_tmp590_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp589_);
											ctemp = _tmp590_;
											_tmp591_ = ccall;
											_tmp592_ = ctemp;
											_tmp593_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp592_);
											_tmp594_ = _tmp593_;
											vala_ccode_function_call_add_argument (_tmp591_, (ValaCCodeExpression*) _tmp594_);
											_vala_ccode_node_unref0 (_tmp594_);
											_tmp595_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
											_tmp596_ = _tmp595_;
											_tmp597_ = ccall;
											vala_ccode_function_add_expression (_tmp596_, (ValaCCodeExpression*) _tmp597_);
											_vala_ccode_node_unref0 (ctemp);
											_vala_target_value_unref0 (temp_value);
										} else {
											ValaMemberAccess* _tmp598_;
											ValaCCodeFunctionCall* _tmp599_;
											_tmp598_ = expr;
											_tmp599_ = ccall;
											vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp598_, (ValaCCodeExpression*) _tmp599_);
										}
										_vala_ccode_node_unref0 (ccall);
										_g_free0 (parent_iface_var);
										_vala_code_node_unref0 (base_iface);
									}
								}
								_vala_code_node_unref0 (base_prop);
							} else {
								gboolean _tmp600_ = FALSE;
								gboolean _tmp601_ = FALSE;
								gboolean _tmp602_ = FALSE;
								gboolean _tmp603_ = FALSE;
								gboolean _tmp604_ = FALSE;
								gboolean _tmp605_ = FALSE;
								gboolean _tmp606_ = FALSE;
								ValaProperty* _tmp607_;
								ValaMemberBinding _tmp608_;
								ValaMemberBinding _tmp609_;
								_tmp607_ = prop;
								_tmp608_ = vala_property_get_binding (_tmp607_);
								_tmp609_ = _tmp608_;
								if (_tmp609_ == VALA_MEMBER_BINDING_INSTANCE) {
									ValaProperty* _tmp610_;
									ValaPropertyAccessor* _tmp611_;
									ValaPropertyAccessor* _tmp612_;
									gboolean _tmp613_;
									gboolean _tmp614_;
									_tmp610_ = prop;
									_tmp611_ = vala_property_get_get_accessor (_tmp610_);
									_tmp612_ = _tmp611_;
									_tmp613_ = vala_property_accessor_get_automatic_body (_tmp612_);
									_tmp614_ = _tmp613_;
									_tmp606_ = _tmp614_;
								} else {
									_tmp606_ = FALSE;
								}
								if (_tmp606_) {
									ValaProperty* _tmp615_;
									ValaPropertyAccessor* _tmp616_;
									ValaPropertyAccessor* _tmp617_;
									ValaDataType* _tmp618_;
									ValaDataType* _tmp619_;
									gboolean _tmp620_;
									gboolean _tmp621_;
									_tmp615_ = prop;
									_tmp616_ = vala_property_get_get_accessor (_tmp615_);
									_tmp617_ = _tmp616_;
									_tmp618_ = vala_property_accessor_get_value_type (_tmp617_);
									_tmp619_ = _tmp618_;
									_tmp620_ = vala_data_type_get_value_owned (_tmp619_);
									_tmp621_ = _tmp620_;
									_tmp605_ = !_tmp621_;
								} else {
									_tmp605_ = FALSE;
								}
								if (_tmp605_) {
									ValaTypeSymbol* _tmp622_;
									ValaTypeSymbol* _tmp623_;
									ValaProperty* _tmp624_;
									ValaSymbol* _tmp625_;
									ValaSymbol* _tmp626_;
									_tmp622_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
									_tmp623_ = _tmp622_;
									_tmp624_ = prop;
									_tmp625_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp624_);
									_tmp626_ = _tmp625_;
									_tmp604_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp623_, VALA_TYPE_SYMBOL, ValaSymbol) == _tmp626_;
								} else {
									_tmp604_ = FALSE;
								}
								if (_tmp604_) {
									ValaTypeSymbol* _tmp627_;
									ValaTypeSymbol* _tmp628_;
									_tmp627_ = vala_ccode_base_module_get_current_type_symbol ((ValaCCodeBaseModule*) self);
									_tmp628_ = _tmp627_;
									_tmp603_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp628_, VALA_TYPE_CLASS);
								} else {
									_tmp603_ = FALSE;
								}
								if (_tmp603_) {
									ValaProperty* _tmp629_;
									ValaProperty* _tmp630_;
									ValaProperty* _tmp631_;
									_tmp629_ = prop;
									_tmp630_ = vala_property_get_base_property (_tmp629_);
									_tmp631_ = _tmp630_;
									_tmp602_ = _tmp631_ == NULL;
								} else {
									_tmp602_ = FALSE;
								}
								if (_tmp602_) {
									ValaProperty* _tmp632_;
									ValaProperty* _tmp633_;
									ValaProperty* _tmp634_;
									_tmp632_ = prop;
									_tmp633_ = vala_property_get_base_interface_property (_tmp632_);
									_tmp634_ = _tmp633_;
									_tmp601_ = _tmp634_ == NULL;
								} else {
									_tmp601_ = FALSE;
								}
								if (_tmp601_) {
									gboolean _tmp635_ = FALSE;
									ValaProperty* _tmp636_;
									ValaDataType* _tmp637_;
									ValaDataType* _tmp638_;
									_tmp636_ = prop;
									_tmp637_ = vala_property_get_property_type (_tmp636_);
									_tmp638_ = _tmp637_;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp638_, VALA_TYPE_ARRAY_TYPE)) {
										_tmp635_ = TRUE;
									} else {
										ValaProperty* _tmp639_;
										ValaDataType* _tmp640_;
										ValaDataType* _tmp641_;
										_tmp639_ = prop;
										_tmp640_ = vala_property_get_property_type (_tmp639_);
										_tmp641_ = _tmp640_;
										_tmp635_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp641_, VALA_TYPE_DELEGATE_TYPE);
									}
									_tmp600_ = !_tmp635_;
								} else {
									_tmp600_ = FALSE;
								}
								if (_tmp600_) {
									ValaCCodeExpression* inst = NULL;
									ValaCCodeExpression* _tmp642_;
									ValaCCodeMemberAccess* _tmp643_;
									ValaMemberAccess* _tmp644_;
									ValaCCodeExpression* _tmp645_;
									ValaProperty* _tmp646_;
									ValaField* _tmp647_;
									ValaField* _tmp648_;
									gchar* _tmp649_;
									gchar* _tmp650_;
									ValaCCodeMemberAccess* _tmp651_;
									ValaCCodeMemberAccess* _tmp652_;
									_tmp642_ = pub_inst;
									_tmp643_ = vala_ccode_member_access_new_pointer (_tmp642_, "priv");
									_vala_ccode_node_unref0 (inst);
									inst = (ValaCCodeExpression*) _tmp643_;
									_tmp644_ = expr;
									_tmp645_ = inst;
									_tmp646_ = prop;
									_tmp647_ = vala_property_get_field (_tmp646_);
									_tmp648_ = _tmp647_;
									_tmp649_ = vala_get_ccode_name ((ValaCodeNode*) _tmp648_);
									_tmp650_ = _tmp649_;
									_tmp651_ = vala_ccode_member_access_new_pointer (_tmp645_, _tmp650_);
									_tmp652_ = _tmp651_;
									vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp644_, (ValaCCodeExpression*) _tmp652_);
									_vala_ccode_node_unref0 (_tmp652_);
									_g_free0 (_tmp650_);
									_vala_ccode_node_unref0 (inst);
								} else {
									ValaProperty* _tmp653_;
									gboolean _tmp654_;
									_tmp653_ = prop;
									_tmp654_ = vala_get_ccode_no_accessor_method (_tmp653_);
									if (!_tmp654_) {
										gchar* getter_cname = NULL;
										ValaProperty* _tmp655_;
										ValaCCodeFunctionCall* ccall = NULL;
										const gchar* _tmp662_;
										ValaCCodeIdentifier* _tmp663_;
										ValaCCodeIdentifier* _tmp664_;
										ValaCCodeFunctionCall* _tmp665_;
										ValaCCodeFunctionCall* _tmp666_;
										ValaProperty* _tmp667_;
										ValaMemberBinding _tmp668_;
										ValaMemberBinding _tmp669_;
										gboolean prop_is_real_non_null_struct_type = FALSE;
										ValaProperty* _tmp695_;
										ValaDataType* _tmp696_;
										ValaDataType* _tmp697_;
										gboolean _tmp698_;
										ValaGLibValue* temp_value = NULL;
										ValaProperty* _tmp699_;
										ValaPropertyAccessor* _tmp700_;
										ValaPropertyAccessor* _tmp701_;
										ValaDataType* _tmp702_;
										ValaDataType* _tmp703_;
										gboolean _tmp704_;
										ValaMemberAccess* _tmp705_;
										ValaTargetValue* _tmp706_;
										ValaMemberAccess* _tmp707_;
										ValaGLibValue* _tmp708_;
										ValaTargetValue* _tmp709_;
										ValaTargetValue* _tmp710_;
										ValaCCodeExpression* ctemp = NULL;
										ValaGLibValue* _tmp711_;
										ValaCCodeExpression* _tmp712_;
										gboolean _tmp713_;
										_tmp655_ = prop;
										if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp655_, VALA_TYPE_DYNAMIC_PROPERTY)) {
											ValaProperty* _tmp656_;
											gchar* _tmp657_;
											_tmp656_ = prop;
											_tmp657_ = vala_ccode_base_module_get_dynamic_property_getter_cname ((ValaCCodeBaseModule*) self, G_TYPE_CHECK_INSTANCE_CAST (_tmp656_, VALA_TYPE_DYNAMIC_PROPERTY, ValaDynamicProperty));
											_g_free0 (getter_cname);
											getter_cname = _tmp657_;
										} else {
											ValaProperty* _tmp658_;
											ValaPropertyAccessor* _tmp659_;
											ValaPropertyAccessor* _tmp660_;
											gchar* _tmp661_;
											_tmp658_ = prop;
											_tmp659_ = vala_property_get_get_accessor (_tmp658_);
											_tmp660_ = _tmp659_;
											_tmp661_ = vala_get_ccode_name ((ValaCodeNode*) _tmp660_);
											_g_free0 (getter_cname);
											getter_cname = _tmp661_;
										}
										_tmp662_ = getter_cname;
										_tmp663_ = vala_ccode_identifier_new (_tmp662_);
										_tmp664_ = _tmp663_;
										_tmp665_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp664_);
										_tmp666_ = _tmp665_;
										_vala_ccode_node_unref0 (_tmp664_);
										ccall = _tmp666_;
										_tmp667_ = prop;
										_tmp668_ = vala_property_get_binding (_tmp667_);
										_tmp669_ = _tmp668_;
										if (_tmp669_ == VALA_MEMBER_BINDING_INSTANCE) {
											gboolean _tmp670_ = FALSE;
											ValaProperty* _tmp671_;
											ValaSymbol* _tmp672_;
											ValaSymbol* _tmp673_;
											ValaCCodeFunctionCall* _tmp693_;
											ValaCCodeExpression* _tmp694_;
											_tmp671_ = prop;
											_tmp672_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp671_);
											_tmp673_ = _tmp672_;
											if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp673_, VALA_TYPE_STRUCT)) {
												ValaProperty* _tmp674_;
												ValaSymbol* _tmp675_;
												ValaSymbol* _tmp676_;
												gboolean _tmp677_;
												_tmp674_ = prop;
												_tmp675_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp674_);
												_tmp676_ = _tmp675_;
												_tmp677_ = vala_struct_is_simple_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp676_, VALA_TYPE_STRUCT, ValaStruct));
												_tmp670_ = !_tmp677_;
											} else {
												_tmp670_ = FALSE;
											}
											if (_tmp670_) {
												ValaTargetValue* instance = NULL;
												ValaMemberAccess* _tmp678_;
												ValaExpression* _tmp679_;
												ValaExpression* _tmp680_;
												ValaTargetValue* _tmp681_;
												ValaTargetValue* _tmp682_;
												ValaTargetValue* _tmp683_;
												ValaTargetValue* _tmp684_;
												gboolean _tmp685_;
												ValaTargetValue* _tmp689_;
												ValaCCodeExpression* _tmp690_;
												ValaCCodeExpression* _tmp691_;
												ValaCCodeUnaryExpression* _tmp692_;
												_tmp678_ = expr;
												_tmp679_ = vala_member_access_get_inner (_tmp678_);
												_tmp680_ = _tmp679_;
												_tmp681_ = vala_expression_get_target_value (_tmp680_);
												_tmp682_ = _tmp681_;
												_tmp683_ = _vala_target_value_ref0 (_tmp682_);
												instance = _tmp683_;
												_tmp684_ = instance;
												_tmp685_ = vala_ccode_base_module_get_lvalue ((ValaCCodeBaseModule*) self, _tmp684_);
												if (!_tmp685_) {
													ValaTargetValue* _tmp686_;
													ValaMemberAccess* _tmp687_;
													ValaTargetValue* _tmp688_;
													_tmp686_ = instance;
													_tmp687_ = expr;
													_tmp688_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, _tmp686_, (ValaCodeNode*) _tmp687_, NULL);
													_vala_target_value_unref0 (instance);
													instance = _tmp688_;
												}
												_tmp689_ = instance;
												_tmp690_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp689_);
												_tmp691_ = _tmp690_;
												_tmp692_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp691_);
												_vala_ccode_node_unref0 (pub_inst);
												pub_inst = (ValaCCodeExpression*) _tmp692_;
												_vala_ccode_node_unref0 (_tmp691_);
												_vala_target_value_unref0 (instance);
											}
											_tmp693_ = ccall;
											_tmp694_ = pub_inst;
											vala_ccode_function_call_add_argument (_tmp693_, _tmp694_);
										}
										_tmp695_ = prop;
										_tmp696_ = vala_property_get_property_type (_tmp695_);
										_tmp697_ = _tmp696_;
										_tmp698_ = vala_data_type_is_real_non_null_struct_type (_tmp697_);
										prop_is_real_non_null_struct_type = _tmp698_;
										_tmp699_ = prop;
										_tmp700_ = vala_property_get_get_accessor (_tmp699_);
										_tmp701_ = _tmp700_;
										_tmp702_ = vala_property_accessor_get_value_type (_tmp701_);
										_tmp703_ = _tmp702_;
										_tmp704_ = prop_is_real_non_null_struct_type;
										_tmp705_ = expr;
										_tmp706_ = vala_ccode_base_module_create_temp_value ((ValaCCodeBaseModule*) self, _tmp703_, _tmp704_, (ValaCodeNode*) _tmp705_, NULL);
										temp_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp706_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
										_tmp707_ = expr;
										_tmp708_ = temp_value;
										_tmp709_ = vala_ccode_base_module_load_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp708_);
										_tmp710_ = _tmp709_;
										vala_expression_set_target_value ((ValaExpression*) _tmp707_, _tmp710_);
										_vala_target_value_unref0 (_tmp710_);
										_tmp711_ = temp_value;
										_tmp712_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp711_);
										ctemp = _tmp712_;
										_tmp713_ = prop_is_real_non_null_struct_type;
										if (_tmp713_) {
											ValaCCodeFunctionCall* _tmp714_;
											ValaCCodeExpression* _tmp715_;
											ValaCCodeUnaryExpression* _tmp716_;
											ValaCCodeUnaryExpression* _tmp717_;
											ValaCCodeFunction* _tmp718_;
											ValaCCodeFunction* _tmp719_;
											ValaCCodeFunctionCall* _tmp720_;
											_tmp714_ = ccall;
											_tmp715_ = ctemp;
											_tmp716_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp715_);
											_tmp717_ = _tmp716_;
											vala_ccode_function_call_add_argument (_tmp714_, (ValaCCodeExpression*) _tmp717_);
											_vala_ccode_node_unref0 (_tmp717_);
											_tmp718_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
											_tmp719_ = _tmp718_;
											_tmp720_ = ccall;
											vala_ccode_function_add_expression (_tmp719_, (ValaCCodeExpression*) _tmp720_);
										} else {
											ValaCCodeFunction* _tmp721_;
											ValaCCodeFunction* _tmp722_;
											ValaCCodeExpression* _tmp723_;
											ValaCCodeFunctionCall* _tmp724_;
											ValaProperty* _tmp725_;
											ValaDataType* _tmp726_;
											ValaDataType* _tmp727_;
											ValaArrayType* _tmp728_;
											ValaArrayType* _tmp729_;
											_tmp721_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
											_tmp722_ = _tmp721_;
											_tmp723_ = ctemp;
											_tmp724_ = ccall;
											vala_ccode_function_add_assignment (_tmp722_, _tmp723_, (ValaCCodeExpression*) _tmp724_);
											_tmp725_ = prop;
											_tmp726_ = vala_property_get_property_type (_tmp725_);
											_tmp727_ = _tmp726_;
											_tmp728_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp727_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp727_) : NULL);
											_vala_code_node_unref0 (array_type);
											array_type = _tmp728_;
											_tmp729_ = array_type;
											if (_tmp729_ != NULL) {
												ValaProperty* _tmp730_;
												gboolean _tmp731_;
												_tmp730_ = prop;
												_tmp731_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp730_);
												if (_tmp731_) {
													ValaCCodeFunctionCall* len_call = NULL;
													ValaCCodeIdentifier* _tmp732_;
													ValaCCodeIdentifier* _tmp733_;
													ValaCCodeFunctionCall* _tmp734_;
													ValaCCodeFunctionCall* _tmp735_;
													ValaCCodeFunctionCall* _tmp736_;
													ValaCCodeExpression* _tmp737_;
													ValaCCodeFunction* _tmp738_;
													ValaCCodeFunction* _tmp739_;
													ValaGLibValue* _tmp740_;
													ValaList* _tmp741_;
													gpointer _tmp742_;
													ValaCCodeExpression* _tmp743_;
													ValaCCodeFunctionCall* _tmp744_;
													((ValaCCodeBaseModule*) self)->requires_array_length = TRUE;
													_tmp732_ = vala_ccode_identifier_new ("_vala_array_length");
													_tmp733_ = _tmp732_;
													_tmp734_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp733_);
													_tmp735_ = _tmp734_;
													_vala_ccode_node_unref0 (_tmp733_);
													len_call = _tmp735_;
													_tmp736_ = len_call;
													_tmp737_ = ctemp;
													vala_ccode_function_call_add_argument (_tmp736_, _tmp737_);
													_tmp738_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
													_tmp739_ = _tmp738_;
													_tmp740_ = temp_value;
													_tmp741_ = _tmp740_->array_length_cvalues;
													_tmp742_ = vala_list_get (_tmp741_, 0);
													_tmp743_ = (ValaCCodeExpression*) _tmp742_;
													_tmp744_ = len_call;
													vala_ccode_function_add_assignment (_tmp739_, _tmp743_, (ValaCCodeExpression*) _tmp744_);
													_vala_ccode_node_unref0 (_tmp743_);
													_vala_ccode_node_unref0 (len_call);
												} else {
													ValaProperty* _tmp745_;
													gboolean _tmp746_;
													_tmp745_ = prop;
													_tmp746_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp745_);
													if (_tmp746_) {
														{
															gint dim = 0;
															dim = 1;
															{
																gboolean _tmp747_ = FALSE;
																_tmp747_ = TRUE;
																while (TRUE) {
																	gint _tmp749_;
																	ValaArrayType* _tmp750_;
																	gint _tmp751_;
																	gint _tmp752_;
																	ValaCCodeFunctionCall* _tmp753_;
																	ValaGLibValue* _tmp754_;
																	gint _tmp755_;
																	ValaCCodeExpression* _tmp756_;
																	ValaCCodeExpression* _tmp757_;
																	ValaCCodeUnaryExpression* _tmp758_;
																	ValaCCodeUnaryExpression* _tmp759_;
																	if (!_tmp747_) {
																		gint _tmp748_;
																		_tmp748_ = dim;
																		dim = _tmp748_ + 1;
																	}
																	_tmp747_ = FALSE;
																	_tmp749_ = dim;
																	_tmp750_ = array_type;
																	_tmp751_ = vala_array_type_get_rank (_tmp750_);
																	_tmp752_ = _tmp751_;
																	if (!(_tmp749_ <= _tmp752_)) {
																		break;
																	}
																	_tmp753_ = ccall;
																	_tmp754_ = temp_value;
																	_tmp755_ = dim;
																	_tmp756_ = vala_ccode_base_module_get_array_length_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp754_, _tmp755_);
																	_tmp757_ = _tmp756_;
																	_tmp758_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp757_);
																	_tmp759_ = _tmp758_;
																	vala_ccode_function_call_add_argument (_tmp753_, (ValaCCodeExpression*) _tmp759_);
																	_vala_ccode_node_unref0 (_tmp759_);
																	_vala_ccode_node_unref0 (_tmp757_);
																}
															}
														}
													}
												}
											} else {
												ValaProperty* _tmp760_;
												ValaDataType* _tmp761_;
												ValaDataType* _tmp762_;
												ValaDelegateType* _tmp763_;
												gboolean _tmp764_ = FALSE;
												ValaDelegateType* _tmp765_;
												_tmp760_ = prop;
												_tmp761_ = vala_property_get_property_type (_tmp760_);
												_tmp762_ = _tmp761_;
												_tmp763_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp762_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp762_) : NULL);
												_vala_code_node_unref0 (delegate_type);
												delegate_type = _tmp763_;
												_tmp765_ = delegate_type;
												if (_tmp765_ != NULL) {
													ValaDelegateType* _tmp766_;
													ValaDelegate* _tmp767_;
													ValaDelegate* _tmp768_;
													gboolean _tmp769_;
													gboolean _tmp770_;
													_tmp766_ = delegate_type;
													_tmp767_ = vala_delegate_type_get_delegate_symbol (_tmp766_);
													_tmp768_ = _tmp767_;
													_tmp769_ = vala_delegate_get_has_target (_tmp768_);
													_tmp770_ = _tmp769_;
													_tmp764_ = _tmp770_;
												} else {
													_tmp764_ = FALSE;
												}
												if (_tmp764_) {
													ValaCCodeFunctionCall* _tmp771_;
													ValaGLibValue* _tmp772_;
													ValaCCodeExpression* _tmp773_;
													ValaCCodeExpression* _tmp774_;
													ValaCCodeUnaryExpression* _tmp775_;
													ValaCCodeUnaryExpression* _tmp776_;
													_tmp771_ = ccall;
													_tmp772_ = temp_value;
													_tmp773_ = vala_ccode_base_module_get_delegate_target_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp772_);
													_tmp774_ = _tmp773_;
													_tmp775_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp774_);
													_tmp776_ = _tmp775_;
													vala_ccode_function_call_add_argument (_tmp771_, (ValaCCodeExpression*) _tmp776_);
													_vala_ccode_node_unref0 (_tmp776_);
													_vala_ccode_node_unref0 (_tmp774_);
												}
											}
										}
										_vala_ccode_node_unref0 (ctemp);
										_vala_target_value_unref0 (temp_value);
										_vala_ccode_node_unref0 (ccall);
										_g_free0 (getter_cname);
									} else {
										ValaCCodeFunctionCall* ccall = NULL;
										ValaCCodeIdentifier* _tmp777_;
										ValaCCodeIdentifier* _tmp778_;
										ValaCCodeFunctionCall* _tmp779_;
										ValaCCodeFunctionCall* _tmp780_;
										ValaCCodeFunctionCall* _tmp781_;
										ValaCCodeExpression* _tmp782_;
										ValaCCodeFunctionCall* _tmp783_;
										ValaProperty* _tmp784_;
										ValaCCodeConstant* _tmp785_;
										ValaCCodeConstant* _tmp786_;
										ValaProperty* _tmp787_;
										ValaPropertyAccessor* _tmp788_;
										ValaPropertyAccessor* _tmp789_;
										ValaDataType* _tmp790_;
										ValaDataType* _tmp791_;
										gboolean _tmp792_;
										gboolean _tmp793_;
										ValaMemberAccess* _tmp813_;
										ValaDataType* _tmp814_;
										ValaDataType* _tmp815_;
										gboolean _tmp816_;
										ValaLocalVariable* temp_var = NULL;
										ValaMemberAccess* _tmp820_;
										ValaDataType* _tmp821_;
										ValaDataType* _tmp822_;
										ValaLocalVariable* _tmp823_;
										ValaCCodeExpression* ctemp = NULL;
										ValaLocalVariable* _tmp824_;
										const gchar* _tmp825_;
										const gchar* _tmp826_;
										ValaCCodeExpression* _tmp827_;
										ValaLocalVariable* _tmp828_;
										ValaCCodeFunctionCall* _tmp829_;
										ValaCCodeExpression* _tmp830_;
										ValaCCodeUnaryExpression* _tmp831_;
										ValaCCodeUnaryExpression* _tmp832_;
										ValaCCodeFunctionCall* _tmp833_;
										ValaCCodeConstant* _tmp834_;
										ValaCCodeConstant* _tmp835_;
										ValaCCodeFunction* _tmp836_;
										ValaCCodeFunction* _tmp837_;
										ValaCCodeFunctionCall* _tmp838_;
										ValaMemberAccess* _tmp839_;
										ValaCCodeExpression* _tmp840_;
										_tmp777_ = vala_ccode_identifier_new ("g_object_get");
										_tmp778_ = _tmp777_;
										_tmp779_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp778_);
										_tmp780_ = _tmp779_;
										_vala_ccode_node_unref0 (_tmp778_);
										ccall = _tmp780_;
										_tmp781_ = ccall;
										_tmp782_ = pub_inst;
										vala_ccode_function_call_add_argument (_tmp781_, _tmp782_);
										_tmp783_ = ccall;
										_tmp784_ = prop;
										_tmp785_ = vala_ccode_base_module_get_property_canonical_cconstant ((ValaCCodeBaseModule*) self, _tmp784_);
										_tmp786_ = _tmp785_;
										vala_ccode_function_call_add_argument (_tmp783_, (ValaCCodeExpression*) _tmp786_);
										_vala_ccode_node_unref0 (_tmp786_);
										_tmp787_ = prop;
										_tmp788_ = vala_property_get_get_accessor (_tmp787_);
										_tmp789_ = _tmp788_;
										_tmp790_ = vala_property_accessor_get_value_type (_tmp789_);
										_tmp791_ = _tmp790_;
										_tmp792_ = vala_data_type_get_value_owned (_tmp791_);
										_tmp793_ = _tmp792_;
										if (!_tmp793_) {
											ValaDataType* owned_value_type = NULL;
											ValaProperty* _tmp794_;
											ValaPropertyAccessor* _tmp795_;
											ValaPropertyAccessor* _tmp796_;
											ValaDataType* _tmp797_;
											ValaDataType* _tmp798_;
											ValaDataType* _tmp799_;
											ValaDataType* _tmp800_;
											ValaDataType* _tmp801_;
											gboolean _tmp802_;
											_tmp794_ = prop;
											_tmp795_ = vala_property_get_get_accessor (_tmp794_);
											_tmp796_ = _tmp795_;
											_tmp797_ = vala_property_accessor_get_value_type (_tmp796_);
											_tmp798_ = _tmp797_;
											_tmp799_ = vala_data_type_copy (_tmp798_);
											owned_value_type = _tmp799_;
											_tmp800_ = owned_value_type;
											vala_data_type_set_value_owned (_tmp800_, TRUE);
											_tmp801_ = owned_value_type;
											_tmp802_ = vala_ccode_base_module_requires_copy ((ValaCCodeBaseModule*) self, _tmp801_);
											if (_tmp802_) {
												ValaProperty* _tmp803_;
												ValaPropertyAccessor* _tmp804_;
												ValaPropertyAccessor* _tmp805_;
												ValaSourceReference* _tmp806_;
												ValaSourceReference* _tmp807_;
												ValaProperty* _tmp808_;
												gchar* _tmp809_;
												gchar* _tmp810_;
												gchar* _tmp811_;
												gchar* _tmp812_;
												_tmp803_ = prop;
												_tmp804_ = vala_property_get_get_accessor (_tmp803_);
												_tmp805_ = _tmp804_;
												_tmp806_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp805_);
												_tmp807_ = _tmp806_;
												_tmp808_ = prop;
												_tmp809_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp808_);
												_tmp810_ = _tmp809_;
												_tmp811_ = g_strdup_printf ("unowned return value for getter of property `%s' not supported without" \
" accessor", _tmp810_);
												_tmp812_ = _tmp811_;
												vala_report_error (_tmp807_, _tmp812_);
												_g_free0 (_tmp812_);
												_g_free0 (_tmp810_);
											}
											_vala_code_node_unref0 (owned_value_type);
										}
										_tmp813_ = expr;
										_tmp814_ = vala_expression_get_value_type ((ValaExpression*) _tmp813_);
										_tmp815_ = _tmp814_;
										_tmp816_ = vala_data_type_is_real_struct_type (_tmp815_);
										if (_tmp816_) {
											ValaMemberAccess* _tmp817_;
											ValaDataType* _tmp818_;
											ValaDataType* _tmp819_;
											_tmp817_ = expr;
											_tmp818_ = vala_expression_get_value_type ((ValaExpression*) _tmp817_);
											_tmp819_ = _tmp818_;
											vala_data_type_set_nullable (_tmp819_, TRUE);
										}
										_tmp820_ = expr;
										_tmp821_ = vala_expression_get_value_type ((ValaExpression*) _tmp820_);
										_tmp822_ = _tmp821_;
										_tmp823_ = vala_ccode_base_module_get_temp_variable ((ValaCCodeBaseModule*) self, _tmp822_, TRUE, NULL, FALSE);
										temp_var = _tmp823_;
										_tmp824_ = temp_var;
										_tmp825_ = vala_symbol_get_name ((ValaSymbol*) _tmp824_);
										_tmp826_ = _tmp825_;
										_tmp827_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp826_);
										ctemp = _tmp827_;
										_tmp828_ = temp_var;
										vala_ccode_base_module_emit_temp_var ((ValaCCodeBaseModule*) self, _tmp828_);
										_tmp829_ = ccall;
										_tmp830_ = ctemp;
										_tmp831_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_ADDRESS_OF, _tmp830_);
										_tmp832_ = _tmp831_;
										vala_ccode_function_call_add_argument (_tmp829_, (ValaCCodeExpression*) _tmp832_);
										_vala_ccode_node_unref0 (_tmp832_);
										_tmp833_ = ccall;
										_tmp834_ = vala_ccode_constant_new ("NULL");
										_tmp835_ = _tmp834_;
										vala_ccode_function_call_add_argument (_tmp833_, (ValaCCodeExpression*) _tmp835_);
										_vala_ccode_node_unref0 (_tmp835_);
										_tmp836_ = vala_ccode_base_module_get_ccode ((ValaCCodeBaseModule*) self);
										_tmp837_ = _tmp836_;
										_tmp838_ = ccall;
										vala_ccode_function_add_expression (_tmp837_, (ValaCCodeExpression*) _tmp838_);
										_tmp839_ = expr;
										_tmp840_ = ctemp;
										vala_ccode_base_module_set_cvalue ((ValaCCodeBaseModule*) self, (ValaExpression*) _tmp839_, _tmp840_);
										_vala_ccode_node_unref0 (ctemp);
										_vala_code_node_unref0 (temp_var);
										_vala_ccode_node_unref0 (ccall);
									}
								}
							}
							_tmp841_ = expr;
							_tmp842_ = vala_expression_get_target_value ((ValaExpression*) _tmp841_);
							_tmp843_ = _tmp842_;
							_tmp844_ = expr;
							_tmp845_ = vala_expression_get_value_type ((ValaExpression*) _tmp844_);
							_tmp846_ = _tmp845_;
							vala_target_value_set_value_type (_tmp843_, _tmp846_);
							_tmp847_ = expr;
							_tmp848_ = expr;
							_tmp849_ = vala_expression_get_target_value ((ValaExpression*) _tmp848_);
							_tmp850_ = _tmp849_;
							_tmp851_ = expr;
							_tmp852_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, _tmp850_, (ValaCodeNode*) _tmp851_, NULL);
							_tmp853_ = _tmp852_;
							vala_expression_set_target_value ((ValaExpression*) _tmp847_, _tmp853_);
							_vala_target_value_unref0 (_tmp853_);
							_vala_code_node_unref0 (prop);
						} else {
							ValaMemberAccess* _tmp854_;
							ValaSymbol* _tmp855_;
							ValaSymbol* _tmp856_;
							_tmp854_ = expr;
							_tmp855_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp854_);
							_tmp856_ = _tmp855_;
							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp856_, VALA_TYPE_LOCAL_VARIABLE)) {
								ValaLocalVariable* local = NULL;
								ValaMemberAccess* _tmp857_;
								ValaSymbol* _tmp858_;
								ValaSymbol* _tmp859_;
								ValaLocalVariable* _tmp860_;
								gboolean _tmp861_ = FALSE;
								gboolean _tmp862_ = FALSE;
								gboolean _tmp863_ = FALSE;
								gboolean _tmp864_ = FALSE;
								gboolean _tmp865_ = FALSE;
								ValaMemberAccess* _tmp866_;
								ValaCodeNode* _tmp867_;
								ValaCodeNode* _tmp868_;
								_tmp857_ = expr;
								_tmp858_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp857_);
								_tmp859_ = _tmp858_;
								_tmp860_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp859_, VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable));
								local = _tmp860_;
								_tmp866_ = expr;
								_tmp867_ = vala_code_node_get_parent_node ((ValaCodeNode*) _tmp866_);
								_tmp868_ = _tmp867_;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp868_, VALA_TYPE_RETURN_STATEMENT)) {
									ValaDataType* _tmp869_;
									ValaDataType* _tmp870_;
									gboolean _tmp871_;
									gboolean _tmp872_;
									_tmp869_ = vala_ccode_base_module_get_current_return_type ((ValaCCodeBaseModule*) self);
									_tmp870_ = _tmp869_;
									_tmp871_ = vala_data_type_get_value_owned (_tmp870_);
									_tmp872_ = _tmp871_;
									_tmp865_ = _tmp872_;
								} else {
									_tmp865_ = FALSE;
								}
								if (_tmp865_) {
									ValaLocalVariable* _tmp873_;
									ValaDataType* _tmp874_;
									ValaDataType* _tmp875_;
									gboolean _tmp876_;
									gboolean _tmp877_;
									_tmp873_ = local;
									_tmp874_ = vala_variable_get_variable_type ((ValaVariable*) _tmp873_);
									_tmp875_ = _tmp874_;
									_tmp876_ = vala_data_type_get_value_owned (_tmp875_);
									_tmp877_ = _tmp876_;
									_tmp864_ = _tmp877_;
								} else {
									_tmp864_ = FALSE;
								}
								if (_tmp864_) {
									ValaLocalVariable* _tmp878_;
									gboolean _tmp879_;
									gboolean _tmp880_;
									_tmp878_ = local;
									_tmp879_ = vala_local_variable_get_captured (_tmp878_);
									_tmp880_ = _tmp879_;
									_tmp863_ = !_tmp880_;
								} else {
									_tmp863_ = FALSE;
								}
								if (_tmp863_) {
									ValaLocalVariable* _tmp881_;
									gboolean _tmp882_;
									_tmp881_ = local;
									_tmp882_ = vala_ccode_base_module_variable_accessible_in_finally ((ValaCCodeBaseModule*) self, _tmp881_);
									_tmp862_ = !_tmp882_;
								} else {
									_tmp862_ = FALSE;
								}
								if (_tmp862_) {
									gboolean _tmp883_ = FALSE;
									ValaLocalVariable* _tmp884_;
									ValaDataType* _tmp885_;
									ValaDataType* _tmp886_;
									_tmp884_ = local;
									_tmp885_ = vala_variable_get_variable_type ((ValaVariable*) _tmp884_);
									_tmp886_ = _tmp885_;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp886_, VALA_TYPE_ARRAY_TYPE)) {
										ValaLocalVariable* _tmp887_;
										ValaDataType* _tmp888_;
										ValaDataType* _tmp889_;
										gboolean _tmp890_;
										gboolean _tmp891_;
										_tmp887_ = local;
										_tmp888_ = vala_variable_get_variable_type ((ValaVariable*) _tmp887_);
										_tmp889_ = _tmp888_;
										_tmp890_ = vala_array_type_get_inline_allocated (G_TYPE_CHECK_INSTANCE_CAST (_tmp889_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
										_tmp891_ = _tmp890_;
										_tmp883_ = _tmp891_;
									} else {
										_tmp883_ = FALSE;
									}
									_tmp861_ = !_tmp883_;
								} else {
									_tmp861_ = FALSE;
								}
								if (_tmp861_) {
									ValaMemberAccess* _tmp892_;
									ValaDataType* _tmp893_;
									ValaDataType* _tmp894_;
									ValaLocalVariable* _tmp895_;
									ValaGLibValue* glib_value = NULL;
									ValaLocalVariable* _tmp896_;
									ValaTargetValue* _tmp897_;
									ValaMemberAccess* _tmp898_;
									ValaGLibValue* _tmp899_;
									ValaGLibValue* _tmp900_;
									ValaCCodeExpression* _tmp901_;
									ValaGLibValue* _tmp904_;
									ValaCCodeExpression* _tmp905_;
									_tmp892_ = expr;
									_tmp893_ = vala_expression_get_value_type ((ValaExpression*) _tmp892_);
									_tmp894_ = _tmp893_;
									vala_data_type_set_value_owned (_tmp894_, TRUE);
									_tmp895_ = local;
									vala_symbol_set_active ((ValaSymbol*) _tmp895_, FALSE);
									_tmp896_ = local;
									_tmp897_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, _tmp896_);
									glib_value = G_TYPE_CHECK_INSTANCE_CAST (_tmp897_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
									_tmp898_ = expr;
									_tmp899_ = glib_value;
									vala_expression_set_target_value ((ValaExpression*) _tmp898_, (ValaTargetValue*) _tmp899_);
									_tmp900_ = glib_value;
									_tmp901_ = _tmp900_->delegate_target_cvalue;
									if (_tmp901_ == NULL) {
										ValaGLibValue* _tmp902_;
										ValaCCodeConstant* _tmp903_;
										_tmp902_ = glib_value;
										_tmp903_ = vala_ccode_constant_new ("NULL");
										_vala_ccode_node_unref0 (_tmp902_->delegate_target_cvalue);
										_tmp902_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp903_;
									}
									_tmp904_ = glib_value;
									_tmp905_ = _tmp904_->delegate_target_destroy_notify_cvalue;
									if (_tmp905_ == NULL) {
										ValaGLibValue* _tmp906_;
										ValaCCodeConstant* _tmp907_;
										_tmp906_ = glib_value;
										_tmp907_ = vala_ccode_constant_new ("NULL");
										_vala_ccode_node_unref0 (_tmp906_->delegate_target_destroy_notify_cvalue);
										_tmp906_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp907_;
									}
									_vala_target_value_unref0 (glib_value);
								} else {
									ValaMemberAccess* _tmp908_;
									gboolean _tmp909_;
									gboolean _tmp910_;
									_tmp908_ = expr;
									_tmp909_ = vala_expression_get_lvalue ((ValaExpression*) _tmp908_);
									_tmp910_ = _tmp909_;
									if (_tmp910_) {
										ValaMemberAccess* _tmp911_;
										ValaLocalVariable* _tmp912_;
										ValaTargetValue* _tmp913_;
										ValaTargetValue* _tmp914_;
										_tmp911_ = expr;
										_tmp912_ = local;
										_tmp913_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, _tmp912_);
										_tmp914_ = _tmp913_;
										vala_expression_set_target_value ((ValaExpression*) _tmp911_, _tmp914_);
										_vala_target_value_unref0 (_tmp914_);
									} else {
										ValaMemberAccess* _tmp915_;
										ValaLocalVariable* _tmp916_;
										ValaTargetValue* _tmp917_;
										ValaTargetValue* _tmp918_;
										_tmp915_ = expr;
										_tmp916_ = local;
										_tmp917_ = vala_code_generator_load_local ((ValaCodeGenerator*) self, _tmp916_);
										_tmp918_ = _tmp917_;
										vala_expression_set_target_value ((ValaExpression*) _tmp915_, _tmp918_);
										_vala_target_value_unref0 (_tmp918_);
									}
								}
								_vala_code_node_unref0 (local);
							} else {
								ValaMemberAccess* _tmp919_;
								ValaSymbol* _tmp920_;
								ValaSymbol* _tmp921_;
								_tmp919_ = expr;
								_tmp920_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp919_);
								_tmp921_ = _tmp920_;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp921_, VALA_TYPE_PARAMETER)) {
									ValaParameter* param = NULL;
									ValaMemberAccess* _tmp922_;
									ValaSymbol* _tmp923_;
									ValaSymbol* _tmp924_;
									ValaParameter* _tmp925_;
									ValaMemberAccess* _tmp926_;
									gboolean _tmp927_;
									gboolean _tmp928_;
									_tmp922_ = expr;
									_tmp923_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp922_);
									_tmp924_ = _tmp923_;
									_tmp925_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp924_, VALA_TYPE_PARAMETER, ValaParameter));
									param = _tmp925_;
									_tmp926_ = expr;
									_tmp927_ = vala_expression_get_lvalue ((ValaExpression*) _tmp926_);
									_tmp928_ = _tmp927_;
									if (_tmp928_) {
										ValaMemberAccess* _tmp929_;
										ValaParameter* _tmp930_;
										ValaTargetValue* _tmp931_;
										ValaTargetValue* _tmp932_;
										_tmp929_ = expr;
										_tmp930_ = param;
										_tmp931_ = vala_ccode_base_module_get_parameter_cvalue ((ValaCCodeBaseModule*) self, _tmp930_);
										_tmp932_ = _tmp931_;
										vala_expression_set_target_value ((ValaExpression*) _tmp929_, _tmp932_);
										_vala_target_value_unref0 (_tmp932_);
									} else {
										ValaMemberAccess* _tmp933_;
										ValaParameter* _tmp934_;
										ValaTargetValue* _tmp935_;
										ValaTargetValue* _tmp936_;
										_tmp933_ = expr;
										_tmp934_ = param;
										_tmp935_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, _tmp934_);
										_tmp936_ = _tmp935_;
										vala_expression_set_target_value ((ValaExpression*) _tmp933_, _tmp936_);
										_vala_target_value_unref0 (_tmp936_);
									}
									_vala_code_node_unref0 (param);
								}
							}
						}
					}
				}
			}
		}
	}
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	_vala_ccode_node_unref0 (pub_inst);
}


static ValaTargetValue* vala_ccode_member_access_module_real_get_local_cvalue (ValaCCodeBaseModule* base, ValaLocalVariable* local) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaGLibValue* _result_ = NULL;
	ValaLocalVariable* _tmp0_;
	ValaDataType* _tmp1_;
	ValaDataType* _tmp2_;
	ValaDataType* _tmp3_;
	ValaDataType* _tmp4_;
	ValaGLibValue* _tmp5_;
	ValaGLibValue* _tmp6_;
	ValaGLibValue* _tmp7_;
	ValaArrayType* array_type = NULL;
	ValaLocalVariable* _tmp8_;
	ValaDataType* _tmp9_;
	ValaDataType* _tmp10_;
	ValaArrayType* _tmp11_;
	ValaDelegateType* delegate_type = NULL;
	ValaLocalVariable* _tmp12_;
	ValaDataType* _tmp13_;
	ValaDataType* _tmp14_;
	ValaDelegateType* _tmp15_;
	ValaLocalVariable* _tmp16_;
	gboolean _tmp17_;
	gboolean _tmp18_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (local != NULL, NULL);
	_tmp0_ = local;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_data_type_copy (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
	_tmp6_ = _tmp5_;
	_vala_code_node_unref0 (_tmp4_);
	_result_ = _tmp6_;
	_tmp7_ = _result_;
	_tmp7_->lvalue = TRUE;
	_tmp8_ = local;
	_tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp10_) : NULL);
	array_type = _tmp11_;
	_tmp12_ = local;
	_tmp13_ = vala_variable_get_variable_type ((ValaVariable*) _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp14_) : NULL);
	delegate_type = _tmp15_;
	_tmp16_ = local;
	_tmp17_ = vala_local_variable_get_is_result (_tmp16_);
	_tmp18_ = _tmp17_;
	if (_tmp18_) {
		gboolean _tmp19_ = FALSE;
		ValaLocalVariable* _tmp20_;
		ValaDataType* _tmp21_;
		ValaDataType* _tmp22_;
		gboolean _tmp33_ = FALSE;
		gboolean _tmp34_ = FALSE;
		ValaArrayType* _tmp35_;
		_tmp20_ = local;
		_tmp21_ = vala_variable_get_variable_type ((ValaVariable*) _tmp20_);
		_tmp22_ = _tmp21_;
		if (_tmp22_ != NULL) {
			ValaLocalVariable* _tmp23_;
			ValaDataType* _tmp24_;
			ValaDataType* _tmp25_;
			gboolean _tmp26_;
			_tmp23_ = local;
			_tmp24_ = vala_variable_get_variable_type ((ValaVariable*) _tmp23_);
			_tmp25_ = _tmp24_;
			_tmp26_ = vala_data_type_is_real_non_null_struct_type (_tmp25_);
			_tmp19_ = _tmp26_;
		} else {
			_tmp19_ = FALSE;
		}
		if (_tmp19_) {
			ValaGLibValue* _tmp27_;
			ValaCCodeIdentifier* _tmp28_;
			ValaCCodeIdentifier* _tmp29_;
			ValaCCodeUnaryExpression* _tmp30_;
			_tmp27_ = _result_;
			_tmp28_ = vala_ccode_identifier_new ("result");
			_tmp29_ = _tmp28_;
			_tmp30_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp29_);
			_vala_ccode_node_unref0 (_tmp27_->cvalue);
			_tmp27_->cvalue = (ValaCCodeExpression*) _tmp30_;
			_vala_ccode_node_unref0 (_tmp29_);
		} else {
			ValaGLibValue* _tmp31_;
			ValaCCodeIdentifier* _tmp32_;
			_tmp31_ = _result_;
			_tmp32_ = vala_ccode_identifier_new ("result");
			_vala_ccode_node_unref0 (_tmp31_->cvalue);
			_tmp31_->cvalue = (ValaCCodeExpression*) _tmp32_;
		}
		_tmp35_ = array_type;
		if (_tmp35_ != NULL) {
			ValaArrayType* _tmp36_;
			gboolean _tmp37_;
			gboolean _tmp38_;
			_tmp36_ = array_type;
			_tmp37_ = vala_array_type_get_fixed_length (_tmp36_);
			_tmp38_ = _tmp37_;
			_tmp34_ = !_tmp38_;
		} else {
			_tmp34_ = FALSE;
		}
		if (_tmp34_) {
			gboolean _tmp39_ = FALSE;
			gboolean _tmp40_ = FALSE;
			ValaMethod* _tmp41_;
			ValaMethod* _tmp42_;
			_tmp41_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
			_tmp42_ = _tmp41_;
			if (_tmp42_ != NULL) {
				ValaMethod* _tmp43_;
				ValaMethod* _tmp44_;
				gboolean _tmp45_;
				_tmp43_ = vala_ccode_base_module_get_current_method ((ValaCCodeBaseModule*) self);
				_tmp44_ = _tmp43_;
				_tmp45_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp44_);
				_tmp40_ = _tmp45_;
			} else {
				_tmp40_ = FALSE;
			}
			if (_tmp40_) {
				_tmp39_ = TRUE;
			} else {
				ValaPropertyAccessor* _tmp46_;
				ValaPropertyAccessor* _tmp47_;
				_tmp46_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
				_tmp47_ = _tmp46_;
				_tmp39_ = _tmp47_ != NULL;
			}
			_tmp33_ = _tmp39_;
		} else {
			_tmp33_ = FALSE;
		}
		if (_tmp33_) {
			{
				gint dim = 0;
				dim = 1;
				{
					gboolean _tmp48_ = FALSE;
					_tmp48_ = TRUE;
					while (TRUE) {
						gint _tmp50_;
						ValaArrayType* _tmp51_;
						gint _tmp52_;
						gint _tmp53_;
						ValaGLibValue* _tmp54_;
						gint _tmp55_;
						gchar* _tmp56_;
						gchar* _tmp57_;
						ValaCCodeExpression* _tmp58_;
						ValaCCodeExpression* _tmp59_;
						ValaCCodeUnaryExpression* _tmp60_;
						ValaCCodeUnaryExpression* _tmp61_;
						if (!_tmp48_) {
							gint _tmp49_;
							_tmp49_ = dim;
							dim = _tmp49_ + 1;
						}
						_tmp48_ = FALSE;
						_tmp50_ = dim;
						_tmp51_ = array_type;
						_tmp52_ = vala_array_type_get_rank (_tmp51_);
						_tmp53_ = _tmp52_;
						if (!(_tmp50_ <= _tmp53_)) {
							break;
						}
						_tmp54_ = _result_;
						_tmp55_ = dim;
						_tmp56_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, "result", _tmp55_);
						_tmp57_ = _tmp56_;
						_tmp58_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp57_);
						_tmp59_ = _tmp58_;
						_tmp60_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp59_);
						_tmp61_ = _tmp60_;
						vala_glib_value_append_array_length_cvalue (_tmp54_, (ValaCCodeExpression*) _tmp61_);
						_vala_ccode_node_unref0 (_tmp61_);
						_vala_ccode_node_unref0 (_tmp59_);
						_g_free0 (_tmp57_);
					}
				}
			}
		}
	} else {
		ValaLocalVariable* _tmp62_;
		gboolean _tmp63_;
		gboolean _tmp64_;
		_tmp62_ = local;
		_tmp63_ = vala_local_variable_get_captured (_tmp62_);
		_tmp64_ = _tmp63_;
		if (_tmp64_) {
			ValaBlock* block = NULL;
			ValaLocalVariable* _tmp65_;
			ValaSymbol* _tmp66_;
			ValaSymbol* _tmp67_;
			ValaBlock* _tmp68_;
			ValaGLibValue* _tmp69_;
			ValaBlock* _tmp70_;
			gint _tmp71_;
			gchar* _tmp72_;
			gchar* _tmp73_;
			ValaCCodeExpression* _tmp74_;
			ValaCCodeExpression* _tmp75_;
			ValaLocalVariable* _tmp76_;
			gchar* _tmp77_;
			gchar* _tmp78_;
			ValaCCodeMemberAccess* _tmp79_;
			gboolean _tmp80_ = FALSE;
			ValaArrayType* _tmp81_;
			_tmp65_ = local;
			_tmp66_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp65_);
			_tmp67_ = _tmp66_;
			_tmp68_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp67_, VALA_TYPE_BLOCK, ValaBlock));
			block = _tmp68_;
			_tmp69_ = _result_;
			_tmp70_ = block;
			_tmp71_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp70_);
			_tmp72_ = g_strdup_printf ("_data%d_", _tmp71_);
			_tmp73_ = _tmp72_;
			_tmp74_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp73_);
			_tmp75_ = _tmp74_;
			_tmp76_ = local;
			_tmp77_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp76_);
			_tmp78_ = _tmp77_;
			_tmp79_ = vala_ccode_member_access_new_pointer (_tmp75_, _tmp78_);
			_vala_ccode_node_unref0 (_tmp69_->cvalue);
			_tmp69_->cvalue = (ValaCCodeExpression*) _tmp79_;
			_g_free0 (_tmp78_);
			_vala_ccode_node_unref0 (_tmp75_);
			_g_free0 (_tmp73_);
			_tmp81_ = array_type;
			if (_tmp81_ != NULL) {
				ValaArrayType* _tmp82_;
				gboolean _tmp83_;
				gboolean _tmp84_;
				_tmp82_ = array_type;
				_tmp83_ = vala_array_type_get_fixed_length (_tmp82_);
				_tmp84_ = _tmp83_;
				_tmp80_ = !_tmp84_;
			} else {
				_tmp80_ = FALSE;
			}
			if (_tmp80_) {
				ValaArrayType* _tmp106_;
				gint _tmp107_;
				gint _tmp108_;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp85_ = FALSE;
						_tmp85_ = TRUE;
						while (TRUE) {
							gint _tmp87_;
							ValaArrayType* _tmp88_;
							gint _tmp89_;
							gint _tmp90_;
							ValaGLibValue* _tmp91_;
							ValaBlock* _tmp92_;
							gint _tmp93_;
							gchar* _tmp94_;
							gchar* _tmp95_;
							ValaCCodeExpression* _tmp96_;
							ValaCCodeExpression* _tmp97_;
							ValaLocalVariable* _tmp98_;
							gchar* _tmp99_;
							gchar* _tmp100_;
							gint _tmp101_;
							gchar* _tmp102_;
							gchar* _tmp103_;
							ValaCCodeMemberAccess* _tmp104_;
							ValaCCodeMemberAccess* _tmp105_;
							if (!_tmp85_) {
								gint _tmp86_;
								_tmp86_ = dim;
								dim = _tmp86_ + 1;
							}
							_tmp85_ = FALSE;
							_tmp87_ = dim;
							_tmp88_ = array_type;
							_tmp89_ = vala_array_type_get_rank (_tmp88_);
							_tmp90_ = _tmp89_;
							if (!(_tmp87_ <= _tmp90_)) {
								break;
							}
							_tmp91_ = _result_;
							_tmp92_ = block;
							_tmp93_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp92_);
							_tmp94_ = g_strdup_printf ("_data%d_", _tmp93_);
							_tmp95_ = _tmp94_;
							_tmp96_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp95_);
							_tmp97_ = _tmp96_;
							_tmp98_ = local;
							_tmp99_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp98_);
							_tmp100_ = _tmp99_;
							_tmp101_ = dim;
							_tmp102_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp100_, _tmp101_);
							_tmp103_ = _tmp102_;
							_tmp104_ = vala_ccode_member_access_new_pointer (_tmp97_, _tmp103_);
							_tmp105_ = _tmp104_;
							vala_glib_value_append_array_length_cvalue (_tmp91_, (ValaCCodeExpression*) _tmp105_);
							_vala_ccode_node_unref0 (_tmp105_);
							_g_free0 (_tmp103_);
							_g_free0 (_tmp100_);
							_vala_ccode_node_unref0 (_tmp97_);
							_g_free0 (_tmp95_);
						}
					}
				}
				_tmp106_ = array_type;
				_tmp107_ = vala_array_type_get_rank (_tmp106_);
				_tmp108_ = _tmp107_;
				if (_tmp108_ == 1) {
					ValaGLibValue* _tmp109_;
					ValaBlock* _tmp110_;
					gint _tmp111_;
					gchar* _tmp112_;
					gchar* _tmp113_;
					ValaCCodeExpression* _tmp114_;
					ValaCCodeExpression* _tmp115_;
					ValaLocalVariable* _tmp116_;
					gchar* _tmp117_;
					gchar* _tmp118_;
					gchar* _tmp119_;
					gchar* _tmp120_;
					ValaCCodeMemberAccess* _tmp121_;
					_tmp109_ = _result_;
					_tmp110_ = block;
					_tmp111_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp110_);
					_tmp112_ = g_strdup_printf ("_data%d_", _tmp111_);
					_tmp113_ = _tmp112_;
					_tmp114_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp113_);
					_tmp115_ = _tmp114_;
					_tmp116_ = local;
					_tmp117_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp116_);
					_tmp118_ = _tmp117_;
					_tmp119_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp118_);
					_tmp120_ = _tmp119_;
					_tmp121_ = vala_ccode_member_access_new_pointer (_tmp115_, _tmp120_);
					_vala_ccode_node_unref0 (_tmp109_->array_size_cvalue);
					_tmp109_->array_size_cvalue = (ValaCCodeExpression*) _tmp121_;
					_g_free0 (_tmp120_);
					_g_free0 (_tmp118_);
					_vala_ccode_node_unref0 (_tmp115_);
					_g_free0 (_tmp113_);
				}
			} else {
				gboolean _tmp122_ = FALSE;
				ValaDelegateType* _tmp123_;
				_tmp123_ = delegate_type;
				if (_tmp123_ != NULL) {
					ValaDelegateType* _tmp124_;
					ValaDelegate* _tmp125_;
					ValaDelegate* _tmp126_;
					gboolean _tmp127_;
					gboolean _tmp128_;
					_tmp124_ = delegate_type;
					_tmp125_ = vala_delegate_type_get_delegate_symbol (_tmp124_);
					_tmp126_ = _tmp125_;
					_tmp127_ = vala_delegate_get_has_target (_tmp126_);
					_tmp128_ = _tmp127_;
					_tmp122_ = _tmp128_;
				} else {
					_tmp122_ = FALSE;
				}
				if (_tmp122_) {
					ValaGLibValue* _tmp129_;
					ValaBlock* _tmp130_;
					gint _tmp131_;
					gchar* _tmp132_;
					gchar* _tmp133_;
					ValaCCodeExpression* _tmp134_;
					ValaCCodeExpression* _tmp135_;
					ValaLocalVariable* _tmp136_;
					gchar* _tmp137_;
					gchar* _tmp138_;
					gchar* _tmp139_;
					gchar* _tmp140_;
					ValaCCodeMemberAccess* _tmp141_;
					ValaDelegateType* _tmp142_;
					gboolean _tmp143_;
					_tmp129_ = _result_;
					_tmp130_ = block;
					_tmp131_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp130_);
					_tmp132_ = g_strdup_printf ("_data%d_", _tmp131_);
					_tmp133_ = _tmp132_;
					_tmp134_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp133_);
					_tmp135_ = _tmp134_;
					_tmp136_ = local;
					_tmp137_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp136_);
					_tmp138_ = _tmp137_;
					_tmp139_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp138_);
					_tmp140_ = _tmp139_;
					_tmp141_ = vala_ccode_member_access_new_pointer (_tmp135_, _tmp140_);
					_vala_ccode_node_unref0 (_tmp129_->delegate_target_cvalue);
					_tmp129_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp141_;
					_g_free0 (_tmp140_);
					_g_free0 (_tmp138_);
					_vala_ccode_node_unref0 (_tmp135_);
					_g_free0 (_tmp133_);
					_tmp142_ = delegate_type;
					_tmp143_ = vala_data_type_is_disposable ((ValaDataType*) _tmp142_);
					if (_tmp143_) {
						ValaGLibValue* _tmp144_;
						ValaBlock* _tmp145_;
						gint _tmp146_;
						gchar* _tmp147_;
						gchar* _tmp148_;
						ValaCCodeExpression* _tmp149_;
						ValaCCodeExpression* _tmp150_;
						ValaLocalVariable* _tmp151_;
						gchar* _tmp152_;
						gchar* _tmp153_;
						gchar* _tmp154_;
						gchar* _tmp155_;
						ValaCCodeMemberAccess* _tmp156_;
						_tmp144_ = _result_;
						_tmp145_ = block;
						_tmp146_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp145_);
						_tmp147_ = g_strdup_printf ("_data%d_", _tmp146_);
						_tmp148_ = _tmp147_;
						_tmp149_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp148_);
						_tmp150_ = _tmp149_;
						_tmp151_ = local;
						_tmp152_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp151_);
						_tmp153_ = _tmp152_;
						_tmp154_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp153_);
						_tmp155_ = _tmp154_;
						_tmp156_ = vala_ccode_member_access_new_pointer (_tmp150_, _tmp155_);
						_vala_ccode_node_unref0 (_tmp144_->delegate_target_destroy_notify_cvalue);
						_tmp144_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp156_;
						_g_free0 (_tmp155_);
						_g_free0 (_tmp153_);
						_vala_ccode_node_unref0 (_tmp150_);
						_g_free0 (_tmp148_);
					}
				}
			}
			_vala_code_node_unref0 (block);
		} else {
			ValaGLibValue* _tmp157_;
			ValaLocalVariable* _tmp158_;
			ValaCCodeExpression* _tmp159_;
			gboolean _tmp160_ = FALSE;
			ValaArrayType* _tmp161_;
			_tmp157_ = _result_;
			_tmp158_ = local;
			_tmp159_ = vala_ccode_base_module_get_local_cexpression ((ValaCCodeBaseModule*) self, _tmp158_);
			_vala_ccode_node_unref0 (_tmp157_->cvalue);
			_tmp157_->cvalue = _tmp159_;
			_tmp161_ = array_type;
			if (_tmp161_ != NULL) {
				ValaArrayType* _tmp162_;
				gboolean _tmp163_;
				gboolean _tmp164_;
				_tmp162_ = array_type;
				_tmp163_ = vala_array_type_get_fixed_length (_tmp162_);
				_tmp164_ = _tmp163_;
				_tmp160_ = !_tmp164_;
			} else {
				_tmp160_ = FALSE;
			}
			if (_tmp160_) {
				ValaArrayType* _tmp180_;
				gint _tmp181_;
				gint _tmp182_;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp165_ = FALSE;
						_tmp165_ = TRUE;
						while (TRUE) {
							gint _tmp167_;
							ValaArrayType* _tmp168_;
							gint _tmp169_;
							gint _tmp170_;
							ValaGLibValue* _tmp171_;
							ValaLocalVariable* _tmp172_;
							gchar* _tmp173_;
							gchar* _tmp174_;
							gint _tmp175_;
							gchar* _tmp176_;
							gchar* _tmp177_;
							ValaCCodeExpression* _tmp178_;
							ValaCCodeExpression* _tmp179_;
							if (!_tmp165_) {
								gint _tmp166_;
								_tmp166_ = dim;
								dim = _tmp166_ + 1;
							}
							_tmp165_ = FALSE;
							_tmp167_ = dim;
							_tmp168_ = array_type;
							_tmp169_ = vala_array_type_get_rank (_tmp168_);
							_tmp170_ = _tmp169_;
							if (!(_tmp167_ <= _tmp170_)) {
								break;
							}
							_tmp171_ = _result_;
							_tmp172_ = local;
							_tmp173_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp172_);
							_tmp174_ = _tmp173_;
							_tmp175_ = dim;
							_tmp176_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp174_, _tmp175_);
							_tmp177_ = _tmp176_;
							_tmp178_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp177_);
							_tmp179_ = _tmp178_;
							vala_glib_value_append_array_length_cvalue (_tmp171_, _tmp179_);
							_vala_ccode_node_unref0 (_tmp179_);
							_g_free0 (_tmp177_);
							_g_free0 (_tmp174_);
						}
					}
				}
				_tmp180_ = array_type;
				_tmp181_ = vala_array_type_get_rank (_tmp180_);
				_tmp182_ = _tmp181_;
				if (_tmp182_ == 1) {
					ValaGLibValue* _tmp183_;
					ValaLocalVariable* _tmp184_;
					gchar* _tmp185_;
					gchar* _tmp186_;
					gchar* _tmp187_;
					gchar* _tmp188_;
					ValaCCodeExpression* _tmp189_;
					_tmp183_ = _result_;
					_tmp184_ = local;
					_tmp185_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp184_);
					_tmp186_ = _tmp185_;
					_tmp187_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp186_);
					_tmp188_ = _tmp187_;
					_tmp189_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp188_);
					_vala_ccode_node_unref0 (_tmp183_->array_size_cvalue);
					_tmp183_->array_size_cvalue = _tmp189_;
					_g_free0 (_tmp188_);
					_g_free0 (_tmp186_);
				}
			} else {
				gboolean _tmp190_ = FALSE;
				ValaDelegateType* _tmp191_;
				_tmp191_ = delegate_type;
				if (_tmp191_ != NULL) {
					ValaDelegateType* _tmp192_;
					ValaDelegate* _tmp193_;
					ValaDelegate* _tmp194_;
					gboolean _tmp195_;
					gboolean _tmp196_;
					_tmp192_ = delegate_type;
					_tmp193_ = vala_delegate_type_get_delegate_symbol (_tmp192_);
					_tmp194_ = _tmp193_;
					_tmp195_ = vala_delegate_get_has_target (_tmp194_);
					_tmp196_ = _tmp195_;
					_tmp190_ = _tmp196_;
				} else {
					_tmp190_ = FALSE;
				}
				if (_tmp190_) {
					gboolean _tmp197_;
					_tmp197_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
					if (_tmp197_) {
						ValaGLibValue* _tmp198_;
						ValaCCodeIdentifier* _tmp199_;
						ValaCCodeIdentifier* _tmp200_;
						ValaLocalVariable* _tmp201_;
						gchar* _tmp202_;
						gchar* _tmp203_;
						gchar* _tmp204_;
						gchar* _tmp205_;
						ValaCCodeMemberAccess* _tmp206_;
						ValaLocalVariable* _tmp207_;
						ValaDataType* _tmp208_;
						ValaDataType* _tmp209_;
						gboolean _tmp210_;
						gboolean _tmp211_;
						_tmp198_ = _result_;
						_tmp199_ = vala_ccode_identifier_new ("_data_");
						_tmp200_ = _tmp199_;
						_tmp201_ = local;
						_tmp202_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp201_);
						_tmp203_ = _tmp202_;
						_tmp204_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp203_);
						_tmp205_ = _tmp204_;
						_tmp206_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp200_, _tmp205_);
						_vala_ccode_node_unref0 (_tmp198_->delegate_target_cvalue);
						_tmp198_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp206_;
						_g_free0 (_tmp205_);
						_g_free0 (_tmp203_);
						_vala_ccode_node_unref0 (_tmp200_);
						_tmp207_ = local;
						_tmp208_ = vala_variable_get_variable_type ((ValaVariable*) _tmp207_);
						_tmp209_ = _tmp208_;
						_tmp210_ = vala_data_type_get_value_owned (_tmp209_);
						_tmp211_ = _tmp210_;
						if (_tmp211_) {
							ValaGLibValue* _tmp212_;
							ValaCCodeIdentifier* _tmp213_;
							ValaCCodeIdentifier* _tmp214_;
							ValaLocalVariable* _tmp215_;
							gchar* _tmp216_;
							gchar* _tmp217_;
							gchar* _tmp218_;
							gchar* _tmp219_;
							ValaCCodeMemberAccess* _tmp220_;
							_tmp212_ = _result_;
							_tmp213_ = vala_ccode_identifier_new ("_data_");
							_tmp214_ = _tmp213_;
							_tmp215_ = local;
							_tmp216_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp215_);
							_tmp217_ = _tmp216_;
							_tmp218_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp217_);
							_tmp219_ = _tmp218_;
							_tmp220_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp214_, _tmp219_);
							_vala_ccode_node_unref0 (_tmp212_->delegate_target_destroy_notify_cvalue);
							_tmp212_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp220_;
							_g_free0 (_tmp219_);
							_g_free0 (_tmp217_);
							_vala_ccode_node_unref0 (_tmp214_);
						}
					} else {
						ValaGLibValue* _tmp221_;
						ValaLocalVariable* _tmp222_;
						gchar* _tmp223_;
						gchar* _tmp224_;
						gchar* _tmp225_;
						gchar* _tmp226_;
						ValaCCodeIdentifier* _tmp227_;
						ValaLocalVariable* _tmp228_;
						ValaDataType* _tmp229_;
						ValaDataType* _tmp230_;
						gboolean _tmp231_;
						gboolean _tmp232_;
						_tmp221_ = _result_;
						_tmp222_ = local;
						_tmp223_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp222_);
						_tmp224_ = _tmp223_;
						_tmp225_ = vala_ccode_base_module_get_delegate_target_cname ((ValaCCodeBaseModule*) self, _tmp224_);
						_tmp226_ = _tmp225_;
						_tmp227_ = vala_ccode_identifier_new (_tmp226_);
						_vala_ccode_node_unref0 (_tmp221_->delegate_target_cvalue);
						_tmp221_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp227_;
						_g_free0 (_tmp226_);
						_g_free0 (_tmp224_);
						_tmp228_ = local;
						_tmp229_ = vala_variable_get_variable_type ((ValaVariable*) _tmp228_);
						_tmp230_ = _tmp229_;
						_tmp231_ = vala_data_type_get_value_owned (_tmp230_);
						_tmp232_ = _tmp231_;
						if (_tmp232_) {
							ValaGLibValue* _tmp233_;
							ValaLocalVariable* _tmp234_;
							gchar* _tmp235_;
							gchar* _tmp236_;
							gchar* _tmp237_;
							gchar* _tmp238_;
							ValaCCodeIdentifier* _tmp239_;
							_tmp233_ = _result_;
							_tmp234_ = local;
							_tmp235_ = vala_ccode_base_module_get_local_cname ((ValaCCodeBaseModule*) self, _tmp234_);
							_tmp236_ = _tmp235_;
							_tmp237_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp236_);
							_tmp238_ = _tmp237_;
							_tmp239_ = vala_ccode_identifier_new (_tmp238_);
							_vala_ccode_node_unref0 (_tmp233_->delegate_target_destroy_notify_cvalue);
							_tmp233_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp239_;
							_g_free0 (_tmp238_);
							_g_free0 (_tmp236_);
						}
					}
				}
			}
		}
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_get_parameter_cvalue (ValaCCodeBaseModule* base, ValaParameter* param) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaGLibValue* _result_ = NULL;
	ValaParameter* _tmp0_;
	ValaDataType* _tmp1_;
	ValaDataType* _tmp2_;
	ValaDataType* _tmp3_;
	ValaDataType* _tmp4_;
	ValaGLibValue* _tmp5_;
	ValaGLibValue* _tmp6_;
	ValaGLibValue* _tmp7_;
	ValaGLibValue* _tmp8_;
	ValaParameter* _tmp9_;
	gboolean _tmp10_;
	ValaParameter* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	gboolean _tmp14_;
	ValaGLibValue* _tmp20_;
	ValaParameter* _tmp21_;
	gchar* _tmp22_;
	ValaArrayType* array_type = NULL;
	ValaGLibValue* _tmp23_;
	ValaDataType* _tmp24_;
	ValaDataType* _tmp25_;
	ValaArrayType* _tmp26_;
	ValaDelegateType* delegate_type = NULL;
	ValaGLibValue* _tmp27_;
	ValaDataType* _tmp28_;
	ValaDataType* _tmp29_;
	ValaDelegateType* _tmp30_;
	gboolean _tmp31_ = FALSE;
	ValaDelegateType* _tmp32_;
	gboolean is_unowned_delegate = FALSE;
	gboolean _tmp38_ = FALSE;
	gboolean _tmp39_ = FALSE;
	ValaParameter* _tmp40_;
	gboolean _tmp41_;
	gboolean _tmp42_;
	ValaParameter* _tmp48_;
	const gchar* _tmp49_;
	const gchar* _tmp50_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (param != NULL, NULL);
	_tmp0_ = param;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_data_type_copy (_tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
	_tmp6_ = _tmp5_;
	_vala_code_node_unref0 (_tmp4_);
	_result_ = _tmp6_;
	_tmp7_ = _result_;
	_tmp7_->lvalue = TRUE;
	_tmp8_ = _result_;
	_tmp9_ = param;
	_tmp10_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp9_);
	_tmp8_->array_null_terminated = _tmp10_;
	_tmp11_ = param;
	_tmp12_ = vala_get_ccode_array_length_expr ((ValaCodeNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = _tmp13_ != NULL;
	_g_free0 (_tmp13_);
	if (_tmp14_) {
		ValaGLibValue* _tmp15_;
		ValaParameter* _tmp16_;
		gchar* _tmp17_;
		gchar* _tmp18_;
		ValaCCodeConstant* _tmp19_;
		_tmp15_ = _result_;
		_tmp16_ = param;
		_tmp17_ = vala_get_ccode_array_length_expr ((ValaCodeNode*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = vala_ccode_constant_new (_tmp18_);
		_vala_ccode_node_unref0 (_tmp15_->array_length_cexpr);
		_tmp15_->array_length_cexpr = (ValaCCodeExpression*) _tmp19_;
		_g_free0 (_tmp18_);
	}
	_tmp20_ = _result_;
	_tmp21_ = param;
	_tmp22_ = vala_get_ccode_type ((ValaCodeNode*) _tmp21_);
	_g_free0 (_tmp20_->ctype);
	_tmp20_->ctype = _tmp22_;
	_tmp23_ = _result_;
	_tmp24_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp25_) : NULL);
	array_type = _tmp26_;
	_tmp27_ = _result_;
	_tmp28_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp29_) : NULL);
	delegate_type = _tmp30_;
	_tmp32_ = delegate_type;
	if (_tmp32_ != NULL) {
		ValaParameter* _tmp33_;
		ValaDataType* _tmp34_;
		ValaDataType* _tmp35_;
		gboolean _tmp36_;
		gboolean _tmp37_;
		_tmp33_ = param;
		_tmp34_ = vala_variable_get_variable_type ((ValaVariable*) _tmp33_);
		_tmp35_ = _tmp34_;
		_tmp36_ = vala_data_type_get_value_owned (_tmp35_);
		_tmp37_ = _tmp36_;
		_tmp31_ = !_tmp37_;
	} else {
		_tmp31_ = FALSE;
	}
	is_unowned_delegate = _tmp31_;
	_tmp40_ = param;
	_tmp41_ = vala_parameter_get_captured (_tmp40_);
	_tmp42_ = _tmp41_;
	if (_tmp42_) {
		_tmp39_ = TRUE;
	} else {
		gboolean _tmp43_;
		_tmp43_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
		_tmp39_ = _tmp43_;
	}
	if (_tmp39_) {
		gboolean _tmp44_;
		_tmp44_ = is_unowned_delegate;
		_tmp38_ = !_tmp44_;
	} else {
		_tmp38_ = FALSE;
	}
	if (_tmp38_) {
		ValaGLibValue* _tmp45_;
		ValaDataType* _tmp46_;
		ValaDataType* _tmp47_;
		_tmp45_ = _result_;
		_tmp46_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp45_);
		_tmp47_ = _tmp46_;
		vala_data_type_set_value_owned (_tmp47_, TRUE);
	}
	_tmp48_ = param;
	_tmp49_ = vala_symbol_get_name ((ValaSymbol*) _tmp48_);
	_tmp50_ = _tmp49_;
	if (g_strcmp0 (_tmp50_, "this") == 0) {
		gboolean _tmp51_;
		_tmp51_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
		if (_tmp51_) {
			ValaGLibValue* _tmp52_;
			ValaCCodeIdentifier* _tmp53_;
			ValaCCodeIdentifier* _tmp54_;
			ValaCCodeMemberAccess* _tmp55_;
			_tmp52_ = _result_;
			_tmp53_ = vala_ccode_identifier_new ("_data_");
			_tmp54_ = _tmp53_;
			_tmp55_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp54_, "self");
			_vala_ccode_node_unref0 (_tmp52_->cvalue);
			_tmp52_->cvalue = (ValaCCodeExpression*) _tmp55_;
			_vala_ccode_node_unref0 (_tmp54_);
		} else {
			ValaStruct* st = NULL;
			ValaGLibValue* _tmp56_;
			ValaDataType* _tmp57_;
			ValaDataType* _tmp58_;
			ValaTypeSymbol* _tmp59_;
			ValaTypeSymbol* _tmp60_;
			ValaStruct* _tmp61_;
			gboolean _tmp62_ = FALSE;
			ValaStruct* _tmp63_;
			_tmp56_ = _result_;
			_tmp57_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp56_);
			_tmp58_ = _tmp57_;
			_tmp59_ = vala_data_type_get_data_type (_tmp58_);
			_tmp60_ = _tmp59_;
			_tmp61_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp60_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp60_) : NULL);
			st = _tmp61_;
			_tmp63_ = st;
			if (_tmp63_ != NULL) {
				ValaStruct* _tmp64_;
				gboolean _tmp65_;
				_tmp64_ = st;
				_tmp65_ = vala_struct_is_simple_type (_tmp64_);
				_tmp62_ = !_tmp65_;
			} else {
				_tmp62_ = FALSE;
			}
			if (_tmp62_) {
				ValaGLibValue* _tmp66_;
				ValaCCodeIdentifier* _tmp67_;
				_tmp66_ = _result_;
				_tmp67_ = vala_ccode_identifier_new ("(*self)");
				_vala_ccode_node_unref0 (_tmp66_->cvalue);
				_tmp66_->cvalue = (ValaCCodeExpression*) _tmp67_;
			} else {
				ValaGLibValue* _tmp68_;
				ValaCCodeIdentifier* _tmp69_;
				_tmp68_ = _result_;
				_tmp69_ = vala_ccode_identifier_new ("self");
				_vala_ccode_node_unref0 (_tmp68_->cvalue);
				_tmp68_->cvalue = (ValaCCodeExpression*) _tmp69_;
			}
			_vala_code_node_unref0 (st);
		}
	} else {
		gchar* name = NULL;
		ValaParameter* _tmp70_;
		const gchar* _tmp71_;
		const gchar* _tmp72_;
		gchar* _tmp73_;
		ValaParameter* _tmp74_;
		gboolean _tmp75_;
		gboolean _tmp76_;
		gboolean _tmp307_ = FALSE;
		ValaParameter* _tmp308_;
		gboolean _tmp309_;
		gboolean _tmp310_;
		_tmp70_ = param;
		_tmp71_ = vala_symbol_get_name ((ValaSymbol*) _tmp70_);
		_tmp72_ = _tmp71_;
		_tmp73_ = g_strdup (_tmp72_);
		name = _tmp73_;
		_tmp74_ = param;
		_tmp75_ = vala_parameter_get_captured (_tmp74_);
		_tmp76_ = _tmp75_;
		if (_tmp76_) {
			ValaBlock* block = NULL;
			ValaParameter* _tmp77_;
			ValaSymbol* _tmp78_;
			ValaSymbol* _tmp79_;
			ValaBlock* _tmp80_;
			ValaBlock* _tmp81_;
			ValaGLibValue* _tmp88_;
			ValaBlock* _tmp89_;
			gint _tmp90_;
			gchar* _tmp91_;
			gchar* _tmp92_;
			ValaCCodeExpression* _tmp93_;
			ValaCCodeExpression* _tmp94_;
			ValaParameter* _tmp95_;
			const gchar* _tmp96_;
			const gchar* _tmp97_;
			gchar* _tmp98_;
			gchar* _tmp99_;
			ValaCCodeMemberAccess* _tmp100_;
			gboolean _tmp101_ = FALSE;
			ValaArrayType* _tmp102_;
			_tmp77_ = param;
			_tmp78_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp77_);
			_tmp79_ = _tmp78_;
			_tmp80_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp79_, VALA_TYPE_BLOCK) ? ((ValaBlock*) _tmp79_) : NULL);
			block = _tmp80_;
			_tmp81_ = block;
			if (_tmp81_ == NULL) {
				ValaParameter* _tmp82_;
				ValaSymbol* _tmp83_;
				ValaSymbol* _tmp84_;
				ValaBlock* _tmp85_;
				ValaBlock* _tmp86_;
				ValaBlock* _tmp87_;
				_tmp82_ = param;
				_tmp83_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp82_);
				_tmp84_ = _tmp83_;
				_tmp85_ = vala_subroutine_get_body ((ValaSubroutine*) G_TYPE_CHECK_INSTANCE_CAST (_tmp84_, VALA_TYPE_METHOD, ValaMethod));
				_tmp86_ = _tmp85_;
				_tmp87_ = _vala_code_node_ref0 (_tmp86_);
				_vala_code_node_unref0 (block);
				block = _tmp87_;
			}
			_tmp88_ = _result_;
			_tmp89_ = block;
			_tmp90_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp89_);
			_tmp91_ = g_strdup_printf ("_data%d_", _tmp90_);
			_tmp92_ = _tmp91_;
			_tmp93_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp92_);
			_tmp94_ = _tmp93_;
			_tmp95_ = param;
			_tmp96_ = vala_symbol_get_name ((ValaSymbol*) _tmp95_);
			_tmp97_ = _tmp96_;
			_tmp98_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp97_);
			_tmp99_ = _tmp98_;
			_tmp100_ = vala_ccode_member_access_new_pointer (_tmp94_, _tmp99_);
			_vala_ccode_node_unref0 (_tmp88_->cvalue);
			_tmp88_->cvalue = (ValaCCodeExpression*) _tmp100_;
			_g_free0 (_tmp99_);
			_vala_ccode_node_unref0 (_tmp94_);
			_g_free0 (_tmp92_);
			_tmp102_ = array_type;
			if (_tmp102_ != NULL) {
				ValaParameter* _tmp103_;
				gboolean _tmp104_;
				_tmp103_ = param;
				_tmp104_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp103_);
				_tmp101_ = _tmp104_;
			} else {
				_tmp101_ = FALSE;
			}
			if (_tmp101_) {
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp105_ = FALSE;
						_tmp105_ = TRUE;
						while (TRUE) {
							gint _tmp107_;
							ValaArrayType* _tmp108_;
							gint _tmp109_;
							gint _tmp110_;
							ValaGLibValue* _tmp111_;
							ValaBlock* _tmp112_;
							gint _tmp113_;
							gchar* _tmp114_;
							gchar* _tmp115_;
							ValaCCodeExpression* _tmp116_;
							ValaCCodeExpression* _tmp117_;
							ValaParameter* _tmp118_;
							gint _tmp119_;
							gchar* _tmp120_;
							gchar* _tmp121_;
							ValaCCodeMemberAccess* _tmp122_;
							ValaCCodeMemberAccess* _tmp123_;
							if (!_tmp105_) {
								gint _tmp106_;
								_tmp106_ = dim;
								dim = _tmp106_ + 1;
							}
							_tmp105_ = FALSE;
							_tmp107_ = dim;
							_tmp108_ = array_type;
							_tmp109_ = vala_array_type_get_rank (_tmp108_);
							_tmp110_ = _tmp109_;
							if (!(_tmp107_ <= _tmp110_)) {
								break;
							}
							_tmp111_ = _result_;
							_tmp112_ = block;
							_tmp113_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp112_);
							_tmp114_ = g_strdup_printf ("_data%d_", _tmp113_);
							_tmp115_ = _tmp114_;
							_tmp116_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp115_);
							_tmp117_ = _tmp116_;
							_tmp118_ = param;
							_tmp119_ = dim;
							_tmp120_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp118_, _tmp119_);
							_tmp121_ = _tmp120_;
							_tmp122_ = vala_ccode_member_access_new_pointer (_tmp117_, _tmp121_);
							_tmp123_ = _tmp122_;
							vala_glib_value_append_array_length_cvalue (_tmp111_, (ValaCCodeExpression*) _tmp123_);
							_vala_ccode_node_unref0 (_tmp123_);
							_g_free0 (_tmp121_);
							_vala_ccode_node_unref0 (_tmp117_);
							_g_free0 (_tmp115_);
						}
					}
				}
			} else {
				gboolean _tmp124_ = FALSE;
				ValaDelegateType* _tmp125_;
				_tmp125_ = delegate_type;
				if (_tmp125_ != NULL) {
					ValaDelegateType* _tmp126_;
					ValaDelegate* _tmp127_;
					ValaDelegate* _tmp128_;
					gboolean _tmp129_;
					gboolean _tmp130_;
					_tmp126_ = delegate_type;
					_tmp127_ = vala_delegate_type_get_delegate_symbol (_tmp126_);
					_tmp128_ = _tmp127_;
					_tmp129_ = vala_delegate_get_has_target (_tmp128_);
					_tmp130_ = _tmp129_;
					_tmp124_ = _tmp130_;
				} else {
					_tmp124_ = FALSE;
				}
				if (_tmp124_) {
					ValaGLibValue* _tmp131_;
					ValaBlock* _tmp132_;
					gint _tmp133_;
					gchar* _tmp134_;
					gchar* _tmp135_;
					ValaCCodeExpression* _tmp136_;
					ValaCCodeExpression* _tmp137_;
					ValaParameter* _tmp138_;
					gchar* _tmp139_;
					gchar* _tmp140_;
					ValaCCodeMemberAccess* _tmp141_;
					ValaGLibValue* _tmp142_;
					ValaDataType* _tmp143_;
					ValaDataType* _tmp144_;
					gboolean _tmp145_;
					_tmp131_ = _result_;
					_tmp132_ = block;
					_tmp133_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp132_);
					_tmp134_ = g_strdup_printf ("_data%d_", _tmp133_);
					_tmp135_ = _tmp134_;
					_tmp136_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp135_);
					_tmp137_ = _tmp136_;
					_tmp138_ = param;
					_tmp139_ = vala_get_ccode_delegate_target_name ((ValaVariable*) _tmp138_);
					_tmp140_ = _tmp139_;
					_tmp141_ = vala_ccode_member_access_new_pointer (_tmp137_, _tmp140_);
					_vala_ccode_node_unref0 (_tmp131_->delegate_target_cvalue);
					_tmp131_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp141_;
					_g_free0 (_tmp140_);
					_vala_ccode_node_unref0 (_tmp137_);
					_g_free0 (_tmp135_);
					_tmp142_ = _result_;
					_tmp143_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp142_);
					_tmp144_ = _tmp143_;
					_tmp145_ = vala_data_type_is_disposable (_tmp144_);
					if (_tmp145_) {
						ValaGLibValue* _tmp146_;
						ValaBlock* _tmp147_;
						gint _tmp148_;
						gchar* _tmp149_;
						gchar* _tmp150_;
						ValaCCodeExpression* _tmp151_;
						ValaCCodeExpression* _tmp152_;
						ValaParameter* _tmp153_;
						const gchar* _tmp154_;
						const gchar* _tmp155_;
						gchar* _tmp156_;
						gchar* _tmp157_;
						gchar* _tmp158_;
						gchar* _tmp159_;
						ValaCCodeMemberAccess* _tmp160_;
						_tmp146_ = _result_;
						_tmp147_ = block;
						_tmp148_ = vala_ccode_base_module_get_block_id ((ValaCCodeBaseModule*) self, _tmp147_);
						_tmp149_ = g_strdup_printf ("_data%d_", _tmp148_);
						_tmp150_ = _tmp149_;
						_tmp151_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp150_);
						_tmp152_ = _tmp151_;
						_tmp153_ = param;
						_tmp154_ = vala_symbol_get_name ((ValaSymbol*) _tmp153_);
						_tmp155_ = _tmp154_;
						_tmp156_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp155_);
						_tmp157_ = _tmp156_;
						_tmp158_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp157_);
						_tmp159_ = _tmp158_;
						_tmp160_ = vala_ccode_member_access_new_pointer (_tmp152_, _tmp159_);
						_vala_ccode_node_unref0 (_tmp146_->delegate_target_destroy_notify_cvalue);
						_tmp146_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp160_;
						_g_free0 (_tmp159_);
						_g_free0 (_tmp157_);
						_vala_ccode_node_unref0 (_tmp152_);
						_g_free0 (_tmp150_);
					}
				}
			}
			_vala_code_node_unref0 (block);
		} else {
			gboolean _tmp161_;
			_tmp161_ = vala_ccode_base_module_is_in_coroutine ((ValaCCodeBaseModule*) self);
			if (_tmp161_) {
				ValaGLibValue* _tmp162_;
				ValaParameter* _tmp163_;
				const gchar* _tmp164_;
				const gchar* _tmp165_;
				ValaCCodeExpression* _tmp166_;
				gboolean _tmp167_ = FALSE;
				ValaDelegateType* _tmp168_;
				_tmp162_ = _result_;
				_tmp163_ = param;
				_tmp164_ = vala_symbol_get_name ((ValaSymbol*) _tmp163_);
				_tmp165_ = _tmp164_;
				_tmp166_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp165_);
				_vala_ccode_node_unref0 (_tmp162_->cvalue);
				_tmp162_->cvalue = _tmp166_;
				_tmp168_ = delegate_type;
				if (_tmp168_ != NULL) {
					ValaDelegateType* _tmp169_;
					ValaDelegate* _tmp170_;
					ValaDelegate* _tmp171_;
					gboolean _tmp172_;
					gboolean _tmp173_;
					_tmp169_ = delegate_type;
					_tmp170_ = vala_delegate_type_get_delegate_symbol (_tmp169_);
					_tmp171_ = _tmp170_;
					_tmp172_ = vala_delegate_get_has_target (_tmp171_);
					_tmp173_ = _tmp172_;
					_tmp167_ = _tmp173_;
				} else {
					_tmp167_ = FALSE;
				}
				if (_tmp167_) {
					ValaGLibValue* _tmp174_;
					ValaCCodeIdentifier* _tmp175_;
					ValaCCodeIdentifier* _tmp176_;
					ValaParameter* _tmp177_;
					gchar* _tmp178_;
					gchar* _tmp179_;
					ValaCCodeMemberAccess* _tmp180_;
					ValaDelegateType* _tmp181_;
					gboolean _tmp182_;
					_tmp174_ = _result_;
					_tmp175_ = vala_ccode_identifier_new ("_data_");
					_tmp176_ = _tmp175_;
					_tmp177_ = param;
					_tmp178_ = vala_get_ccode_delegate_target_name ((ValaVariable*) _tmp177_);
					_tmp179_ = _tmp178_;
					_tmp180_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp176_, _tmp179_);
					_vala_ccode_node_unref0 (_tmp174_->delegate_target_cvalue);
					_tmp174_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp180_;
					_g_free0 (_tmp179_);
					_vala_ccode_node_unref0 (_tmp176_);
					_tmp181_ = delegate_type;
					_tmp182_ = vala_data_type_is_disposable ((ValaDataType*) _tmp181_);
					if (_tmp182_) {
						ValaGLibValue* _tmp183_;
						ValaCCodeIdentifier* _tmp184_;
						ValaCCodeIdentifier* _tmp185_;
						ValaParameter* _tmp186_;
						const gchar* _tmp187_;
						const gchar* _tmp188_;
						gchar* _tmp189_;
						gchar* _tmp190_;
						gchar* _tmp191_;
						gchar* _tmp192_;
						ValaCCodeMemberAccess* _tmp193_;
						_tmp183_ = _result_;
						_tmp184_ = vala_ccode_identifier_new ("_data_");
						_tmp185_ = _tmp184_;
						_tmp186_ = param;
						_tmp187_ = vala_symbol_get_name ((ValaSymbol*) _tmp186_);
						_tmp188_ = _tmp187_;
						_tmp189_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp188_);
						_tmp190_ = _tmp189_;
						_tmp191_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp190_);
						_tmp192_ = _tmp191_;
						_tmp193_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp185_, _tmp192_);
						_vala_ccode_node_unref0 (_tmp183_->delegate_target_destroy_notify_cvalue);
						_tmp183_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp193_;
						_g_free0 (_tmp192_);
						_g_free0 (_tmp190_);
						_vala_ccode_node_unref0 (_tmp185_);
					}
				}
			} else {
				ValaStruct* type_as_struct = NULL;
				ValaGLibValue* _tmp194_;
				ValaDataType* _tmp195_;
				ValaDataType* _tmp196_;
				ValaTypeSymbol* _tmp197_;
				ValaTypeSymbol* _tmp198_;
				ValaStruct* _tmp199_;
				ValaParameter* _tmp200_;
				ValaParameterDirection _tmp201_;
				ValaParameterDirection _tmp202_;
				gboolean _tmp205_ = FALSE;
				ValaParameter* _tmp206_;
				ValaParameterDirection _tmp207_;
				ValaParameterDirection _tmp208_;
				gboolean _tmp267_ = FALSE;
				ValaDelegateType* _tmp268_;
				_tmp194_ = _result_;
				_tmp195_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp194_);
				_tmp196_ = _tmp195_;
				_tmp197_ = vala_data_type_get_data_type (_tmp196_);
				_tmp198_ = _tmp197_;
				_tmp199_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp198_, VALA_TYPE_STRUCT) ? ((ValaStruct*) _tmp198_) : NULL);
				type_as_struct = _tmp199_;
				_tmp200_ = param;
				_tmp201_ = vala_parameter_get_direction (_tmp200_);
				_tmp202_ = _tmp201_;
				if (_tmp202_ == VALA_PARAMETER_DIRECTION_OUT) {
					const gchar* _tmp203_;
					gchar* _tmp204_;
					_tmp203_ = name;
					_tmp204_ = g_strdup_printf ("_vala_%s", _tmp203_);
					_g_free0 (name);
					name = _tmp204_;
				}
				_tmp206_ = param;
				_tmp207_ = vala_parameter_get_direction (_tmp206_);
				_tmp208_ = _tmp207_;
				if (_tmp208_ == VALA_PARAMETER_DIRECTION_REF) {
					_tmp205_ = TRUE;
				} else {
					gboolean _tmp209_ = FALSE;
					gboolean _tmp210_ = FALSE;
					gboolean _tmp211_ = FALSE;
					ValaParameter* _tmp212_;
					ValaParameterDirection _tmp213_;
					ValaParameterDirection _tmp214_;
					_tmp212_ = param;
					_tmp213_ = vala_parameter_get_direction (_tmp212_);
					_tmp214_ = _tmp213_;
					if (_tmp214_ == VALA_PARAMETER_DIRECTION_IN) {
						ValaStruct* _tmp215_;
						_tmp215_ = type_as_struct;
						_tmp211_ = _tmp215_ != NULL;
					} else {
						_tmp211_ = FALSE;
					}
					if (_tmp211_) {
						ValaStruct* _tmp216_;
						gboolean _tmp217_;
						_tmp216_ = type_as_struct;
						_tmp217_ = vala_struct_is_simple_type (_tmp216_);
						_tmp210_ = !_tmp217_;
					} else {
						_tmp210_ = FALSE;
					}
					if (_tmp210_) {
						ValaGLibValue* _tmp218_;
						ValaDataType* _tmp219_;
						ValaDataType* _tmp220_;
						gboolean _tmp221_;
						gboolean _tmp222_;
						_tmp218_ = _result_;
						_tmp219_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp218_);
						_tmp220_ = _tmp219_;
						_tmp221_ = vala_data_type_get_nullable (_tmp220_);
						_tmp222_ = _tmp221_;
						_tmp209_ = !_tmp222_;
					} else {
						_tmp209_ = FALSE;
					}
					_tmp205_ = _tmp209_;
				}
				if (_tmp205_) {
					ValaGLibValue* _tmp223_;
					const gchar* _tmp224_;
					gchar* _tmp225_;
					gchar* _tmp226_;
					ValaCCodeIdentifier* _tmp227_;
					ValaCCodeIdentifier* _tmp228_;
					ValaCCodeUnaryExpression* _tmp229_;
					_tmp223_ = _result_;
					_tmp224_ = name;
					_tmp225_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp224_);
					_tmp226_ = _tmp225_;
					_tmp227_ = vala_ccode_identifier_new (_tmp226_);
					_tmp228_ = _tmp227_;
					_tmp229_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp228_);
					_vala_ccode_node_unref0 (_tmp223_->cvalue);
					_tmp223_->cvalue = (ValaCCodeExpression*) _tmp229_;
					_vala_ccode_node_unref0 (_tmp228_);
					_g_free0 (_tmp226_);
				} else {
					gboolean _tmp230_ = FALSE;
					gboolean _tmp231_ = FALSE;
					gboolean _tmp232_ = FALSE;
					gboolean _tmp233_ = FALSE;
					ValaPropertyAccessor* _tmp234_;
					ValaPropertyAccessor* _tmp235_;
					_tmp234_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
					_tmp235_ = _tmp234_;
					if (_tmp235_ != NULL) {
						ValaPropertyAccessor* _tmp236_;
						ValaPropertyAccessor* _tmp237_;
						gboolean _tmp238_;
						gboolean _tmp239_;
						_tmp236_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp237_ = _tmp236_;
						_tmp238_ = vala_property_accessor_get_writable (_tmp237_);
						_tmp239_ = _tmp238_;
						_tmp233_ = _tmp239_;
					} else {
						_tmp233_ = FALSE;
					}
					if (_tmp233_) {
						ValaPropertyAccessor* _tmp240_;
						ValaPropertyAccessor* _tmp241_;
						ValaParameter* _tmp242_;
						ValaParameter* _tmp243_;
						ValaParameter* _tmp244_;
						_tmp240_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp241_ = _tmp240_;
						_tmp242_ = vala_property_accessor_get_value_parameter (_tmp241_);
						_tmp243_ = _tmp242_;
						_tmp244_ = param;
						_tmp232_ = _tmp243_ == _tmp244_;
					} else {
						_tmp232_ = FALSE;
					}
					if (_tmp232_) {
						ValaPropertyAccessor* _tmp245_;
						ValaPropertyAccessor* _tmp246_;
						ValaProperty* _tmp247_;
						ValaProperty* _tmp248_;
						ValaDataType* _tmp249_;
						ValaDataType* _tmp250_;
						gboolean _tmp251_;
						_tmp245_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp246_ = _tmp245_;
						_tmp247_ = vala_property_accessor_get_prop (_tmp246_);
						_tmp248_ = _tmp247_;
						_tmp249_ = vala_property_get_property_type (_tmp248_);
						_tmp250_ = _tmp249_;
						_tmp251_ = vala_data_type_is_real_struct_type (_tmp250_);
						_tmp231_ = _tmp251_;
					} else {
						_tmp231_ = FALSE;
					}
					if (_tmp231_) {
						ValaPropertyAccessor* _tmp252_;
						ValaPropertyAccessor* _tmp253_;
						ValaProperty* _tmp254_;
						ValaProperty* _tmp255_;
						ValaDataType* _tmp256_;
						ValaDataType* _tmp257_;
						gboolean _tmp258_;
						gboolean _tmp259_;
						_tmp252_ = vala_ccode_base_module_get_current_property_accessor ((ValaCCodeBaseModule*) self);
						_tmp253_ = _tmp252_;
						_tmp254_ = vala_property_accessor_get_prop (_tmp253_);
						_tmp255_ = _tmp254_;
						_tmp256_ = vala_property_get_property_type (_tmp255_);
						_tmp257_ = _tmp256_;
						_tmp258_ = vala_data_type_get_nullable (_tmp257_);
						_tmp259_ = _tmp258_;
						_tmp230_ = !_tmp259_;
					} else {
						_tmp230_ = FALSE;
					}
					if (_tmp230_) {
						ValaGLibValue* _tmp260_;
						ValaCCodeIdentifier* _tmp261_;
						ValaCCodeIdentifier* _tmp262_;
						ValaCCodeUnaryExpression* _tmp263_;
						_tmp260_ = _result_;
						_tmp261_ = vala_ccode_identifier_new ("value");
						_tmp262_ = _tmp261_;
						_tmp263_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, (ValaCCodeExpression*) _tmp262_);
						_vala_ccode_node_unref0 (_tmp260_->cvalue);
						_tmp260_->cvalue = (ValaCCodeExpression*) _tmp263_;
						_vala_ccode_node_unref0 (_tmp262_);
					} else {
						ValaGLibValue* _tmp264_;
						const gchar* _tmp265_;
						ValaCCodeExpression* _tmp266_;
						_tmp264_ = _result_;
						_tmp265_ = name;
						_tmp266_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp265_);
						_vala_ccode_node_unref0 (_tmp264_->cvalue);
						_tmp264_->cvalue = _tmp266_;
					}
				}
				_tmp268_ = delegate_type;
				if (_tmp268_ != NULL) {
					ValaDelegateType* _tmp269_;
					ValaDelegate* _tmp270_;
					ValaDelegate* _tmp271_;
					gboolean _tmp272_;
					gboolean _tmp273_;
					_tmp269_ = delegate_type;
					_tmp270_ = vala_delegate_type_get_delegate_symbol (_tmp269_);
					_tmp271_ = _tmp270_;
					_tmp272_ = vala_delegate_get_has_target (_tmp271_);
					_tmp273_ = _tmp272_;
					_tmp267_ = _tmp273_;
				} else {
					_tmp267_ = FALSE;
				}
				if (_tmp267_) {
					gchar* target_cname = NULL;
					ValaParameter* _tmp274_;
					gchar* _tmp275_;
					ValaParameter* _tmp276_;
					ValaParameterDirection _tmp277_;
					ValaParameterDirection _tmp278_;
					ValaCCodeExpression* target_expr = NULL;
					const gchar* _tmp281_;
					ValaCCodeIdentifier* _tmp282_;
					ValaCCodeExpression* delegate_target_destroy_notify = NULL;
					const gchar* _tmp283_;
					gchar* _tmp284_;
					gchar* _tmp285_;
					gchar* _tmp286_;
					gchar* _tmp287_;
					ValaCCodeIdentifier* _tmp288_;
					ValaCCodeExpression* _tmp289_;
					ValaParameter* _tmp290_;
					ValaParameterDirection _tmp291_;
					ValaParameterDirection _tmp292_;
					ValaGLibValue* _tmp297_;
					ValaCCodeExpression* _tmp298_;
					ValaCCodeExpression* _tmp299_;
					ValaGLibValue* _tmp300_;
					ValaDataType* _tmp301_;
					ValaDataType* _tmp302_;
					gboolean _tmp303_;
					_tmp274_ = param;
					_tmp275_ = vala_get_ccode_delegate_target_name ((ValaVariable*) _tmp274_);
					target_cname = _tmp275_;
					_tmp276_ = param;
					_tmp277_ = vala_parameter_get_direction (_tmp276_);
					_tmp278_ = _tmp277_;
					if (_tmp278_ == VALA_PARAMETER_DIRECTION_OUT) {
						const gchar* _tmp279_;
						gchar* _tmp280_;
						_tmp279_ = target_cname;
						_tmp280_ = g_strdup_printf ("_vala_%s", _tmp279_);
						_g_free0 (target_cname);
						target_cname = _tmp280_;
					}
					_tmp281_ = target_cname;
					_tmp282_ = vala_ccode_identifier_new (_tmp281_);
					target_expr = (ValaCCodeExpression*) _tmp282_;
					_tmp283_ = name;
					_tmp284_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp283_);
					_tmp285_ = _tmp284_;
					_tmp286_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp285_);
					_tmp287_ = _tmp286_;
					_tmp288_ = vala_ccode_identifier_new (_tmp287_);
					_tmp289_ = (ValaCCodeExpression*) _tmp288_;
					_g_free0 (_tmp287_);
					_g_free0 (_tmp285_);
					delegate_target_destroy_notify = _tmp289_;
					_tmp290_ = param;
					_tmp291_ = vala_parameter_get_direction (_tmp290_);
					_tmp292_ = _tmp291_;
					if (_tmp292_ == VALA_PARAMETER_DIRECTION_REF) {
						ValaCCodeExpression* _tmp293_;
						ValaCCodeUnaryExpression* _tmp294_;
						ValaCCodeExpression* _tmp295_;
						ValaCCodeUnaryExpression* _tmp296_;
						_tmp293_ = target_expr;
						_tmp294_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp293_);
						_vala_ccode_node_unref0 (target_expr);
						target_expr = (ValaCCodeExpression*) _tmp294_;
						_tmp295_ = delegate_target_destroy_notify;
						_tmp296_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp295_);
						_vala_ccode_node_unref0 (delegate_target_destroy_notify);
						delegate_target_destroy_notify = (ValaCCodeExpression*) _tmp296_;
					}
					_tmp297_ = _result_;
					_tmp298_ = target_expr;
					_tmp299_ = _vala_ccode_node_ref0 (_tmp298_);
					_vala_ccode_node_unref0 (_tmp297_->delegate_target_cvalue);
					_tmp297_->delegate_target_cvalue = _tmp299_;
					_tmp300_ = _result_;
					_tmp301_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp300_);
					_tmp302_ = _tmp301_;
					_tmp303_ = vala_data_type_is_disposable (_tmp302_);
					if (_tmp303_) {
						ValaGLibValue* _tmp304_;
						ValaCCodeExpression* _tmp305_;
						ValaCCodeExpression* _tmp306_;
						_tmp304_ = _result_;
						_tmp305_ = delegate_target_destroy_notify;
						_tmp306_ = _vala_ccode_node_ref0 (_tmp305_);
						_vala_ccode_node_unref0 (_tmp304_->delegate_target_destroy_notify_cvalue);
						_tmp304_->delegate_target_destroy_notify_cvalue = _tmp306_;
					}
					_vala_ccode_node_unref0 (delegate_target_destroy_notify);
					_vala_ccode_node_unref0 (target_expr);
					_g_free0 (target_cname);
				}
				_vala_code_node_unref0 (type_as_struct);
			}
		}
		_tmp308_ = param;
		_tmp309_ = vala_parameter_get_captured (_tmp308_);
		_tmp310_ = _tmp309_;
		if (!_tmp310_) {
			ValaArrayType* _tmp311_;
			_tmp311_ = array_type;
			_tmp307_ = _tmp311_ != NULL;
		} else {
			_tmp307_ = FALSE;
		}
		if (_tmp307_) {
			gboolean _tmp312_ = FALSE;
			ValaParameter* _tmp313_;
			gboolean _tmp314_;
			_tmp313_ = param;
			_tmp314_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp313_);
			if (_tmp314_) {
				ValaParameter* _tmp315_;
				gboolean _tmp316_;
				_tmp315_ = param;
				_tmp316_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp315_);
				_tmp312_ = !_tmp316_;
			} else {
				_tmp312_ = FALSE;
			}
			if (_tmp312_) {
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp317_ = FALSE;
						_tmp317_ = TRUE;
						while (TRUE) {
							gint _tmp319_;
							ValaArrayType* _tmp320_;
							gint _tmp321_;
							gint _tmp322_;
							ValaCCodeExpression* length_expr = NULL;
							ValaParameter* _tmp323_;
							gint _tmp324_;
							gchar* _tmp325_;
							gchar* _tmp326_;
							ValaCCodeExpression* _tmp327_;
							ValaCCodeExpression* _tmp328_;
							ValaParameter* _tmp329_;
							ValaParameterDirection _tmp330_;
							ValaParameterDirection _tmp331_;
							ValaGLibValue* _tmp344_;
							ValaCCodeExpression* _tmp345_;
							if (!_tmp317_) {
								gint _tmp318_;
								_tmp318_ = dim;
								dim = _tmp318_ + 1;
							}
							_tmp317_ = FALSE;
							_tmp319_ = dim;
							_tmp320_ = array_type;
							_tmp321_ = vala_array_type_get_rank (_tmp320_);
							_tmp322_ = _tmp321_;
							if (!(_tmp319_ <= _tmp322_)) {
								break;
							}
							_tmp323_ = param;
							_tmp324_ = dim;
							_tmp325_ = vala_ccode_base_module_get_parameter_array_length_cname ((ValaCCodeBaseModule*) self, _tmp323_, _tmp324_);
							_tmp326_ = _tmp325_;
							_tmp327_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp326_);
							_tmp328_ = _tmp327_;
							_g_free0 (_tmp326_);
							length_expr = _tmp328_;
							_tmp329_ = param;
							_tmp330_ = vala_parameter_get_direction (_tmp329_);
							_tmp331_ = _tmp330_;
							if (_tmp331_ == VALA_PARAMETER_DIRECTION_OUT) {
								const gchar* _tmp332_;
								gchar* _tmp333_;
								gchar* _tmp334_;
								gint _tmp335_;
								gchar* _tmp336_;
								gchar* _tmp337_;
								ValaCCodeExpression* _tmp338_;
								_tmp332_ = name;
								_tmp333_ = vala_ccode_base_module_get_variable_cname ((ValaCCodeBaseModule*) self, _tmp332_);
								_tmp334_ = _tmp333_;
								_tmp335_ = dim;
								_tmp336_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp334_, _tmp335_);
								_tmp337_ = _tmp336_;
								_tmp338_ = vala_ccode_base_module_get_variable_cexpression ((ValaCCodeBaseModule*) self, _tmp337_);
								_vala_ccode_node_unref0 (length_expr);
								length_expr = _tmp338_;
								_g_free0 (_tmp337_);
								_g_free0 (_tmp334_);
							} else {
								ValaParameter* _tmp339_;
								ValaParameterDirection _tmp340_;
								ValaParameterDirection _tmp341_;
								_tmp339_ = param;
								_tmp340_ = vala_parameter_get_direction (_tmp339_);
								_tmp341_ = _tmp340_;
								if (_tmp341_ == VALA_PARAMETER_DIRECTION_REF) {
									ValaCCodeExpression* _tmp342_;
									ValaCCodeUnaryExpression* _tmp343_;
									_tmp342_ = length_expr;
									_tmp343_ = vala_ccode_unary_expression_new (VALA_CCODE_UNARY_OPERATOR_POINTER_INDIRECTION, _tmp342_);
									_vala_ccode_node_unref0 (length_expr);
									length_expr = (ValaCCodeExpression*) _tmp343_;
								}
							}
							_tmp344_ = _result_;
							_tmp345_ = length_expr;
							vala_glib_value_append_array_length_cvalue (_tmp344_, _tmp345_);
							_vala_ccode_node_unref0 (length_expr);
						}
					}
				}
			}
		}
		_g_free0 (name);
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_get_field_cvalue (ValaCCodeBaseModule* base, ValaField* field, ValaTargetValue* instance) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaDataType* value_type = NULL;
	ValaField* _tmp0_;
	ValaDataType* _tmp1_;
	ValaDataType* _tmp2_;
	ValaDataType* _tmp3_;
	ValaGLibValue* _result_ = NULL;
	ValaDataType* _tmp4_;
	ValaGLibValue* _tmp5_;
	ValaTargetValue* _tmp6_;
	ValaGLibValue* _tmp17_;
	ValaGLibValue* _tmp18_;
	ValaField* _tmp19_;
	gboolean _tmp20_;
	ValaField* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	gboolean _tmp24_;
	ValaGLibValue* _tmp30_;
	ValaField* _tmp31_;
	gchar* _tmp32_;
	ValaArrayType* array_type = NULL;
	ValaGLibValue* _tmp33_;
	ValaDataType* _tmp34_;
	ValaDataType* _tmp35_;
	ValaArrayType* _tmp36_;
	ValaDelegateType* delegate_type = NULL;
	ValaGLibValue* _tmp37_;
	ValaDataType* _tmp38_;
	ValaDataType* _tmp39_;
	ValaDelegateType* _tmp40_;
	ValaField* _tmp41_;
	ValaMemberBinding _tmp42_;
	ValaMemberBinding _tmp43_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (field != NULL, NULL);
	_tmp0_ = field;
	_tmp1_ = vala_variable_get_variable_type ((ValaVariable*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_data_type_copy (_tmp2_);
	value_type = _tmp3_;
	_tmp4_ = value_type;
	_tmp5_ = vala_glib_value_new (_tmp4_, NULL, FALSE);
	_result_ = _tmp5_;
	_tmp6_ = instance;
	if (_tmp6_ != NULL) {
		ValaGLibValue* _tmp7_;
		ValaField* _tmp8_;
		ValaDataType* _tmp9_;
		ValaDataType* _tmp10_;
		ValaTargetValue* _tmp11_;
		ValaDataType* _tmp12_;
		ValaDataType* _tmp13_;
		ValaField* _tmp14_;
		ValaDataType* _tmp15_;
		ValaDataType* _tmp16_;
		_tmp7_ = _result_;
		_tmp8_ = field;
		_tmp9_ = vala_variable_get_variable_type ((ValaVariable*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = instance;
		_tmp12_ = vala_target_value_get_value_type (_tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = field;
		_tmp15_ = vala_data_type_get_actual_type (_tmp10_, _tmp13_, NULL, (ValaCodeNode*) _tmp14_);
		_tmp16_ = _tmp15_;
		vala_target_value_set_actual_value_type ((ValaTargetValue*) _tmp7_, _tmp16_);
		_vala_code_node_unref0 (_tmp16_);
	}
	_tmp17_ = _result_;
	_tmp17_->lvalue = TRUE;
	_tmp18_ = _result_;
	_tmp19_ = field;
	_tmp20_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp19_);
	_tmp18_->array_null_terminated = _tmp20_;
	_tmp21_ = field;
	_tmp22_ = vala_get_ccode_array_length_expr ((ValaCodeNode*) _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = _tmp23_ != NULL;
	_g_free0 (_tmp23_);
	if (_tmp24_) {
		ValaGLibValue* _tmp25_;
		ValaField* _tmp26_;
		gchar* _tmp27_;
		gchar* _tmp28_;
		ValaCCodeConstant* _tmp29_;
		_tmp25_ = _result_;
		_tmp26_ = field;
		_tmp27_ = vala_get_ccode_array_length_expr ((ValaCodeNode*) _tmp26_);
		_tmp28_ = _tmp27_;
		_tmp29_ = vala_ccode_constant_new (_tmp28_);
		_vala_ccode_node_unref0 (_tmp25_->array_length_cexpr);
		_tmp25_->array_length_cexpr = (ValaCCodeExpression*) _tmp29_;
		_g_free0 (_tmp28_);
	}
	_tmp30_ = _result_;
	_tmp31_ = field;
	_tmp32_ = vala_get_ccode_type ((ValaCodeNode*) _tmp31_);
	_g_free0 (_tmp30_->ctype);
	_tmp30_->ctype = _tmp32_;
	_tmp33_ = _result_;
	_tmp34_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp33_);
	_tmp35_ = _tmp34_;
	_tmp36_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp35_) : NULL);
	array_type = _tmp36_;
	_tmp37_ = _result_;
	_tmp38_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp37_);
	_tmp39_ = _tmp38_;
	_tmp40_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp39_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp39_) : NULL);
	delegate_type = _tmp40_;
	_tmp41_ = field;
	_tmp42_ = vala_field_get_binding (_tmp41_);
	_tmp43_ = _tmp42_;
	if (_tmp43_ == VALA_MEMBER_BINDING_INSTANCE) {
		ValaCCodeExpression* pub_inst = NULL;
		ValaTargetValue* _tmp44_;
		ValaDataType* instance_target_type = NULL;
		ValaField* _tmp47_;
		ValaSymbol* _tmp48_;
		ValaSymbol* _tmp49_;
		ValaDataType* _tmp50_;
		ValaClass* cl = NULL;
		ValaDataType* _tmp51_;
		ValaTypeSymbol* _tmp52_;
		ValaTypeSymbol* _tmp53_;
		ValaClass* _tmp54_;
		gboolean _tmp55_ = FALSE;
		ValaDataType* _tmp56_;
		ValaTypeSymbol* _tmp57_;
		ValaTypeSymbol* _tmp58_;
		ValaClass* _tmp59_;
		gboolean is_gtypeinstance = FALSE;
		ValaCCodeExpression* inst = NULL;
		gboolean _tmp65_ = FALSE;
		gboolean _tmp66_;
		ValaCCodeExpression* _tmp77_;
		gboolean _tmp88_ = FALSE;
		ValaDataType* _tmp89_;
		ValaTypeSymbol* _tmp90_;
		ValaTypeSymbol* _tmp91_;
		gboolean _tmp92_;
		gboolean _tmp110_ = FALSE;
		ValaArrayType* _tmp111_;
		pub_inst = NULL;
		_tmp44_ = instance;
		if (_tmp44_ != NULL) {
			ValaTargetValue* _tmp45_;
			ValaCCodeExpression* _tmp46_;
			_tmp45_ = instance;
			_tmp46_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp45_);
			_vala_ccode_node_unref0 (pub_inst);
			pub_inst = _tmp46_;
		}
		_tmp47_ = field;
		_tmp48_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp47_);
		_tmp49_ = _tmp48_;
		_tmp50_ = vala_ccode_base_module_get_data_type_for_symbol (G_TYPE_CHECK_INSTANCE_CAST (_tmp49_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
		instance_target_type = _tmp50_;
		_tmp51_ = instance_target_type;
		_tmp52_ = vala_data_type_get_data_type (_tmp51_);
		_tmp53_ = _tmp52_;
		_tmp54_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp53_) : NULL);
		cl = _tmp54_;
		_tmp56_ = instance_target_type;
		_tmp57_ = vala_data_type_get_data_type (_tmp56_);
		_tmp58_ = _tmp57_;
		_tmp59_ = cl;
		if (_tmp58_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp59_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol)) {
			gboolean _tmp60_ = FALSE;
			ValaClass* _tmp61_;
			_tmp61_ = cl;
			if (_tmp61_ == NULL) {
				_tmp60_ = TRUE;
			} else {
				ValaClass* _tmp62_;
				gboolean _tmp63_;
				gboolean _tmp64_;
				_tmp62_ = cl;
				_tmp63_ = vala_class_get_is_compact (_tmp62_);
				_tmp64_ = _tmp63_;
				_tmp60_ = !_tmp64_;
			}
			_tmp55_ = _tmp60_;
		} else {
			_tmp55_ = FALSE;
		}
		is_gtypeinstance = _tmp55_;
		_tmp66_ = is_gtypeinstance;
		if (_tmp66_) {
			ValaField* _tmp67_;
			ValaSymbolAccessibility _tmp68_;
			ValaSymbolAccessibility _tmp69_;
			_tmp67_ = field;
			_tmp68_ = vala_symbol_get_access ((ValaSymbol*) _tmp67_);
			_tmp69_ = _tmp68_;
			_tmp65_ = _tmp69_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
		} else {
			_tmp65_ = FALSE;
		}
		if (_tmp65_) {
			ValaCCodeExpression* _tmp70_;
			ValaCCodeMemberAccess* _tmp71_;
			_tmp70_ = pub_inst;
			_tmp71_ = vala_ccode_member_access_new_pointer (_tmp70_, "priv");
			_vala_ccode_node_unref0 (inst);
			inst = (ValaCCodeExpression*) _tmp71_;
		} else {
			ValaClass* _tmp72_;
			ValaCCodeExpression* _tmp75_;
			ValaCCodeExpression* _tmp76_;
			_tmp72_ = cl;
			if (_tmp72_ != NULL) {
				ValaClass* _tmp73_;
				ValaCCodeFile* _tmp74_;
				_tmp73_ = cl;
				_tmp74_ = ((ValaCCodeBaseModule*) self)->cfile;
				vala_ccode_base_module_generate_class_struct_declaration ((ValaCCodeBaseModule*) self, _tmp73_, _tmp74_);
			}
			_tmp75_ = pub_inst;
			_tmp76_ = _vala_ccode_node_ref0 (_tmp75_);
			_vala_ccode_node_unref0 (inst);
			inst = _tmp76_;
		}
		_tmp77_ = inst;
		if (_tmp77_ == NULL) {
			ValaField* _tmp78_;
			ValaSourceReference* _tmp79_;
			ValaSourceReference* _tmp80_;
			ValaField* _tmp81_;
			gchar* _tmp82_;
			gchar* _tmp83_;
			gchar* _tmp84_;
			gchar* _tmp85_;
			ValaGLibValue* _tmp86_;
			ValaCCodeInvalidExpression* _tmp87_;
			_tmp78_ = field;
			_tmp79_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp78_);
			_tmp80_ = _tmp79_;
			_tmp81_ = field;
			_tmp82_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp81_);
			_tmp83_ = _tmp82_;
			_tmp84_ = g_strdup_printf ("Invalid access to instance member `%s'", _tmp83_);
			_tmp85_ = _tmp84_;
			vala_report_error (_tmp80_, _tmp85_);
			_g_free0 (_tmp85_);
			_g_free0 (_tmp83_);
			_tmp86_ = _result_;
			_tmp87_ = vala_ccode_invalid_expression_new ();
			_vala_ccode_node_unref0 (_tmp86_->cvalue);
			_tmp86_->cvalue = (ValaCCodeExpression*) _tmp87_;
			result = (ValaTargetValue*) _result_;
			_vala_ccode_node_unref0 (inst);
			_vala_code_node_unref0 (cl);
			_vala_code_node_unref0 (instance_target_type);
			_vala_ccode_node_unref0 (pub_inst);
			_vala_code_node_unref0 (delegate_type);
			_vala_code_node_unref0 (array_type);
			_vala_code_node_unref0 (value_type);
			return result;
		}
		_tmp89_ = instance_target_type;
		_tmp90_ = vala_data_type_get_data_type (_tmp89_);
		_tmp91_ = _tmp90_;
		_tmp92_ = vala_typesymbol_is_reference_type (_tmp91_);
		if (_tmp92_) {
			_tmp88_ = TRUE;
		} else {
			gboolean _tmp93_ = FALSE;
			ValaTargetValue* _tmp94_;
			_tmp94_ = instance;
			if (_tmp94_ != NULL) {
				ValaTargetValue* _tmp95_;
				ValaDataType* _tmp96_;
				ValaDataType* _tmp97_;
				_tmp95_ = instance;
				_tmp96_ = vala_target_value_get_value_type (_tmp95_);
				_tmp97_ = _tmp96_;
				_tmp93_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp97_, VALA_TYPE_POINTER_TYPE);
			} else {
				_tmp93_ = FALSE;
			}
			_tmp88_ = _tmp93_;
		}
		if (_tmp88_) {
			ValaGLibValue* _tmp98_;
			ValaCCodeExpression* _tmp99_;
			ValaField* _tmp100_;
			gchar* _tmp101_;
			gchar* _tmp102_;
			ValaCCodeMemberAccess* _tmp103_;
			_tmp98_ = _result_;
			_tmp99_ = inst;
			_tmp100_ = field;
			_tmp101_ = vala_get_ccode_name ((ValaCodeNode*) _tmp100_);
			_tmp102_ = _tmp101_;
			_tmp103_ = vala_ccode_member_access_new_pointer (_tmp99_, _tmp102_);
			_vala_ccode_node_unref0 (_tmp98_->cvalue);
			_tmp98_->cvalue = (ValaCCodeExpression*) _tmp103_;
			_g_free0 (_tmp102_);
		} else {
			ValaGLibValue* _tmp104_;
			ValaCCodeExpression* _tmp105_;
			ValaField* _tmp106_;
			gchar* _tmp107_;
			gchar* _tmp108_;
			ValaCCodeMemberAccess* _tmp109_;
			_tmp104_ = _result_;
			_tmp105_ = inst;
			_tmp106_ = field;
			_tmp107_ = vala_get_ccode_name ((ValaCodeNode*) _tmp106_);
			_tmp108_ = _tmp107_;
			_tmp109_ = vala_ccode_member_access_new (_tmp105_, _tmp108_, FALSE);
			_vala_ccode_node_unref0 (_tmp104_->cvalue);
			_tmp104_->cvalue = (ValaCCodeExpression*) _tmp109_;
			_g_free0 (_tmp108_);
		}
		_tmp111_ = array_type;
		if (_tmp111_ != NULL) {
			ValaField* _tmp112_;
			gboolean _tmp113_;
			_tmp112_ = field;
			_tmp113_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp112_);
			_tmp110_ = _tmp113_;
		} else {
			_tmp110_ = FALSE;
		}
		if (_tmp110_) {
			gboolean _tmp143_ = FALSE;
			ValaArrayType* _tmp144_;
			gint _tmp145_;
			gint _tmp146_;
			{
				gint dim = 0;
				dim = 1;
				{
					gboolean _tmp114_ = FALSE;
					_tmp114_ = TRUE;
					while (TRUE) {
						gint _tmp116_;
						ValaArrayType* _tmp117_;
						gint _tmp118_;
						gint _tmp119_;
						ValaCCodeExpression* length_expr = NULL;
						gchar* length_cname = NULL;
						ValaField* _tmp120_;
						gchar* _tmp121_;
						gchar* _tmp122_;
						gboolean _tmp123_;
						ValaField* _tmp131_;
						ValaSymbol* _tmp132_;
						ValaSymbol* _tmp133_;
						gboolean _tmp134_;
						ValaGLibValue* _tmp141_;
						ValaCCodeExpression* _tmp142_;
						if (!_tmp114_) {
							gint _tmp115_;
							_tmp115_ = dim;
							dim = _tmp115_ + 1;
						}
						_tmp114_ = FALSE;
						_tmp116_ = dim;
						_tmp117_ = array_type;
						_tmp118_ = vala_array_type_get_rank (_tmp117_);
						_tmp119_ = _tmp118_;
						if (!(_tmp116_ <= _tmp119_)) {
							break;
						}
						length_expr = NULL;
						_tmp120_ = field;
						_tmp121_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp120_);
						_tmp122_ = _tmp121_;
						_tmp123_ = _tmp122_ != NULL;
						_g_free0 (_tmp122_);
						if (_tmp123_) {
							ValaField* _tmp124_;
							gchar* _tmp125_;
							_tmp124_ = field;
							_tmp125_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp124_);
							_g_free0 (length_cname);
							length_cname = _tmp125_;
						} else {
							ValaField* _tmp126_;
							gchar* _tmp127_;
							gchar* _tmp128_;
							gint _tmp129_;
							gchar* _tmp130_;
							_tmp126_ = field;
							_tmp127_ = vala_get_ccode_name ((ValaCodeNode*) _tmp126_);
							_tmp128_ = _tmp127_;
							_tmp129_ = dim;
							_tmp130_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp128_, _tmp129_);
							_g_free0 (length_cname);
							length_cname = _tmp130_;
							_g_free0 (_tmp128_);
						}
						_tmp131_ = field;
						_tmp132_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp131_);
						_tmp133_ = _tmp132_;
						_tmp134_ = vala_typesymbol_is_reference_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp133_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
						if (_tmp134_) {
							ValaCCodeExpression* _tmp135_;
							const gchar* _tmp136_;
							ValaCCodeMemberAccess* _tmp137_;
							_tmp135_ = inst;
							_tmp136_ = length_cname;
							_tmp137_ = vala_ccode_member_access_new_pointer (_tmp135_, _tmp136_);
							_vala_ccode_node_unref0 (length_expr);
							length_expr = (ValaCCodeExpression*) _tmp137_;
						} else {
							ValaCCodeExpression* _tmp138_;
							const gchar* _tmp139_;
							ValaCCodeMemberAccess* _tmp140_;
							_tmp138_ = inst;
							_tmp139_ = length_cname;
							_tmp140_ = vala_ccode_member_access_new (_tmp138_, _tmp139_, FALSE);
							_vala_ccode_node_unref0 (length_expr);
							length_expr = (ValaCCodeExpression*) _tmp140_;
						}
						_tmp141_ = _result_;
						_tmp142_ = length_expr;
						vala_glib_value_append_array_length_cvalue (_tmp141_, _tmp142_);
						_g_free0 (length_cname);
						_vala_ccode_node_unref0 (length_expr);
					}
				}
			}
			_tmp144_ = array_type;
			_tmp145_ = vala_array_type_get_rank (_tmp144_);
			_tmp146_ = _tmp145_;
			if (_tmp146_ == 1) {
				ValaField* _tmp147_;
				gboolean _tmp148_;
				_tmp147_ = field;
				_tmp148_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp147_);
				_tmp143_ = _tmp148_;
			} else {
				_tmp143_ = FALSE;
			}
			if (_tmp143_) {
				gchar* size_cname = NULL;
				ValaField* _tmp149_;
				gchar* _tmp150_;
				gchar* _tmp151_;
				gchar* _tmp152_;
				gchar* _tmp153_;
				ValaField* _tmp154_;
				ValaSymbol* _tmp155_;
				ValaSymbol* _tmp156_;
				gboolean _tmp157_;
				_tmp149_ = field;
				_tmp150_ = vala_get_ccode_name ((ValaCodeNode*) _tmp149_);
				_tmp151_ = _tmp150_;
				_tmp152_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp151_);
				_tmp153_ = _tmp152_;
				_g_free0 (_tmp151_);
				size_cname = _tmp153_;
				_tmp154_ = field;
				_tmp155_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp154_);
				_tmp156_ = _tmp155_;
				_tmp157_ = vala_typesymbol_is_reference_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp156_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
				if (_tmp157_) {
					ValaGLibValue* _tmp158_;
					ValaCCodeExpression* _tmp159_;
					const gchar* _tmp160_;
					ValaCCodeMemberAccess* _tmp161_;
					ValaCCodeMemberAccess* _tmp162_;
					_tmp158_ = _result_;
					_tmp159_ = inst;
					_tmp160_ = size_cname;
					_tmp161_ = vala_ccode_member_access_new_pointer (_tmp159_, _tmp160_);
					_tmp162_ = _tmp161_;
					vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp158_, (ValaCCodeExpression*) _tmp162_);
					_vala_ccode_node_unref0 (_tmp162_);
				} else {
					ValaGLibValue* _tmp163_;
					ValaCCodeExpression* _tmp164_;
					const gchar* _tmp165_;
					ValaCCodeMemberAccess* _tmp166_;
					ValaCCodeMemberAccess* _tmp167_;
					_tmp163_ = _result_;
					_tmp164_ = inst;
					_tmp165_ = size_cname;
					_tmp166_ = vala_ccode_member_access_new (_tmp164_, _tmp165_, FALSE);
					_tmp167_ = _tmp166_;
					vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp163_, (ValaCCodeExpression*) _tmp167_);
					_vala_ccode_node_unref0 (_tmp167_);
				}
				_g_free0 (size_cname);
			}
		} else {
			gboolean _tmp168_ = FALSE;
			gboolean _tmp169_ = FALSE;
			ValaDelegateType* _tmp170_;
			_tmp170_ = delegate_type;
			if (_tmp170_ != NULL) {
				ValaDelegateType* _tmp171_;
				ValaDelegate* _tmp172_;
				ValaDelegate* _tmp173_;
				gboolean _tmp174_;
				gboolean _tmp175_;
				_tmp171_ = delegate_type;
				_tmp172_ = vala_delegate_type_get_delegate_symbol (_tmp171_);
				_tmp173_ = _tmp172_;
				_tmp174_ = vala_delegate_get_has_target (_tmp173_);
				_tmp175_ = _tmp174_;
				_tmp169_ = _tmp175_;
			} else {
				_tmp169_ = FALSE;
			}
			if (_tmp169_) {
				ValaField* _tmp176_;
				gboolean _tmp177_;
				_tmp176_ = field;
				_tmp177_ = vala_get_ccode_delegate_target ((ValaCodeNode*) _tmp176_);
				_tmp168_ = _tmp177_;
			} else {
				_tmp168_ = FALSE;
			}
			if (_tmp168_) {
				gchar* target_cname = NULL;
				ValaField* _tmp178_;
				gchar* _tmp179_;
				gchar* target_destroy_notify_cname = NULL;
				ValaField* _tmp180_;
				gchar* _tmp181_;
				gchar* _tmp182_;
				gchar* _tmp183_;
				gchar* _tmp184_;
				ValaField* _tmp185_;
				ValaSymbol* _tmp186_;
				ValaSymbol* _tmp187_;
				gboolean _tmp188_;
				_tmp178_ = field;
				_tmp179_ = vala_get_ccode_delegate_target_name ((ValaVariable*) _tmp178_);
				target_cname = _tmp179_;
				_tmp180_ = field;
				_tmp181_ = vala_get_ccode_name ((ValaCodeNode*) _tmp180_);
				_tmp182_ = _tmp181_;
				_tmp183_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp182_);
				_tmp184_ = _tmp183_;
				_g_free0 (_tmp182_);
				target_destroy_notify_cname = _tmp184_;
				_tmp185_ = field;
				_tmp186_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp185_);
				_tmp187_ = _tmp186_;
				_tmp188_ = vala_typesymbol_is_reference_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp187_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
				if (_tmp188_) {
					ValaGLibValue* _tmp189_;
					ValaCCodeExpression* _tmp190_;
					const gchar* _tmp191_;
					ValaCCodeMemberAccess* _tmp192_;
					ValaGLibValue* _tmp193_;
					ValaDataType* _tmp194_;
					ValaDataType* _tmp195_;
					gboolean _tmp196_;
					_tmp189_ = _result_;
					_tmp190_ = inst;
					_tmp191_ = target_cname;
					_tmp192_ = vala_ccode_member_access_new_pointer (_tmp190_, _tmp191_);
					_vala_ccode_node_unref0 (_tmp189_->delegate_target_cvalue);
					_tmp189_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp192_;
					_tmp193_ = _result_;
					_tmp194_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp193_);
					_tmp195_ = _tmp194_;
					_tmp196_ = vala_data_type_is_disposable (_tmp195_);
					if (_tmp196_) {
						ValaGLibValue* _tmp197_;
						ValaCCodeExpression* _tmp198_;
						const gchar* _tmp199_;
						ValaCCodeMemberAccess* _tmp200_;
						_tmp197_ = _result_;
						_tmp198_ = inst;
						_tmp199_ = target_destroy_notify_cname;
						_tmp200_ = vala_ccode_member_access_new_pointer (_tmp198_, _tmp199_);
						_vala_ccode_node_unref0 (_tmp197_->delegate_target_destroy_notify_cvalue);
						_tmp197_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp200_;
					}
				} else {
					ValaGLibValue* _tmp201_;
					ValaCCodeExpression* _tmp202_;
					const gchar* _tmp203_;
					ValaCCodeMemberAccess* _tmp204_;
					ValaGLibValue* _tmp205_;
					ValaDataType* _tmp206_;
					ValaDataType* _tmp207_;
					gboolean _tmp208_;
					_tmp201_ = _result_;
					_tmp202_ = inst;
					_tmp203_ = target_cname;
					_tmp204_ = vala_ccode_member_access_new (_tmp202_, _tmp203_, FALSE);
					_vala_ccode_node_unref0 (_tmp201_->delegate_target_cvalue);
					_tmp201_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp204_;
					_tmp205_ = _result_;
					_tmp206_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp205_);
					_tmp207_ = _tmp206_;
					_tmp208_ = vala_data_type_is_disposable (_tmp207_);
					if (_tmp208_) {
						ValaGLibValue* _tmp209_;
						ValaCCodeExpression* _tmp210_;
						const gchar* _tmp211_;
						ValaCCodeMemberAccess* _tmp212_;
						_tmp209_ = _result_;
						_tmp210_ = inst;
						_tmp211_ = target_destroy_notify_cname;
						_tmp212_ = vala_ccode_member_access_new (_tmp210_, _tmp211_, FALSE);
						_vala_ccode_node_unref0 (_tmp209_->delegate_target_destroy_notify_cvalue);
						_tmp209_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp212_;
					}
				}
				_g_free0 (target_destroy_notify_cname);
				_g_free0 (target_cname);
			}
		}
		_vala_ccode_node_unref0 (inst);
		_vala_code_node_unref0 (cl);
		_vala_code_node_unref0 (instance_target_type);
		_vala_ccode_node_unref0 (pub_inst);
	} else {
		ValaField* _tmp213_;
		ValaMemberBinding _tmp214_;
		ValaMemberBinding _tmp215_;
		_tmp213_ = field;
		_tmp214_ = vala_field_get_binding (_tmp213_);
		_tmp215_ = _tmp214_;
		if (_tmp215_ == VALA_MEMBER_BINDING_CLASS) {
			ValaClass* cl = NULL;
			ValaField* _tmp216_;
			ValaSymbol* _tmp217_;
			ValaSymbol* _tmp218_;
			ValaClass* _tmp219_;
			ValaCCodeFunctionCall* cast = NULL;
			ValaClass* _tmp220_;
			gchar* _tmp221_;
			gchar* _tmp222_;
			gchar* _tmp223_;
			gchar* _tmp224_;
			ValaCCodeIdentifier* _tmp225_;
			ValaCCodeIdentifier* _tmp226_;
			ValaCCodeFunctionCall* _tmp227_;
			ValaCCodeFunctionCall* _tmp228_;
			ValaCCodeExpression* klass = NULL;
			ValaTargetValue* _tmp229_;
			ValaCCodeFunctionCall* _tmp253_;
			ValaCCodeExpression* _tmp254_;
			ValaField* _tmp255_;
			ValaSymbolAccessibility _tmp256_;
			ValaSymbolAccessibility _tmp257_;
			_tmp216_ = field;
			_tmp217_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp216_);
			_tmp218_ = _tmp217_;
			_tmp219_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp218_, VALA_TYPE_CLASS, ValaClass));
			cl = _tmp219_;
			_tmp220_ = cl;
			_tmp221_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp220_, NULL);
			_tmp222_ = _tmp221_;
			_tmp223_ = g_strconcat (_tmp222_, "_CLASS", NULL);
			_tmp224_ = _tmp223_;
			_tmp225_ = vala_ccode_identifier_new (_tmp224_);
			_tmp226_ = _tmp225_;
			_tmp227_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp226_);
			_tmp228_ = _tmp227_;
			_vala_ccode_node_unref0 (_tmp226_);
			_g_free0 (_tmp224_);
			_g_free0 (_tmp222_);
			cast = _tmp228_;
			_tmp229_ = instance;
			if (_tmp229_ == NULL) {
				ValaDataType* _tmp230_;
				ValaDataType* _tmp231_;
				gboolean _tmp232_;
				_tmp230_ = vala_ccode_base_module_get_this_type ((ValaCCodeBaseModule*) self);
				_tmp231_ = _tmp230_;
				_tmp232_ = _tmp231_ == NULL;
				_vala_code_node_unref0 (_tmp231_);
				if (_tmp232_) {
					ValaCCodeIdentifier* _tmp233_;
					_tmp233_ = vala_ccode_identifier_new ("klass");
					_vala_ccode_node_unref0 (klass);
					klass = (ValaCCodeExpression*) _tmp233_;
				} else {
					ValaCCodeFunctionCall* k = NULL;
					ValaCCodeIdentifier* _tmp234_;
					ValaCCodeIdentifier* _tmp235_;
					ValaCCodeFunctionCall* _tmp236_;
					ValaCCodeFunctionCall* _tmp237_;
					ValaCCodeFunctionCall* _tmp238_;
					ValaCCodeIdentifier* _tmp239_;
					ValaCCodeIdentifier* _tmp240_;
					ValaCCodeFunctionCall* _tmp241_;
					ValaCCodeExpression* _tmp242_;
					_tmp234_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS");
					_tmp235_ = _tmp234_;
					_tmp236_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp235_);
					_tmp237_ = _tmp236_;
					_vala_ccode_node_unref0 (_tmp235_);
					k = _tmp237_;
					_tmp238_ = k;
					_tmp239_ = vala_ccode_identifier_new ("self");
					_tmp240_ = _tmp239_;
					vala_ccode_function_call_add_argument (_tmp238_, (ValaCCodeExpression*) _tmp240_);
					_vala_ccode_node_unref0 (_tmp240_);
					_tmp241_ = k;
					_tmp242_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp241_);
					_vala_ccode_node_unref0 (klass);
					klass = _tmp242_;
					_vala_ccode_node_unref0 (k);
				}
			} else {
				ValaCCodeFunctionCall* k = NULL;
				ValaCCodeIdentifier* _tmp243_;
				ValaCCodeIdentifier* _tmp244_;
				ValaCCodeFunctionCall* _tmp245_;
				ValaCCodeFunctionCall* _tmp246_;
				ValaCCodeFunctionCall* _tmp247_;
				ValaTargetValue* _tmp248_;
				ValaCCodeExpression* _tmp249_;
				ValaCCodeExpression* _tmp250_;
				ValaCCodeFunctionCall* _tmp251_;
				ValaCCodeExpression* _tmp252_;
				_tmp243_ = vala_ccode_identifier_new ("G_OBJECT_GET_CLASS");
				_tmp244_ = _tmp243_;
				_tmp245_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp244_);
				_tmp246_ = _tmp245_;
				_vala_ccode_node_unref0 (_tmp244_);
				k = _tmp246_;
				_tmp247_ = k;
				_tmp248_ = instance;
				_tmp249_ = vala_ccode_base_module_get_cvalue_ ((ValaCCodeBaseModule*) self, _tmp248_);
				_tmp250_ = _tmp249_;
				vala_ccode_function_call_add_argument (_tmp247_, _tmp250_);
				_vala_ccode_node_unref0 (_tmp250_);
				_tmp251_ = k;
				_tmp252_ = _vala_ccode_node_ref0 ((ValaCCodeExpression*) _tmp251_);
				_vala_ccode_node_unref0 (klass);
				klass = _tmp252_;
				_vala_ccode_node_unref0 (k);
			}
			_tmp253_ = cast;
			_tmp254_ = klass;
			vala_ccode_function_call_add_argument (_tmp253_, _tmp254_);
			_tmp255_ = field;
			_tmp256_ = vala_symbol_get_access ((ValaSymbol*) _tmp255_);
			_tmp257_ = _tmp256_;
			if (_tmp257_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE) {
				ValaCCodeFunctionCall* ccall = NULL;
				ValaClass* _tmp258_;
				gchar* _tmp259_;
				gchar* _tmp260_;
				gchar* _tmp261_;
				gchar* _tmp262_;
				ValaCCodeIdentifier* _tmp263_;
				ValaCCodeIdentifier* _tmp264_;
				ValaCCodeFunctionCall* _tmp265_;
				ValaCCodeFunctionCall* _tmp266_;
				ValaCCodeFunctionCall* _tmp267_;
				ValaCCodeExpression* _tmp268_;
				ValaGLibValue* _tmp269_;
				ValaCCodeFunctionCall* _tmp270_;
				ValaField* _tmp271_;
				gchar* _tmp272_;
				gchar* _tmp273_;
				ValaCCodeMemberAccess* _tmp274_;
				_tmp258_ = cl;
				_tmp259_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp258_, NULL);
				_tmp260_ = _tmp259_;
				_tmp261_ = g_strdup_printf ("%s_GET_CLASS_PRIVATE", _tmp260_);
				_tmp262_ = _tmp261_;
				_tmp263_ = vala_ccode_identifier_new (_tmp262_);
				_tmp264_ = _tmp263_;
				_tmp265_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp264_);
				_tmp266_ = _tmp265_;
				_vala_ccode_node_unref0 (_tmp264_);
				_g_free0 (_tmp262_);
				_g_free0 (_tmp260_);
				ccall = _tmp266_;
				_tmp267_ = ccall;
				_tmp268_ = klass;
				vala_ccode_function_call_add_argument (_tmp267_, _tmp268_);
				_tmp269_ = _result_;
				_tmp270_ = ccall;
				_tmp271_ = field;
				_tmp272_ = vala_get_ccode_name ((ValaCodeNode*) _tmp271_);
				_tmp273_ = _tmp272_;
				_tmp274_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp270_, _tmp273_);
				_vala_ccode_node_unref0 (_tmp269_->cvalue);
				_tmp269_->cvalue = (ValaCCodeExpression*) _tmp274_;
				_g_free0 (_tmp273_);
				_vala_ccode_node_unref0 (ccall);
			} else {
				ValaGLibValue* _tmp275_;
				ValaCCodeFunctionCall* _tmp276_;
				ValaField* _tmp277_;
				gchar* _tmp278_;
				gchar* _tmp279_;
				ValaCCodeMemberAccess* _tmp280_;
				_tmp275_ = _result_;
				_tmp276_ = cast;
				_tmp277_ = field;
				_tmp278_ = vala_get_ccode_name ((ValaCodeNode*) _tmp277_);
				_tmp279_ = _tmp278_;
				_tmp280_ = vala_ccode_member_access_new_pointer ((ValaCCodeExpression*) _tmp276_, _tmp279_);
				_vala_ccode_node_unref0 (_tmp275_->cvalue);
				_tmp275_->cvalue = (ValaCCodeExpression*) _tmp280_;
				_g_free0 (_tmp279_);
			}
			_vala_ccode_node_unref0 (klass);
			_vala_ccode_node_unref0 (cast);
			_vala_code_node_unref0 (cl);
		} else {
			ValaField* _tmp281_;
			ValaCCodeFile* _tmp282_;
			ValaGLibValue* _tmp283_;
			ValaField* _tmp284_;
			gchar* _tmp285_;
			gchar* _tmp286_;
			ValaCCodeIdentifier* _tmp287_;
			gboolean _tmp288_ = FALSE;
			ValaArrayType* _tmp289_;
			_tmp281_ = field;
			_tmp282_ = ((ValaCCodeBaseModule*) self)->cfile;
			vala_ccode_base_module_generate_field_declaration ((ValaCCodeBaseModule*) self, _tmp281_, _tmp282_);
			_tmp283_ = _result_;
			_tmp284_ = field;
			_tmp285_ = vala_get_ccode_name ((ValaCodeNode*) _tmp284_);
			_tmp286_ = _tmp285_;
			_tmp287_ = vala_ccode_identifier_new (_tmp286_);
			_vala_ccode_node_unref0 (_tmp283_->cvalue);
			_tmp283_->cvalue = (ValaCCodeExpression*) _tmp287_;
			_g_free0 (_tmp286_);
			_tmp289_ = array_type;
			if (_tmp289_ != NULL) {
				ValaField* _tmp290_;
				gboolean _tmp291_;
				_tmp290_ = field;
				_tmp291_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp290_);
				_tmp288_ = _tmp291_;
			} else {
				_tmp288_ = FALSE;
			}
			if (_tmp288_) {
				gboolean _tmp313_ = FALSE;
				ValaArrayType* _tmp314_;
				gint _tmp315_;
				gint _tmp316_;
				{
					gint dim = 0;
					dim = 1;
					{
						gboolean _tmp292_ = FALSE;
						_tmp292_ = TRUE;
						while (TRUE) {
							gint _tmp294_;
							ValaArrayType* _tmp295_;
							gint _tmp296_;
							gint _tmp297_;
							gchar* length_cname = NULL;
							ValaField* _tmp298_;
							gchar* _tmp299_;
							gchar* _tmp300_;
							gboolean _tmp301_;
							ValaGLibValue* _tmp309_;
							const gchar* _tmp310_;
							ValaCCodeIdentifier* _tmp311_;
							ValaCCodeIdentifier* _tmp312_;
							if (!_tmp292_) {
								gint _tmp293_;
								_tmp293_ = dim;
								dim = _tmp293_ + 1;
							}
							_tmp292_ = FALSE;
							_tmp294_ = dim;
							_tmp295_ = array_type;
							_tmp296_ = vala_array_type_get_rank (_tmp295_);
							_tmp297_ = _tmp296_;
							if (!(_tmp294_ <= _tmp297_)) {
								break;
							}
							_tmp298_ = field;
							_tmp299_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp298_);
							_tmp300_ = _tmp299_;
							_tmp301_ = _tmp300_ != NULL;
							_g_free0 (_tmp300_);
							if (_tmp301_) {
								ValaField* _tmp302_;
								gchar* _tmp303_;
								_tmp302_ = field;
								_tmp303_ = vala_get_ccode_array_length_name ((ValaCodeNode*) _tmp302_);
								_g_free0 (length_cname);
								length_cname = _tmp303_;
							} else {
								ValaField* _tmp304_;
								gchar* _tmp305_;
								gchar* _tmp306_;
								gint _tmp307_;
								gchar* _tmp308_;
								_tmp304_ = field;
								_tmp305_ = vala_get_ccode_name ((ValaCodeNode*) _tmp304_);
								_tmp306_ = _tmp305_;
								_tmp307_ = dim;
								_tmp308_ = vala_ccode_base_module_get_array_length_cname ((ValaCCodeBaseModule*) self, _tmp306_, _tmp307_);
								_g_free0 (length_cname);
								length_cname = _tmp308_;
								_g_free0 (_tmp306_);
							}
							_tmp309_ = _result_;
							_tmp310_ = length_cname;
							_tmp311_ = vala_ccode_identifier_new (_tmp310_);
							_tmp312_ = _tmp311_;
							vala_glib_value_append_array_length_cvalue (_tmp309_, (ValaCCodeExpression*) _tmp312_);
							_vala_ccode_node_unref0 (_tmp312_);
							_g_free0 (length_cname);
						}
					}
				}
				_tmp314_ = array_type;
				_tmp315_ = vala_array_type_get_rank (_tmp314_);
				_tmp316_ = _tmp315_;
				if (_tmp316_ == 1) {
					ValaField* _tmp317_;
					gboolean _tmp318_;
					_tmp317_ = field;
					_tmp318_ = vala_symbol_is_internal_symbol ((ValaSymbol*) _tmp317_);
					_tmp313_ = _tmp318_;
				} else {
					_tmp313_ = FALSE;
				}
				if (_tmp313_) {
					ValaGLibValue* _tmp319_;
					ValaField* _tmp320_;
					gchar* _tmp321_;
					gchar* _tmp322_;
					gchar* _tmp323_;
					gchar* _tmp324_;
					ValaCCodeIdentifier* _tmp325_;
					ValaCCodeIdentifier* _tmp326_;
					_tmp319_ = _result_;
					_tmp320_ = field;
					_tmp321_ = vala_get_ccode_name ((ValaCodeNode*) _tmp320_);
					_tmp322_ = _tmp321_;
					_tmp323_ = vala_ccode_base_module_get_array_size_cname ((ValaCCodeBaseModule*) self, _tmp322_);
					_tmp324_ = _tmp323_;
					_tmp325_ = vala_ccode_identifier_new (_tmp324_);
					_tmp326_ = _tmp325_;
					vala_ccode_base_module_set_array_size_cvalue ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp319_, (ValaCCodeExpression*) _tmp326_);
					_vala_ccode_node_unref0 (_tmp326_);
					_g_free0 (_tmp324_);
					_g_free0 (_tmp322_);
				}
			} else {
				gboolean _tmp327_ = FALSE;
				gboolean _tmp328_ = FALSE;
				ValaDelegateType* _tmp329_;
				_tmp329_ = delegate_type;
				if (_tmp329_ != NULL) {
					ValaDelegateType* _tmp330_;
					ValaDelegate* _tmp331_;
					ValaDelegate* _tmp332_;
					gboolean _tmp333_;
					gboolean _tmp334_;
					_tmp330_ = delegate_type;
					_tmp331_ = vala_delegate_type_get_delegate_symbol (_tmp330_);
					_tmp332_ = _tmp331_;
					_tmp333_ = vala_delegate_get_has_target (_tmp332_);
					_tmp334_ = _tmp333_;
					_tmp328_ = _tmp334_;
				} else {
					_tmp328_ = FALSE;
				}
				if (_tmp328_) {
					ValaField* _tmp335_;
					gboolean _tmp336_;
					_tmp335_ = field;
					_tmp336_ = vala_get_ccode_delegate_target ((ValaCodeNode*) _tmp335_);
					_tmp327_ = _tmp336_;
				} else {
					_tmp327_ = FALSE;
				}
				if (_tmp327_) {
					ValaGLibValue* _tmp337_;
					ValaField* _tmp338_;
					gchar* _tmp339_;
					gchar* _tmp340_;
					ValaCCodeIdentifier* _tmp341_;
					ValaGLibValue* _tmp342_;
					ValaDataType* _tmp343_;
					ValaDataType* _tmp344_;
					gboolean _tmp345_;
					_tmp337_ = _result_;
					_tmp338_ = field;
					_tmp339_ = vala_get_ccode_delegate_target_name ((ValaVariable*) _tmp338_);
					_tmp340_ = _tmp339_;
					_tmp341_ = vala_ccode_identifier_new (_tmp340_);
					_vala_ccode_node_unref0 (_tmp337_->delegate_target_cvalue);
					_tmp337_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp341_;
					_g_free0 (_tmp340_);
					_tmp342_ = _result_;
					_tmp343_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp342_);
					_tmp344_ = _tmp343_;
					_tmp345_ = vala_data_type_is_disposable (_tmp344_);
					if (_tmp345_) {
						ValaGLibValue* _tmp346_;
						ValaField* _tmp347_;
						gchar* _tmp348_;
						gchar* _tmp349_;
						gchar* _tmp350_;
						gchar* _tmp351_;
						ValaCCodeIdentifier* _tmp352_;
						_tmp346_ = _result_;
						_tmp347_ = field;
						_tmp348_ = vala_get_ccode_name ((ValaCodeNode*) _tmp347_);
						_tmp349_ = _tmp348_;
						_tmp350_ = vala_ccode_base_module_get_delegate_target_destroy_notify_cname ((ValaCCodeBaseModule*) self, _tmp349_);
						_tmp351_ = _tmp350_;
						_tmp352_ = vala_ccode_identifier_new (_tmp351_);
						_vala_ccode_node_unref0 (_tmp346_->delegate_target_destroy_notify_cvalue);
						_tmp346_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp352_;
						_g_free0 (_tmp351_);
						_g_free0 (_tmp349_);
					}
				}
			}
		}
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	_vala_code_node_unref0 (value_type);
	return result;
}


static gchar string_get (const gchar* self, glong index) {
	gchar result = '\0';
	glong _tmp0_;
	gchar _tmp1_;
	g_return_val_if_fail (self != NULL, '\0');
	_tmp0_ = index;
	_tmp1_ = ((gchar*) self)[_tmp0_];
	result = _tmp1_;
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_variable (ValaCCodeBaseModule* base, ValaVariable* variable, ValaTargetValue* value) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaGLibValue* _result_ = NULL;
	ValaTargetValue* _tmp0_;
	ValaGLibValue* _tmp1_;
	ValaArrayType* array_type = NULL;
	ValaGLibValue* _tmp2_;
	ValaDataType* _tmp3_;
	ValaDataType* _tmp4_;
	ValaArrayType* _tmp5_;
	ValaDelegateType* delegate_type = NULL;
	ValaGLibValue* _tmp6_;
	ValaDataType* _tmp7_;
	ValaDataType* _tmp8_;
	ValaDelegateType* _tmp9_;
	ValaArrayType* _tmp10_;
	ValaGLibValue* _tmp97_;
	ValaDataType* _tmp98_;
	ValaDataType* _tmp99_;
	gboolean use_temp = FALSE;
	ValaGLibValue* _tmp100_;
	ValaDataType* _tmp101_;
	ValaDataType* _tmp102_;
	gboolean _tmp103_;
	gboolean _tmp104_ = FALSE;
	ValaVariable* _tmp105_;
	gboolean _tmp109_ = FALSE;
	ValaVariable* _tmp110_;
	gboolean _tmp111_;
	gboolean _tmp112_;
	ValaLocalVariable* local = NULL;
	ValaVariable* _tmp117_;
	ValaLocalVariable* _tmp118_;
	gboolean _tmp119_ = FALSE;
	ValaLocalVariable* _tmp120_;
	gboolean _tmp125_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (variable != NULL, NULL);
	g_return_val_if_fail (value != NULL, NULL);
	_tmp0_ = value;
	_tmp1_ = _vala_target_value_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, VALA_TYPE_GLIB_VALUE, ValaGLibValue));
	_result_ = _tmp1_;
	_tmp2_ = _result_;
	_tmp3_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_ARRAY_TYPE) ? ((ValaArrayType*) _tmp4_) : NULL);
	array_type = _tmp5_;
	_tmp6_ = _result_;
	_tmp7_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_DELEGATE_TYPE) ? ((ValaDelegateType*) _tmp8_) : NULL);
	delegate_type = _tmp9_;
	_tmp10_ = array_type;
	if (_tmp10_ != NULL) {
		ValaArrayType* _tmp11_;
		gboolean _tmp12_;
		gboolean _tmp13_;
		ValaGLibValue* _tmp82_;
		_tmp11_ = array_type;
		_tmp12_ = vala_array_type_get_fixed_length (_tmp11_);
		_tmp13_ = _tmp12_;
		if (_tmp13_) {
			ValaGLibValue* _tmp14_;
			ValaGLibValue* _tmp15_;
			ValaArrayType* _tmp16_;
			ValaExpression* _tmp17_;
			ValaExpression* _tmp18_;
			ValaCCodeExpression* _tmp19_;
			ValaCCodeExpression* _tmp20_;
			ValaGLibValue* _tmp21_;
			_tmp14_ = _result_;
			_vala_iterable_unref0 (_tmp14_->array_length_cvalues);
			_tmp14_->array_length_cvalues = NULL;
			_tmp15_ = _result_;
			_tmp16_ = array_type;
			_tmp17_ = vala_array_type_get_length (_tmp16_);
			_tmp18_ = _tmp17_;
			_tmp19_ = vala_ccode_base_module_get_ccodenode ((ValaCCodeBaseModule*) self, _tmp18_);
			_tmp20_ = _tmp19_;
			vala_glib_value_append_array_length_cvalue (_tmp15_, _tmp20_);
			_vala_ccode_node_unref0 (_tmp20_);
			_tmp21_ = _result_;
			_tmp21_->lvalue = FALSE;
		} else {
			ValaVariable* _tmp22_;
			gboolean _tmp23_;
			_tmp22_ = variable;
			_tmp23_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp22_);
			if (_tmp23_) {
				ValaCCodeFunctionCall* len_call = NULL;
				ValaCCodeIdentifier* _tmp24_;
				ValaCCodeIdentifier* _tmp25_;
				ValaCCodeFunctionCall* _tmp26_;
				ValaCCodeFunctionCall* _tmp27_;
				ValaCCodeFunctionCall* _tmp28_;
				ValaGLibValue* _tmp29_;
				ValaCCodeExpression* _tmp30_;
				ValaGLibValue* _tmp31_;
				ValaGLibValue* _tmp32_;
				ValaCCodeFunctionCall* _tmp33_;
				ValaGLibValue* _tmp34_;
				((ValaCCodeBaseModule*) self)->requires_array_length = TRUE;
				_tmp24_ = vala_ccode_identifier_new ("_vala_array_length");
				_tmp25_ = _tmp24_;
				_tmp26_ = vala_ccode_function_call_new ((ValaCCodeExpression*) _tmp25_);
				_tmp27_ = _tmp26_;
				_vala_ccode_node_unref0 (_tmp25_);
				len_call = _tmp27_;
				_tmp28_ = len_call;
				_tmp29_ = _result_;
				_tmp30_ = _tmp29_->cvalue;
				vala_ccode_function_call_add_argument (_tmp28_, _tmp30_);
				_tmp31_ = _result_;
				_vala_iterable_unref0 (_tmp31_->array_length_cvalues);
				_tmp31_->array_length_cvalues = NULL;
				_tmp32_ = _result_;
				_tmp33_ = len_call;
				vala_glib_value_append_array_length_cvalue (_tmp32_, (ValaCCodeExpression*) _tmp33_);
				_tmp34_ = _result_;
				_tmp34_->lvalue = FALSE;
				_vala_ccode_node_unref0 (len_call);
			} else {
				ValaVariable* _tmp35_;
				gchar* _tmp36_;
				gchar* _tmp37_;
				gboolean _tmp38_;
				_tmp35_ = variable;
				_tmp36_ = vala_get_ccode_array_length_expr ((ValaCodeNode*) _tmp35_);
				_tmp37_ = _tmp36_;
				_tmp38_ = _tmp37_ != NULL;
				_g_free0 (_tmp37_);
				if (_tmp38_) {
					ValaCCodeConstant* length_expr = NULL;
					ValaVariable* _tmp39_;
					gchar* _tmp40_;
					gchar* _tmp41_;
					ValaCCodeConstant* _tmp42_;
					ValaCCodeConstant* _tmp43_;
					ValaGLibValue* _tmp44_;
					ValaGLibValue* _tmp45_;
					ValaCCodeConstant* _tmp46_;
					ValaGLibValue* _tmp47_;
					_tmp39_ = variable;
					_tmp40_ = vala_get_ccode_array_length_expr ((ValaCodeNode*) _tmp39_);
					_tmp41_ = _tmp40_;
					_tmp42_ = vala_ccode_constant_new (_tmp41_);
					_tmp43_ = _tmp42_;
					_g_free0 (_tmp41_);
					length_expr = _tmp43_;
					_tmp44_ = _result_;
					_vala_iterable_unref0 (_tmp44_->array_length_cvalues);
					_tmp44_->array_length_cvalues = NULL;
					_tmp45_ = _result_;
					_tmp46_ = length_expr;
					vala_glib_value_append_array_length_cvalue (_tmp45_, (ValaCCodeExpression*) _tmp46_);
					_tmp47_ = _result_;
					_tmp47_->lvalue = FALSE;
					_vala_ccode_node_unref0 (length_expr);
				} else {
					ValaVariable* _tmp48_;
					gboolean _tmp49_;
					_tmp48_ = variable;
					_tmp49_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp48_);
					if (!_tmp49_) {
						ValaGLibValue* _tmp50_;
						ValaGLibValue* _tmp60_;
						_tmp50_ = _result_;
						_vala_iterable_unref0 (_tmp50_->array_length_cvalues);
						_tmp50_->array_length_cvalues = NULL;
						{
							gint dim = 0;
							dim = 1;
							{
								gboolean _tmp51_ = FALSE;
								_tmp51_ = TRUE;
								while (TRUE) {
									gint _tmp53_;
									ValaArrayType* _tmp54_;
									gint _tmp55_;
									gint _tmp56_;
									ValaGLibValue* _tmp57_;
									ValaCCodeConstant* _tmp58_;
									ValaCCodeConstant* _tmp59_;
									if (!_tmp51_) {
										gint _tmp52_;
										_tmp52_ = dim;
										dim = _tmp52_ + 1;
									}
									_tmp51_ = FALSE;
									_tmp53_ = dim;
									_tmp54_ = array_type;
									_tmp55_ = vala_array_type_get_rank (_tmp54_);
									_tmp56_ = _tmp55_;
									if (!(_tmp53_ <= _tmp56_)) {
										break;
									}
									_tmp57_ = _result_;
									_tmp58_ = vala_ccode_constant_new ("-1");
									_tmp59_ = _tmp58_;
									vala_glib_value_append_array_length_cvalue (_tmp57_, (ValaCCodeExpression*) _tmp59_);
									_vala_ccode_node_unref0 (_tmp59_);
								}
							}
						}
						_tmp60_ = _result_;
						_tmp60_->lvalue = FALSE;
					} else {
						ValaVariable* _tmp61_;
						gchar* _tmp62_;
						gchar* _tmp63_;
						gboolean _tmp64_;
						_tmp61_ = variable;
						_tmp62_ = vala_get_ccode_array_length_type ((ValaCodeNode*) _tmp61_);
						_tmp63_ = _tmp62_;
						_tmp64_ = _tmp63_ != NULL;
						_g_free0 (_tmp63_);
						if (_tmp64_) {
							ValaGLibValue* _tmp81_;
							{
								gint dim = 0;
								dim = 1;
								{
									gboolean _tmp65_ = FALSE;
									_tmp65_ = TRUE;
									while (TRUE) {
										gint _tmp67_;
										ValaArrayType* _tmp68_;
										gint _tmp69_;
										gint _tmp70_;
										ValaGLibValue* _tmp71_;
										ValaList* _tmp72_;
										gint _tmp73_;
										ValaGLibValue* _tmp74_;
										ValaList* _tmp75_;
										gint _tmp76_;
										gpointer _tmp77_;
										ValaCCodeExpression* _tmp78_;
										ValaCCodeCastExpression* _tmp79_;
										ValaCCodeCastExpression* _tmp80_;
										if (!_tmp65_) {
											gint _tmp66_;
											_tmp66_ = dim;
											dim = _tmp66_ + 1;
										}
										_tmp65_ = FALSE;
										_tmp67_ = dim;
										_tmp68_ = array_type;
										_tmp69_ = vala_array_type_get_rank (_tmp68_);
										_tmp70_ = _tmp69_;
										if (!(_tmp67_ <= _tmp70_)) {
											break;
										}
										_tmp71_ = _result_;
										_tmp72_ = _tmp71_->array_length_cvalues;
										_tmp73_ = dim;
										_tmp74_ = _result_;
										_tmp75_ = _tmp74_->array_length_cvalues;
										_tmp76_ = dim;
										_tmp77_ = vala_list_get (_tmp75_, _tmp76_ - 1);
										_tmp78_ = (ValaCCodeExpression*) _tmp77_;
										_tmp79_ = vala_ccode_cast_expression_new (_tmp78_, "gint");
										_tmp80_ = _tmp79_;
										vala_list_set (_tmp72_, _tmp73_ - 1, (ValaCCodeExpression*) _tmp80_);
										_vala_ccode_node_unref0 (_tmp80_);
										_vala_ccode_node_unref0 (_tmp78_);
									}
								}
							}
							_tmp81_ = _result_;
							_tmp81_->lvalue = FALSE;
						}
					}
				}
			}
		}
		_tmp82_ = _result_;
		_vala_ccode_node_unref0 (_tmp82_->array_size_cvalue);
		_tmp82_->array_size_cvalue = NULL;
	} else {
		ValaDelegateType* _tmp83_;
		_tmp83_ = delegate_type;
		if (_tmp83_ != NULL) {
			gboolean _tmp84_ = FALSE;
			ValaDelegateType* _tmp85_;
			ValaDelegate* _tmp86_;
			ValaDelegate* _tmp87_;
			gboolean _tmp88_;
			gboolean _tmp89_;
			ValaGLibValue* _tmp94_;
			ValaCCodeConstant* _tmp95_;
			ValaGLibValue* _tmp96_;
			_tmp85_ = delegate_type;
			_tmp86_ = vala_delegate_type_get_delegate_symbol (_tmp85_);
			_tmp87_ = _tmp86_;
			_tmp88_ = vala_delegate_get_has_target (_tmp87_);
			_tmp89_ = _tmp88_;
			if (!_tmp89_) {
				_tmp84_ = TRUE;
			} else {
				ValaVariable* _tmp90_;
				gboolean _tmp91_;
				_tmp90_ = variable;
				_tmp91_ = vala_get_ccode_delegate_target ((ValaCodeNode*) _tmp90_);
				_tmp84_ = !_tmp91_;
			}
			if (_tmp84_) {
				ValaGLibValue* _tmp92_;
				ValaCCodeConstant* _tmp93_;
				_tmp92_ = _result_;
				_tmp93_ = vala_ccode_constant_new ("NULL");
				_vala_ccode_node_unref0 (_tmp92_->delegate_target_cvalue);
				_tmp92_->delegate_target_cvalue = (ValaCCodeExpression*) _tmp93_;
			}
			_tmp94_ = _result_;
			_tmp95_ = vala_ccode_constant_new ("NULL");
			_vala_ccode_node_unref0 (_tmp94_->delegate_target_destroy_notify_cvalue);
			_tmp94_->delegate_target_destroy_notify_cvalue = (ValaCCodeExpression*) _tmp95_;
			_tmp96_ = _result_;
			_tmp96_->lvalue = FALSE;
		}
	}
	_tmp97_ = _result_;
	_tmp98_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp97_);
	_tmp99_ = _tmp98_;
	vala_data_type_set_value_owned (_tmp99_, FALSE);
	use_temp = TRUE;
	_tmp100_ = _result_;
	_tmp101_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp100_);
	_tmp102_ = _tmp101_;
	_tmp103_ = vala_ccode_base_module_is_lvalue_access_allowed ((ValaCCodeBaseModule*) self, _tmp102_);
	if (!_tmp103_) {
		use_temp = FALSE;
	}
	_tmp105_ = variable;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp105_, VALA_TYPE_PARAMETER)) {
		ValaVariable* _tmp106_;
		const gchar* _tmp107_;
		const gchar* _tmp108_;
		_tmp106_ = variable;
		_tmp107_ = vala_symbol_get_name ((ValaSymbol*) _tmp106_);
		_tmp108_ = _tmp107_;
		_tmp104_ = g_strcmp0 (_tmp108_, "this") == 0;
	} else {
		_tmp104_ = FALSE;
	}
	if (_tmp104_) {
		use_temp = FALSE;
	}
	_tmp110_ = variable;
	_tmp111_ = vala_variable_get_single_assignment (_tmp110_);
	_tmp112_ = _tmp111_;
	if (_tmp112_) {
		ValaGLibValue* _tmp113_;
		ValaDataType* _tmp114_;
		ValaDataType* _tmp115_;
		gboolean _tmp116_;
		_tmp113_ = _result_;
		_tmp114_ = vala_target_value_get_value_type ((ValaTargetValue*) _tmp113_);
		_tmp115_ = _tmp114_;
		_tmp116_ = vala_data_type_is_real_non_null_struct_type (_tmp115_);
		_tmp109_ = !_tmp116_;
	} else {
		_tmp109_ = FALSE;
	}
	if (_tmp109_) {
		use_temp = FALSE;
	}
	_tmp117_ = variable;
	_tmp118_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp117_, VALA_TYPE_LOCAL_VARIABLE) ? ((ValaLocalVariable*) _tmp117_) : NULL);
	local = _tmp118_;
	_tmp120_ = local;
	if (_tmp120_ != NULL) {
		ValaLocalVariable* _tmp121_;
		const gchar* _tmp122_;
		const gchar* _tmp123_;
		gchar _tmp124_;
		_tmp121_ = local;
		_tmp122_ = vala_symbol_get_name ((ValaSymbol*) _tmp121_);
		_tmp123_ = _tmp122_;
		_tmp124_ = string_get (_tmp123_, (glong) 0);
		_tmp119_ = _tmp124_ == '.';
	} else {
		_tmp119_ = FALSE;
	}
	if (_tmp119_) {
		use_temp = FALSE;
	}
	_tmp125_ = use_temp;
	if (_tmp125_) {
		ValaGLibValue* _tmp126_;
		ValaVariable* _tmp127_;
		ValaTargetValue* _tmp128_;
		_tmp126_ = _result_;
		_tmp127_ = variable;
		_tmp128_ = vala_ccode_base_module_store_temp_value ((ValaCCodeBaseModule*) self, (ValaTargetValue*) _tmp126_, (ValaCodeNode*) _tmp127_, NULL);
		_vala_target_value_unref0 (_result_);
		_result_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp128_, VALA_TYPE_GLIB_VALUE, ValaGLibValue);
	}
	result = (ValaTargetValue*) _result_;
	_vala_code_node_unref0 (local);
	_vala_code_node_unref0 (delegate_type);
	_vala_code_node_unref0 (array_type);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_local (ValaCodeGenerator* base, ValaLocalVariable* local) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaLocalVariable* _tmp0_;
	ValaLocalVariable* _tmp1_;
	ValaTargetValue* _tmp2_;
	ValaTargetValue* _tmp3_;
	ValaTargetValue* _tmp4_;
	ValaTargetValue* _tmp5_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (local != NULL, NULL);
	_tmp0_ = local;
	_tmp1_ = local;
	_tmp2_ = vala_ccode_base_module_get_local_cvalue ((ValaCCodeBaseModule*) self, _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_base_module_load_variable ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp0_, _tmp3_);
	_tmp5_ = _tmp4_;
	_vala_target_value_unref0 (_tmp3_);
	result = _tmp5_;
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_parameter (ValaCodeGenerator* base, ValaParameter* param) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaParameter* _tmp0_;
	ValaParameter* _tmp1_;
	ValaTargetValue* _tmp2_;
	ValaTargetValue* _tmp3_;
	ValaTargetValue* _tmp4_;
	ValaTargetValue* _tmp5_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (param != NULL, NULL);
	_tmp0_ = param;
	_tmp1_ = param;
	_tmp2_ = vala_ccode_base_module_get_parameter_cvalue ((ValaCCodeBaseModule*) self, _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = vala_ccode_base_module_load_variable ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp0_, _tmp3_);
	_tmp5_ = _tmp4_;
	_vala_target_value_unref0 (_tmp3_);
	result = _tmp5_;
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_this_parameter (ValaCCodeBaseModule* base, ValaTypeSymbol* sym) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaParameter* param = NULL;
	ValaTypeSymbol* _tmp0_;
	ValaDataType* _tmp1_;
	ValaDataType* _tmp2_;
	ValaParameter* _tmp3_;
	ValaParameter* _tmp4_;
	ValaTargetValue* _tmp5_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (sym != NULL, NULL);
	_tmp0_ = sym;
	_tmp1_ = vala_ccode_base_module_get_data_type_for_symbol (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_parameter_new ("this", _tmp2_, NULL);
	_tmp4_ = _tmp3_;
	_vala_code_node_unref0 (_tmp2_);
	param = _tmp4_;
	_tmp5_ = vala_code_generator_load_parameter ((ValaCodeGenerator*) self, param);
	result = _tmp5_;
	_vala_code_node_unref0 (param);
	return result;
}


static ValaTargetValue* vala_ccode_member_access_module_real_load_field (ValaCodeGenerator* base, ValaField* field, ValaTargetValue* instance) {
	ValaCCodeMemberAccessModule * self;
	ValaTargetValue* result = NULL;
	ValaField* _tmp0_;
	ValaField* _tmp1_;
	ValaTargetValue* _tmp2_;
	ValaTargetValue* _tmp3_;
	ValaTargetValue* _tmp4_;
	ValaTargetValue* _tmp5_;
	ValaTargetValue* _tmp6_;
	self = (ValaCCodeMemberAccessModule*) base;
	g_return_val_if_fail (field != NULL, NULL);
	_tmp0_ = field;
	_tmp1_ = field;
	_tmp2_ = instance;
	_tmp3_ = vala_ccode_base_module_get_field_cvalue ((ValaCCodeBaseModule*) self, _tmp1_, _tmp2_);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_ccode_base_module_load_variable ((ValaCCodeBaseModule*) self, (ValaVariable*) _tmp0_, _tmp4_);
	_tmp6_ = _tmp5_;
	_vala_target_value_unref0 (_tmp4_);
	result = _tmp6_;
	return result;
}


ValaCCodeMemberAccessModule* vala_ccode_member_access_module_construct (GType object_type) {
	ValaCCodeMemberAccessModule* self = NULL;
	self = (ValaCCodeMemberAccessModule*) vala_ccode_control_flow_module_construct (object_type);
	return self;
}


static void vala_ccode_member_access_module_class_init (ValaCCodeMemberAccessModuleClass * klass) {
	vala_ccode_member_access_module_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->visit_member_access = (void (*) (ValaCodeVisitor *, ValaMemberAccess*)) vala_ccode_member_access_module_real_visit_member_access;
	((ValaCCodeBaseModuleClass *) klass)->get_local_cvalue = (ValaTargetValue* (*) (ValaCCodeBaseModule *, ValaLocalVariable*)) vala_ccode_member_access_module_real_get_local_cvalue;
	((ValaCCodeBaseModuleClass *) klass)->get_parameter_cvalue = (ValaTargetValue* (*) (ValaCCodeBaseModule *, ValaParameter*)) vala_ccode_member_access_module_real_get_parameter_cvalue;
	((ValaCCodeBaseModuleClass *) klass)->get_field_cvalue = (ValaTargetValue* (*) (ValaCCodeBaseModule *, ValaField*, ValaTargetValue*)) vala_ccode_member_access_module_real_get_field_cvalue;
	((ValaCCodeBaseModuleClass *) klass)->load_variable = (ValaTargetValue* (*) (ValaCCodeBaseModule *, ValaVariable*, ValaTargetValue*)) vala_ccode_member_access_module_real_load_variable;
	((ValaCodeGeneratorClass *) klass)->load_local = (ValaTargetValue* (*) (ValaCodeGenerator *, ValaLocalVariable*)) vala_ccode_member_access_module_real_load_local;
	((ValaCodeGeneratorClass *) klass)->load_parameter = (ValaTargetValue* (*) (ValaCodeGenerator *, ValaParameter*)) vala_ccode_member_access_module_real_load_parameter;
	((ValaCCodeBaseModuleClass *) klass)->load_this_parameter = (ValaTargetValue* (*) (ValaCCodeBaseModule *, ValaTypeSymbol*)) vala_ccode_member_access_module_real_load_this_parameter;
	((ValaCodeGeneratorClass *) klass)->load_field = (ValaTargetValue* (*) (ValaCodeGenerator *, ValaField*, ValaTargetValue*)) vala_ccode_member_access_module_real_load_field;
}


static void vala_ccode_member_access_module_instance_init (ValaCCodeMemberAccessModule * self) {
}


GType vala_ccode_member_access_module_get_type (void) {
	static volatile gsize vala_ccode_member_access_module_type_id__volatile = 0;
	if (g_once_init_enter (&vala_ccode_member_access_module_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeMemberAccessModuleClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_member_access_module_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeMemberAccessModule), 0, (GInstanceInitFunc) vala_ccode_member_access_module_instance_init, NULL };
		GType vala_ccode_member_access_module_type_id;
		vala_ccode_member_access_module_type_id = g_type_register_static (VALA_TYPE_CCODE_CONTROL_FLOW_MODULE, "ValaCCodeMemberAccessModule", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_once_init_leave (&vala_ccode_member_access_module_type_id__volatile, vala_ccode_member_access_module_type_id);
	}
	return vala_ccode_member_access_module_type_id__volatile;
}



