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

/* valaccodeattribute.vala
 *
 * Copyright (C) 2011  Luca Bruno
 *
 * 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:
 * 	Luca Bruno <lucabru@src.gnome.org>
 */

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

#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _vala_attribute_cache_unref0(var) ((var == NULL) ? NULL : (var = (vala_attribute_cache_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
#define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))

struct _ValaCCodeAttributePrivate {
	ValaCodeNode* node;
	ValaSymbol* sym;
	ValaAttribute* ccode;
	gchar* _array_length_type;
	gchar* _array_length_name;
	gchar* _array_length_expr;
	gboolean _delegate_target;
	gchar* _sentinel;
	gchar* _name;
	gchar* _const_name;
	gchar* _type_name;
	gchar* _header_filenames;
	gchar* _prefix;
	gchar* _lower_case_prefix;
	gchar* _lower_case_suffix;
	gchar* _ref_function;
	gboolean ref_function_set;
	gboolean* _ref_function_void;
	gchar* _unref_function;
	gboolean unref_function_set;
	gchar* _ref_sink_function;
	gchar* _copy_function;
	gboolean copy_function_set;
	gchar* _destroy_function;
	gboolean destroy_function_set;
	gchar* _dup_function;
	gboolean dup_function_set;
	gchar* _free_function;
	gboolean free_function_set;
	gboolean* _free_function_address_of;
	gchar* _type_id;
	gchar* _marshaller_type_name;
	gchar* _get_value_function;
	gchar* _set_value_function;
	gchar* _take_value_function;
	gchar* _param_spec_function;
	gchar* _default_value;
	gdouble* _pos;
	gchar* _vfunc_name;
	gchar* _finish_name;
	gchar* _finish_vfunc_name;
	gchar* _finish_real_name;
	gboolean* _finish_instance;
	gchar* _real_name;
	gchar* _delegate_target_name;
	gchar* _ctype;
	gboolean ctype_set;
	gboolean* _array_length;
	gboolean* _array_null_terminated;
};


static gpointer vala_ccode_attribute_parent_class = NULL;
static gint vala_ccode_attribute_dynamic_method_id;
static gint vala_ccode_attribute_dynamic_method_id = 0;

#define VALA_CCODE_ATTRIBUTE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttributePrivate))
static void vala_ccode_attribute_set_delegate_target (ValaCCodeAttribute* self, gboolean value);
static void vala_ccode_attribute_set_array_length_type (ValaCCodeAttribute* self, const gchar* value);
static void vala_ccode_attribute_set_array_length_name (ValaCCodeAttribute* self, const gchar* value);
static void vala_ccode_attribute_set_array_length_expr (ValaCCodeAttribute* self, const gchar* value);
static gdouble* _double_dup (gdouble* self);
static void vala_ccode_attribute_set_sentinel (ValaCCodeAttribute* self, const gchar* value);
static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_header_filenames (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_prefix (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_lower_case_prefix (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_lower_case_suffix (ValaCCodeAttribute* self);
G_GNUC_INTERNAL ValaCCodeAttribute* vala_get_ccode_attribute (ValaCodeNode* node);
static gchar* vala_ccode_attribute_get_default_ref_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_unref_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_ref_sink_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_free_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_type_id (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_marshaller_type_name (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_get_value_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_set_value_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_take_value_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_param_spec_function (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_default_value (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_finish_name_for_basename (ValaCCodeAttribute* self, const gchar* basename);
static gchar* vala_ccode_attribute_get_default_real_name (ValaCCodeAttribute* self);
static gchar* vala_ccode_attribute_get_default_const_name (ValaCCodeAttribute* self);
static gboolean vala_ccode_attribute_get_default_array_length (ValaCCodeAttribute* self);
static gboolean vala_ccode_attribute_get_default_array_null_terminated (ValaCCodeAttribute* self);
static gboolean* _bool_dup (gboolean* self);
static void vala_ccode_attribute_finalize (ValaAttributeCache * obj);


static gdouble* _double_dup (gdouble* self) {
	gdouble* dup;
	dup = g_new0 (gdouble, 1);
	memcpy (dup, self, sizeof (gdouble));
	return dup;
}


static gpointer __double_dup0 (gpointer self) {
	return self ? _double_dup (self) : NULL;
}


ValaCCodeAttribute* vala_ccode_attribute_construct (GType object_type, ValaCodeNode* node) {
	ValaCCodeAttribute* self = NULL;
	ValaCodeNode* _tmp0_;
	ValaCodeNode* _tmp1_;
	ValaCodeNode* _tmp2_;
	ValaAttribute* _tmp3_;
	ValaAttribute* _tmp4_;
	const gchar* _tmp24_;
	g_return_val_if_fail (node != NULL, NULL);
	self = (ValaCCodeAttribute*) vala_attribute_cache_construct (object_type);
	_tmp0_ = node;
	self->priv->node = _tmp0_;
	_tmp1_ = node;
	self->priv->sym = G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_SYMBOL) ? ((ValaSymbol*) _tmp1_) : NULL;
	vala_ccode_attribute_set_delegate_target (self, TRUE);
	_tmp2_ = node;
	_tmp3_ = vala_code_node_get_attribute (_tmp2_, "CCode");
	_vala_code_node_unref0 (self->priv->ccode);
	self->priv->ccode = _tmp3_;
	_tmp4_ = self->priv->ccode;
	if (_tmp4_ != NULL) {
		ValaAttribute* _tmp5_;
		gchar* _tmp6_;
		gchar* _tmp7_;
		ValaAttribute* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		ValaAttribute* _tmp11_;
		gchar* _tmp12_;
		gchar* _tmp13_;
		ValaAttribute* _tmp14_;
		gboolean _tmp15_;
		ValaAttribute* _tmp19_;
		gboolean _tmp20_;
		ValaAttribute* _tmp21_;
		gchar* _tmp22_;
		gchar* _tmp23_;
		_tmp5_ = self->priv->ccode;
		_tmp6_ = vala_attribute_get_string (_tmp5_, "array_length_type", NULL);
		_tmp7_ = _tmp6_;
		vala_ccode_attribute_set_array_length_type (self, _tmp7_);
		_g_free0 (_tmp7_);
		_tmp8_ = self->priv->ccode;
		_tmp9_ = vala_attribute_get_string (_tmp8_, "array_length_cname", NULL);
		_tmp10_ = _tmp9_;
		vala_ccode_attribute_set_array_length_name (self, _tmp10_);
		_g_free0 (_tmp10_);
		_tmp11_ = self->priv->ccode;
		_tmp12_ = vala_attribute_get_string (_tmp11_, "array_length_cexpr", NULL);
		_tmp13_ = _tmp12_;
		vala_ccode_attribute_set_array_length_expr (self, _tmp13_);
		_g_free0 (_tmp13_);
		_tmp14_ = self->priv->ccode;
		_tmp15_ = vala_attribute_has_argument (_tmp14_, "pos");
		if (_tmp15_) {
			ValaAttribute* _tmp16_;
			gdouble _tmp17_;
			gdouble* _tmp18_;
			_tmp16_ = self->priv->ccode;
			_tmp17_ = vala_attribute_get_double (_tmp16_, "pos", (gdouble) 0);
			_tmp18_ = __double_dup0 (&_tmp17_);
			_g_free0 (self->priv->_pos);
			self->priv->_pos = _tmp18_;
		}
		_tmp19_ = self->priv->ccode;
		_tmp20_ = vala_attribute_get_bool (_tmp19_, "delegate_target", TRUE);
		vala_ccode_attribute_set_delegate_target (self, _tmp20_);
		_tmp21_ = self->priv->ccode;
		_tmp22_ = vala_attribute_get_string (_tmp21_, "sentinel", NULL);
		_tmp23_ = _tmp22_;
		vala_ccode_attribute_set_sentinel (self, _tmp23_);
		_g_free0 (_tmp23_);
	}
	_tmp24_ = self->priv->_sentinel;
	if (_tmp24_ == NULL) {
		vala_ccode_attribute_set_sentinel (self, "NULL");
	}
	return self;
}


ValaCCodeAttribute* vala_ccode_attribute_new (ValaCodeNode* node) {
	return vala_ccode_attribute_construct (VALA_TYPE_CCODE_ATTRIBUTE, node);
}


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


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 glong string_strnlen (gchar* str, glong maxlen) {
	glong result = 0L;
	gchar* end = NULL;
	gchar* _tmp0_;
	glong _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	_tmp0_ = str;
	_tmp1_ = maxlen;
	_tmp2_ = memchr (_tmp0_, 0, (gsize) _tmp1_);
	end = _tmp2_;
	_tmp3_ = end;
	if (_tmp3_ == NULL) {
		glong _tmp4_;
		_tmp4_ = maxlen;
		result = _tmp4_;
		return result;
	} else {
		gchar* _tmp5_;
		gchar* _tmp6_;
		_tmp5_ = end;
		_tmp6_ = str;
		result = (glong) (_tmp5_ - _tmp6_);
		return result;
	}
}


static gchar* string_substring (const gchar* self, glong offset, glong len) {
	gchar* result = NULL;
	glong string_length = 0L;
	gboolean _tmp0_ = FALSE;
	glong _tmp1_;
	glong _tmp8_;
	glong _tmp14_;
	glong _tmp17_;
	glong _tmp18_;
	glong _tmp19_;
	glong _tmp20_;
	glong _tmp21_;
	gchar* _tmp22_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp1_ = offset;
	if (_tmp1_ >= ((glong) 0)) {
		glong _tmp2_;
		_tmp2_ = len;
		_tmp0_ = _tmp2_ >= ((glong) 0);
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		glong _tmp3_;
		glong _tmp4_;
		glong _tmp5_;
		_tmp3_ = offset;
		_tmp4_ = len;
		_tmp5_ = string_strnlen ((gchar*) self, _tmp3_ + _tmp4_);
		string_length = _tmp5_;
	} else {
		gint _tmp6_;
		gint _tmp7_;
		_tmp6_ = strlen (self);
		_tmp7_ = _tmp6_;
		string_length = (glong) _tmp7_;
	}
	_tmp8_ = offset;
	if (_tmp8_ < ((glong) 0)) {
		glong _tmp9_;
		glong _tmp10_;
		glong _tmp11_;
		_tmp9_ = string_length;
		_tmp10_ = offset;
		offset = _tmp9_ + _tmp10_;
		_tmp11_ = offset;
		g_return_val_if_fail (_tmp11_ >= ((glong) 0), NULL);
	} else {
		glong _tmp12_;
		glong _tmp13_;
		_tmp12_ = offset;
		_tmp13_ = string_length;
		g_return_val_if_fail (_tmp12_ <= _tmp13_, NULL);
	}
	_tmp14_ = len;
	if (_tmp14_ < ((glong) 0)) {
		glong _tmp15_;
		glong _tmp16_;
		_tmp15_ = string_length;
		_tmp16_ = offset;
		len = _tmp15_ - _tmp16_;
	}
	_tmp17_ = offset;
	_tmp18_ = len;
	_tmp19_ = string_length;
	g_return_val_if_fail ((_tmp17_ + _tmp18_) <= _tmp19_, NULL);
	_tmp20_ = offset;
	_tmp21_ = len;
	_tmp22_ = g_strndup (((gchar*) self) + _tmp20_, (gsize) _tmp21_);
	result = _tmp22_;
	return result;
}


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


static gchar* vala_ccode_attribute_get_default_name (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* sym = NULL;
	ValaCodeNode* _tmp0_;
	ValaSymbol* _tmp1_;
	ValaSymbol* _tmp2_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->node;
	_tmp1_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_SYMBOL) ? ((ValaSymbol*) _tmp0_) : NULL);
	sym = _tmp1_;
	_tmp2_ = sym;
	if (_tmp2_ != NULL) {
		gboolean _tmp3_ = FALSE;
		ValaSymbol* _tmp4_;
		_tmp4_ = sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, VALA_TYPE_CONSTANT)) {
			ValaSymbol* _tmp5_;
			_tmp5_ = sym;
			_tmp3_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_ENUM_VALUE);
		} else {
			_tmp3_ = FALSE;
		}
		if (_tmp3_) {
			ValaSymbol* _tmp6_;
			ValaSymbol* _tmp7_;
			ValaSymbol* _tmp8_;
			ValaSymbol* _tmp13_;
			ValaSymbol* _tmp14_;
			ValaSymbol* _tmp15_;
			gchar* _tmp16_;
			gchar* _tmp17_;
			gchar* _tmp18_;
			gchar* _tmp19_;
			ValaSymbol* _tmp20_;
			const gchar* _tmp21_;
			const gchar* _tmp22_;
			gchar* _tmp23_;
			gchar* _tmp24_;
			_tmp6_ = sym;
			_tmp7_ = vala_symbol_get_parent_symbol (_tmp6_);
			_tmp8_ = _tmp7_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_BLOCK)) {
				ValaSymbol* _tmp9_;
				const gchar* _tmp10_;
				const gchar* _tmp11_;
				gchar* _tmp12_;
				_tmp9_ = sym;
				_tmp10_ = vala_symbol_get_name (_tmp9_);
				_tmp11_ = _tmp10_;
				_tmp12_ = g_strdup (_tmp11_);
				result = _tmp12_;
				_vala_code_node_unref0 (sym);
				return result;
			}
			_tmp13_ = sym;
			_tmp14_ = vala_symbol_get_parent_symbol (_tmp13_);
			_tmp15_ = _tmp14_;
			_tmp16_ = vala_get_ccode_lower_case_prefix (_tmp15_);
			_tmp17_ = _tmp16_;
			_tmp18_ = g_ascii_strup (_tmp17_, (gssize) -1);
			_tmp19_ = _tmp18_;
			_tmp20_ = sym;
			_tmp21_ = vala_symbol_get_name (_tmp20_);
			_tmp22_ = _tmp21_;
			_tmp23_ = g_strdup_printf ("%s%s", _tmp19_, _tmp22_);
			_tmp24_ = _tmp23_;
			_g_free0 (_tmp19_);
			_g_free0 (_tmp17_);
			result = _tmp24_;
			_vala_code_node_unref0 (sym);
			return result;
		} else {
			ValaSymbol* _tmp25_;
			_tmp25_ = sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_FIELD)) {
				gchar* cname = NULL;
				ValaSymbol* _tmp26_;
				const gchar* _tmp27_;
				const gchar* _tmp28_;
				gchar* _tmp29_;
				ValaSymbol* _tmp30_;
				ValaMemberBinding _tmp31_;
				ValaMemberBinding _tmp32_;
				const gchar* _tmp42_;
				gchar _tmp43_;
				gboolean _tmp44_;
				_tmp26_ = sym;
				_tmp27_ = vala_symbol_get_name (_tmp26_);
				_tmp28_ = _tmp27_;
				_tmp29_ = g_strdup (_tmp28_);
				cname = _tmp29_;
				_tmp30_ = sym;
				_tmp31_ = vala_field_get_binding (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, VALA_TYPE_FIELD, ValaField));
				_tmp32_ = _tmp31_;
				if (_tmp32_ == VALA_MEMBER_BINDING_STATIC) {
					ValaSymbol* _tmp33_;
					ValaSymbol* _tmp34_;
					ValaSymbol* _tmp35_;
					gchar* _tmp36_;
					gchar* _tmp37_;
					ValaSymbol* _tmp38_;
					const gchar* _tmp39_;
					const gchar* _tmp40_;
					gchar* _tmp41_;
					_tmp33_ = sym;
					_tmp34_ = vala_symbol_get_parent_symbol (_tmp33_);
					_tmp35_ = _tmp34_;
					_tmp36_ = vala_get_ccode_lower_case_prefix (_tmp35_);
					_tmp37_ = _tmp36_;
					_tmp38_ = sym;
					_tmp39_ = vala_symbol_get_name (_tmp38_);
					_tmp40_ = _tmp39_;
					_tmp41_ = g_strdup_printf ("%s%s", _tmp37_, _tmp40_);
					_g_free0 (cname);
					cname = _tmp41_;
					_g_free0 (_tmp37_);
				}
				_tmp42_ = cname;
				_tmp43_ = string_get (_tmp42_, (glong) 0);
				_tmp44_ = g_ascii_isdigit (_tmp43_);
				if (_tmp44_) {
					ValaCodeNode* _tmp45_;
					ValaSourceReference* _tmp46_;
					ValaSourceReference* _tmp47_;
					gchar* _tmp48_;
					_tmp45_ = self->priv->node;
					_tmp46_ = vala_code_node_get_source_reference (_tmp45_);
					_tmp47_ = _tmp46_;
					vala_report_error (_tmp47_, "Field name starts with a digit. Use the `cname' attribute to provide a" \
" valid C name if intended");
					_tmp48_ = g_strdup ("");
					result = _tmp48_;
					_g_free0 (cname);
					_vala_code_node_unref0 (sym);
					return result;
				}
				result = cname;
				_vala_code_node_unref0 (sym);
				return result;
			} else {
				ValaSymbol* _tmp49_;
				_tmp49_ = sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALA_TYPE_CREATION_METHOD)) {
					ValaCreationMethod* m = NULL;
					ValaSymbol* _tmp50_;
					ValaCreationMethod* _tmp51_;
					gchar* infix = NULL;
					ValaCreationMethod* _tmp52_;
					ValaSymbol* _tmp53_;
					ValaSymbol* _tmp54_;
					ValaCreationMethod* _tmp57_;
					const gchar* _tmp58_;
					const gchar* _tmp59_;
					_tmp50_ = sym;
					_tmp51_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp50_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
					m = _tmp51_;
					_tmp52_ = m;
					_tmp53_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp52_);
					_tmp54_ = _tmp53_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp54_, VALA_TYPE_STRUCT)) {
						gchar* _tmp55_;
						_tmp55_ = g_strdup ("init");
						_g_free0 (infix);
						infix = _tmp55_;
					} else {
						gchar* _tmp56_;
						_tmp56_ = g_strdup ("new");
						_g_free0 (infix);
						infix = _tmp56_;
					}
					_tmp57_ = m;
					_tmp58_ = vala_symbol_get_name ((ValaSymbol*) _tmp57_);
					_tmp59_ = _tmp58_;
					if (g_strcmp0 (_tmp59_, ".new") == 0) {
						ValaCreationMethod* _tmp60_;
						ValaSymbol* _tmp61_;
						ValaSymbol* _tmp62_;
						gchar* _tmp63_;
						gchar* _tmp64_;
						const gchar* _tmp65_;
						gchar* _tmp66_;
						gchar* _tmp67_;
						_tmp60_ = m;
						_tmp61_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp60_);
						_tmp62_ = _tmp61_;
						_tmp63_ = vala_get_ccode_lower_case_prefix (_tmp62_);
						_tmp64_ = _tmp63_;
						_tmp65_ = infix;
						_tmp66_ = g_strdup_printf ("%s%s", _tmp64_, _tmp65_);
						_tmp67_ = _tmp66_;
						_g_free0 (_tmp64_);
						result = _tmp67_;
						_g_free0 (infix);
						_vala_code_node_unref0 (m);
						_vala_code_node_unref0 (sym);
						return result;
					} else {
						ValaCreationMethod* _tmp68_;
						ValaSymbol* _tmp69_;
						ValaSymbol* _tmp70_;
						gchar* _tmp71_;
						gchar* _tmp72_;
						const gchar* _tmp73_;
						ValaCreationMethod* _tmp74_;
						const gchar* _tmp75_;
						const gchar* _tmp76_;
						gchar* _tmp77_;
						gchar* _tmp78_;
						_tmp68_ = m;
						_tmp69_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp68_);
						_tmp70_ = _tmp69_;
						_tmp71_ = vala_get_ccode_lower_case_prefix (_tmp70_);
						_tmp72_ = _tmp71_;
						_tmp73_ = infix;
						_tmp74_ = m;
						_tmp75_ = vala_symbol_get_name ((ValaSymbol*) _tmp74_);
						_tmp76_ = _tmp75_;
						_tmp77_ = g_strdup_printf ("%s%s_%s", _tmp72_, _tmp73_, _tmp76_);
						_tmp78_ = _tmp77_;
						_g_free0 (_tmp72_);
						result = _tmp78_;
						_g_free0 (infix);
						_vala_code_node_unref0 (m);
						_vala_code_node_unref0 (sym);
						return result;
					}
					_g_free0 (infix);
					_vala_code_node_unref0 (m);
				} else {
					ValaSymbol* _tmp79_;
					_tmp79_ = sym;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp79_, VALA_TYPE_DYNAMIC_METHOD)) {
						ValaSymbol* _tmp80_;
						const gchar* _tmp81_;
						const gchar* _tmp82_;
						gint _tmp83_;
						gchar* _tmp84_;
						_tmp80_ = sym;
						_tmp81_ = vala_symbol_get_name (_tmp80_);
						_tmp82_ = _tmp81_;
						_tmp83_ = vala_ccode_attribute_dynamic_method_id;
						vala_ccode_attribute_dynamic_method_id = _tmp83_ + 1;
						_tmp84_ = g_strdup_printf ("_dynamic_%s%d", _tmp82_, _tmp83_);
						result = _tmp84_;
						_vala_code_node_unref0 (sym);
						return result;
					} else {
						ValaSymbol* _tmp85_;
						_tmp85_ = sym;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp85_, VALA_TYPE_METHOD)) {
							ValaMethod* m = NULL;
							ValaSymbol* _tmp86_;
							ValaMethod* _tmp87_;
							ValaMethod* _tmp88_;
							gboolean _tmp89_;
							gboolean _tmp90_;
							ValaMethod* _tmp98_;
							ValaSignal* _tmp99_;
							ValaSignal* _tmp100_;
							gboolean _tmp113_ = FALSE;
							ValaSymbol* _tmp114_;
							const gchar* _tmp115_;
							const gchar* _tmp116_;
							_tmp86_ = sym;
							_tmp87_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp86_, VALA_TYPE_METHOD, ValaMethod));
							m = _tmp87_;
							_tmp88_ = m;
							_tmp89_ = vala_method_get_is_async_callback (_tmp88_);
							_tmp90_ = _tmp89_;
							if (_tmp90_) {
								ValaMethod* _tmp91_;
								ValaSymbol* _tmp92_;
								ValaSymbol* _tmp93_;
								gchar* _tmp94_;
								gchar* _tmp95_;
								gchar* _tmp96_;
								gchar* _tmp97_;
								_tmp91_ = m;
								_tmp92_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp91_);
								_tmp93_ = _tmp92_;
								_tmp94_ = vala_get_ccode_real_name ((ValaSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp93_, VALA_TYPE_METHOD, ValaMethod));
								_tmp95_ = _tmp94_;
								_tmp96_ = g_strdup_printf ("%s_co", _tmp95_);
								_tmp97_ = _tmp96_;
								_g_free0 (_tmp95_);
								result = _tmp97_;
								_vala_code_node_unref0 (m);
								_vala_code_node_unref0 (sym);
								return result;
							}
							_tmp98_ = m;
							_tmp99_ = vala_method_get_signal_reference (_tmp98_);
							_tmp100_ = _tmp99_;
							if (_tmp100_ != NULL) {
								ValaMethod* _tmp101_;
								ValaSymbol* _tmp102_;
								ValaSymbol* _tmp103_;
								gchar* _tmp104_;
								gchar* _tmp105_;
								ValaMethod* _tmp106_;
								ValaSignal* _tmp107_;
								ValaSignal* _tmp108_;
								gchar* _tmp109_;
								gchar* _tmp110_;
								gchar* _tmp111_;
								gchar* _tmp112_;
								_tmp101_ = m;
								_tmp102_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp101_);
								_tmp103_ = _tmp102_;
								_tmp104_ = vala_get_ccode_lower_case_prefix (_tmp103_);
								_tmp105_ = _tmp104_;
								_tmp106_ = m;
								_tmp107_ = vala_method_get_signal_reference (_tmp106_);
								_tmp108_ = _tmp107_;
								_tmp109_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp108_, NULL);
								_tmp110_ = _tmp109_;
								_tmp111_ = g_strdup_printf ("%s%s", _tmp105_, _tmp110_);
								_tmp112_ = _tmp111_;
								_g_free0 (_tmp110_);
								_g_free0 (_tmp105_);
								result = _tmp112_;
								_vala_code_node_unref0 (m);
								_vala_code_node_unref0 (sym);
								return result;
							}
							_tmp114_ = sym;
							_tmp115_ = vala_symbol_get_name (_tmp114_);
							_tmp116_ = _tmp115_;
							if (g_strcmp0 (_tmp116_, "main") == 0) {
								ValaSymbol* _tmp117_;
								ValaSymbol* _tmp118_;
								ValaSymbol* _tmp119_;
								const gchar* _tmp120_;
								const gchar* _tmp121_;
								_tmp117_ = sym;
								_tmp118_ = vala_symbol_get_parent_symbol (_tmp117_);
								_tmp119_ = _tmp118_;
								_tmp120_ = vala_symbol_get_name (_tmp119_);
								_tmp121_ = _tmp120_;
								_tmp113_ = _tmp121_ == NULL;
							} else {
								_tmp113_ = FALSE;
							}
							if (_tmp113_) {
								gchar* _tmp122_;
								_tmp122_ = g_strdup ("_vala_main");
								result = _tmp122_;
								_vala_code_node_unref0 (m);
								_vala_code_node_unref0 (sym);
								return result;
							} else {
								ValaSymbol* _tmp123_;
								const gchar* _tmp124_;
								const gchar* _tmp125_;
								gboolean _tmp126_;
								_tmp123_ = sym;
								_tmp124_ = vala_symbol_get_name (_tmp123_);
								_tmp125_ = _tmp124_;
								_tmp126_ = g_str_has_prefix (_tmp125_, "_");
								if (_tmp126_) {
									ValaSymbol* _tmp127_;
									ValaSymbol* _tmp128_;
									ValaSymbol* _tmp129_;
									gchar* _tmp130_;
									gchar* _tmp131_;
									ValaSymbol* _tmp132_;
									const gchar* _tmp133_;
									const gchar* _tmp134_;
									gchar* _tmp135_;
									gchar* _tmp136_;
									gchar* _tmp137_;
									gchar* _tmp138_;
									_tmp127_ = sym;
									_tmp128_ = vala_symbol_get_parent_symbol (_tmp127_);
									_tmp129_ = _tmp128_;
									_tmp130_ = vala_get_ccode_lower_case_prefix (_tmp129_);
									_tmp131_ = _tmp130_;
									_tmp132_ = sym;
									_tmp133_ = vala_symbol_get_name (_tmp132_);
									_tmp134_ = _tmp133_;
									_tmp135_ = string_substring (_tmp134_, (glong) 1, (glong) -1);
									_tmp136_ = _tmp135_;
									_tmp137_ = g_strdup_printf ("_%s%s", _tmp131_, _tmp136_);
									_tmp138_ = _tmp137_;
									_g_free0 (_tmp136_);
									_g_free0 (_tmp131_);
									result = _tmp138_;
									_vala_code_node_unref0 (m);
									_vala_code_node_unref0 (sym);
									return result;
								} else {
									ValaSymbol* _tmp139_;
									ValaSymbol* _tmp140_;
									ValaSymbol* _tmp141_;
									gchar* _tmp142_;
									gchar* _tmp143_;
									ValaSymbol* _tmp144_;
									const gchar* _tmp145_;
									const gchar* _tmp146_;
									gchar* _tmp147_;
									gchar* _tmp148_;
									_tmp139_ = sym;
									_tmp140_ = vala_symbol_get_parent_symbol (_tmp139_);
									_tmp141_ = _tmp140_;
									_tmp142_ = vala_get_ccode_lower_case_prefix (_tmp141_);
									_tmp143_ = _tmp142_;
									_tmp144_ = sym;
									_tmp145_ = vala_symbol_get_name (_tmp144_);
									_tmp146_ = _tmp145_;
									_tmp147_ = g_strdup_printf ("%s%s", _tmp143_, _tmp146_);
									_tmp148_ = _tmp147_;
									_g_free0 (_tmp143_);
									result = _tmp148_;
									_vala_code_node_unref0 (m);
									_vala_code_node_unref0 (sym);
									return result;
								}
							}
							_vala_code_node_unref0 (m);
						} else {
							ValaSymbol* _tmp149_;
							_tmp149_ = sym;
							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp149_, VALA_TYPE_PROPERTY_ACCESSOR)) {
								ValaPropertyAccessor* acc = NULL;
								ValaSymbol* _tmp150_;
								ValaPropertyAccessor* _tmp151_;
								ValaTypeSymbol* t = NULL;
								ValaPropertyAccessor* _tmp152_;
								ValaProperty* _tmp153_;
								ValaProperty* _tmp154_;
								ValaSymbol* _tmp155_;
								ValaSymbol* _tmp156_;
								ValaTypeSymbol* _tmp157_;
								ValaPropertyAccessor* _tmp158_;
								gboolean _tmp159_;
								gboolean _tmp160_;
								_tmp150_ = sym;
								_tmp151_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp150_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
								acc = _tmp151_;
								_tmp152_ = acc;
								_tmp153_ = vala_property_accessor_get_prop (_tmp152_);
								_tmp154_ = _tmp153_;
								_tmp155_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp154_);
								_tmp156_ = _tmp155_;
								_tmp157_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp156_, VALA_TYPE_TYPESYMBOL, ValaTypeSymbol));
								t = _tmp157_;
								_tmp158_ = acc;
								_tmp159_ = vala_property_accessor_get_readable (_tmp158_);
								_tmp160_ = _tmp159_;
								if (_tmp160_) {
									ValaTypeSymbol* _tmp161_;
									gchar* _tmp162_;
									gchar* _tmp163_;
									ValaPropertyAccessor* _tmp164_;
									ValaProperty* _tmp165_;
									ValaProperty* _tmp166_;
									const gchar* _tmp167_;
									const gchar* _tmp168_;
									gchar* _tmp169_;
									gchar* _tmp170_;
									_tmp161_ = t;
									_tmp162_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp161_);
									_tmp163_ = _tmp162_;
									_tmp164_ = acc;
									_tmp165_ = vala_property_accessor_get_prop (_tmp164_);
									_tmp166_ = _tmp165_;
									_tmp167_ = vala_symbol_get_name ((ValaSymbol*) _tmp166_);
									_tmp168_ = _tmp167_;
									_tmp169_ = g_strdup_printf ("%sget_%s", _tmp163_, _tmp168_);
									_tmp170_ = _tmp169_;
									_g_free0 (_tmp163_);
									result = _tmp170_;
									_vala_code_node_unref0 (t);
									_vala_code_node_unref0 (acc);
									_vala_code_node_unref0 (sym);
									return result;
								} else {
									ValaTypeSymbol* _tmp171_;
									gchar* _tmp172_;
									gchar* _tmp173_;
									ValaPropertyAccessor* _tmp174_;
									ValaProperty* _tmp175_;
									ValaProperty* _tmp176_;
									const gchar* _tmp177_;
									const gchar* _tmp178_;
									gchar* _tmp179_;
									gchar* _tmp180_;
									_tmp171_ = t;
									_tmp172_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp171_);
									_tmp173_ = _tmp172_;
									_tmp174_ = acc;
									_tmp175_ = vala_property_accessor_get_prop (_tmp174_);
									_tmp176_ = _tmp175_;
									_tmp177_ = vala_symbol_get_name ((ValaSymbol*) _tmp176_);
									_tmp178_ = _tmp177_;
									_tmp179_ = g_strdup_printf ("%sset_%s", _tmp173_, _tmp178_);
									_tmp180_ = _tmp179_;
									_g_free0 (_tmp173_);
									result = _tmp180_;
									_vala_code_node_unref0 (t);
									_vala_code_node_unref0 (acc);
									_vala_code_node_unref0 (sym);
									return result;
								}
								_vala_code_node_unref0 (t);
								_vala_code_node_unref0 (acc);
							} else {
								ValaSymbol* _tmp181_;
								_tmp181_ = sym;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp181_, VALA_TYPE_SIGNAL)) {
									ValaSymbol* _tmp182_;
									const gchar* _tmp183_;
									const gchar* _tmp184_;
									gchar* _tmp185_;
									gchar* _tmp186_;
									gchar* _tmp187_;
									gchar* _tmp188_;
									_tmp182_ = sym;
									_tmp183_ = vala_symbol_get_name (_tmp182_);
									_tmp184_ = _tmp183_;
									_tmp185_ = vala_symbol_camel_case_to_lower_case (_tmp184_);
									_tmp186_ = _tmp185_;
									_tmp187_ = string_replace (_tmp186_, "_", "-");
									_tmp188_ = _tmp187_;
									_g_free0 (_tmp186_);
									result = _tmp188_;
									_vala_code_node_unref0 (sym);
									return result;
								} else {
									gboolean _tmp189_ = FALSE;
									ValaSymbol* _tmp190_;
									_tmp190_ = sym;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp190_, VALA_TYPE_LOCAL_VARIABLE)) {
										_tmp189_ = TRUE;
									} else {
										ValaSymbol* _tmp191_;
										_tmp191_ = sym;
										_tmp189_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp191_, VALA_TYPE_PARAMETER);
									}
									if (_tmp189_) {
										ValaSymbol* _tmp192_;
										const gchar* _tmp193_;
										const gchar* _tmp194_;
										gchar* _tmp195_;
										_tmp192_ = sym;
										_tmp193_ = vala_symbol_get_name (_tmp192_);
										_tmp194_ = _tmp193_;
										_tmp195_ = g_strdup (_tmp194_);
										result = _tmp195_;
										_vala_code_node_unref0 (sym);
										return result;
									} else {
										ValaSymbol* _tmp196_;
										ValaSymbol* _tmp197_;
										ValaSymbol* _tmp198_;
										gchar* _tmp199_;
										gchar* _tmp200_;
										ValaSymbol* _tmp201_;
										const gchar* _tmp202_;
										const gchar* _tmp203_;
										gchar* _tmp204_;
										gchar* _tmp205_;
										_tmp196_ = sym;
										_tmp197_ = vala_symbol_get_parent_symbol (_tmp196_);
										_tmp198_ = _tmp197_;
										_tmp199_ = vala_get_ccode_prefix (_tmp198_);
										_tmp200_ = _tmp199_;
										_tmp201_ = sym;
										_tmp202_ = vala_symbol_get_name (_tmp201_);
										_tmp203_ = _tmp202_;
										_tmp204_ = g_strdup_printf ("%s%s", _tmp200_, _tmp203_);
										_tmp205_ = _tmp204_;
										_g_free0 (_tmp200_);
										result = _tmp205_;
										_vala_code_node_unref0 (sym);
										return result;
									}
								}
							}
						}
					}
				}
			}
		}
	} else {
		ValaCodeNode* _tmp206_;
		_tmp206_ = self->priv->node;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp206_, VALA_TYPE_OBJECT_TYPE)) {
			ValaObjectType* type = NULL;
			ValaCodeNode* _tmp207_;
			ValaObjectType* _tmp208_;
			gchar* cname = NULL;
			ValaObjectType* _tmp209_;
			gboolean _tmp210_;
			gboolean _tmp211_;
			const gchar* _tmp220_;
			gchar* _tmp221_;
			_tmp207_ = self->priv->node;
			_tmp208_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp207_, VALA_TYPE_OBJECT_TYPE, ValaObjectType));
			type = _tmp208_;
			_tmp209_ = type;
			_tmp210_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp209_);
			_tmp211_ = _tmp210_;
			if (!_tmp211_) {
				ValaObjectType* _tmp212_;
				ValaObjectTypeSymbol* _tmp213_;
				ValaObjectTypeSymbol* _tmp214_;
				gchar* _tmp215_;
				_tmp212_ = type;
				_tmp213_ = vala_object_type_get_type_symbol (_tmp212_);
				_tmp214_ = _tmp213_;
				_tmp215_ = vala_get_ccode_const_name ((ValaCodeNode*) _tmp214_);
				_g_free0 (cname);
				cname = _tmp215_;
			} else {
				ValaObjectType* _tmp216_;
				ValaObjectTypeSymbol* _tmp217_;
				ValaObjectTypeSymbol* _tmp218_;
				gchar* _tmp219_;
				_tmp216_ = type;
				_tmp217_ = vala_object_type_get_type_symbol (_tmp216_);
				_tmp218_ = _tmp217_;
				_tmp219_ = vala_get_ccode_name ((ValaCodeNode*) _tmp218_);
				_g_free0 (cname);
				cname = _tmp219_;
			}
			_tmp220_ = cname;
			_tmp221_ = g_strdup_printf ("%s*", _tmp220_);
			result = _tmp221_;
			_g_free0 (cname);
			_vala_code_node_unref0 (type);
			_vala_code_node_unref0 (sym);
			return result;
		} else {
			ValaCodeNode* _tmp222_;
			_tmp222_ = self->priv->node;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp222_, VALA_TYPE_ARRAY_TYPE)) {
				ValaArrayType* type = NULL;
				ValaCodeNode* _tmp223_;
				ValaArrayType* _tmp224_;
				gchar* cname = NULL;
				ValaArrayType* _tmp225_;
				ValaDataType* _tmp226_;
				ValaDataType* _tmp227_;
				gchar* _tmp228_;
				ValaArrayType* _tmp229_;
				gboolean _tmp230_;
				gboolean _tmp231_;
				_tmp223_ = self->priv->node;
				_tmp224_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp223_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
				type = _tmp224_;
				_tmp225_ = type;
				_tmp226_ = vala_array_type_get_element_type (_tmp225_);
				_tmp227_ = _tmp226_;
				_tmp228_ = vala_get_ccode_name ((ValaCodeNode*) _tmp227_);
				cname = _tmp228_;
				_tmp229_ = type;
				_tmp230_ = vala_array_type_get_inline_allocated (_tmp229_);
				_tmp231_ = _tmp230_;
				if (_tmp231_) {
					result = cname;
					_vala_code_node_unref0 (type);
					_vala_code_node_unref0 (sym);
					return result;
				} else {
					const gchar* _tmp232_;
					gchar* _tmp233_;
					_tmp232_ = cname;
					_tmp233_ = g_strdup_printf ("%s*", _tmp232_);
					result = _tmp233_;
					_g_free0 (cname);
					_vala_code_node_unref0 (type);
					_vala_code_node_unref0 (sym);
					return result;
				}
				_g_free0 (cname);
				_vala_code_node_unref0 (type);
			} else {
				ValaCodeNode* _tmp234_;
				_tmp234_ = self->priv->node;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp234_, VALA_TYPE_DELEGATE_TYPE)) {
					ValaDelegateType* type = NULL;
					ValaCodeNode* _tmp235_;
					ValaDelegateType* _tmp236_;
					ValaDelegateType* _tmp237_;
					ValaDelegate* _tmp238_;
					ValaDelegate* _tmp239_;
					gchar* _tmp240_;
					_tmp235_ = self->priv->node;
					_tmp236_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp235_, VALA_TYPE_DELEGATE_TYPE, ValaDelegateType));
					type = _tmp236_;
					_tmp237_ = type;
					_tmp238_ = vala_delegate_type_get_delegate_symbol (_tmp237_);
					_tmp239_ = _tmp238_;
					_tmp240_ = vala_get_ccode_name ((ValaCodeNode*) _tmp239_);
					result = _tmp240_;
					_vala_code_node_unref0 (type);
					_vala_code_node_unref0 (sym);
					return result;
				} else {
					ValaCodeNode* _tmp241_;
					_tmp241_ = self->priv->node;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp241_, VALA_TYPE_ERROR_TYPE)) {
						gchar* _tmp242_;
						_tmp242_ = g_strdup ("GError*");
						result = _tmp242_;
						_vala_code_node_unref0 (sym);
						return result;
					} else {
						ValaCodeNode* _tmp243_;
						_tmp243_ = self->priv->node;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp243_, VALA_TYPE_GENERIC_TYPE)) {
							ValaGenericType* type = NULL;
							ValaCodeNode* _tmp244_;
							ValaGenericType* _tmp245_;
							ValaGenericType* _tmp246_;
							gboolean _tmp247_;
							gboolean _tmp248_;
							_tmp244_ = self->priv->node;
							_tmp245_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp244_, VALA_TYPE_GENERIC_TYPE, ValaGenericType));
							type = _tmp245_;
							_tmp246_ = type;
							_tmp247_ = vala_data_type_get_value_owned ((ValaDataType*) _tmp246_);
							_tmp248_ = _tmp247_;
							if (_tmp248_) {
								gchar* _tmp249_;
								_tmp249_ = g_strdup ("gpointer");
								result = _tmp249_;
								_vala_code_node_unref0 (type);
								_vala_code_node_unref0 (sym);
								return result;
							} else {
								gchar* _tmp250_;
								_tmp250_ = g_strdup ("gconstpointer");
								result = _tmp250_;
								_vala_code_node_unref0 (type);
								_vala_code_node_unref0 (sym);
								return result;
							}
							_vala_code_node_unref0 (type);
						} else {
							ValaCodeNode* _tmp251_;
							_tmp251_ = self->priv->node;
							if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp251_, VALA_TYPE_METHOD_TYPE)) {
								gchar* _tmp252_;
								_tmp252_ = g_strdup ("gpointer");
								result = _tmp252_;
								_vala_code_node_unref0 (sym);
								return result;
							} else {
								ValaCodeNode* _tmp253_;
								_tmp253_ = self->priv->node;
								if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp253_, VALA_TYPE_NULL_TYPE)) {
									gchar* _tmp254_;
									_tmp254_ = g_strdup ("gpointer");
									result = _tmp254_;
									_vala_code_node_unref0 (sym);
									return result;
								} else {
									ValaCodeNode* _tmp255_;
									_tmp255_ = self->priv->node;
									if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp255_, VALA_TYPE_POINTER_TYPE)) {
										ValaPointerType* type = NULL;
										ValaCodeNode* _tmp256_;
										ValaPointerType* _tmp257_;
										gboolean _tmp258_ = FALSE;
										ValaPointerType* _tmp259_;
										ValaDataType* _tmp260_;
										ValaDataType* _tmp261_;
										ValaTypeSymbol* _tmp262_;
										ValaTypeSymbol* _tmp263_;
										_tmp256_ = self->priv->node;
										_tmp257_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp256_, VALA_TYPE_POINTER_TYPE, ValaPointerType));
										type = _tmp257_;
										_tmp259_ = type;
										_tmp260_ = vala_pointer_type_get_base_type (_tmp259_);
										_tmp261_ = _tmp260_;
										_tmp262_ = vala_data_type_get_data_type (_tmp261_);
										_tmp263_ = _tmp262_;
										if (_tmp263_ != NULL) {
											ValaPointerType* _tmp264_;
											ValaDataType* _tmp265_;
											ValaDataType* _tmp266_;
											ValaTypeSymbol* _tmp267_;
											ValaTypeSymbol* _tmp268_;
											gboolean _tmp269_;
											_tmp264_ = type;
											_tmp265_ = vala_pointer_type_get_base_type (_tmp264_);
											_tmp266_ = _tmp265_;
											_tmp267_ = vala_data_type_get_data_type (_tmp266_);
											_tmp268_ = _tmp267_;
											_tmp269_ = vala_typesymbol_is_reference_type (_tmp268_);
											_tmp258_ = _tmp269_;
										} else {
											_tmp258_ = FALSE;
										}
										if (_tmp258_) {
											ValaPointerType* _tmp270_;
											ValaDataType* _tmp271_;
											ValaDataType* _tmp272_;
											gchar* _tmp273_;
											_tmp270_ = type;
											_tmp271_ = vala_pointer_type_get_base_type (_tmp270_);
											_tmp272_ = _tmp271_;
											_tmp273_ = vala_get_ccode_name ((ValaCodeNode*) _tmp272_);
											result = _tmp273_;
											_vala_code_node_unref0 (type);
											_vala_code_node_unref0 (sym);
											return result;
										} else {
											ValaPointerType* _tmp274_;
											ValaDataType* _tmp275_;
											ValaDataType* _tmp276_;
											gchar* _tmp277_;
											gchar* _tmp278_;
											gchar* _tmp279_;
											gchar* _tmp280_;
											_tmp274_ = type;
											_tmp275_ = vala_pointer_type_get_base_type (_tmp274_);
											_tmp276_ = _tmp275_;
											_tmp277_ = vala_get_ccode_name ((ValaCodeNode*) _tmp276_);
											_tmp278_ = _tmp277_;
											_tmp279_ = g_strdup_printf ("%s*", _tmp278_);
											_tmp280_ = _tmp279_;
											_g_free0 (_tmp278_);
											result = _tmp280_;
											_vala_code_node_unref0 (type);
											_vala_code_node_unref0 (sym);
											return result;
										}
										_vala_code_node_unref0 (type);
									} else {
										ValaCodeNode* _tmp281_;
										_tmp281_ = self->priv->node;
										if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp281_, VALA_TYPE_VOID_TYPE)) {
											gchar* _tmp282_;
											_tmp282_ = g_strdup ("void");
											result = _tmp282_;
											_vala_code_node_unref0 (sym);
											return result;
										} else {
											ValaCodeNode* _tmp283_;
											_tmp283_ = self->priv->node;
											if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp283_, VALA_TYPE_CLASS_TYPE)) {
												ValaClassType* type = NULL;
												ValaCodeNode* _tmp284_;
												ValaClassType* _tmp285_;
												ValaClassType* _tmp286_;
												ValaClass* _tmp287_;
												ValaClass* _tmp288_;
												gchar* _tmp289_;
												gchar* _tmp290_;
												gchar* _tmp291_;
												gchar* _tmp292_;
												_tmp284_ = self->priv->node;
												_tmp285_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp284_, VALA_TYPE_CLASS_TYPE, ValaClassType));
												type = _tmp285_;
												_tmp286_ = type;
												_tmp287_ = vala_class_type_get_class_symbol (_tmp286_);
												_tmp288_ = _tmp287_;
												_tmp289_ = vala_get_ccode_name ((ValaCodeNode*) _tmp288_);
												_tmp290_ = _tmp289_;
												_tmp291_ = g_strdup_printf ("%sClass*", _tmp290_);
												_tmp292_ = _tmp291_;
												_g_free0 (_tmp290_);
												result = _tmp292_;
												_vala_code_node_unref0 (type);
												_vala_code_node_unref0 (sym);
												return result;
											} else {
												ValaCodeNode* _tmp293_;
												_tmp293_ = self->priv->node;
												if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp293_, VALA_TYPE_INTERFACE_TYPE)) {
													ValaInterfaceType* type = NULL;
													ValaCodeNode* _tmp294_;
													ValaInterfaceType* _tmp295_;
													ValaInterfaceType* _tmp296_;
													ValaInterface* _tmp297_;
													ValaInterface* _tmp298_;
													gchar* _tmp299_;
													gchar* _tmp300_;
													gchar* _tmp301_;
													gchar* _tmp302_;
													_tmp294_ = self->priv->node;
													_tmp295_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp294_, VALA_TYPE_INTERFACE_TYPE, ValaInterfaceType));
													type = _tmp295_;
													_tmp296_ = type;
													_tmp297_ = vala_interface_type_get_interface_symbol (_tmp296_);
													_tmp298_ = _tmp297_;
													_tmp299_ = vala_get_ccode_type_name (_tmp298_);
													_tmp300_ = _tmp299_;
													_tmp301_ = g_strdup_printf ("%s*", _tmp300_);
													_tmp302_ = _tmp301_;
													_g_free0 (_tmp300_);
													result = _tmp302_;
													_vala_code_node_unref0 (type);
													_vala_code_node_unref0 (sym);
													return result;
												} else {
													ValaCodeNode* _tmp303_;
													_tmp303_ = self->priv->node;
													if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp303_, VALA_TYPE_VALUE_TYPE)) {
														ValaValueType* type = NULL;
														ValaCodeNode* _tmp304_;
														ValaValueType* _tmp305_;
														gchar* cname = NULL;
														ValaValueType* _tmp306_;
														ValaTypeSymbol* _tmp307_;
														ValaTypeSymbol* _tmp308_;
														gchar* _tmp309_;
														ValaValueType* _tmp310_;
														gboolean _tmp311_;
														gboolean _tmp312_;
														_tmp304_ = self->priv->node;
														_tmp305_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp304_, VALA_TYPE_VALUE_TYPE, ValaValueType));
														type = _tmp305_;
														_tmp306_ = type;
														_tmp307_ = vala_value_type_get_type_symbol (_tmp306_);
														_tmp308_ = _tmp307_;
														_tmp309_ = vala_get_ccode_name ((ValaCodeNode*) _tmp308_);
														cname = _tmp309_;
														_tmp310_ = type;
														_tmp311_ = vala_data_type_get_nullable ((ValaDataType*) _tmp310_);
														_tmp312_ = _tmp311_;
														if (_tmp312_) {
															const gchar* _tmp313_;
															gchar* _tmp314_;
															_tmp313_ = cname;
															_tmp314_ = g_strdup_printf ("%s*", _tmp313_);
															result = _tmp314_;
															_g_free0 (cname);
															_vala_code_node_unref0 (type);
															_vala_code_node_unref0 (sym);
															return result;
														} else {
															result = cname;
															_vala_code_node_unref0 (type);
															_vala_code_node_unref0 (sym);
															return result;
														}
														_g_free0 (cname);
														_vala_code_node_unref0 (type);
													} else {
														ValaCodeNode* _tmp315_;
														_tmp315_ = self->priv->node;
														if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp315_, VALA_TYPE_CTYPE)) {
															ValaCodeNode* _tmp316_;
															const gchar* _tmp317_;
															const gchar* _tmp318_;
															gchar* _tmp319_;
															_tmp316_ = self->priv->node;
															_tmp317_ = vala_ctype_get_ctype_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp316_, VALA_TYPE_CTYPE, ValaCType));
															_tmp318_ = _tmp317_;
															_tmp319_ = g_strdup (_tmp318_);
															result = _tmp319_;
															_vala_code_node_unref0 (sym);
															return result;
														} else {
															ValaCodeNode* _tmp320_;
															ValaSourceReference* _tmp321_;
															ValaSourceReference* _tmp322_;
															gchar* _tmp323_;
															_tmp320_ = self->priv->node;
															_tmp321_ = vala_code_node_get_source_reference (_tmp320_);
															_tmp322_ = _tmp321_;
															vala_report_error (_tmp322_, "Unresolved type reference");
															_tmp323_ = g_strdup ("");
															result = _tmp323_;
															_vala_code_node_unref0 (sym);
															return result;
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	_vala_code_node_unref0 (sym);
}


static gchar* vala_ccode_attribute_get_default_header_filenames (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	gboolean _tmp0_ = FALSE;
	ValaSymbol* _tmp1_;
	ValaSymbol* _tmp4_;
	ValaSymbol* _tmp5_;
	ValaSymbol* _tmp6_;
	gboolean _tmp14_ = FALSE;
	ValaSymbol* _tmp15_;
	ValaSourceReference* _tmp16_;
	ValaSourceReference* _tmp17_;
	gchar* _tmp27_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp1_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_DYNAMIC_PROPERTY)) {
		_tmp0_ = TRUE;
	} else {
		ValaSymbol* _tmp2_;
		_tmp2_ = self->priv->sym;
		_tmp0_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_DYNAMIC_METHOD);
	}
	if (_tmp0_) {
		gchar* _tmp3_;
		_tmp3_ = g_strdup ("");
		result = _tmp3_;
		return result;
	}
	_tmp4_ = self->priv->sym;
	_tmp5_ = vala_symbol_get_parent_symbol (_tmp4_);
	_tmp6_ = _tmp5_;
	if (_tmp6_ != NULL) {
		gchar* parent_headers = NULL;
		ValaSymbol* _tmp7_;
		ValaSymbol* _tmp8_;
		ValaSymbol* _tmp9_;
		gchar* _tmp10_;
		const gchar* _tmp11_;
		gint _tmp12_;
		gint _tmp13_;
		_tmp7_ = self->priv->sym;
		_tmp8_ = vala_symbol_get_parent_symbol (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = vala_get_ccode_header_filenames (_tmp9_);
		parent_headers = _tmp10_;
		_tmp11_ = parent_headers;
		_tmp12_ = strlen (_tmp11_);
		_tmp13_ = _tmp12_;
		if (_tmp13_ > 0) {
			result = parent_headers;
			return result;
		}
		_g_free0 (parent_headers);
	}
	_tmp15_ = self->priv->sym;
	_tmp16_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp15_);
	_tmp17_ = _tmp16_;
	if (_tmp17_ != NULL) {
		ValaSymbol* _tmp18_;
		gboolean _tmp19_;
		gboolean _tmp20_;
		_tmp18_ = self->priv->sym;
		_tmp19_ = vala_symbol_get_external_package (_tmp18_);
		_tmp20_ = _tmp19_;
		_tmp14_ = !_tmp20_;
	} else {
		_tmp14_ = FALSE;
	}
	if (_tmp14_) {
		ValaSymbol* _tmp21_;
		ValaSourceReference* _tmp22_;
		ValaSourceReference* _tmp23_;
		ValaSourceFile* _tmp24_;
		ValaSourceFile* _tmp25_;
		gchar* _tmp26_;
		_tmp21_ = self->priv->sym;
		_tmp22_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = vala_source_reference_get_file (_tmp23_);
		_tmp25_ = _tmp24_;
		_tmp26_ = vala_source_file_get_cinclude_filename (_tmp25_);
		result = _tmp26_;
		return result;
	}
	_tmp27_ = g_strdup ("");
	result = _tmp27_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_prefix (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp37_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_OBJECT_TYPE_SYMBOL)) {
		const gchar* _tmp1_;
		const gchar* _tmp2_;
		gchar* _tmp3_;
		_tmp1_ = vala_ccode_attribute_get_name (self);
		_tmp2_ = _tmp1_;
		_tmp3_ = g_strdup (_tmp2_);
		result = _tmp3_;
		return result;
	} else {
		gboolean _tmp4_ = FALSE;
		ValaSymbol* _tmp5_;
		_tmp5_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_ENUM)) {
			_tmp4_ = TRUE;
		} else {
			ValaSymbol* _tmp6_;
			_tmp6_ = self->priv->sym;
			_tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_ERROR_DOMAIN);
		}
		if (_tmp4_) {
			ValaSymbol* _tmp7_;
			gchar* _tmp8_;
			gchar* _tmp9_;
			gchar* _tmp10_;
			gchar* _tmp11_;
			_tmp7_ = self->priv->sym;
			_tmp8_ = vala_get_ccode_upper_case_name (_tmp7_, NULL);
			_tmp9_ = _tmp8_;
			_tmp10_ = g_strdup_printf ("%s_", _tmp9_);
			_tmp11_ = _tmp10_;
			_g_free0 (_tmp9_);
			result = _tmp11_;
			return result;
		} else {
			ValaSymbol* _tmp12_;
			_tmp12_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_NAMESPACE)) {
				ValaSymbol* _tmp13_;
				const gchar* _tmp14_;
				const gchar* _tmp15_;
				_tmp13_ = self->priv->sym;
				_tmp14_ = vala_symbol_get_name (_tmp13_);
				_tmp15_ = _tmp14_;
				if (_tmp15_ != NULL) {
					gchar* parent_prefix = NULL;
					gchar* _tmp16_;
					ValaSymbol* _tmp17_;
					ValaSymbol* _tmp18_;
					ValaSymbol* _tmp19_;
					const gchar* _tmp24_;
					ValaSymbol* _tmp25_;
					const gchar* _tmp26_;
					const gchar* _tmp27_;
					gchar* _tmp28_;
					_tmp16_ = g_strdup ("");
					parent_prefix = _tmp16_;
					_tmp17_ = self->priv->sym;
					_tmp18_ = vala_symbol_get_parent_symbol (_tmp17_);
					_tmp19_ = _tmp18_;
					if (_tmp19_ != NULL) {
						ValaSymbol* _tmp20_;
						ValaSymbol* _tmp21_;
						ValaSymbol* _tmp22_;
						gchar* _tmp23_;
						_tmp20_ = self->priv->sym;
						_tmp21_ = vala_symbol_get_parent_symbol (_tmp20_);
						_tmp22_ = _tmp21_;
						_tmp23_ = vala_get_ccode_prefix (_tmp22_);
						_g_free0 (parent_prefix);
						parent_prefix = _tmp23_;
					}
					_tmp24_ = parent_prefix;
					_tmp25_ = self->priv->sym;
					_tmp26_ = vala_symbol_get_name (_tmp25_);
					_tmp27_ = _tmp26_;
					_tmp28_ = g_strdup_printf ("%s%s", _tmp24_, _tmp27_);
					result = _tmp28_;
					_g_free0 (parent_prefix);
					return result;
				} else {
					gchar* _tmp29_;
					_tmp29_ = g_strdup ("");
					result = _tmp29_;
					return result;
				}
			} else {
				ValaSymbol* _tmp30_;
				const gchar* _tmp31_;
				const gchar* _tmp32_;
				_tmp30_ = self->priv->sym;
				_tmp31_ = vala_symbol_get_name (_tmp30_);
				_tmp32_ = _tmp31_;
				if (_tmp32_ != NULL) {
					ValaSymbol* _tmp33_;
					const gchar* _tmp34_;
					const gchar* _tmp35_;
					gchar* _tmp36_;
					_tmp33_ = self->priv->sym;
					_tmp34_ = vala_symbol_get_name (_tmp33_);
					_tmp35_ = _tmp34_;
					_tmp36_ = g_strdup (_tmp35_);
					result = _tmp36_;
					return result;
				}
			}
		}
	}
	_tmp37_ = g_strdup ("");
	result = _tmp37_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_lower_case_prefix (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_NAMESPACE)) {
		ValaSymbol* _tmp1_;
		const gchar* _tmp2_;
		const gchar* _tmp3_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = vala_symbol_get_name (_tmp1_);
		_tmp3_ = _tmp2_;
		if (_tmp3_ == NULL) {
			gchar* _tmp4_;
			_tmp4_ = g_strdup ("");
			result = _tmp4_;
			return result;
		} else {
			ValaSymbol* _tmp5_;
			ValaSymbol* _tmp6_;
			ValaSymbol* _tmp7_;
			gchar* _tmp8_;
			gchar* _tmp9_;
			ValaSymbol* _tmp10_;
			const gchar* _tmp11_;
			const gchar* _tmp12_;
			gchar* _tmp13_;
			gchar* _tmp14_;
			gchar* _tmp15_;
			gchar* _tmp16_;
			_tmp5_ = self->priv->sym;
			_tmp6_ = vala_symbol_get_parent_symbol (_tmp5_);
			_tmp7_ = _tmp6_;
			_tmp8_ = vala_get_ccode_lower_case_prefix (_tmp7_);
			_tmp9_ = _tmp8_;
			_tmp10_ = self->priv->sym;
			_tmp11_ = vala_symbol_get_name (_tmp10_);
			_tmp12_ = _tmp11_;
			_tmp13_ = vala_symbol_camel_case_to_lower_case (_tmp12_);
			_tmp14_ = _tmp13_;
			_tmp15_ = g_strdup_printf ("%s%s_", _tmp9_, _tmp14_);
			_tmp16_ = _tmp15_;
			_g_free0 (_tmp14_);
			_g_free0 (_tmp9_);
			result = _tmp16_;
			return result;
		}
	} else {
		ValaSymbol* _tmp17_;
		_tmp17_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, VALA_TYPE_METHOD)) {
			gchar* _tmp18_;
			_tmp18_ = g_strdup ("");
			result = _tmp18_;
			return result;
		} else {
			ValaSymbol* _tmp19_;
			gchar* _tmp20_;
			gchar* _tmp21_;
			gchar* _tmp22_;
			gchar* _tmp23_;
			_tmp19_ = self->priv->sym;
			_tmp20_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp19_, NULL);
			_tmp21_ = _tmp20_;
			_tmp22_ = g_strdup_printf ("%s_", _tmp21_);
			_tmp23_ = _tmp22_;
			_g_free0 (_tmp21_);
			result = _tmp23_;
			return result;
		}
	}
}


static gchar* vala_ccode_attribute_get_default_lower_case_suffix (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp47_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_OBJECT_TYPE_SYMBOL)) {
		gchar* csuffix = NULL;
		ValaSymbol* _tmp1_;
		const gchar* _tmp2_;
		const gchar* _tmp3_;
		gchar* _tmp4_;
		const gchar* _tmp5_;
		gboolean _tmp6_;
		const gchar* _tmp21_;
		gboolean _tmp22_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = vala_symbol_get_name (_tmp1_);
		_tmp3_ = _tmp2_;
		_tmp4_ = vala_symbol_camel_case_to_lower_case (_tmp3_);
		csuffix = _tmp4_;
		_tmp5_ = csuffix;
		_tmp6_ = g_str_has_prefix (_tmp5_, "type_");
		if (_tmp6_) {
			const gchar* _tmp7_;
			gint _tmp8_;
			gint _tmp9_;
			gchar* _tmp10_;
			gchar* _tmp11_;
			gchar* _tmp12_;
			_tmp7_ = csuffix;
			_tmp8_ = strlen ("type_");
			_tmp9_ = _tmp8_;
			_tmp10_ = string_substring (_tmp7_, (glong) _tmp9_, (glong) -1);
			_tmp11_ = _tmp10_;
			_tmp12_ = g_strconcat ("type", _tmp11_, NULL);
			_g_free0 (csuffix);
			csuffix = _tmp12_;
			_g_free0 (_tmp11_);
		} else {
			const gchar* _tmp13_;
			gboolean _tmp14_;
			_tmp13_ = csuffix;
			_tmp14_ = g_str_has_prefix (_tmp13_, "is_");
			if (_tmp14_) {
				const gchar* _tmp15_;
				gint _tmp16_;
				gint _tmp17_;
				gchar* _tmp18_;
				gchar* _tmp19_;
				gchar* _tmp20_;
				_tmp15_ = csuffix;
				_tmp16_ = strlen ("is_");
				_tmp17_ = _tmp16_;
				_tmp18_ = string_substring (_tmp15_, (glong) _tmp17_, (glong) -1);
				_tmp19_ = _tmp18_;
				_tmp20_ = g_strconcat ("is", _tmp19_, NULL);
				_g_free0 (csuffix);
				csuffix = _tmp20_;
				_g_free0 (_tmp19_);
			}
		}
		_tmp21_ = csuffix;
		_tmp22_ = g_str_has_suffix (_tmp21_, "_class");
		if (_tmp22_) {
			const gchar* _tmp23_;
			const gchar* _tmp24_;
			gint _tmp25_;
			gint _tmp26_;
			gint _tmp27_;
			gint _tmp28_;
			gchar* _tmp29_;
			gchar* _tmp30_;
			gchar* _tmp31_;
			_tmp23_ = csuffix;
			_tmp24_ = csuffix;
			_tmp25_ = strlen (_tmp24_);
			_tmp26_ = _tmp25_;
			_tmp27_ = strlen ("_class");
			_tmp28_ = _tmp27_;
			_tmp29_ = string_substring (_tmp23_, (glong) 0, (glong) (_tmp26_ - _tmp28_));
			_tmp30_ = _tmp29_;
			_tmp31_ = g_strconcat (_tmp30_, "class", NULL);
			_g_free0 (csuffix);
			csuffix = _tmp31_;
			_g_free0 (_tmp30_);
		}
		result = csuffix;
		return result;
	} else {
		ValaSymbol* _tmp32_;
		_tmp32_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp32_, VALA_TYPE_SIGNAL)) {
			ValaSymbol* _tmp33_;
			ValaCCodeAttribute* _tmp34_;
			ValaCCodeAttribute* _tmp35_;
			const gchar* _tmp36_;
			const gchar* _tmp37_;
			gchar* _tmp38_;
			gchar* _tmp39_;
			_tmp33_ = self->priv->sym;
			_tmp34_ = vala_get_ccode_attribute ((ValaCodeNode*) _tmp33_);
			_tmp35_ = _tmp34_;
			_tmp36_ = vala_ccode_attribute_get_name (_tmp35_);
			_tmp37_ = _tmp36_;
			_tmp38_ = string_replace (_tmp37_, "-", "_");
			_tmp39_ = _tmp38_;
			_vala_attribute_cache_unref0 (_tmp35_);
			result = _tmp39_;
			return result;
		} else {
			ValaSymbol* _tmp40_;
			const gchar* _tmp41_;
			const gchar* _tmp42_;
			_tmp40_ = self->priv->sym;
			_tmp41_ = vala_symbol_get_name (_tmp40_);
			_tmp42_ = _tmp41_;
			if (_tmp42_ != NULL) {
				ValaSymbol* _tmp43_;
				const gchar* _tmp44_;
				const gchar* _tmp45_;
				gchar* _tmp46_;
				_tmp43_ = self->priv->sym;
				_tmp44_ = vala_symbol_get_name (_tmp43_);
				_tmp45_ = _tmp44_;
				_tmp46_ = vala_symbol_camel_case_to_lower_case (_tmp45_);
				result = _tmp46_;
				return result;
			}
		}
	}
	_tmp47_ = g_strdup ("");
	result = _tmp47_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_ref_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
		ValaClass* cl = NULL;
		ValaSymbol* _tmp1_;
		ValaClass* _tmp2_;
		ValaClass* _tmp3_;
		gboolean _tmp4_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
		cl = _tmp2_;
		_tmp3_ = cl;
		_tmp4_ = vala_class_is_fundamental (_tmp3_);
		if (_tmp4_) {
			const gchar* _tmp5_;
			const gchar* _tmp6_;
			gchar* _tmp7_;
			_tmp5_ = vala_ccode_attribute_get_lower_case_prefix (self);
			_tmp6_ = _tmp5_;
			_tmp7_ = g_strdup_printf ("%sref", _tmp6_);
			result = _tmp7_;
			_vala_code_node_unref0 (cl);
			return result;
		} else {
			ValaClass* _tmp8_;
			ValaClass* _tmp9_;
			ValaClass* _tmp10_;
			_tmp8_ = cl;
			_tmp9_ = vala_class_get_base_class (_tmp8_);
			_tmp10_ = _tmp9_;
			if (_tmp10_ != NULL) {
				ValaClass* _tmp11_;
				ValaClass* _tmp12_;
				ValaClass* _tmp13_;
				gchar* _tmp14_;
				_tmp11_ = cl;
				_tmp12_ = vala_class_get_base_class (_tmp11_);
				_tmp13_ = _tmp12_;
				_tmp14_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) _tmp13_);
				result = _tmp14_;
				_vala_code_node_unref0 (cl);
				return result;
			}
		}
		_vala_code_node_unref0 (cl);
	} else {
		ValaSymbol* _tmp15_;
		_tmp15_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_INTERFACE)) {
			{
				ValaList* _prereq_list = NULL;
				ValaSymbol* _tmp16_;
				ValaList* _tmp17_;
				gint _prereq_size = 0;
				ValaList* _tmp18_;
				gint _tmp19_;
				gint _tmp20_;
				gint _prereq_index = 0;
				_tmp16_ = self->priv->sym;
				_tmp17_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, VALA_TYPE_INTERFACE, ValaInterface));
				_prereq_list = _tmp17_;
				_tmp18_ = _prereq_list;
				_tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
				_tmp20_ = _tmp19_;
				_prereq_size = _tmp20_;
				_prereq_index = -1;
				while (TRUE) {
					gint _tmp21_;
					gint _tmp22_;
					gint _tmp23_;
					ValaDataType* prereq = NULL;
					ValaList* _tmp24_;
					gint _tmp25_;
					gpointer _tmp26_;
					gchar* ref_func = NULL;
					ValaDataType* _tmp27_;
					ValaTypeSymbol* _tmp28_;
					ValaTypeSymbol* _tmp29_;
					gchar* _tmp30_;
					const gchar* _tmp31_;
					_tmp21_ = _prereq_index;
					_prereq_index = _tmp21_ + 1;
					_tmp22_ = _prereq_index;
					_tmp23_ = _prereq_size;
					if (!(_tmp22_ < _tmp23_)) {
						break;
					}
					_tmp24_ = _prereq_list;
					_tmp25_ = _prereq_index;
					_tmp26_ = vala_list_get (_tmp24_, _tmp25_);
					prereq = (ValaDataType*) _tmp26_;
					_tmp27_ = prereq;
					_tmp28_ = vala_data_type_get_data_type (_tmp27_);
					_tmp29_ = _tmp28_;
					_tmp30_ = vala_get_ccode_ref_function ((ValaTypeSymbol*) G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
					ref_func = _tmp30_;
					_tmp31_ = ref_func;
					if (_tmp31_ != NULL) {
						result = ref_func;
						_vala_code_node_unref0 (prereq);
						_vala_iterable_unref0 (_prereq_list);
						return result;
					}
					_g_free0 (ref_func);
					_vala_code_node_unref0 (prereq);
				}
				_vala_iterable_unref0 (_prereq_list);
			}
		}
	}
	result = NULL;
	return result;
}


static gchar* vala_ccode_attribute_get_default_unref_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
		ValaClass* cl = NULL;
		ValaSymbol* _tmp1_;
		ValaClass* _tmp2_;
		ValaClass* _tmp3_;
		gboolean _tmp4_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
		cl = _tmp2_;
		_tmp3_ = cl;
		_tmp4_ = vala_class_is_fundamental (_tmp3_);
		if (_tmp4_) {
			const gchar* _tmp5_;
			const gchar* _tmp6_;
			gchar* _tmp7_;
			_tmp5_ = vala_ccode_attribute_get_lower_case_prefix (self);
			_tmp6_ = _tmp5_;
			_tmp7_ = g_strdup_printf ("%sunref", _tmp6_);
			result = _tmp7_;
			_vala_code_node_unref0 (cl);
			return result;
		} else {
			ValaClass* _tmp8_;
			ValaClass* _tmp9_;
			ValaClass* _tmp10_;
			_tmp8_ = cl;
			_tmp9_ = vala_class_get_base_class (_tmp8_);
			_tmp10_ = _tmp9_;
			if (_tmp10_ != NULL) {
				ValaClass* _tmp11_;
				ValaClass* _tmp12_;
				ValaClass* _tmp13_;
				gchar* _tmp14_;
				_tmp11_ = cl;
				_tmp12_ = vala_class_get_base_class (_tmp11_);
				_tmp13_ = _tmp12_;
				_tmp14_ = vala_get_ccode_unref_function ((ValaObjectTypeSymbol*) _tmp13_);
				result = _tmp14_;
				_vala_code_node_unref0 (cl);
				return result;
			}
		}
		_vala_code_node_unref0 (cl);
	} else {
		ValaSymbol* _tmp15_;
		_tmp15_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALA_TYPE_INTERFACE)) {
			{
				ValaList* _prereq_list = NULL;
				ValaSymbol* _tmp16_;
				ValaList* _tmp17_;
				gint _prereq_size = 0;
				ValaList* _tmp18_;
				gint _tmp19_;
				gint _tmp20_;
				gint _prereq_index = 0;
				_tmp16_ = self->priv->sym;
				_tmp17_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp16_, VALA_TYPE_INTERFACE, ValaInterface));
				_prereq_list = _tmp17_;
				_tmp18_ = _prereq_list;
				_tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
				_tmp20_ = _tmp19_;
				_prereq_size = _tmp20_;
				_prereq_index = -1;
				while (TRUE) {
					gint _tmp21_;
					gint _tmp22_;
					gint _tmp23_;
					ValaDataType* prereq = NULL;
					ValaList* _tmp24_;
					gint _tmp25_;
					gpointer _tmp26_;
					gchar* unref_func = NULL;
					ValaDataType* _tmp27_;
					ValaTypeSymbol* _tmp28_;
					ValaTypeSymbol* _tmp29_;
					gchar* _tmp30_;
					const gchar* _tmp31_;
					_tmp21_ = _prereq_index;
					_prereq_index = _tmp21_ + 1;
					_tmp22_ = _prereq_index;
					_tmp23_ = _prereq_size;
					if (!(_tmp22_ < _tmp23_)) {
						break;
					}
					_tmp24_ = _prereq_list;
					_tmp25_ = _prereq_index;
					_tmp26_ = vala_list_get (_tmp24_, _tmp25_);
					prereq = (ValaDataType*) _tmp26_;
					_tmp27_ = prereq;
					_tmp28_ = vala_data_type_get_data_type (_tmp27_);
					_tmp29_ = _tmp28_;
					_tmp30_ = vala_get_ccode_unref_function (G_TYPE_CHECK_INSTANCE_CAST (_tmp29_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
					unref_func = _tmp30_;
					_tmp31_ = unref_func;
					if (_tmp31_ != NULL) {
						result = unref_func;
						_vala_code_node_unref0 (prereq);
						_vala_iterable_unref0 (_prereq_list);
						return result;
					}
					_g_free0 (unref_func);
					_vala_code_node_unref0 (prereq);
				}
				_vala_iterable_unref0 (_prereq_list);
			}
		}
	}
	result = NULL;
	return result;
}


static gchar* vala_ccode_attribute_get_default_ref_sink_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp22_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
		ValaSymbol* _tmp1_;
		ValaClass* _tmp2_;
		ValaClass* _tmp3_;
		gchar* _tmp4_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = vala_class_get_base_class (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
		_tmp3_ = _tmp2_;
		_tmp4_ = vala_get_ccode_ref_sink_function ((ValaObjectTypeSymbol*) _tmp3_);
		result = _tmp4_;
		return result;
	} else {
		ValaSymbol* _tmp5_;
		_tmp5_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_INTERFACE)) {
			{
				ValaList* _prereq_list = NULL;
				ValaSymbol* _tmp6_;
				ValaList* _tmp7_;
				gint _prereq_size = 0;
				ValaList* _tmp8_;
				gint _tmp9_;
				gint _tmp10_;
				gint _prereq_index = 0;
				_tmp6_ = self->priv->sym;
				_tmp7_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, VALA_TYPE_INTERFACE, ValaInterface));
				_prereq_list = _tmp7_;
				_tmp8_ = _prereq_list;
				_tmp9_ = vala_collection_get_size ((ValaCollection*) _tmp8_);
				_tmp10_ = _tmp9_;
				_prereq_size = _tmp10_;
				_prereq_index = -1;
				while (TRUE) {
					gint _tmp11_;
					gint _tmp12_;
					gint _tmp13_;
					ValaDataType* prereq = NULL;
					ValaList* _tmp14_;
					gint _tmp15_;
					gpointer _tmp16_;
					gchar* ref_sink_func = NULL;
					ValaDataType* _tmp17_;
					ValaTypeSymbol* _tmp18_;
					ValaTypeSymbol* _tmp19_;
					gchar* _tmp20_;
					const gchar* _tmp21_;
					_tmp11_ = _prereq_index;
					_prereq_index = _tmp11_ + 1;
					_tmp12_ = _prereq_index;
					_tmp13_ = _prereq_size;
					if (!(_tmp12_ < _tmp13_)) {
						break;
					}
					_tmp14_ = _prereq_list;
					_tmp15_ = _prereq_index;
					_tmp16_ = vala_list_get (_tmp14_, _tmp15_);
					prereq = (ValaDataType*) _tmp16_;
					_tmp17_ = prereq;
					_tmp18_ = vala_data_type_get_data_type (_tmp17_);
					_tmp19_ = _tmp18_;
					_tmp20_ = vala_get_ccode_ref_sink_function (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol));
					ref_sink_func = _tmp20_;
					_tmp21_ = ref_sink_func;
					if (g_strcmp0 (_tmp21_, "") != 0) {
						result = ref_sink_func;
						_vala_code_node_unref0 (prereq);
						_vala_iterable_unref0 (_prereq_list);
						return result;
					}
					_g_free0 (ref_sink_func);
					_vala_code_node_unref0 (prereq);
				}
				_vala_iterable_unref0 (_prereq_list);
			}
		}
	}
	_tmp22_ = g_strdup ("");
	result = _tmp22_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_free_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
		ValaClass* cl = NULL;
		ValaSymbol* _tmp1_;
		ValaClass* _tmp2_;
		ValaClass* _tmp3_;
		ValaClass* _tmp4_;
		ValaClass* _tmp5_;
		const gchar* _tmp10_;
		const gchar* _tmp11_;
		gchar* _tmp12_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
		cl = _tmp2_;
		_tmp3_ = cl;
		_tmp4_ = vala_class_get_base_class (_tmp3_);
		_tmp5_ = _tmp4_;
		if (_tmp5_ != NULL) {
			ValaClass* _tmp6_;
			ValaClass* _tmp7_;
			ValaClass* _tmp8_;
			gchar* _tmp9_;
			_tmp6_ = cl;
			_tmp7_ = vala_class_get_base_class (_tmp6_);
			_tmp8_ = _tmp7_;
			_tmp9_ = vala_get_ccode_free_function ((ValaTypeSymbol*) _tmp8_);
			result = _tmp9_;
			_vala_code_node_unref0 (cl);
			return result;
		}
		_tmp10_ = vala_ccode_attribute_get_lower_case_prefix (self);
		_tmp11_ = _tmp10_;
		_tmp12_ = g_strdup_printf ("%sfree", _tmp11_);
		result = _tmp12_;
		_vala_code_node_unref0 (cl);
		return result;
	} else {
		ValaSymbol* _tmp13_;
		_tmp13_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, VALA_TYPE_STRUCT)) {
			ValaSymbol* _tmp14_;
			gboolean _tmp15_;
			gboolean _tmp16_;
			_tmp14_ = self->priv->sym;
			_tmp15_ = vala_symbol_get_external_package (_tmp14_);
			_tmp16_ = _tmp15_;
			if (!_tmp16_) {
				const gchar* _tmp17_;
				const gchar* _tmp18_;
				gchar* _tmp19_;
				_tmp17_ = vala_ccode_attribute_get_lower_case_prefix (self);
				_tmp18_ = _tmp17_;
				_tmp19_ = g_strdup_printf ("%sfree", _tmp18_);
				result = _tmp19_;
				return result;
			}
		}
	}
	result = NULL;
	return result;
}


static gchar* vala_ccode_attribute_get_default_type_id (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp69_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (_tmp0_ != NULL) {
		gboolean _tmp1_ = FALSE;
		gboolean _tmp2_ = FALSE;
		ValaSymbol* _tmp3_;
		_tmp3_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_CLASS)) {
			ValaSymbol* _tmp4_;
			gboolean _tmp5_;
			gboolean _tmp6_;
			_tmp4_ = self->priv->sym;
			_tmp5_ = vala_class_get_is_compact (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_CLASS, ValaClass));
			_tmp6_ = _tmp5_;
			_tmp2_ = !_tmp6_;
		} else {
			_tmp2_ = FALSE;
		}
		if (_tmp2_) {
			_tmp1_ = TRUE;
		} else {
			ValaSymbol* _tmp7_;
			_tmp7_ = self->priv->sym;
			_tmp1_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_INTERFACE);
		}
		if (_tmp1_) {
			ValaSymbol* _tmp8_;
			gchar* _tmp9_;
			_tmp8_ = self->priv->sym;
			_tmp9_ = vala_get_ccode_upper_case_name (_tmp8_, "TYPE_");
			result = _tmp9_;
			return result;
		} else {
			ValaSymbol* _tmp10_;
			_tmp10_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_ERROR_TYPE)) {
				gchar* _tmp11_;
				_tmp11_ = g_strdup ("G_TYPE_ERROR");
				result = _tmp11_;
				return result;
			} else {
				ValaSymbol* _tmp12_;
				_tmp12_ = self->priv->sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp12_, VALA_TYPE_STRUCT)) {
					ValaStruct* st = NULL;
					ValaSymbol* _tmp13_;
					ValaStruct* _tmp14_;
					ValaStruct* _tmp15_;
					gboolean _tmp16_;
					_tmp13_ = self->priv->sym;
					_tmp14_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp13_, VALA_TYPE_STRUCT, ValaStruct));
					st = _tmp14_;
					_tmp15_ = st;
					_tmp16_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp15_);
					if (!_tmp16_) {
						ValaStruct* base_struct = NULL;
						ValaStruct* _tmp17_;
						ValaStruct* _tmp18_;
						ValaStruct* _tmp19_;
						ValaStruct* _tmp20_;
						ValaStruct* _tmp21_;
						ValaStruct* _tmp24_;
						gboolean _tmp25_;
						_tmp17_ = st;
						_tmp18_ = vala_struct_get_base_struct (_tmp17_);
						_tmp19_ = _tmp18_;
						_tmp20_ = _vala_code_node_ref0 (_tmp19_);
						base_struct = _tmp20_;
						_tmp21_ = base_struct;
						if (_tmp21_ != NULL) {
							ValaStruct* _tmp22_;
							gchar* _tmp23_;
							_tmp22_ = base_struct;
							_tmp23_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp22_);
							result = _tmp23_;
							_vala_code_node_unref0 (base_struct);
							_vala_code_node_unref0 (st);
							return result;
						}
						_tmp24_ = st;
						_tmp25_ = vala_struct_is_simple_type (_tmp24_);
						if (!_tmp25_) {
							gchar* _tmp26_;
							_tmp26_ = g_strdup ("G_TYPE_POINTER");
							result = _tmp26_;
							_vala_code_node_unref0 (base_struct);
							_vala_code_node_unref0 (st);
							return result;
						}
						_vala_code_node_unref0 (base_struct);
					} else {
						ValaStruct* _tmp27_;
						gchar* _tmp28_;
						_tmp27_ = st;
						_tmp28_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp27_, "TYPE_");
						result = _tmp28_;
						_vala_code_node_unref0 (st);
						return result;
					}
					_vala_code_node_unref0 (st);
				} else {
					ValaSymbol* _tmp29_;
					_tmp29_ = self->priv->sym;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp29_, VALA_TYPE_ENUM)) {
						ValaEnum* en = NULL;
						ValaSymbol* _tmp30_;
						ValaEnum* _tmp31_;
						ValaEnum* _tmp32_;
						gboolean _tmp33_;
						_tmp30_ = self->priv->sym;
						_tmp31_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp30_, VALA_TYPE_ENUM, ValaEnum));
						en = _tmp31_;
						_tmp32_ = en;
						_tmp33_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp32_);
						if (_tmp33_) {
							ValaEnum* _tmp34_;
							gchar* _tmp35_;
							_tmp34_ = en;
							_tmp35_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp34_, "TYPE_");
							result = _tmp35_;
							_vala_code_node_unref0 (en);
							return result;
						} else {
							const gchar* _tmp36_ = NULL;
							ValaEnum* _tmp37_;
							gboolean _tmp38_;
							gboolean _tmp39_;
							gchar* _tmp40_;
							_tmp37_ = en;
							_tmp38_ = vala_enum_get_is_flags (_tmp37_);
							_tmp39_ = _tmp38_;
							if (_tmp39_) {
								_tmp36_ = "G_TYPE_UINT";
							} else {
								_tmp36_ = "G_TYPE_INT";
							}
							_tmp40_ = g_strdup (_tmp36_);
							result = _tmp40_;
							_vala_code_node_unref0 (en);
							return result;
						}
						_vala_code_node_unref0 (en);
					} else {
						gchar* _tmp41_;
						_tmp41_ = g_strdup ("G_TYPE_POINTER");
						result = _tmp41_;
						return result;
					}
				}
			}
		}
	} else {
		gboolean _tmp42_ = FALSE;
		ValaCodeNode* _tmp43_;
		_tmp43_ = self->priv->node;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp43_, VALA_TYPE_ARRAY_TYPE)) {
			ValaCodeNode* _tmp44_;
			ValaDataType* _tmp45_;
			ValaDataType* _tmp46_;
			ValaTypeSymbol* _tmp47_;
			ValaTypeSymbol* _tmp48_;
			gchar* _tmp49_;
			gchar* _tmp50_;
			_tmp44_ = self->priv->node;
			_tmp45_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp44_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
			_tmp46_ = _tmp45_;
			_tmp47_ = vala_data_type_get_data_type (_tmp46_);
			_tmp48_ = _tmp47_;
			_tmp49_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp48_);
			_tmp50_ = _tmp49_;
			_tmp42_ = g_strcmp0 (_tmp50_, "string") == 0;
			_g_free0 (_tmp50_);
		} else {
			_tmp42_ = FALSE;
		}
		if (_tmp42_) {
			gchar* _tmp51_;
			_tmp51_ = g_strdup ("G_TYPE_STRV");
			result = _tmp51_;
			return result;
		} else {
			gboolean _tmp52_ = FALSE;
			ValaCodeNode* _tmp53_;
			_tmp53_ = self->priv->node;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_POINTER_TYPE)) {
				_tmp52_ = TRUE;
			} else {
				ValaCodeNode* _tmp54_;
				_tmp54_ = self->priv->node;
				_tmp52_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp54_, VALA_TYPE_DELEGATE_TYPE);
			}
			if (_tmp52_) {
				gchar* _tmp55_;
				_tmp55_ = g_strdup ("G_TYPE_POINTER");
				result = _tmp55_;
				return result;
			} else {
				ValaCodeNode* _tmp56_;
				_tmp56_ = self->priv->node;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALA_TYPE_ERROR_TYPE)) {
					gchar* _tmp57_;
					_tmp57_ = g_strdup ("G_TYPE_ERROR");
					result = _tmp57_;
					return result;
				} else {
					ValaCodeNode* _tmp58_;
					_tmp58_ = self->priv->node;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp58_, VALA_TYPE_VOID_TYPE)) {
						gchar* _tmp59_;
						_tmp59_ = g_strdup ("G_TYPE_NONE");
						result = _tmp59_;
						return result;
					} else {
						ValaDataType* type = NULL;
						ValaCodeNode* _tmp60_;
						ValaDataType* _tmp61_;
						ValaDataType* _tmp62_;
						ValaTypeSymbol* _tmp63_;
						ValaTypeSymbol* _tmp64_;
						_tmp60_ = self->priv->node;
						_tmp61_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp60_, VALA_TYPE_DATA_TYPE, ValaDataType));
						type = _tmp61_;
						_tmp62_ = type;
						_tmp63_ = vala_data_type_get_data_type (_tmp62_);
						_tmp64_ = _tmp63_;
						if (_tmp64_ != NULL) {
							ValaDataType* _tmp65_;
							ValaTypeSymbol* _tmp66_;
							ValaTypeSymbol* _tmp67_;
							gchar* _tmp68_;
							_tmp65_ = type;
							_tmp66_ = vala_data_type_get_data_type (_tmp65_);
							_tmp67_ = _tmp66_;
							_tmp68_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp67_);
							result = _tmp68_;
							_vala_code_node_unref0 (type);
							return result;
						}
						_vala_code_node_unref0 (type);
					}
				}
			}
		}
	}
	_tmp69_ = g_strdup ("");
	result = _tmp69_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_marshaller_type_name (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp134_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (_tmp0_ != NULL) {
		ValaSymbol* _tmp1_;
		_tmp1_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS)) {
			ValaClass* cl = NULL;
			ValaSymbol* _tmp2_;
			ValaClass* _tmp3_;
			ValaClass* _tmp4_;
			ValaClass* _tmp5_;
			ValaClass* _tmp6_;
			_tmp2_ = self->priv->sym;
			_tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_CLASS, ValaClass));
			cl = _tmp3_;
			_tmp4_ = cl;
			_tmp5_ = vala_class_get_base_class (_tmp4_);
			_tmp6_ = _tmp5_;
			if (_tmp6_ != NULL) {
				ValaClass* _tmp7_;
				ValaClass* _tmp8_;
				ValaClass* _tmp9_;
				gchar* _tmp10_;
				_tmp7_ = cl;
				_tmp8_ = vala_class_get_base_class (_tmp7_);
				_tmp9_ = _tmp8_;
				_tmp10_ = vala_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp9_);
				result = _tmp10_;
				_vala_code_node_unref0 (cl);
				return result;
			} else {
				ValaClass* _tmp11_;
				gboolean _tmp12_;
				gboolean _tmp13_;
				_tmp11_ = cl;
				_tmp12_ = vala_class_get_is_compact (_tmp11_);
				_tmp13_ = _tmp12_;
				if (!_tmp13_) {
					ValaClass* _tmp14_;
					gchar* _tmp15_;
					_tmp14_ = cl;
					_tmp15_ = vala_get_ccode_upper_case_name ((ValaSymbol*) _tmp14_, NULL);
					result = _tmp15_;
					_vala_code_node_unref0 (cl);
					return result;
				} else {
					const gchar* _tmp16_;
					const gchar* _tmp17_;
					_tmp16_ = vala_ccode_attribute_get_type_id (self);
					_tmp17_ = _tmp16_;
					if (g_strcmp0 (_tmp17_, "G_TYPE_POINTER") == 0) {
						gchar* _tmp18_;
						_tmp18_ = g_strdup ("POINTER");
						result = _tmp18_;
						_vala_code_node_unref0 (cl);
						return result;
					} else {
						gchar* _tmp19_;
						_tmp19_ = g_strdup ("BOXED");
						result = _tmp19_;
						_vala_code_node_unref0 (cl);
						return result;
					}
				}
			}
			_vala_code_node_unref0 (cl);
		} else {
			ValaSymbol* _tmp20_;
			_tmp20_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp20_, VALA_TYPE_ENUM)) {
				ValaEnum* en = NULL;
				ValaSymbol* _tmp21_;
				ValaEnum* _tmp22_;
				ValaEnum* _tmp23_;
				gboolean _tmp24_;
				_tmp21_ = self->priv->sym;
				_tmp22_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp21_, VALA_TYPE_ENUM, ValaEnum));
				en = _tmp22_;
				_tmp23_ = en;
				_tmp24_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp23_);
				if (_tmp24_) {
					ValaEnum* _tmp25_;
					gboolean _tmp26_;
					gboolean _tmp27_;
					_tmp25_ = en;
					_tmp26_ = vala_enum_get_is_flags (_tmp25_);
					_tmp27_ = _tmp26_;
					if (_tmp27_) {
						gchar* _tmp28_;
						_tmp28_ = g_strdup ("FLAGS");
						result = _tmp28_;
						_vala_code_node_unref0 (en);
						return result;
					} else {
						gchar* _tmp29_;
						_tmp29_ = g_strdup ("ENUM");
						result = _tmp29_;
						_vala_code_node_unref0 (en);
						return result;
					}
				} else {
					ValaEnum* _tmp30_;
					gboolean _tmp31_;
					gboolean _tmp32_;
					_tmp30_ = en;
					_tmp31_ = vala_enum_get_is_flags (_tmp30_);
					_tmp32_ = _tmp31_;
					if (_tmp32_) {
						gchar* _tmp33_;
						_tmp33_ = g_strdup ("UINT");
						result = _tmp33_;
						_vala_code_node_unref0 (en);
						return result;
					} else {
						gchar* _tmp34_;
						_tmp34_ = g_strdup ("INT");
						result = _tmp34_;
						_vala_code_node_unref0 (en);
						return result;
					}
				}
				_vala_code_node_unref0 (en);
			} else {
				ValaSymbol* _tmp35_;
				_tmp35_ = self->priv->sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp35_, VALA_TYPE_INTERFACE)) {
					gchar* _tmp52_;
					{
						ValaList* _prereq_list = NULL;
						ValaSymbol* _tmp36_;
						ValaList* _tmp37_;
						gint _prereq_size = 0;
						ValaList* _tmp38_;
						gint _tmp39_;
						gint _tmp40_;
						gint _prereq_index = 0;
						_tmp36_ = self->priv->sym;
						_tmp37_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp36_, VALA_TYPE_INTERFACE, ValaInterface));
						_prereq_list = _tmp37_;
						_tmp38_ = _prereq_list;
						_tmp39_ = vala_collection_get_size ((ValaCollection*) _tmp38_);
						_tmp40_ = _tmp39_;
						_prereq_size = _tmp40_;
						_prereq_index = -1;
						while (TRUE) {
							gint _tmp41_;
							gint _tmp42_;
							gint _tmp43_;
							ValaDataType* prereq = NULL;
							ValaList* _tmp44_;
							gint _tmp45_;
							gpointer _tmp46_;
							gchar* type_name = NULL;
							ValaDataType* _tmp47_;
							ValaTypeSymbol* _tmp48_;
							ValaTypeSymbol* _tmp49_;
							gchar* _tmp50_;
							const gchar* _tmp51_;
							_tmp41_ = _prereq_index;
							_prereq_index = _tmp41_ + 1;
							_tmp42_ = _prereq_index;
							_tmp43_ = _prereq_size;
							if (!(_tmp42_ < _tmp43_)) {
								break;
							}
							_tmp44_ = _prereq_list;
							_tmp45_ = _prereq_index;
							_tmp46_ = vala_list_get (_tmp44_, _tmp45_);
							prereq = (ValaDataType*) _tmp46_;
							_tmp47_ = prereq;
							_tmp48_ = vala_data_type_get_data_type (_tmp47_);
							_tmp49_ = _tmp48_;
							_tmp50_ = vala_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp49_);
							type_name = _tmp50_;
							_tmp51_ = type_name;
							if (g_strcmp0 (_tmp51_, "") != 0) {
								result = type_name;
								_vala_code_node_unref0 (prereq);
								_vala_iterable_unref0 (_prereq_list);
								return result;
							}
							_g_free0 (type_name);
							_vala_code_node_unref0 (prereq);
						}
						_vala_iterable_unref0 (_prereq_list);
					}
					_tmp52_ = g_strdup ("POINTER");
					result = _tmp52_;
					return result;
				} else {
					ValaSymbol* _tmp53_;
					_tmp53_ = self->priv->sym;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp53_, VALA_TYPE_STRUCT)) {
						ValaStruct* st = NULL;
						ValaSymbol* _tmp54_;
						ValaStruct* _tmp55_;
						ValaStruct* base_st = NULL;
						ValaStruct* _tmp56_;
						ValaStruct* _tmp57_;
						ValaStruct* _tmp58_;
						ValaStruct* _tmp59_;
						ValaStruct* _tmp69_;
						gboolean _tmp70_;
						_tmp54_ = self->priv->sym;
						_tmp55_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp54_, VALA_TYPE_STRUCT, ValaStruct));
						st = _tmp55_;
						_tmp56_ = st;
						_tmp57_ = vala_struct_get_base_struct (_tmp56_);
						_tmp58_ = _tmp57_;
						_tmp59_ = _vala_code_node_ref0 (_tmp58_);
						base_st = _tmp59_;
						while (TRUE) {
							ValaStruct* _tmp60_;
							ValaStruct* _tmp61_;
							gboolean _tmp62_;
							_tmp60_ = base_st;
							if (!(_tmp60_ != NULL)) {
								break;
							}
							_tmp61_ = base_st;
							_tmp62_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp61_);
							if (_tmp62_) {
								ValaStruct* _tmp63_;
								gchar* _tmp64_;
								_tmp63_ = base_st;
								_tmp64_ = vala_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp63_);
								result = _tmp64_;
								_vala_code_node_unref0 (base_st);
								_vala_code_node_unref0 (st);
								return result;
							} else {
								ValaStruct* _tmp65_;
								ValaStruct* _tmp66_;
								ValaStruct* _tmp67_;
								ValaStruct* _tmp68_;
								_tmp65_ = base_st;
								_tmp66_ = vala_struct_get_base_struct (_tmp65_);
								_tmp67_ = _tmp66_;
								_tmp68_ = _vala_code_node_ref0 (_tmp67_);
								_vala_code_node_unref0 (base_st);
								base_st = _tmp68_;
							}
						}
						_tmp69_ = st;
						_tmp70_ = vala_struct_is_simple_type (_tmp69_);
						if (_tmp70_) {
							ValaStruct* _tmp71_;
							ValaSourceReference* _tmp72_;
							ValaSourceReference* _tmp73_;
							ValaStruct* _tmp74_;
							gchar* _tmp75_;
							gchar* _tmp76_;
							gchar* _tmp77_;
							gchar* _tmp78_;
							_tmp71_ = st;
							_tmp72_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp71_);
							_tmp73_ = _tmp72_;
							_tmp74_ = st;
							_tmp75_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp74_);
							_tmp76_ = _tmp75_;
							_tmp77_ = g_strdup_printf ("The type `%s` doesn't declare a marshaller type name", _tmp76_);
							_tmp78_ = _tmp77_;
							vala_report_error (_tmp73_, _tmp78_);
							_g_free0 (_tmp78_);
							_g_free0 (_tmp76_);
						} else {
							ValaStruct* _tmp79_;
							gboolean _tmp80_;
							_tmp79_ = st;
							_tmp80_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp79_);
							if (_tmp80_) {
								gchar* _tmp81_;
								_tmp81_ = g_strdup ("BOXED");
								result = _tmp81_;
								_vala_code_node_unref0 (base_st);
								_vala_code_node_unref0 (st);
								return result;
							} else {
								gchar* _tmp82_;
								_tmp82_ = g_strdup ("POINTER");
								result = _tmp82_;
								_vala_code_node_unref0 (base_st);
								_vala_code_node_unref0 (st);
								return result;
							}
						}
						_vala_code_node_unref0 (base_st);
						_vala_code_node_unref0 (st);
					} else {
						ValaSymbol* _tmp83_;
						_tmp83_ = self->priv->sym;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp83_, VALA_TYPE_PARAMETER)) {
							ValaParameter* param = NULL;
							ValaSymbol* _tmp84_;
							ValaParameter* _tmp85_;
							ValaParameter* _tmp86_;
							ValaParameterDirection _tmp87_;
							ValaParameterDirection _tmp88_;
							_tmp84_ = self->priv->sym;
							_tmp85_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp84_, VALA_TYPE_PARAMETER, ValaParameter));
							param = _tmp85_;
							_tmp86_ = param;
							_tmp87_ = vala_parameter_get_direction (_tmp86_);
							_tmp88_ = _tmp87_;
							if (_tmp88_ != VALA_PARAMETER_DIRECTION_IN) {
								gchar* _tmp89_;
								_tmp89_ = g_strdup ("POINTER");
								result = _tmp89_;
								_vala_code_node_unref0 (param);
								return result;
							} else {
								ValaParameter* _tmp90_;
								ValaDataType* _tmp91_;
								ValaDataType* _tmp92_;
								gchar* _tmp93_;
								_tmp90_ = param;
								_tmp91_ = vala_variable_get_variable_type ((ValaVariable*) _tmp90_);
								_tmp92_ = _tmp91_;
								_tmp93_ = vala_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp92_);
								result = _tmp93_;
								_vala_code_node_unref0 (param);
								return result;
							}
							_vala_code_node_unref0 (param);
						} else {
							gchar* _tmp94_;
							_tmp94_ = g_strdup ("POINTER");
							result = _tmp94_;
							return result;
						}
					}
				}
			}
		}
	} else {
		gboolean _tmp95_ = FALSE;
		ValaCodeNode* _tmp96_;
		_tmp96_ = self->priv->node;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp96_, VALA_TYPE_VALUE_TYPE)) {
			ValaCodeNode* _tmp97_;
			gboolean _tmp98_;
			gboolean _tmp99_;
			_tmp97_ = self->priv->node;
			_tmp98_ = vala_data_type_get_nullable ((ValaDataType*) G_TYPE_CHECK_INSTANCE_CAST (_tmp97_, VALA_TYPE_VALUE_TYPE, ValaValueType));
			_tmp99_ = _tmp98_;
			_tmp95_ = _tmp99_;
		} else {
			_tmp95_ = FALSE;
		}
		if (_tmp95_) {
			gchar* _tmp100_;
			_tmp100_ = g_strdup ("POINTER");
			result = _tmp100_;
			return result;
		} else {
			gboolean _tmp101_ = FALSE;
			ValaCodeNode* _tmp102_;
			_tmp102_ = self->priv->node;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp102_, VALA_TYPE_POINTER_TYPE)) {
				_tmp101_ = TRUE;
			} else {
				ValaCodeNode* _tmp103_;
				ValaTypeParameter* _tmp104_;
				ValaTypeParameter* _tmp105_;
				_tmp103_ = self->priv->node;
				_tmp104_ = vala_data_type_get_type_parameter (G_TYPE_CHECK_INSTANCE_CAST (_tmp103_, VALA_TYPE_DATA_TYPE, ValaDataType));
				_tmp105_ = _tmp104_;
				_tmp101_ = _tmp105_ != NULL;
			}
			if (_tmp101_) {
				gchar* _tmp106_;
				_tmp106_ = g_strdup ("POINTER");
				result = _tmp106_;
				return result;
			} else {
				ValaCodeNode* _tmp107_;
				_tmp107_ = self->priv->node;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp107_, VALA_TYPE_ERROR_TYPE)) {
					gchar* _tmp108_;
					_tmp108_ = g_strdup ("POINTER");
					result = _tmp108_;
					return result;
				} else {
					ValaCodeNode* _tmp109_;
					_tmp109_ = self->priv->node;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp109_, VALA_TYPE_ARRAY_TYPE)) {
						ValaCodeNode* _tmp110_;
						ValaDataType* _tmp111_;
						ValaDataType* _tmp112_;
						ValaTypeSymbol* _tmp113_;
						ValaTypeSymbol* _tmp114_;
						gchar* _tmp115_;
						gchar* _tmp116_;
						gboolean _tmp117_;
						_tmp110_ = self->priv->node;
						_tmp111_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp110_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
						_tmp112_ = _tmp111_;
						_tmp113_ = vala_data_type_get_data_type (_tmp112_);
						_tmp114_ = _tmp113_;
						_tmp115_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp114_);
						_tmp116_ = _tmp115_;
						_tmp117_ = g_strcmp0 (_tmp116_, "string") == 0;
						_g_free0 (_tmp116_);
						if (_tmp117_) {
							gchar* _tmp118_;
							_tmp118_ = g_strdup ("BOXED,INT");
							result = _tmp118_;
							return result;
						} else {
							gchar* ret = NULL;
							gchar* _tmp119_;
							_tmp119_ = g_strdup ("POINTER");
							ret = _tmp119_;
							{
								gint i = 0;
								i = 0;
								{
									gboolean _tmp120_ = FALSE;
									_tmp120_ = TRUE;
									while (TRUE) {
										gint _tmp122_;
										ValaCodeNode* _tmp123_;
										gint _tmp124_;
										gint _tmp125_;
										const gchar* _tmp126_;
										gchar* _tmp127_;
										if (!_tmp120_) {
											gint _tmp121_;
											_tmp121_ = i;
											i = _tmp121_ + 1;
										}
										_tmp120_ = FALSE;
										_tmp122_ = i;
										_tmp123_ = self->priv->node;
										_tmp124_ = vala_array_type_get_rank (G_TYPE_CHECK_INSTANCE_CAST (_tmp123_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
										_tmp125_ = _tmp124_;
										if (!(_tmp122_ < _tmp125_)) {
											break;
										}
										_tmp126_ = ret;
										_tmp127_ = g_strdup_printf ("%s,INT", _tmp126_);
										_g_free0 (ret);
										ret = _tmp127_;
									}
								}
							}
							result = ret;
							return result;
						}
					} else {
						ValaCodeNode* _tmp128_;
						_tmp128_ = self->priv->node;
						if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp128_, VALA_TYPE_VOID_TYPE)) {
							gchar* _tmp129_;
							_tmp129_ = g_strdup ("VOID");
							result = _tmp129_;
							return result;
						} else {
							ValaCodeNode* _tmp130_;
							ValaTypeSymbol* _tmp131_;
							ValaTypeSymbol* _tmp132_;
							gchar* _tmp133_;
							_tmp130_ = self->priv->node;
							_tmp131_ = vala_data_type_get_data_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp130_, VALA_TYPE_DATA_TYPE, ValaDataType));
							_tmp132_ = _tmp131_;
							_tmp133_ = vala_get_ccode_marshaller_type_name ((ValaCodeNode*) _tmp132_);
							result = _tmp133_;
							return result;
						}
					}
				}
			}
		}
	}
	_tmp134_ = g_strdup ("");
	result = _tmp134_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_get_value_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp82_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
		ValaClass* cl = NULL;
		ValaSymbol* _tmp1_;
		ValaClass* _tmp2_;
		ValaClass* _tmp3_;
		gboolean _tmp4_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
		cl = _tmp2_;
		_tmp3_ = cl;
		_tmp4_ = vala_class_is_fundamental (_tmp3_);
		if (_tmp4_) {
			ValaClass* _tmp5_;
			gchar* _tmp6_;
			_tmp5_ = cl;
			_tmp6_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp5_, "value_get_");
			result = _tmp6_;
			_vala_code_node_unref0 (cl);
			return result;
		} else {
			ValaClass* _tmp7_;
			ValaClass* _tmp8_;
			ValaClass* _tmp9_;
			_tmp7_ = cl;
			_tmp8_ = vala_class_get_base_class (_tmp7_);
			_tmp9_ = _tmp8_;
			if (_tmp9_ != NULL) {
				ValaClass* _tmp10_;
				ValaClass* _tmp11_;
				ValaClass* _tmp12_;
				gchar* _tmp13_;
				_tmp10_ = cl;
				_tmp11_ = vala_class_get_base_class (_tmp10_);
				_tmp12_ = _tmp11_;
				_tmp13_ = vala_get_ccode_get_value_function ((ValaCodeNode*) _tmp12_);
				result = _tmp13_;
				_vala_code_node_unref0 (cl);
				return result;
			} else {
				const gchar* _tmp14_;
				const gchar* _tmp15_;
				_tmp14_ = vala_ccode_attribute_get_type_id (self);
				_tmp15_ = _tmp14_;
				if (g_strcmp0 (_tmp15_, "G_TYPE_POINTER") == 0) {
					gchar* _tmp16_;
					_tmp16_ = g_strdup ("g_value_get_pointer");
					result = _tmp16_;
					_vala_code_node_unref0 (cl);
					return result;
				} else {
					gchar* _tmp17_;
					_tmp17_ = g_strdup ("g_value_get_boxed");
					result = _tmp17_;
					_vala_code_node_unref0 (cl);
					return result;
				}
			}
		}
		_vala_code_node_unref0 (cl);
	} else {
		ValaSymbol* _tmp18_;
		_tmp18_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, VALA_TYPE_ENUM)) {
			ValaEnum* en = NULL;
			ValaSymbol* _tmp19_;
			ValaEnum* _tmp20_;
			ValaEnum* _tmp21_;
			gboolean _tmp22_;
			_tmp19_ = self->priv->sym;
			_tmp20_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, VALA_TYPE_ENUM, ValaEnum));
			en = _tmp20_;
			_tmp21_ = en;
			_tmp22_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp21_);
			if (_tmp22_) {
				ValaEnum* _tmp23_;
				gboolean _tmp24_;
				gboolean _tmp25_;
				_tmp23_ = en;
				_tmp24_ = vala_enum_get_is_flags (_tmp23_);
				_tmp25_ = _tmp24_;
				if (_tmp25_) {
					gchar* _tmp26_;
					_tmp26_ = g_strdup ("g_value_get_flags");
					result = _tmp26_;
					_vala_code_node_unref0 (en);
					return result;
				} else {
					gchar* _tmp27_;
					_tmp27_ = g_strdup ("g_value_get_enum");
					result = _tmp27_;
					_vala_code_node_unref0 (en);
					return result;
				}
			} else {
				ValaEnum* _tmp28_;
				gboolean _tmp29_;
				gboolean _tmp30_;
				_tmp28_ = en;
				_tmp29_ = vala_enum_get_is_flags (_tmp28_);
				_tmp30_ = _tmp29_;
				if (_tmp30_) {
					gchar* _tmp31_;
					_tmp31_ = g_strdup ("g_value_get_uint");
					result = _tmp31_;
					_vala_code_node_unref0 (en);
					return result;
				} else {
					gchar* _tmp32_;
					_tmp32_ = g_strdup ("g_value_get_int");
					result = _tmp32_;
					_vala_code_node_unref0 (en);
					return result;
				}
			}
			_vala_code_node_unref0 (en);
		} else {
			ValaSymbol* _tmp33_;
			_tmp33_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_INTERFACE)) {
				gchar* _tmp50_;
				{
					ValaList* _prereq_list = NULL;
					ValaSymbol* _tmp34_;
					ValaList* _tmp35_;
					gint _prereq_size = 0;
					ValaList* _tmp36_;
					gint _tmp37_;
					gint _tmp38_;
					gint _prereq_index = 0;
					_tmp34_ = self->priv->sym;
					_tmp35_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, VALA_TYPE_INTERFACE, ValaInterface));
					_prereq_list = _tmp35_;
					_tmp36_ = _prereq_list;
					_tmp37_ = vala_collection_get_size ((ValaCollection*) _tmp36_);
					_tmp38_ = _tmp37_;
					_prereq_size = _tmp38_;
					_prereq_index = -1;
					while (TRUE) {
						gint _tmp39_;
						gint _tmp40_;
						gint _tmp41_;
						ValaDataType* prereq = NULL;
						ValaList* _tmp42_;
						gint _tmp43_;
						gpointer _tmp44_;
						gchar* type_name = NULL;
						ValaDataType* _tmp45_;
						ValaTypeSymbol* _tmp46_;
						ValaTypeSymbol* _tmp47_;
						gchar* _tmp48_;
						const gchar* _tmp49_;
						_tmp39_ = _prereq_index;
						_prereq_index = _tmp39_ + 1;
						_tmp40_ = _prereq_index;
						_tmp41_ = _prereq_size;
						if (!(_tmp40_ < _tmp41_)) {
							break;
						}
						_tmp42_ = _prereq_list;
						_tmp43_ = _prereq_index;
						_tmp44_ = vala_list_get (_tmp42_, _tmp43_);
						prereq = (ValaDataType*) _tmp44_;
						_tmp45_ = prereq;
						_tmp46_ = vala_data_type_get_data_type (_tmp45_);
						_tmp47_ = _tmp46_;
						_tmp48_ = vala_get_ccode_get_value_function ((ValaCodeNode*) _tmp47_);
						type_name = _tmp48_;
						_tmp49_ = type_name;
						if (g_strcmp0 (_tmp49_, "") != 0) {
							result = type_name;
							_vala_code_node_unref0 (prereq);
							_vala_iterable_unref0 (_prereq_list);
							return result;
						}
						_g_free0 (type_name);
						_vala_code_node_unref0 (prereq);
					}
					_vala_iterable_unref0 (_prereq_list);
				}
				_tmp50_ = g_strdup ("g_value_get_pointer");
				result = _tmp50_;
				return result;
			} else {
				ValaSymbol* _tmp51_;
				_tmp51_ = self->priv->sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp51_, VALA_TYPE_STRUCT)) {
					ValaStruct* st = NULL;
					ValaSymbol* _tmp52_;
					ValaStruct* _tmp53_;
					ValaStruct* base_st = NULL;
					ValaStruct* _tmp54_;
					ValaStruct* _tmp55_;
					ValaStruct* _tmp56_;
					ValaStruct* _tmp57_;
					ValaStruct* _tmp67_;
					gboolean _tmp68_;
					_tmp52_ = self->priv->sym;
					_tmp53_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, VALA_TYPE_STRUCT, ValaStruct));
					st = _tmp53_;
					_tmp54_ = st;
					_tmp55_ = vala_struct_get_base_struct (_tmp54_);
					_tmp56_ = _tmp55_;
					_tmp57_ = _vala_code_node_ref0 (_tmp56_);
					base_st = _tmp57_;
					while (TRUE) {
						ValaStruct* _tmp58_;
						ValaStruct* _tmp59_;
						gboolean _tmp60_;
						_tmp58_ = base_st;
						if (!(_tmp58_ != NULL)) {
							break;
						}
						_tmp59_ = base_st;
						_tmp60_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp59_);
						if (_tmp60_) {
							ValaStruct* _tmp61_;
							gchar* _tmp62_;
							_tmp61_ = base_st;
							_tmp62_ = vala_get_ccode_get_value_function ((ValaCodeNode*) _tmp61_);
							result = _tmp62_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						} else {
							ValaStruct* _tmp63_;
							ValaStruct* _tmp64_;
							ValaStruct* _tmp65_;
							ValaStruct* _tmp66_;
							_tmp63_ = base_st;
							_tmp64_ = vala_struct_get_base_struct (_tmp63_);
							_tmp65_ = _tmp64_;
							_tmp66_ = _vala_code_node_ref0 (_tmp65_);
							_vala_code_node_unref0 (base_st);
							base_st = _tmp66_;
						}
					}
					_tmp67_ = st;
					_tmp68_ = vala_struct_is_simple_type (_tmp67_);
					if (_tmp68_) {
						ValaStruct* _tmp69_;
						ValaSourceReference* _tmp70_;
						ValaSourceReference* _tmp71_;
						ValaStruct* _tmp72_;
						gchar* _tmp73_;
						gchar* _tmp74_;
						gchar* _tmp75_;
						gchar* _tmp76_;
						_tmp69_ = st;
						_tmp70_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp69_);
						_tmp71_ = _tmp70_;
						_tmp72_ = st;
						_tmp73_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp72_);
						_tmp74_ = _tmp73_;
						_tmp75_ = g_strdup_printf ("The type `%s` doesn't declare a GValue get function", _tmp74_);
						_tmp76_ = _tmp75_;
						vala_report_error (_tmp71_, _tmp76_);
						_g_free0 (_tmp76_);
						_g_free0 (_tmp74_);
					} else {
						ValaStruct* _tmp77_;
						gboolean _tmp78_;
						_tmp77_ = st;
						_tmp78_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp77_);
						if (_tmp78_) {
							gchar* _tmp79_;
							_tmp79_ = g_strdup ("g_value_get_boxed");
							result = _tmp79_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						} else {
							gchar* _tmp80_;
							_tmp80_ = g_strdup ("g_value_get_pointer");
							result = _tmp80_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						}
					}
					_vala_code_node_unref0 (base_st);
					_vala_code_node_unref0 (st);
				} else {
					gchar* _tmp81_;
					_tmp81_ = g_strdup ("g_value_get_pointer");
					result = _tmp81_;
					return result;
				}
			}
		}
	}
	_tmp82_ = g_strdup ("");
	result = _tmp82_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_set_value_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp82_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
		ValaClass* cl = NULL;
		ValaSymbol* _tmp1_;
		ValaClass* _tmp2_;
		ValaClass* _tmp3_;
		gboolean _tmp4_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
		cl = _tmp2_;
		_tmp3_ = cl;
		_tmp4_ = vala_class_is_fundamental (_tmp3_);
		if (_tmp4_) {
			ValaClass* _tmp5_;
			gchar* _tmp6_;
			_tmp5_ = cl;
			_tmp6_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp5_, "value_set_");
			result = _tmp6_;
			_vala_code_node_unref0 (cl);
			return result;
		} else {
			ValaClass* _tmp7_;
			ValaClass* _tmp8_;
			ValaClass* _tmp9_;
			_tmp7_ = cl;
			_tmp8_ = vala_class_get_base_class (_tmp7_);
			_tmp9_ = _tmp8_;
			if (_tmp9_ != NULL) {
				ValaClass* _tmp10_;
				ValaClass* _tmp11_;
				ValaClass* _tmp12_;
				gchar* _tmp13_;
				_tmp10_ = cl;
				_tmp11_ = vala_class_get_base_class (_tmp10_);
				_tmp12_ = _tmp11_;
				_tmp13_ = vala_get_ccode_set_value_function ((ValaCodeNode*) _tmp12_);
				result = _tmp13_;
				_vala_code_node_unref0 (cl);
				return result;
			} else {
				const gchar* _tmp14_;
				const gchar* _tmp15_;
				_tmp14_ = vala_ccode_attribute_get_type_id (self);
				_tmp15_ = _tmp14_;
				if (g_strcmp0 (_tmp15_, "G_TYPE_POINTER") == 0) {
					gchar* _tmp16_;
					_tmp16_ = g_strdup ("g_value_set_pointer");
					result = _tmp16_;
					_vala_code_node_unref0 (cl);
					return result;
				} else {
					gchar* _tmp17_;
					_tmp17_ = g_strdup ("g_value_set_boxed");
					result = _tmp17_;
					_vala_code_node_unref0 (cl);
					return result;
				}
			}
		}
		_vala_code_node_unref0 (cl);
	} else {
		ValaSymbol* _tmp18_;
		_tmp18_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, VALA_TYPE_ENUM)) {
			ValaEnum* en = NULL;
			ValaSymbol* _tmp19_;
			ValaEnum* _tmp20_;
			ValaEnum* _tmp21_;
			gboolean _tmp22_;
			_tmp19_ = self->priv->sym;
			_tmp20_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, VALA_TYPE_ENUM, ValaEnum));
			en = _tmp20_;
			_tmp21_ = en;
			_tmp22_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp21_);
			if (_tmp22_) {
				ValaEnum* _tmp23_;
				gboolean _tmp24_;
				gboolean _tmp25_;
				_tmp23_ = en;
				_tmp24_ = vala_enum_get_is_flags (_tmp23_);
				_tmp25_ = _tmp24_;
				if (_tmp25_) {
					gchar* _tmp26_;
					_tmp26_ = g_strdup ("g_value_set_flags");
					result = _tmp26_;
					_vala_code_node_unref0 (en);
					return result;
				} else {
					gchar* _tmp27_;
					_tmp27_ = g_strdup ("g_value_set_enum");
					result = _tmp27_;
					_vala_code_node_unref0 (en);
					return result;
				}
			} else {
				ValaEnum* _tmp28_;
				gboolean _tmp29_;
				gboolean _tmp30_;
				_tmp28_ = en;
				_tmp29_ = vala_enum_get_is_flags (_tmp28_);
				_tmp30_ = _tmp29_;
				if (_tmp30_) {
					gchar* _tmp31_;
					_tmp31_ = g_strdup ("g_value_set_uint");
					result = _tmp31_;
					_vala_code_node_unref0 (en);
					return result;
				} else {
					gchar* _tmp32_;
					_tmp32_ = g_strdup ("g_value_set_int");
					result = _tmp32_;
					_vala_code_node_unref0 (en);
					return result;
				}
			}
			_vala_code_node_unref0 (en);
		} else {
			ValaSymbol* _tmp33_;
			_tmp33_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_INTERFACE)) {
				gchar* _tmp50_;
				{
					ValaList* _prereq_list = NULL;
					ValaSymbol* _tmp34_;
					ValaList* _tmp35_;
					gint _prereq_size = 0;
					ValaList* _tmp36_;
					gint _tmp37_;
					gint _tmp38_;
					gint _prereq_index = 0;
					_tmp34_ = self->priv->sym;
					_tmp35_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, VALA_TYPE_INTERFACE, ValaInterface));
					_prereq_list = _tmp35_;
					_tmp36_ = _prereq_list;
					_tmp37_ = vala_collection_get_size ((ValaCollection*) _tmp36_);
					_tmp38_ = _tmp37_;
					_prereq_size = _tmp38_;
					_prereq_index = -1;
					while (TRUE) {
						gint _tmp39_;
						gint _tmp40_;
						gint _tmp41_;
						ValaDataType* prereq = NULL;
						ValaList* _tmp42_;
						gint _tmp43_;
						gpointer _tmp44_;
						gchar* type_name = NULL;
						ValaDataType* _tmp45_;
						ValaTypeSymbol* _tmp46_;
						ValaTypeSymbol* _tmp47_;
						gchar* _tmp48_;
						const gchar* _tmp49_;
						_tmp39_ = _prereq_index;
						_prereq_index = _tmp39_ + 1;
						_tmp40_ = _prereq_index;
						_tmp41_ = _prereq_size;
						if (!(_tmp40_ < _tmp41_)) {
							break;
						}
						_tmp42_ = _prereq_list;
						_tmp43_ = _prereq_index;
						_tmp44_ = vala_list_get (_tmp42_, _tmp43_);
						prereq = (ValaDataType*) _tmp44_;
						_tmp45_ = prereq;
						_tmp46_ = vala_data_type_get_data_type (_tmp45_);
						_tmp47_ = _tmp46_;
						_tmp48_ = vala_get_ccode_set_value_function ((ValaCodeNode*) _tmp47_);
						type_name = _tmp48_;
						_tmp49_ = type_name;
						if (g_strcmp0 (_tmp49_, "") != 0) {
							result = type_name;
							_vala_code_node_unref0 (prereq);
							_vala_iterable_unref0 (_prereq_list);
							return result;
						}
						_g_free0 (type_name);
						_vala_code_node_unref0 (prereq);
					}
					_vala_iterable_unref0 (_prereq_list);
				}
				_tmp50_ = g_strdup ("g_value_set_pointer");
				result = _tmp50_;
				return result;
			} else {
				ValaSymbol* _tmp51_;
				_tmp51_ = self->priv->sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp51_, VALA_TYPE_STRUCT)) {
					ValaStruct* st = NULL;
					ValaSymbol* _tmp52_;
					ValaStruct* _tmp53_;
					ValaStruct* base_st = NULL;
					ValaStruct* _tmp54_;
					ValaStruct* _tmp55_;
					ValaStruct* _tmp56_;
					ValaStruct* _tmp57_;
					ValaStruct* _tmp67_;
					gboolean _tmp68_;
					_tmp52_ = self->priv->sym;
					_tmp53_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, VALA_TYPE_STRUCT, ValaStruct));
					st = _tmp53_;
					_tmp54_ = st;
					_tmp55_ = vala_struct_get_base_struct (_tmp54_);
					_tmp56_ = _tmp55_;
					_tmp57_ = _vala_code_node_ref0 (_tmp56_);
					base_st = _tmp57_;
					while (TRUE) {
						ValaStruct* _tmp58_;
						ValaStruct* _tmp59_;
						gboolean _tmp60_;
						_tmp58_ = base_st;
						if (!(_tmp58_ != NULL)) {
							break;
						}
						_tmp59_ = base_st;
						_tmp60_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp59_);
						if (_tmp60_) {
							ValaStruct* _tmp61_;
							gchar* _tmp62_;
							_tmp61_ = base_st;
							_tmp62_ = vala_get_ccode_set_value_function ((ValaCodeNode*) _tmp61_);
							result = _tmp62_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						} else {
							ValaStruct* _tmp63_;
							ValaStruct* _tmp64_;
							ValaStruct* _tmp65_;
							ValaStruct* _tmp66_;
							_tmp63_ = base_st;
							_tmp64_ = vala_struct_get_base_struct (_tmp63_);
							_tmp65_ = _tmp64_;
							_tmp66_ = _vala_code_node_ref0 (_tmp65_);
							_vala_code_node_unref0 (base_st);
							base_st = _tmp66_;
						}
					}
					_tmp67_ = st;
					_tmp68_ = vala_struct_is_simple_type (_tmp67_);
					if (_tmp68_) {
						ValaStruct* _tmp69_;
						ValaSourceReference* _tmp70_;
						ValaSourceReference* _tmp71_;
						ValaStruct* _tmp72_;
						gchar* _tmp73_;
						gchar* _tmp74_;
						gchar* _tmp75_;
						gchar* _tmp76_;
						_tmp69_ = st;
						_tmp70_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp69_);
						_tmp71_ = _tmp70_;
						_tmp72_ = st;
						_tmp73_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp72_);
						_tmp74_ = _tmp73_;
						_tmp75_ = g_strdup_printf ("The type `%s` doesn't declare a GValue set function", _tmp74_);
						_tmp76_ = _tmp75_;
						vala_report_error (_tmp71_, _tmp76_);
						_g_free0 (_tmp76_);
						_g_free0 (_tmp74_);
					} else {
						ValaStruct* _tmp77_;
						gboolean _tmp78_;
						_tmp77_ = st;
						_tmp78_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp77_);
						if (_tmp78_) {
							gchar* _tmp79_;
							_tmp79_ = g_strdup ("g_value_set_boxed");
							result = _tmp79_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						} else {
							gchar* _tmp80_;
							_tmp80_ = g_strdup ("g_value_set_pointer");
							result = _tmp80_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						}
					}
					_vala_code_node_unref0 (base_st);
					_vala_code_node_unref0 (st);
				} else {
					gchar* _tmp81_;
					_tmp81_ = g_strdup ("g_value_set_pointer");
					result = _tmp81_;
					return result;
				}
			}
		}
	}
	_tmp82_ = g_strdup ("");
	result = _tmp82_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_take_value_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp82_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CLASS)) {
		ValaClass* cl = NULL;
		ValaSymbol* _tmp1_;
		ValaClass* _tmp2_;
		ValaClass* _tmp3_;
		gboolean _tmp4_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CLASS, ValaClass));
		cl = _tmp2_;
		_tmp3_ = cl;
		_tmp4_ = vala_class_is_fundamental (_tmp3_);
		if (_tmp4_) {
			ValaClass* _tmp5_;
			gchar* _tmp6_;
			_tmp5_ = cl;
			_tmp6_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp5_, "value_take_");
			result = _tmp6_;
			_vala_code_node_unref0 (cl);
			return result;
		} else {
			ValaClass* _tmp7_;
			ValaClass* _tmp8_;
			ValaClass* _tmp9_;
			_tmp7_ = cl;
			_tmp8_ = vala_class_get_base_class (_tmp7_);
			_tmp9_ = _tmp8_;
			if (_tmp9_ != NULL) {
				ValaClass* _tmp10_;
				ValaClass* _tmp11_;
				ValaClass* _tmp12_;
				gchar* _tmp13_;
				_tmp10_ = cl;
				_tmp11_ = vala_class_get_base_class (_tmp10_);
				_tmp12_ = _tmp11_;
				_tmp13_ = vala_get_ccode_take_value_function ((ValaCodeNode*) _tmp12_);
				result = _tmp13_;
				_vala_code_node_unref0 (cl);
				return result;
			} else {
				const gchar* _tmp14_;
				const gchar* _tmp15_;
				_tmp14_ = vala_ccode_attribute_get_type_id (self);
				_tmp15_ = _tmp14_;
				if (g_strcmp0 (_tmp15_, "G_TYPE_POINTER") == 0) {
					gchar* _tmp16_;
					_tmp16_ = g_strdup ("g_value_set_pointer");
					result = _tmp16_;
					_vala_code_node_unref0 (cl);
					return result;
				} else {
					gchar* _tmp17_;
					_tmp17_ = g_strdup ("g_value_take_boxed");
					result = _tmp17_;
					_vala_code_node_unref0 (cl);
					return result;
				}
			}
		}
		_vala_code_node_unref0 (cl);
	} else {
		ValaSymbol* _tmp18_;
		_tmp18_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp18_, VALA_TYPE_ENUM)) {
			ValaEnum* en = NULL;
			ValaSymbol* _tmp19_;
			ValaEnum* _tmp20_;
			ValaEnum* _tmp21_;
			gboolean _tmp22_;
			_tmp19_ = self->priv->sym;
			_tmp20_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, VALA_TYPE_ENUM, ValaEnum));
			en = _tmp20_;
			_tmp21_ = en;
			_tmp22_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp21_);
			if (_tmp22_) {
				ValaEnum* _tmp23_;
				gboolean _tmp24_;
				gboolean _tmp25_;
				_tmp23_ = en;
				_tmp24_ = vala_enum_get_is_flags (_tmp23_);
				_tmp25_ = _tmp24_;
				if (_tmp25_) {
					gchar* _tmp26_;
					_tmp26_ = g_strdup ("g_value_take_flags");
					result = _tmp26_;
					_vala_code_node_unref0 (en);
					return result;
				} else {
					gchar* _tmp27_;
					_tmp27_ = g_strdup ("g_value_take_enum");
					result = _tmp27_;
					_vala_code_node_unref0 (en);
					return result;
				}
			} else {
				ValaEnum* _tmp28_;
				gboolean _tmp29_;
				gboolean _tmp30_;
				_tmp28_ = en;
				_tmp29_ = vala_enum_get_is_flags (_tmp28_);
				_tmp30_ = _tmp29_;
				if (_tmp30_) {
					gchar* _tmp31_;
					_tmp31_ = g_strdup ("g_value_take_uint");
					result = _tmp31_;
					_vala_code_node_unref0 (en);
					return result;
				} else {
					gchar* _tmp32_;
					_tmp32_ = g_strdup ("g_value_take_int");
					result = _tmp32_;
					_vala_code_node_unref0 (en);
					return result;
				}
			}
			_vala_code_node_unref0 (en);
		} else {
			ValaSymbol* _tmp33_;
			_tmp33_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp33_, VALA_TYPE_INTERFACE)) {
				gchar* _tmp50_;
				{
					ValaList* _prereq_list = NULL;
					ValaSymbol* _tmp34_;
					ValaList* _tmp35_;
					gint _prereq_size = 0;
					ValaList* _tmp36_;
					gint _tmp37_;
					gint _tmp38_;
					gint _prereq_index = 0;
					_tmp34_ = self->priv->sym;
					_tmp35_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, VALA_TYPE_INTERFACE, ValaInterface));
					_prereq_list = _tmp35_;
					_tmp36_ = _prereq_list;
					_tmp37_ = vala_collection_get_size ((ValaCollection*) _tmp36_);
					_tmp38_ = _tmp37_;
					_prereq_size = _tmp38_;
					_prereq_index = -1;
					while (TRUE) {
						gint _tmp39_;
						gint _tmp40_;
						gint _tmp41_;
						ValaDataType* prereq = NULL;
						ValaList* _tmp42_;
						gint _tmp43_;
						gpointer _tmp44_;
						gchar* func = NULL;
						ValaDataType* _tmp45_;
						ValaTypeSymbol* _tmp46_;
						ValaTypeSymbol* _tmp47_;
						gchar* _tmp48_;
						const gchar* _tmp49_;
						_tmp39_ = _prereq_index;
						_prereq_index = _tmp39_ + 1;
						_tmp40_ = _prereq_index;
						_tmp41_ = _prereq_size;
						if (!(_tmp40_ < _tmp41_)) {
							break;
						}
						_tmp42_ = _prereq_list;
						_tmp43_ = _prereq_index;
						_tmp44_ = vala_list_get (_tmp42_, _tmp43_);
						prereq = (ValaDataType*) _tmp44_;
						_tmp45_ = prereq;
						_tmp46_ = vala_data_type_get_data_type (_tmp45_);
						_tmp47_ = _tmp46_;
						_tmp48_ = vala_get_ccode_take_value_function ((ValaCodeNode*) _tmp47_);
						func = _tmp48_;
						_tmp49_ = func;
						if (g_strcmp0 (_tmp49_, "") != 0) {
							result = func;
							_vala_code_node_unref0 (prereq);
							_vala_iterable_unref0 (_prereq_list);
							return result;
						}
						_g_free0 (func);
						_vala_code_node_unref0 (prereq);
					}
					_vala_iterable_unref0 (_prereq_list);
				}
				_tmp50_ = g_strdup ("g_value_set_pointer");
				result = _tmp50_;
				return result;
			} else {
				ValaSymbol* _tmp51_;
				_tmp51_ = self->priv->sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp51_, VALA_TYPE_STRUCT)) {
					ValaStruct* st = NULL;
					ValaSymbol* _tmp52_;
					ValaStruct* _tmp53_;
					ValaStruct* base_st = NULL;
					ValaStruct* _tmp54_;
					ValaStruct* _tmp55_;
					ValaStruct* _tmp56_;
					ValaStruct* _tmp57_;
					ValaStruct* _tmp67_;
					gboolean _tmp68_;
					_tmp52_ = self->priv->sym;
					_tmp53_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, VALA_TYPE_STRUCT, ValaStruct));
					st = _tmp53_;
					_tmp54_ = st;
					_tmp55_ = vala_struct_get_base_struct (_tmp54_);
					_tmp56_ = _tmp55_;
					_tmp57_ = _vala_code_node_ref0 (_tmp56_);
					base_st = _tmp57_;
					while (TRUE) {
						ValaStruct* _tmp58_;
						ValaStruct* _tmp59_;
						gboolean _tmp60_;
						_tmp58_ = base_st;
						if (!(_tmp58_ != NULL)) {
							break;
						}
						_tmp59_ = base_st;
						_tmp60_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp59_);
						if (_tmp60_) {
							ValaStruct* _tmp61_;
							gchar* _tmp62_;
							_tmp61_ = base_st;
							_tmp62_ = vala_get_ccode_take_value_function ((ValaCodeNode*) _tmp61_);
							result = _tmp62_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						} else {
							ValaStruct* _tmp63_;
							ValaStruct* _tmp64_;
							ValaStruct* _tmp65_;
							ValaStruct* _tmp66_;
							_tmp63_ = base_st;
							_tmp64_ = vala_struct_get_base_struct (_tmp63_);
							_tmp65_ = _tmp64_;
							_tmp66_ = _vala_code_node_ref0 (_tmp65_);
							_vala_code_node_unref0 (base_st);
							base_st = _tmp66_;
						}
					}
					_tmp67_ = st;
					_tmp68_ = vala_struct_is_simple_type (_tmp67_);
					if (_tmp68_) {
						ValaStruct* _tmp69_;
						ValaSourceReference* _tmp70_;
						ValaSourceReference* _tmp71_;
						ValaStruct* _tmp72_;
						gchar* _tmp73_;
						gchar* _tmp74_;
						gchar* _tmp75_;
						gchar* _tmp76_;
						_tmp69_ = st;
						_tmp70_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp69_);
						_tmp71_ = _tmp70_;
						_tmp72_ = st;
						_tmp73_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp72_);
						_tmp74_ = _tmp73_;
						_tmp75_ = g_strdup_printf ("The type `%s` doesn't declare a GValue take function", _tmp74_);
						_tmp76_ = _tmp75_;
						vala_report_error (_tmp71_, _tmp76_);
						_g_free0 (_tmp76_);
						_g_free0 (_tmp74_);
					} else {
						ValaStruct* _tmp77_;
						gboolean _tmp78_;
						_tmp77_ = st;
						_tmp78_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp77_);
						if (_tmp78_) {
							gchar* _tmp79_;
							_tmp79_ = g_strdup ("g_value_take_boxed");
							result = _tmp79_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						} else {
							gchar* _tmp80_;
							_tmp80_ = g_strdup ("g_value_set_pointer");
							result = _tmp80_;
							_vala_code_node_unref0 (base_st);
							_vala_code_node_unref0 (st);
							return result;
						}
					}
					_vala_code_node_unref0 (base_st);
					_vala_code_node_unref0 (st);
				} else {
					gchar* _tmp81_;
					_tmp81_ = g_strdup ("g_value_set_pointer");
					result = _tmp81_;
					return result;
				}
			}
		}
	}
	_tmp82_ = g_strdup ("");
	result = _tmp82_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_param_spec_function (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaCodeNode* _tmp0_;
	gchar* _tmp104_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->node;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_SYMBOL)) {
		ValaSymbol* _tmp1_;
		_tmp1_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_CLASS)) {
			ValaClass* cl = NULL;
			ValaSymbol* _tmp2_;
			ValaClass* _tmp3_;
			ValaClass* _tmp4_;
			gboolean _tmp5_;
			_tmp2_ = self->priv->sym;
			_tmp3_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp2_, VALA_TYPE_CLASS, ValaClass));
			cl = _tmp3_;
			_tmp4_ = cl;
			_tmp5_ = vala_class_is_fundamental (_tmp4_);
			if (_tmp5_) {
				ValaClass* _tmp6_;
				gchar* _tmp7_;
				_tmp6_ = cl;
				_tmp7_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp6_, "param_spec_");
				result = _tmp7_;
				_vala_code_node_unref0 (cl);
				return result;
			} else {
				ValaClass* _tmp8_;
				ValaClass* _tmp9_;
				ValaClass* _tmp10_;
				_tmp8_ = cl;
				_tmp9_ = vala_class_get_base_class (_tmp8_);
				_tmp10_ = _tmp9_;
				if (_tmp10_ != NULL) {
					ValaClass* _tmp11_;
					ValaClass* _tmp12_;
					ValaClass* _tmp13_;
					gchar* _tmp14_;
					_tmp11_ = cl;
					_tmp12_ = vala_class_get_base_class (_tmp11_);
					_tmp13_ = _tmp12_;
					_tmp14_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) _tmp13_);
					result = _tmp14_;
					_vala_code_node_unref0 (cl);
					return result;
				} else {
					const gchar* _tmp15_;
					const gchar* _tmp16_;
					_tmp15_ = vala_ccode_attribute_get_type_id (self);
					_tmp16_ = _tmp15_;
					if (g_strcmp0 (_tmp16_, "G_TYPE_POINTER") == 0) {
						gchar* _tmp17_;
						_tmp17_ = g_strdup ("g_param_spec_pointer");
						result = _tmp17_;
						_vala_code_node_unref0 (cl);
						return result;
					} else {
						gchar* _tmp18_;
						_tmp18_ = g_strdup ("g_param_spec_boxed");
						result = _tmp18_;
						_vala_code_node_unref0 (cl);
						return result;
					}
				}
			}
			_vala_code_node_unref0 (cl);
		} else {
			ValaSymbol* _tmp19_;
			_tmp19_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp19_, VALA_TYPE_INTERFACE)) {
				gchar* _tmp36_;
				{
					ValaList* _prereq_list = NULL;
					ValaSymbol* _tmp20_;
					ValaList* _tmp21_;
					gint _prereq_size = 0;
					ValaList* _tmp22_;
					gint _tmp23_;
					gint _tmp24_;
					gint _prereq_index = 0;
					_tmp20_ = self->priv->sym;
					_tmp21_ = vala_interface_get_prerequisites (G_TYPE_CHECK_INSTANCE_CAST (_tmp20_, VALA_TYPE_INTERFACE, ValaInterface));
					_prereq_list = _tmp21_;
					_tmp22_ = _prereq_list;
					_tmp23_ = vala_collection_get_size ((ValaCollection*) _tmp22_);
					_tmp24_ = _tmp23_;
					_prereq_size = _tmp24_;
					_prereq_index = -1;
					while (TRUE) {
						gint _tmp25_;
						gint _tmp26_;
						gint _tmp27_;
						ValaDataType* prereq = NULL;
						ValaList* _tmp28_;
						gint _tmp29_;
						gpointer _tmp30_;
						gchar* func = NULL;
						ValaDataType* _tmp31_;
						ValaTypeSymbol* _tmp32_;
						ValaTypeSymbol* _tmp33_;
						gchar* _tmp34_;
						const gchar* _tmp35_;
						_tmp25_ = _prereq_index;
						_prereq_index = _tmp25_ + 1;
						_tmp26_ = _prereq_index;
						_tmp27_ = _prereq_size;
						if (!(_tmp26_ < _tmp27_)) {
							break;
						}
						_tmp28_ = _prereq_list;
						_tmp29_ = _prereq_index;
						_tmp30_ = vala_list_get (_tmp28_, _tmp29_);
						prereq = (ValaDataType*) _tmp30_;
						_tmp31_ = prereq;
						_tmp32_ = vala_data_type_get_data_type (_tmp31_);
						_tmp33_ = _tmp32_;
						_tmp34_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) _tmp33_);
						func = _tmp34_;
						_tmp35_ = func;
						if (g_strcmp0 (_tmp35_, "") != 0) {
							result = func;
							_vala_code_node_unref0 (prereq);
							_vala_iterable_unref0 (_prereq_list);
							return result;
						}
						_g_free0 (func);
						_vala_code_node_unref0 (prereq);
					}
					_vala_iterable_unref0 (_prereq_list);
				}
				_tmp36_ = g_strdup ("g_param_spec_pointer");
				result = _tmp36_;
				return result;
			} else {
				ValaSymbol* _tmp37_;
				_tmp37_ = self->priv->sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp37_, VALA_TYPE_ENUM)) {
					ValaEnum* e = NULL;
					ValaSymbol* _tmp38_;
					ValaEnum* _tmp39_;
					ValaEnum* _tmp40_;
					gboolean _tmp41_;
					_tmp38_ = self->priv->sym;
					_tmp39_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp38_, VALA_TYPE_ENUM) ? ((ValaEnum*) _tmp38_) : NULL);
					e = _tmp39_;
					_tmp40_ = e;
					_tmp41_ = vala_get_ccode_has_type_id ((ValaTypeSymbol*) _tmp40_);
					if (_tmp41_) {
						ValaEnum* _tmp42_;
						gboolean _tmp43_;
						gboolean _tmp44_;
						_tmp42_ = e;
						_tmp43_ = vala_enum_get_is_flags (_tmp42_);
						_tmp44_ = _tmp43_;
						if (_tmp44_) {
							gchar* _tmp45_;
							_tmp45_ = g_strdup ("g_param_spec_flags");
							result = _tmp45_;
							_vala_code_node_unref0 (e);
							return result;
						} else {
							gchar* _tmp46_;
							_tmp46_ = g_strdup ("g_param_spec_enum");
							result = _tmp46_;
							_vala_code_node_unref0 (e);
							return result;
						}
					} else {
						ValaEnum* _tmp47_;
						gboolean _tmp48_;
						gboolean _tmp49_;
						_tmp47_ = e;
						_tmp48_ = vala_enum_get_is_flags (_tmp47_);
						_tmp49_ = _tmp48_;
						if (_tmp49_) {
							gchar* _tmp50_;
							_tmp50_ = g_strdup ("g_param_spec_uint");
							result = _tmp50_;
							_vala_code_node_unref0 (e);
							return result;
						} else {
							gchar* _tmp51_;
							_tmp51_ = g_strdup ("g_param_spec_int");
							result = _tmp51_;
							_vala_code_node_unref0 (e);
							return result;
						}
					}
					_vala_code_node_unref0 (e);
				} else {
					ValaSymbol* _tmp52_;
					_tmp52_ = self->priv->sym;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp52_, VALA_TYPE_STRUCT)) {
						gchar* type_id = NULL;
						ValaSymbol* _tmp53_;
						gchar* _tmp54_;
						const gchar* _tmp55_;
						_tmp53_ = self->priv->sym;
						_tmp54_ = vala_get_ccode_type_id ((ValaCodeNode*) _tmp53_);
						type_id = _tmp54_;
						_tmp55_ = type_id;
						if (g_strcmp0 (_tmp55_, "G_TYPE_INT") == 0) {
							gchar* _tmp56_;
							_tmp56_ = g_strdup ("g_param_spec_int");
							result = _tmp56_;
							_g_free0 (type_id);
							return result;
						} else {
							const gchar* _tmp57_;
							_tmp57_ = type_id;
							if (g_strcmp0 (_tmp57_, "G_TYPE_UINT") == 0) {
								gchar* _tmp58_;
								_tmp58_ = g_strdup ("g_param_spec_uint");
								result = _tmp58_;
								_g_free0 (type_id);
								return result;
							} else {
								const gchar* _tmp59_;
								_tmp59_ = type_id;
								if (g_strcmp0 (_tmp59_, "G_TYPE_INT64") == 0) {
									gchar* _tmp60_;
									_tmp60_ = g_strdup ("g_param_spec_int64");
									result = _tmp60_;
									_g_free0 (type_id);
									return result;
								} else {
									const gchar* _tmp61_;
									_tmp61_ = type_id;
									if (g_strcmp0 (_tmp61_, "G_TYPE_UINT64") == 0) {
										gchar* _tmp62_;
										_tmp62_ = g_strdup ("g_param_spec_uint64");
										result = _tmp62_;
										_g_free0 (type_id);
										return result;
									} else {
										const gchar* _tmp63_;
										_tmp63_ = type_id;
										if (g_strcmp0 (_tmp63_, "G_TYPE_LONG") == 0) {
											gchar* _tmp64_;
											_tmp64_ = g_strdup ("g_param_spec_long");
											result = _tmp64_;
											_g_free0 (type_id);
											return result;
										} else {
											const gchar* _tmp65_;
											_tmp65_ = type_id;
											if (g_strcmp0 (_tmp65_, "G_TYPE_ULONG") == 0) {
												gchar* _tmp66_;
												_tmp66_ = g_strdup ("g_param_spec_ulong");
												result = _tmp66_;
												_g_free0 (type_id);
												return result;
											} else {
												const gchar* _tmp67_;
												_tmp67_ = type_id;
												if (g_strcmp0 (_tmp67_, "G_TYPE_BOOLEAN") == 0) {
													gchar* _tmp68_;
													_tmp68_ = g_strdup ("g_param_spec_boolean");
													result = _tmp68_;
													_g_free0 (type_id);
													return result;
												} else {
													const gchar* _tmp69_;
													_tmp69_ = type_id;
													if (g_strcmp0 (_tmp69_, "G_TYPE_CHAR") == 0) {
														gchar* _tmp70_;
														_tmp70_ = g_strdup ("g_param_spec_char");
														result = _tmp70_;
														_g_free0 (type_id);
														return result;
													} else {
														const gchar* _tmp71_;
														_tmp71_ = type_id;
														if (g_strcmp0 (_tmp71_, "G_TYPE_UCHAR") == 0) {
															gchar* _tmp72_;
															_tmp72_ = g_strdup ("g_param_spec_uchar");
															result = _tmp72_;
															_g_free0 (type_id);
															return result;
														} else {
															const gchar* _tmp73_;
															_tmp73_ = type_id;
															if (g_strcmp0 (_tmp73_, "G_TYPE_FLOAT") == 0) {
																gchar* _tmp74_;
																_tmp74_ = g_strdup ("g_param_spec_float");
																result = _tmp74_;
																_g_free0 (type_id);
																return result;
															} else {
																const gchar* _tmp75_;
																_tmp75_ = type_id;
																if (g_strcmp0 (_tmp75_, "G_TYPE_DOUBLE") == 0) {
																	gchar* _tmp76_;
																	_tmp76_ = g_strdup ("g_param_spec_double");
																	result = _tmp76_;
																	_g_free0 (type_id);
																	return result;
																} else {
																	const gchar* _tmp77_;
																	_tmp77_ = type_id;
																	if (g_strcmp0 (_tmp77_, "G_TYPE_GTYPE") == 0) {
																		gchar* _tmp78_;
																		_tmp78_ = g_strdup ("g_param_spec_gtype");
																		result = _tmp78_;
																		_g_free0 (type_id);
																		return result;
																	} else {
																		gchar* _tmp79_;
																		_tmp79_ = g_strdup ("g_param_spec_boxed");
																		result = _tmp79_;
																		_g_free0 (type_id);
																		return result;
																	}
																}
															}
														}
													}
												}
											}
										}
									}
								}
							}
						}
						_g_free0 (type_id);
					}
				}
			}
		}
	} else {
		gboolean _tmp80_ = FALSE;
		ValaCodeNode* _tmp81_;
		_tmp81_ = self->priv->node;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp81_, VALA_TYPE_ARRAY_TYPE)) {
			ValaCodeNode* _tmp82_;
			ValaDataType* _tmp83_;
			ValaDataType* _tmp84_;
			ValaTypeSymbol* _tmp85_;
			ValaTypeSymbol* _tmp86_;
			ValaCodeContext* _tmp87_;
			ValaCodeContext* _tmp88_;
			ValaSemanticAnalyzer* _tmp89_;
			ValaSemanticAnalyzer* _tmp90_;
			ValaDataType* _tmp91_;
			ValaTypeSymbol* _tmp92_;
			ValaTypeSymbol* _tmp93_;
			_tmp82_ = self->priv->node;
			_tmp83_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp82_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
			_tmp84_ = _tmp83_;
			_tmp85_ = vala_data_type_get_data_type (_tmp84_);
			_tmp86_ = _tmp85_;
			_tmp87_ = vala_code_context_get ();
			_tmp88_ = _tmp87_;
			_tmp89_ = vala_code_context_get_analyzer (_tmp88_);
			_tmp90_ = _tmp89_;
			_tmp91_ = _tmp90_->string_type;
			_tmp92_ = vala_data_type_get_data_type (_tmp91_);
			_tmp93_ = _tmp92_;
			_tmp80_ = _tmp86_ == _tmp93_;
			_vala_code_context_unref0 (_tmp88_);
		} else {
			_tmp80_ = FALSE;
		}
		if (_tmp80_) {
			gchar* _tmp94_;
			_tmp94_ = g_strdup ("g_param_spec_boxed");
			result = _tmp94_;
			return result;
		} else {
			gboolean _tmp95_ = FALSE;
			ValaCodeNode* _tmp96_;
			_tmp96_ = self->priv->node;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp96_, VALA_TYPE_DATA_TYPE)) {
				ValaCodeNode* _tmp97_;
				ValaTypeSymbol* _tmp98_;
				ValaTypeSymbol* _tmp99_;
				_tmp97_ = self->priv->node;
				_tmp98_ = vala_data_type_get_data_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp97_, VALA_TYPE_DATA_TYPE, ValaDataType));
				_tmp99_ = _tmp98_;
				_tmp95_ = _tmp99_ != NULL;
			} else {
				_tmp95_ = FALSE;
			}
			if (_tmp95_) {
				ValaCodeNode* _tmp100_;
				ValaTypeSymbol* _tmp101_;
				ValaTypeSymbol* _tmp102_;
				gchar* _tmp103_;
				_tmp100_ = self->priv->node;
				_tmp101_ = vala_data_type_get_data_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp100_, VALA_TYPE_DATA_TYPE, ValaDataType));
				_tmp102_ = _tmp101_;
				_tmp103_ = vala_get_ccode_param_spec_function ((ValaCodeNode*) _tmp102_);
				result = _tmp103_;
				return result;
			}
		}
	}
	_tmp104_ = g_strdup ("g_param_spec_pointer");
	result = _tmp104_;
	return result;
}


static gchar* vala_ccode_attribute_get_default_default_value (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	gchar* _tmp12_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_ENUM)) {
		gchar* _tmp1_;
		_tmp1_ = g_strdup ("0");
		result = _tmp1_;
		return result;
	} else {
		ValaSymbol* _tmp2_;
		_tmp2_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, VALA_TYPE_STRUCT)) {
			ValaStruct* st = NULL;
			ValaSymbol* _tmp3_;
			ValaStruct* _tmp4_;
			ValaStruct* base_st = NULL;
			ValaStruct* _tmp5_;
			ValaStruct* _tmp6_;
			ValaStruct* _tmp7_;
			ValaStruct* _tmp8_;
			ValaStruct* _tmp9_;
			_tmp3_ = self->priv->sym;
			_tmp4_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp3_, VALA_TYPE_STRUCT, ValaStruct));
			st = _tmp4_;
			_tmp5_ = st;
			_tmp6_ = vala_struct_get_base_struct (_tmp5_);
			_tmp7_ = _tmp6_;
			_tmp8_ = _vala_code_node_ref0 (_tmp7_);
			base_st = _tmp8_;
			_tmp9_ = base_st;
			if (_tmp9_ != NULL) {
				ValaStruct* _tmp10_;
				gchar* _tmp11_;
				_tmp10_ = base_st;
				_tmp11_ = vala_get_ccode_default_value ((ValaTypeSymbol*) _tmp10_);
				result = _tmp11_;
				_vala_code_node_unref0 (base_st);
				_vala_code_node_unref0 (st);
				return result;
			}
			_vala_code_node_unref0 (base_st);
			_vala_code_node_unref0 (st);
		}
	}
	_tmp12_ = g_strdup ("");
	result = _tmp12_;
	return result;
}


static gchar* vala_ccode_attribute_get_finish_name_for_basename (ValaCCodeAttribute* self, const gchar* basename) {
	gchar* result = NULL;
	gchar* _result_ = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	const gchar* _tmp2_;
	gboolean _tmp3_;
	const gchar* _tmp11_;
	gchar* _tmp12_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (basename != NULL, NULL);
	_tmp0_ = basename;
	_tmp1_ = g_strdup (_tmp0_);
	_result_ = _tmp1_;
	_tmp2_ = _result_;
	_tmp3_ = g_str_has_suffix (_tmp2_, "_async");
	if (_tmp3_) {
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		gint _tmp6_;
		gint _tmp7_;
		gint _tmp8_;
		gint _tmp9_;
		gchar* _tmp10_;
		_tmp4_ = _result_;
		_tmp5_ = _result_;
		_tmp6_ = strlen (_tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = strlen ("_async");
		_tmp9_ = _tmp8_;
		_tmp10_ = string_substring (_tmp4_, (glong) 0, (glong) (_tmp7_ - _tmp9_));
		_g_free0 (_result_);
		_result_ = _tmp10_;
	}
	_tmp11_ = _result_;
	_tmp12_ = g_strdup_printf ("%s_finish", _tmp11_);
	result = _tmp12_;
	_g_free0 (_result_);
	return result;
}


static gchar* vala_ccode_attribute_get_default_real_name (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaSymbol* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->sym;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_CREATION_METHOD)) {
		ValaCreationMethod* m = NULL;
		ValaSymbol* _tmp1_;
		ValaCreationMethod* _tmp2_;
		ValaClass* parent = NULL;
		ValaCreationMethod* _tmp3_;
		ValaSymbol* _tmp4_;
		ValaSymbol* _tmp5_;
		ValaClass* _tmp6_;
		gboolean _tmp7_ = FALSE;
		ValaClass* _tmp8_;
		gchar* infix = NULL;
		gchar* _tmp15_;
		ValaCreationMethod* _tmp16_;
		const gchar* _tmp17_;
		const gchar* _tmp18_;
		_tmp1_ = self->priv->sym;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_CREATION_METHOD, ValaCreationMethod));
		m = _tmp2_;
		_tmp3_ = m;
		_tmp4_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_CLASS) ? ((ValaClass*) _tmp5_) : NULL);
		parent = _tmp6_;
		_tmp8_ = parent;
		if (_tmp8_ == NULL) {
			_tmp7_ = TRUE;
		} else {
			ValaClass* _tmp9_;
			gboolean _tmp10_;
			gboolean _tmp11_;
			_tmp9_ = parent;
			_tmp10_ = vala_class_get_is_compact (_tmp9_);
			_tmp11_ = _tmp10_;
			_tmp7_ = _tmp11_;
		}
		if (_tmp7_) {
			const gchar* _tmp12_;
			const gchar* _tmp13_;
			gchar* _tmp14_;
			_tmp12_ = vala_ccode_attribute_get_name (self);
			_tmp13_ = _tmp12_;
			_tmp14_ = g_strdup (_tmp13_);
			result = _tmp14_;
			_vala_code_node_unref0 (parent);
			_vala_code_node_unref0 (m);
			return result;
		}
		_tmp15_ = g_strdup ("construct");
		infix = _tmp15_;
		_tmp16_ = m;
		_tmp17_ = vala_symbol_get_name ((ValaSymbol*) _tmp16_);
		_tmp18_ = _tmp17_;
		if (g_strcmp0 (_tmp18_, ".new") == 0) {
			ValaClass* _tmp19_;
			gchar* _tmp20_;
			gchar* _tmp21_;
			const gchar* _tmp22_;
			gchar* _tmp23_;
			gchar* _tmp24_;
			_tmp19_ = parent;
			_tmp20_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = infix;
			_tmp23_ = g_strdup_printf ("%s%s", _tmp21_, _tmp22_);
			_tmp24_ = _tmp23_;
			_g_free0 (_tmp21_);
			result = _tmp24_;
			_g_free0 (infix);
			_vala_code_node_unref0 (parent);
			_vala_code_node_unref0 (m);
			return result;
		} else {
			ValaClass* _tmp25_;
			gchar* _tmp26_;
			gchar* _tmp27_;
			const gchar* _tmp28_;
			ValaCreationMethod* _tmp29_;
			const gchar* _tmp30_;
			const gchar* _tmp31_;
			gchar* _tmp32_;
			gchar* _tmp33_;
			_tmp25_ = parent;
			_tmp26_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp25_);
			_tmp27_ = _tmp26_;
			_tmp28_ = infix;
			_tmp29_ = m;
			_tmp30_ = vala_symbol_get_name ((ValaSymbol*) _tmp29_);
			_tmp31_ = _tmp30_;
			_tmp32_ = g_strdup_printf ("%s%s_%s", _tmp27_, _tmp28_, _tmp31_);
			_tmp33_ = _tmp32_;
			_g_free0 (_tmp27_);
			result = _tmp33_;
			_g_free0 (infix);
			_vala_code_node_unref0 (parent);
			_vala_code_node_unref0 (m);
			return result;
		}
		_g_free0 (infix);
		_vala_code_node_unref0 (parent);
		_vala_code_node_unref0 (m);
	} else {
		ValaSymbol* _tmp34_;
		_tmp34_ = self->priv->sym;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp34_, VALA_TYPE_METHOD)) {
			ValaMethod* m = NULL;
			ValaSymbol* _tmp35_;
			ValaMethod* _tmp36_;
			gboolean _tmp37_ = FALSE;
			ValaMethod* _tmp38_;
			ValaMethod* _tmp39_;
			ValaMethod* _tmp40_;
			_tmp35_ = self->priv->sym;
			_tmp36_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp35_, VALA_TYPE_METHOD, ValaMethod));
			m = _tmp36_;
			_tmp38_ = m;
			_tmp39_ = vala_method_get_base_method (_tmp38_);
			_tmp40_ = _tmp39_;
			if (_tmp40_ != NULL) {
				_tmp37_ = TRUE;
			} else {
				ValaMethod* _tmp41_;
				ValaMethod* _tmp42_;
				ValaMethod* _tmp43_;
				_tmp41_ = m;
				_tmp42_ = vala_method_get_base_interface_method (_tmp41_);
				_tmp43_ = _tmp42_;
				_tmp37_ = _tmp43_ != NULL;
			}
			if (_tmp37_) {
				gchar* m_name = NULL;
				ValaMethod* _tmp44_;
				ValaSignal* _tmp45_;
				ValaSignal* _tmp46_;
				ValaMethod* _tmp55_;
				ValaDataType* _tmp56_;
				ValaDataType* _tmp57_;
				_tmp44_ = m;
				_tmp45_ = vala_method_get_signal_reference (_tmp44_);
				_tmp46_ = _tmp45_;
				if (_tmp46_ != NULL) {
					ValaMethod* _tmp47_;
					ValaSignal* _tmp48_;
					ValaSignal* _tmp49_;
					gchar* _tmp50_;
					_tmp47_ = m;
					_tmp48_ = vala_method_get_signal_reference (_tmp47_);
					_tmp49_ = _tmp48_;
					_tmp50_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp49_, NULL);
					_g_free0 (m_name);
					m_name = _tmp50_;
				} else {
					ValaMethod* _tmp51_;
					const gchar* _tmp52_;
					const gchar* _tmp53_;
					gchar* _tmp54_;
					_tmp51_ = m;
					_tmp52_ = vala_symbol_get_name ((ValaSymbol*) _tmp51_);
					_tmp53_ = _tmp52_;
					_tmp54_ = g_strdup (_tmp53_);
					_g_free0 (m_name);
					m_name = _tmp54_;
				}
				_tmp55_ = m;
				_tmp56_ = vala_method_get_base_interface_type (_tmp55_);
				_tmp57_ = _tmp56_;
				if (_tmp57_ != NULL) {
					ValaMethod* _tmp58_;
					ValaSymbol* _tmp59_;
					ValaSymbol* _tmp60_;
					gchar* _tmp61_;
					gchar* _tmp62_;
					ValaMethod* _tmp63_;
					ValaDataType* _tmp64_;
					ValaDataType* _tmp65_;
					ValaTypeSymbol* _tmp66_;
					ValaTypeSymbol* _tmp67_;
					gchar* _tmp68_;
					gchar* _tmp69_;
					const gchar* _tmp70_;
					gchar* _tmp71_;
					gchar* _tmp72_;
					_tmp58_ = m;
					_tmp59_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp58_);
					_tmp60_ = _tmp59_;
					_tmp61_ = vala_get_ccode_lower_case_prefix (_tmp60_);
					_tmp62_ = _tmp61_;
					_tmp63_ = m;
					_tmp64_ = vala_method_get_base_interface_type (_tmp63_);
					_tmp65_ = _tmp64_;
					_tmp66_ = vala_data_type_get_data_type (_tmp65_);
					_tmp67_ = _tmp66_;
					_tmp68_ = vala_get_ccode_lower_case_prefix ((ValaSymbol*) _tmp67_);
					_tmp69_ = _tmp68_;
					_tmp70_ = m_name;
					_tmp71_ = g_strdup_printf ("%sreal_%s%s", _tmp62_, _tmp69_, _tmp70_);
					_tmp72_ = _tmp71_;
					_g_free0 (_tmp69_);
					_g_free0 (_tmp62_);
					result = _tmp72_;
					_g_free0 (m_name);
					_vala_code_node_unref0 (m);
					return result;
				} else {
					ValaMethod* _tmp73_;
					ValaSymbol* _tmp74_;
					ValaSymbol* _tmp75_;
					gchar* _tmp76_;
					gchar* _tmp77_;
					const gchar* _tmp78_;
					gchar* _tmp79_;
					gchar* _tmp80_;
					_tmp73_ = m;
					_tmp74_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp73_);
					_tmp75_ = _tmp74_;
					_tmp76_ = vala_get_ccode_lower_case_prefix (_tmp75_);
					_tmp77_ = _tmp76_;
					_tmp78_ = m_name;
					_tmp79_ = g_strdup_printf ("%sreal_%s", _tmp77_, _tmp78_);
					_tmp80_ = _tmp79_;
					_g_free0 (_tmp77_);
					result = _tmp80_;
					_g_free0 (m_name);
					_vala_code_node_unref0 (m);
					return result;
				}
				_g_free0 (m_name);
			} else {
				const gchar* _tmp81_;
				const gchar* _tmp82_;
				gchar* _tmp83_;
				_tmp81_ = vala_ccode_attribute_get_name (self);
				_tmp82_ = _tmp81_;
				_tmp83_ = g_strdup (_tmp82_);
				result = _tmp83_;
				_vala_code_node_unref0 (m);
				return result;
			}
			_vala_code_node_unref0 (m);
		} else {
			ValaSymbol* _tmp84_;
			_tmp84_ = self->priv->sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp84_, VALA_TYPE_PROPERTY_ACCESSOR)) {
				ValaPropertyAccessor* acc = NULL;
				ValaSymbol* _tmp85_;
				ValaPropertyAccessor* _tmp86_;
				ValaProperty* prop = NULL;
				ValaPropertyAccessor* _tmp87_;
				ValaProperty* _tmp88_;
				ValaProperty* _tmp89_;
				ValaProperty* _tmp90_;
				gboolean _tmp91_ = FALSE;
				ValaProperty* _tmp92_;
				ValaProperty* _tmp93_;
				ValaProperty* _tmp94_;
				_tmp85_ = self->priv->sym;
				_tmp86_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp85_, VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor));
				acc = _tmp86_;
				_tmp87_ = acc;
				_tmp88_ = vala_property_accessor_get_prop (_tmp87_);
				_tmp89_ = _tmp88_;
				_tmp90_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp89_, VALA_TYPE_PROPERTY, ValaProperty));
				prop = _tmp90_;
				_tmp92_ = prop;
				_tmp93_ = vala_property_get_base_property (_tmp92_);
				_tmp94_ = _tmp93_;
				if (_tmp94_ != NULL) {
					_tmp91_ = TRUE;
				} else {
					ValaProperty* _tmp95_;
					ValaProperty* _tmp96_;
					ValaProperty* _tmp97_;
					_tmp95_ = prop;
					_tmp96_ = vala_property_get_base_interface_property (_tmp95_);
					_tmp97_ = _tmp96_;
					_tmp91_ = _tmp97_ != NULL;
				}
				if (_tmp91_) {
					ValaPropertyAccessor* _tmp98_;
					gboolean _tmp99_;
					gboolean _tmp100_;
					_tmp98_ = acc;
					_tmp99_ = vala_property_accessor_get_readable (_tmp98_);
					_tmp100_ = _tmp99_;
					if (_tmp100_) {
						ValaProperty* _tmp101_;
						ValaSymbol* _tmp102_;
						ValaSymbol* _tmp103_;
						gchar* _tmp104_;
						gchar* _tmp105_;
						ValaProperty* _tmp106_;
						const gchar* _tmp107_;
						const gchar* _tmp108_;
						gchar* _tmp109_;
						gchar* _tmp110_;
						_tmp101_ = prop;
						_tmp102_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp101_);
						_tmp103_ = _tmp102_;
						_tmp104_ = vala_get_ccode_lower_case_prefix (_tmp103_);
						_tmp105_ = _tmp104_;
						_tmp106_ = prop;
						_tmp107_ = vala_symbol_get_name ((ValaSymbol*) _tmp106_);
						_tmp108_ = _tmp107_;
						_tmp109_ = g_strdup_printf ("%sreal_get_%s", _tmp105_, _tmp108_);
						_tmp110_ = _tmp109_;
						_g_free0 (_tmp105_);
						result = _tmp110_;
						_vala_code_node_unref0 (prop);
						_vala_code_node_unref0 (acc);
						return result;
					} else {
						ValaProperty* _tmp111_;
						ValaSymbol* _tmp112_;
						ValaSymbol* _tmp113_;
						gchar* _tmp114_;
						gchar* _tmp115_;
						ValaProperty* _tmp116_;
						const gchar* _tmp117_;
						const gchar* _tmp118_;
						gchar* _tmp119_;
						gchar* _tmp120_;
						_tmp111_ = prop;
						_tmp112_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp111_);
						_tmp113_ = _tmp112_;
						_tmp114_ = vala_get_ccode_lower_case_prefix (_tmp113_);
						_tmp115_ = _tmp114_;
						_tmp116_ = prop;
						_tmp117_ = vala_symbol_get_name ((ValaSymbol*) _tmp116_);
						_tmp118_ = _tmp117_;
						_tmp119_ = g_strdup_printf ("%sreal_set_%s", _tmp115_, _tmp118_);
						_tmp120_ = _tmp119_;
						_g_free0 (_tmp115_);
						result = _tmp120_;
						_vala_code_node_unref0 (prop);
						_vala_code_node_unref0 (acc);
						return result;
					}
				} else {
					const gchar* _tmp121_;
					const gchar* _tmp122_;
					gchar* _tmp123_;
					_tmp121_ = vala_ccode_attribute_get_name (self);
					_tmp122_ = _tmp121_;
					_tmp123_ = g_strdup (_tmp122_);
					result = _tmp123_;
					_vala_code_node_unref0 (prop);
					_vala_code_node_unref0 (acc);
					return result;
				}
				_vala_code_node_unref0 (prop);
				_vala_code_node_unref0 (acc);
			}
		}
	}
	g_assert_not_reached ();
}


static gchar* vala_ccode_attribute_get_default_const_name (ValaCCodeAttribute* self) {
	gchar* result = NULL;
	ValaCodeNode* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->node;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_DATA_TYPE)) {
		ValaDataType* type = NULL;
		ValaCodeNode* _tmp1_;
		ValaDataType* _tmp2_;
		gchar* ptr = NULL;
		ValaTypeSymbol* t = NULL;
		ValaDataType* _tmp3_;
		ValaTypeSymbol* _tmp14_;
		gboolean _tmp15_;
		ValaTypeSymbol* _tmp18_;
		gchar* _tmp19_;
		gchar* _tmp20_;
		const gchar* _tmp21_;
		gchar* _tmp22_;
		gchar* _tmp23_;
		_tmp1_ = self->priv->node;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_DATA_TYPE, ValaDataType));
		type = _tmp2_;
		_tmp3_ = type;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_ARRAY_TYPE)) {
			ValaDataType* _tmp4_;
			ValaDataType* _tmp5_;
			ValaDataType* _tmp6_;
			ValaTypeSymbol* _tmp7_;
			ValaTypeSymbol* _tmp8_;
			ValaTypeSymbol* _tmp9_;
			_tmp4_ = type;
			_tmp5_ = vala_array_type_get_element_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp4_, VALA_TYPE_ARRAY_TYPE, ValaArrayType));
			_tmp6_ = _tmp5_;
			_tmp7_ = vala_data_type_get_data_type (_tmp6_);
			_tmp8_ = _tmp7_;
			_tmp9_ = _vala_code_node_ref0 (_tmp8_);
			_vala_code_node_unref0 (t);
			t = _tmp9_;
		} else {
			ValaDataType* _tmp10_;
			ValaTypeSymbol* _tmp11_;
			ValaTypeSymbol* _tmp12_;
			ValaTypeSymbol* _tmp13_;
			_tmp10_ = type;
			_tmp11_ = vala_data_type_get_data_type (_tmp10_);
			_tmp12_ = _tmp11_;
			_tmp13_ = _vala_code_node_ref0 (_tmp12_);
			_vala_code_node_unref0 (t);
			t = _tmp13_;
		}
		_tmp14_ = t;
		_tmp15_ = vala_typesymbol_is_reference_type (_tmp14_);
		if (!_tmp15_) {
			gchar* _tmp16_;
			_tmp16_ = g_strdup ("");
			_g_free0 (ptr);
			ptr = _tmp16_;
		} else {
			gchar* _tmp17_;
			_tmp17_ = g_strdup ("*");
			_g_free0 (ptr);
			ptr = _tmp17_;
		}
		_tmp18_ = t;
		_tmp19_ = vala_get_ccode_name ((ValaCodeNode*) _tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = ptr;
		_tmp22_ = g_strdup_printf ("const %s%s", _tmp20_, _tmp21_);
		_tmp23_ = _tmp22_;
		_g_free0 (_tmp20_);
		result = _tmp23_;
		_vala_code_node_unref0 (t);
		_g_free0 (ptr);
		_vala_code_node_unref0 (type);
		return result;
	} else {
		gboolean _tmp24_ = FALSE;
		ValaCodeNode* _tmp25_;
		_tmp25_ = self->priv->node;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALA_TYPE_CLASS)) {
			ValaCodeNode* _tmp26_;
			gboolean _tmp27_;
			gboolean _tmp28_;
			_tmp26_ = self->priv->node;
			_tmp27_ = vala_class_get_is_immutable (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, VALA_TYPE_CLASS, ValaClass));
			_tmp28_ = _tmp27_;
			_tmp24_ = _tmp28_;
		} else {
			_tmp24_ = FALSE;
		}
		if (_tmp24_) {
			const gchar* _tmp29_;
			const gchar* _tmp30_;
			gchar* _tmp31_;
			_tmp29_ = vala_ccode_attribute_get_name (self);
			_tmp30_ = _tmp29_;
			_tmp31_ = g_strdup_printf ("const %s", _tmp30_);
			result = _tmp31_;
			return result;
		} else {
			const gchar* _tmp32_;
			const gchar* _tmp33_;
			gchar* _tmp34_;
			_tmp32_ = vala_ccode_attribute_get_name (self);
			_tmp33_ = _tmp32_;
			_tmp34_ = g_strdup (_tmp33_);
			result = _tmp34_;
			return result;
		}
	}
}


static gboolean vala_ccode_attribute_get_default_array_length (ValaCCodeAttribute* self) {
	gboolean result = FALSE;
	ValaCodeNode* _tmp0_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->node;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_PARAMETER)) {
		ValaParameter* param = NULL;
		ValaCodeNode* _tmp1_;
		ValaParameter* _tmp2_;
		ValaParameter* _tmp3_;
		ValaParameter* _tmp4_;
		ValaParameter* _tmp5_;
		_tmp1_ = self->priv->node;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_PARAMETER, ValaParameter));
		param = _tmp2_;
		_tmp3_ = param;
		_tmp4_ = vala_parameter_get_base_parameter (_tmp3_);
		_tmp5_ = _tmp4_;
		if (_tmp5_ != NULL) {
			ValaParameter* _tmp6_;
			ValaParameter* _tmp7_;
			ValaParameter* _tmp8_;
			gboolean _tmp9_;
			_tmp6_ = param;
			_tmp7_ = vala_parameter_get_base_parameter (_tmp6_);
			_tmp8_ = _tmp7_;
			_tmp9_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp8_);
			result = _tmp9_;
			_vala_code_node_unref0 (param);
			return result;
		}
		_vala_code_node_unref0 (param);
	} else {
		ValaCodeNode* _tmp10_;
		_tmp10_ = self->priv->node;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_METHOD)) {
			ValaMethod* method = NULL;
			ValaCodeNode* _tmp11_;
			ValaMethod* _tmp12_;
			gboolean _tmp13_ = FALSE;
			ValaMethod* _tmp14_;
			ValaMethod* _tmp15_;
			ValaMethod* _tmp16_;
			_tmp11_ = self->priv->node;
			_tmp12_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, VALA_TYPE_METHOD, ValaMethod));
			method = _tmp12_;
			_tmp14_ = method;
			_tmp15_ = vala_method_get_base_method (_tmp14_);
			_tmp16_ = _tmp15_;
			if (_tmp16_ != NULL) {
				ValaMethod* _tmp17_;
				ValaMethod* _tmp18_;
				ValaMethod* _tmp19_;
				ValaMethod* _tmp20_;
				_tmp17_ = method;
				_tmp18_ = vala_method_get_base_method (_tmp17_);
				_tmp19_ = _tmp18_;
				_tmp20_ = method;
				_tmp13_ = _tmp19_ != _tmp20_;
			} else {
				_tmp13_ = FALSE;
			}
			if (_tmp13_) {
				ValaMethod* _tmp21_;
				ValaMethod* _tmp22_;
				ValaMethod* _tmp23_;
				gboolean _tmp24_;
				_tmp21_ = method;
				_tmp22_ = vala_method_get_base_method (_tmp21_);
				_tmp23_ = _tmp22_;
				_tmp24_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp23_);
				result = _tmp24_;
				_vala_code_node_unref0 (method);
				return result;
			} else {
				gboolean _tmp25_ = FALSE;
				ValaMethod* _tmp26_;
				ValaMethod* _tmp27_;
				ValaMethod* _tmp28_;
				_tmp26_ = method;
				_tmp27_ = vala_method_get_base_interface_method (_tmp26_);
				_tmp28_ = _tmp27_;
				if (_tmp28_ != NULL) {
					ValaMethod* _tmp29_;
					ValaMethod* _tmp30_;
					ValaMethod* _tmp31_;
					ValaMethod* _tmp32_;
					_tmp29_ = method;
					_tmp30_ = vala_method_get_base_interface_method (_tmp29_);
					_tmp31_ = _tmp30_;
					_tmp32_ = method;
					_tmp25_ = _tmp31_ != _tmp32_;
				} else {
					_tmp25_ = FALSE;
				}
				if (_tmp25_) {
					ValaMethod* _tmp33_;
					ValaMethod* _tmp34_;
					ValaMethod* _tmp35_;
					gboolean _tmp36_;
					_tmp33_ = method;
					_tmp34_ = vala_method_get_base_interface_method (_tmp33_);
					_tmp35_ = _tmp34_;
					_tmp36_ = vala_get_ccode_array_length ((ValaCodeNode*) _tmp35_);
					result = _tmp36_;
					_vala_code_node_unref0 (method);
					return result;
				}
			}
			_vala_code_node_unref0 (method);
		}
	}
	result = TRUE;
	return result;
}


static gboolean vala_ccode_attribute_get_default_array_null_terminated (ValaCCodeAttribute* self) {
	gboolean result = FALSE;
	ValaCodeNode* _tmp0_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->node;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, VALA_TYPE_PARAMETER)) {
		ValaParameter* param = NULL;
		ValaCodeNode* _tmp1_;
		ValaParameter* _tmp2_;
		ValaParameter* _tmp3_;
		ValaParameter* _tmp4_;
		ValaParameter* _tmp5_;
		_tmp1_ = self->priv->node;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, VALA_TYPE_PARAMETER, ValaParameter));
		param = _tmp2_;
		_tmp3_ = param;
		_tmp4_ = vala_parameter_get_base_parameter (_tmp3_);
		_tmp5_ = _tmp4_;
		if (_tmp5_ != NULL) {
			ValaParameter* _tmp6_;
			ValaParameter* _tmp7_;
			ValaParameter* _tmp8_;
			gboolean _tmp9_;
			_tmp6_ = param;
			_tmp7_ = vala_parameter_get_base_parameter (_tmp6_);
			_tmp8_ = _tmp7_;
			_tmp9_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp8_);
			result = _tmp9_;
			_vala_code_node_unref0 (param);
			return result;
		}
		_vala_code_node_unref0 (param);
	} else {
		ValaCodeNode* _tmp10_;
		_tmp10_ = self->priv->node;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_METHOD)) {
			ValaMethod* method = NULL;
			ValaCodeNode* _tmp11_;
			ValaMethod* _tmp12_;
			gboolean _tmp13_ = FALSE;
			ValaMethod* _tmp14_;
			ValaMethod* _tmp15_;
			ValaMethod* _tmp16_;
			_tmp11_ = self->priv->node;
			_tmp12_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, VALA_TYPE_METHOD, ValaMethod));
			method = _tmp12_;
			_tmp14_ = method;
			_tmp15_ = vala_method_get_base_method (_tmp14_);
			_tmp16_ = _tmp15_;
			if (_tmp16_ != NULL) {
				ValaMethod* _tmp17_;
				ValaMethod* _tmp18_;
				ValaMethod* _tmp19_;
				ValaMethod* _tmp20_;
				_tmp17_ = method;
				_tmp18_ = vala_method_get_base_method (_tmp17_);
				_tmp19_ = _tmp18_;
				_tmp20_ = method;
				_tmp13_ = _tmp19_ != _tmp20_;
			} else {
				_tmp13_ = FALSE;
			}
			if (_tmp13_) {
				ValaMethod* _tmp21_;
				ValaMethod* _tmp22_;
				ValaMethod* _tmp23_;
				gboolean _tmp24_;
				_tmp21_ = method;
				_tmp22_ = vala_method_get_base_method (_tmp21_);
				_tmp23_ = _tmp22_;
				_tmp24_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp23_);
				result = _tmp24_;
				_vala_code_node_unref0 (method);
				return result;
			} else {
				gboolean _tmp25_ = FALSE;
				ValaMethod* _tmp26_;
				ValaMethod* _tmp27_;
				ValaMethod* _tmp28_;
				_tmp26_ = method;
				_tmp27_ = vala_method_get_base_interface_method (_tmp26_);
				_tmp28_ = _tmp27_;
				if (_tmp28_ != NULL) {
					ValaMethod* _tmp29_;
					ValaMethod* _tmp30_;
					ValaMethod* _tmp31_;
					ValaMethod* _tmp32_;
					_tmp29_ = method;
					_tmp30_ = vala_method_get_base_interface_method (_tmp29_);
					_tmp31_ = _tmp30_;
					_tmp32_ = method;
					_tmp25_ = _tmp31_ != _tmp32_;
				} else {
					_tmp25_ = FALSE;
				}
				if (_tmp25_) {
					ValaMethod* _tmp33_;
					ValaMethod* _tmp34_;
					ValaMethod* _tmp35_;
					gboolean _tmp36_;
					_tmp33_ = method;
					_tmp34_ = vala_method_get_base_interface_method (_tmp33_);
					_tmp35_ = _tmp34_;
					_tmp36_ = vala_get_ccode_array_null_terminated ((ValaCodeNode*) _tmp35_);
					result = _tmp36_;
					_vala_code_node_unref0 (method);
					return result;
				}
			}
			_vala_code_node_unref0 (method);
		}
	}
	result = FALSE;
	return result;
}


const gchar* vala_ccode_attribute_get_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "cname", NULL);
			_g_free0 (self->priv->_name);
			self->priv->_name = _tmp3_;
		}
		_tmp4_ = self->priv->_name;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_name (self);
			_g_free0 (self->priv->_name);
			self->priv->_name = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_name;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_const_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_const_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "const_cname", NULL);
			_g_free0 (self->priv->_const_name);
			self->priv->_const_name = _tmp3_;
		}
		_tmp4_ = self->priv->_const_name;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_const_name (self);
			_g_free0 (self->priv->_const_name);
			self->priv->_const_name = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_const_name;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_type_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp9_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_type_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "type_cname", NULL);
			_g_free0 (self->priv->_type_name);
			self->priv->_type_name = _tmp3_;
		}
		_tmp4_ = self->priv->_type_name;
		if (_tmp4_ == NULL) {
			ValaSymbol* _tmp5_;
			gchar* _tmp6_;
			gchar* _tmp7_;
			gchar* _tmp8_;
			_tmp5_ = self->priv->sym;
			_tmp6_ = vala_get_ccode_name ((ValaCodeNode*) _tmp5_);
			_tmp7_ = _tmp6_;
			_tmp8_ = g_strdup_printf ("%sIface", _tmp7_);
			_g_free0 (self->priv->_type_name);
			self->priv->_type_name = _tmp8_;
			_g_free0 (_tmp7_);
		}
	}
	_tmp9_ = self->priv->_type_name;
	result = _tmp9_;
	return result;
}


const gchar* vala_ccode_attribute_get_header_filenames (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_header_filenames;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "cheader_filename", NULL);
			_g_free0 (self->priv->_header_filenames);
			self->priv->_header_filenames = _tmp3_;
		}
		_tmp4_ = self->priv->_header_filenames;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_header_filenames (self);
			_g_free0 (self->priv->_header_filenames);
			self->priv->_header_filenames = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_header_filenames;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_prefix (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_prefix;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "cprefix", NULL);
			_g_free0 (self->priv->_prefix);
			self->priv->_prefix = _tmp3_;
		}
		_tmp4_ = self->priv->_prefix;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_prefix (self);
			_g_free0 (self->priv->_prefix);
			self->priv->_prefix = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_prefix;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_lower_case_prefix (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp13_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_lower_case_prefix;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp11_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			gboolean _tmp4_ = FALSE;
			const gchar* _tmp5_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "lower_case_cprefix", NULL);
			_g_free0 (self->priv->_lower_case_prefix);
			self->priv->_lower_case_prefix = _tmp3_;
			_tmp5_ = self->priv->_lower_case_prefix;
			if (_tmp5_ == NULL) {
				gboolean _tmp6_ = FALSE;
				ValaSymbol* _tmp7_;
				_tmp7_ = self->priv->sym;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, VALA_TYPE_OBJECT_TYPE_SYMBOL)) {
					_tmp6_ = TRUE;
				} else {
					ValaSymbol* _tmp8_;
					_tmp8_ = self->priv->sym;
					_tmp6_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, VALA_TYPE_STRUCT);
				}
				_tmp4_ = _tmp6_;
			} else {
				_tmp4_ = FALSE;
			}
			if (_tmp4_) {
				ValaAttribute* _tmp9_;
				gchar* _tmp10_;
				_tmp9_ = self->priv->ccode;
				_tmp10_ = vala_attribute_get_string (_tmp9_, "cprefix", NULL);
				_g_free0 (self->priv->_lower_case_prefix);
				self->priv->_lower_case_prefix = _tmp10_;
			}
		}
		_tmp11_ = self->priv->_lower_case_prefix;
		if (_tmp11_ == NULL) {
			gchar* _tmp12_;
			_tmp12_ = vala_ccode_attribute_get_default_lower_case_prefix (self);
			_g_free0 (self->priv->_lower_case_prefix);
			self->priv->_lower_case_prefix = _tmp12_;
		}
	}
	_tmp13_ = self->priv->_lower_case_prefix;
	result = _tmp13_;
	return result;
}


const gchar* vala_ccode_attribute_get_lower_case_suffix (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_lower_case_suffix;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "lower_case_csuffix", NULL);
			_g_free0 (self->priv->_lower_case_suffix);
			self->priv->_lower_case_suffix = _tmp3_;
		}
		_tmp4_ = self->priv->_lower_case_suffix;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_lower_case_suffix (self);
			_g_free0 (self->priv->_lower_case_suffix);
			self->priv->_lower_case_suffix = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_lower_case_suffix;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_ref_function (ValaCCodeAttribute* self) {
	const gchar* result;
	gboolean _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->ref_function_set;
	if (!_tmp0_) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "ref_function", NULL);
			_g_free0 (self->priv->_ref_function);
			self->priv->_ref_function = _tmp3_;
		}
		_tmp4_ = self->priv->_ref_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_ref_function (self);
			_g_free0 (self->priv->_ref_function);
			self->priv->_ref_function = _tmp5_;
		}
		self->priv->ref_function_set = TRUE;
	}
	_tmp6_ = self->priv->_ref_function;
	result = _tmp6_;
	return result;
}


static gboolean* _bool_dup (gboolean* self) {
	gboolean* dup;
	dup = g_new0 (gboolean, 1);
	memcpy (dup, self, sizeof (gboolean));
	return dup;
}


static gpointer __bool_dup0 (gpointer self) {
	return self ? _bool_dup (self) : NULL;
}


gboolean vala_ccode_attribute_get_ref_function_void (ValaCCodeAttribute* self) {
	gboolean result;
	gboolean* _tmp0_;
	gboolean* _tmp20_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_ref_function_void;
	if (_tmp0_ == NULL) {
		gboolean _tmp1_ = FALSE;
		ValaAttribute* _tmp2_;
		_tmp2_ = self->priv->ccode;
		if (_tmp2_ != NULL) {
			ValaAttribute* _tmp3_;
			gboolean _tmp4_;
			_tmp3_ = self->priv->ccode;
			_tmp4_ = vala_attribute_has_argument (_tmp3_, "ref_function_void");
			_tmp1_ = _tmp4_;
		} else {
			_tmp1_ = FALSE;
		}
		if (_tmp1_) {
			ValaAttribute* _tmp5_;
			gboolean _tmp6_;
			gboolean* _tmp7_;
			_tmp5_ = self->priv->ccode;
			_tmp6_ = vala_attribute_get_bool (_tmp5_, "ref_function_void", FALSE);
			_tmp7_ = __bool_dup0 (&_tmp6_);
			_g_free0 (self->priv->_ref_function_void);
			self->priv->_ref_function_void = _tmp7_;
		} else {
			ValaClass* cl = NULL;
			ValaSymbol* _tmp8_;
			ValaClass* _tmp9_;
			ValaClass* _tmp10_;
			ValaClass* _tmp11_;
			ValaClass* _tmp12_;
			_tmp8_ = self->priv->sym;
			_tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_CLASS, ValaClass));
			cl = _tmp9_;
			_tmp10_ = cl;
			_tmp11_ = vala_class_get_base_class (_tmp10_);
			_tmp12_ = _tmp11_;
			if (_tmp12_ != NULL) {
				ValaClass* _tmp13_;
				ValaClass* _tmp14_;
				ValaClass* _tmp15_;
				gboolean _tmp16_;
				gboolean* _tmp17_;
				_tmp13_ = cl;
				_tmp14_ = vala_class_get_base_class (_tmp13_);
				_tmp15_ = _tmp14_;
				_tmp16_ = vala_get_ccode_ref_function_void (_tmp15_);
				_tmp17_ = __bool_dup0 (&_tmp16_);
				_g_free0 (self->priv->_ref_function_void);
				self->priv->_ref_function_void = _tmp17_;
			} else {
				gboolean _tmp18_;
				gboolean* _tmp19_;
				_tmp18_ = FALSE;
				_tmp19_ = __bool_dup0 (&_tmp18_);
				_g_free0 (self->priv->_ref_function_void);
				self->priv->_ref_function_void = _tmp19_;
			}
			_vala_code_node_unref0 (cl);
		}
	}
	_tmp20_ = self->priv->_ref_function_void;
	result = *_tmp20_;
	return result;
}


const gchar* vala_ccode_attribute_get_unref_function (ValaCCodeAttribute* self) {
	const gchar* result;
	gboolean _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->unref_function_set;
	if (!_tmp0_) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "unref_function", NULL);
			_g_free0 (self->priv->_unref_function);
			self->priv->_unref_function = _tmp3_;
		}
		_tmp4_ = self->priv->_unref_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_unref_function (self);
			_g_free0 (self->priv->_unref_function);
			self->priv->_unref_function = _tmp5_;
		}
		self->priv->unref_function_set = TRUE;
	}
	_tmp6_ = self->priv->_unref_function;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_ref_sink_function (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_ref_sink_function;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "ref_sink_function", NULL);
			_g_free0 (self->priv->_ref_sink_function);
			self->priv->_ref_sink_function = _tmp3_;
		}
		_tmp4_ = self->priv->_ref_sink_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_ref_sink_function (self);
			_g_free0 (self->priv->_ref_sink_function);
			self->priv->_ref_sink_function = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_ref_sink_function;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_copy_function (ValaCCodeAttribute* self) {
	const gchar* result;
	gboolean _tmp0_;
	const gchar* _tmp10_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->copy_function_set;
	if (!_tmp0_) {
		ValaAttribute* _tmp1_;
		gboolean _tmp4_ = FALSE;
		const gchar* _tmp5_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "copy_function", NULL);
			_g_free0 (self->priv->_copy_function);
			self->priv->_copy_function = _tmp3_;
		}
		_tmp5_ = self->priv->_copy_function;
		if (_tmp5_ == NULL) {
			ValaSymbol* _tmp6_;
			_tmp6_ = self->priv->sym;
			_tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_STRUCT);
		} else {
			_tmp4_ = FALSE;
		}
		if (_tmp4_) {
			const gchar* _tmp7_;
			const gchar* _tmp8_;
			gchar* _tmp9_;
			_tmp7_ = vala_ccode_attribute_get_lower_case_prefix (self);
			_tmp8_ = _tmp7_;
			_tmp9_ = g_strdup_printf ("%scopy", _tmp8_);
			_g_free0 (self->priv->_copy_function);
			self->priv->_copy_function = _tmp9_;
		}
		self->priv->copy_function_set = TRUE;
	}
	_tmp10_ = self->priv->_copy_function;
	result = _tmp10_;
	return result;
}


const gchar* vala_ccode_attribute_get_destroy_function (ValaCCodeAttribute* self) {
	const gchar* result;
	gboolean _tmp0_;
	const gchar* _tmp10_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->destroy_function_set;
	if (!_tmp0_) {
		ValaAttribute* _tmp1_;
		gboolean _tmp4_ = FALSE;
		const gchar* _tmp5_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "destroy_function", NULL);
			_g_free0 (self->priv->_destroy_function);
			self->priv->_destroy_function = _tmp3_;
		}
		_tmp5_ = self->priv->_destroy_function;
		if (_tmp5_ == NULL) {
			ValaSymbol* _tmp6_;
			_tmp6_ = self->priv->sym;
			_tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp6_, VALA_TYPE_STRUCT);
		} else {
			_tmp4_ = FALSE;
		}
		if (_tmp4_) {
			const gchar* _tmp7_;
			const gchar* _tmp8_;
			gchar* _tmp9_;
			_tmp7_ = vala_ccode_attribute_get_lower_case_prefix (self);
			_tmp8_ = _tmp7_;
			_tmp9_ = g_strdup_printf ("%sdestroy", _tmp8_);
			_g_free0 (self->priv->_destroy_function);
			self->priv->_destroy_function = _tmp9_;
		}
		self->priv->destroy_function_set = TRUE;
	}
	_tmp10_ = self->priv->_destroy_function;
	result = _tmp10_;
	return result;
}


const gchar* vala_ccode_attribute_get_dup_function (ValaCCodeAttribute* self) {
	const gchar* result;
	gboolean _tmp0_;
	const gchar* _tmp14_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->dup_function_set;
	if (!_tmp0_) {
		ValaAttribute* _tmp1_;
		gboolean _tmp4_ = FALSE;
		gboolean _tmp5_ = FALSE;
		const gchar* _tmp6_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "dup_function", NULL);
			_g_free0 (self->priv->_dup_function);
			self->priv->_dup_function = _tmp3_;
		}
		_tmp6_ = self->priv->_dup_function;
		if (_tmp6_ == NULL) {
			ValaSymbol* _tmp7_;
			gboolean _tmp8_;
			gboolean _tmp9_;
			_tmp7_ = self->priv->sym;
			_tmp8_ = vala_symbol_get_external_package (_tmp7_);
			_tmp9_ = _tmp8_;
			_tmp5_ = !_tmp9_;
		} else {
			_tmp5_ = FALSE;
		}
		if (_tmp5_) {
			ValaSymbol* _tmp10_;
			_tmp10_ = self->priv->sym;
			_tmp4_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, VALA_TYPE_STRUCT);
		} else {
			_tmp4_ = FALSE;
		}
		if (_tmp4_) {
			const gchar* _tmp11_;
			const gchar* _tmp12_;
			gchar* _tmp13_;
			_tmp11_ = vala_ccode_attribute_get_lower_case_prefix (self);
			_tmp12_ = _tmp11_;
			_tmp13_ = g_strdup_printf ("%sdup", _tmp12_);
			_g_free0 (self->priv->_dup_function);
			self->priv->_dup_function = _tmp13_;
		}
		self->priv->dup_function_set = TRUE;
	}
	_tmp14_ = self->priv->_dup_function;
	result = _tmp14_;
	return result;
}


const gchar* vala_ccode_attribute_get_free_function (ValaCCodeAttribute* self) {
	const gchar* result;
	gboolean _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->free_function_set;
	if (!_tmp0_) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "free_function", NULL);
			_g_free0 (self->priv->_free_function);
			self->priv->_free_function = _tmp3_;
		}
		_tmp4_ = self->priv->_free_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_free_function (self);
			_g_free0 (self->priv->_free_function);
			self->priv->_free_function = _tmp5_;
		}
		self->priv->free_function_set = TRUE;
	}
	_tmp6_ = self->priv->_free_function;
	result = _tmp6_;
	return result;
}


gboolean vala_ccode_attribute_get_free_function_address_of (ValaCCodeAttribute* self) {
	gboolean result;
	gboolean* _tmp0_;
	gboolean* _tmp20_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_free_function_address_of;
	if (_tmp0_ == NULL) {
		gboolean _tmp1_ = FALSE;
		ValaAttribute* _tmp2_;
		_tmp2_ = self->priv->ccode;
		if (_tmp2_ != NULL) {
			ValaAttribute* _tmp3_;
			gboolean _tmp4_;
			_tmp3_ = self->priv->ccode;
			_tmp4_ = vala_attribute_has_argument (_tmp3_, "free_function_address_of");
			_tmp1_ = _tmp4_;
		} else {
			_tmp1_ = FALSE;
		}
		if (_tmp1_) {
			ValaAttribute* _tmp5_;
			gboolean _tmp6_;
			gboolean* _tmp7_;
			_tmp5_ = self->priv->ccode;
			_tmp6_ = vala_attribute_get_bool (_tmp5_, "free_function_address_of", FALSE);
			_tmp7_ = __bool_dup0 (&_tmp6_);
			_g_free0 (self->priv->_free_function_address_of);
			self->priv->_free_function_address_of = _tmp7_;
		} else {
			ValaClass* cl = NULL;
			ValaSymbol* _tmp8_;
			ValaClass* _tmp9_;
			ValaClass* _tmp10_;
			ValaClass* _tmp11_;
			ValaClass* _tmp12_;
			_tmp8_ = self->priv->sym;
			_tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_CLASS, ValaClass));
			cl = _tmp9_;
			_tmp10_ = cl;
			_tmp11_ = vala_class_get_base_class (_tmp10_);
			_tmp12_ = _tmp11_;
			if (_tmp12_ != NULL) {
				ValaClass* _tmp13_;
				ValaClass* _tmp14_;
				ValaClass* _tmp15_;
				gboolean _tmp16_;
				gboolean* _tmp17_;
				_tmp13_ = cl;
				_tmp14_ = vala_class_get_base_class (_tmp13_);
				_tmp15_ = _tmp14_;
				_tmp16_ = vala_get_ccode_free_function_address_of (_tmp15_);
				_tmp17_ = __bool_dup0 (&_tmp16_);
				_g_free0 (self->priv->_free_function_address_of);
				self->priv->_free_function_address_of = _tmp17_;
			} else {
				gboolean _tmp18_;
				gboolean* _tmp19_;
				_tmp18_ = FALSE;
				_tmp19_ = __bool_dup0 (&_tmp18_);
				_g_free0 (self->priv->_free_function_address_of);
				self->priv->_free_function_address_of = _tmp19_;
			}
			_vala_code_node_unref0 (cl);
		}
	}
	_tmp20_ = self->priv->_free_function_address_of;
	result = *_tmp20_;
	return result;
}


const gchar* vala_ccode_attribute_get_ctype (ValaCCodeAttribute* self) {
	const gchar* result;
	gboolean _tmp0_;
	const gchar* _tmp7_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->ctype_set;
	if (!_tmp0_) {
		ValaAttribute* _tmp1_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			const gchar* _tmp4_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "type", NULL);
			_g_free0 (self->priv->_ctype);
			self->priv->_ctype = _tmp3_;
			_tmp4_ = self->priv->_ctype;
			if (_tmp4_ == NULL) {
				ValaAttribute* _tmp5_;
				gchar* _tmp6_;
				_tmp5_ = self->priv->ccode;
				_tmp6_ = vala_attribute_get_string (_tmp5_, "ctype", NULL);
				_g_free0 (self->priv->_ctype);
				self->priv->_ctype = _tmp6_;
			}
		}
		self->priv->ctype_set = TRUE;
	}
	_tmp7_ = self->priv->_ctype;
	result = _tmp7_;
	return result;
}


const gchar* vala_ccode_attribute_get_type_id (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_type_id;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "type_id", NULL);
			_g_free0 (self->priv->_type_id);
			self->priv->_type_id = _tmp3_;
		}
		_tmp4_ = self->priv->_type_id;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_type_id (self);
			_g_free0 (self->priv->_type_id);
			self->priv->_type_id = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_type_id;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_marshaller_type_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_marshaller_type_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "marshaller_type_name", NULL);
			_g_free0 (self->priv->_marshaller_type_name);
			self->priv->_marshaller_type_name = _tmp3_;
		}
		_tmp4_ = self->priv->_marshaller_type_name;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_marshaller_type_name (self);
			_g_free0 (self->priv->_marshaller_type_name);
			self->priv->_marshaller_type_name = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_marshaller_type_name;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_get_value_function (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_get_value_function;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "get_value_function", NULL);
			_g_free0 (self->priv->_get_value_function);
			self->priv->_get_value_function = _tmp3_;
		}
		_tmp4_ = self->priv->_get_value_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_get_value_function (self);
			_g_free0 (self->priv->_get_value_function);
			self->priv->_get_value_function = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_get_value_function;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_set_value_function (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_set_value_function;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "set_value_function", NULL);
			_g_free0 (self->priv->_set_value_function);
			self->priv->_set_value_function = _tmp3_;
		}
		_tmp4_ = self->priv->_set_value_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_set_value_function (self);
			_g_free0 (self->priv->_set_value_function);
			self->priv->_set_value_function = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_set_value_function;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_take_value_function (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_take_value_function;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "take_value_function", NULL);
			_g_free0 (self->priv->_take_value_function);
			self->priv->_take_value_function = _tmp3_;
		}
		_tmp4_ = self->priv->_take_value_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_take_value_function (self);
			_g_free0 (self->priv->_take_value_function);
			self->priv->_take_value_function = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_take_value_function;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_param_spec_function (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_param_spec_function;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "param_spec_function", NULL);
			_g_free0 (self->priv->_param_spec_function);
			self->priv->_param_spec_function = _tmp3_;
		}
		_tmp4_ = self->priv->_param_spec_function;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_param_spec_function (self);
			_g_free0 (self->priv->_param_spec_function);
			self->priv->_param_spec_function = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_param_spec_function;
	result = _tmp6_;
	return result;
}


const gchar* vala_ccode_attribute_get_default_value (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp6_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_default_value;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "default_value", NULL);
			_g_free0 (self->priv->_default_value);
			self->priv->_default_value = _tmp3_;
		}
		_tmp4_ = self->priv->_default_value;
		if (_tmp4_ == NULL) {
			gchar* _tmp5_;
			_tmp5_ = vala_ccode_attribute_get_default_default_value (self);
			_g_free0 (self->priv->_default_value);
			self->priv->_default_value = _tmp5_;
		}
	}
	_tmp6_ = self->priv->_default_value;
	result = _tmp6_;
	return result;
}


gdouble vala_ccode_attribute_get_pos (ValaCCodeAttribute* self) {
	gdouble result;
	gdouble* _tmp0_;
	gdouble* _tmp24_;
	g_return_val_if_fail (self != NULL, 0.0);
	_tmp0_ = self->priv->_pos;
	if (_tmp0_ == NULL) {
		gboolean _tmp1_ = FALSE;
		ValaAttribute* _tmp2_;
		_tmp2_ = self->priv->ccode;
		if (_tmp2_ != NULL) {
			ValaAttribute* _tmp3_;
			gboolean _tmp4_;
			_tmp3_ = self->priv->ccode;
			_tmp4_ = vala_attribute_has_argument (_tmp3_, "pos");
			_tmp1_ = _tmp4_;
		} else {
			_tmp1_ = FALSE;
		}
		if (_tmp1_) {
			ValaAttribute* _tmp5_;
			gdouble _tmp6_;
			gdouble* _tmp7_;
			_tmp5_ = self->priv->ccode;
			_tmp6_ = vala_attribute_get_double (_tmp5_, "pos", (gdouble) 0);
			_tmp7_ = __double_dup0 (&_tmp6_);
			_g_free0 (self->priv->_pos);
			self->priv->_pos = _tmp7_;
		} else {
			ValaParameter* param = NULL;
			ValaCodeNode* _tmp8_;
			ValaParameter* _tmp9_;
			ValaSymbol* sym = NULL;
			ValaParameter* _tmp10_;
			ValaSymbol* _tmp11_;
			ValaSymbol* _tmp12_;
			ValaSymbol* _tmp13_;
			ValaSymbol* _tmp14_;
			_tmp8_ = self->priv->node;
			_tmp9_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp8_, VALA_TYPE_PARAMETER, ValaParameter));
			param = _tmp9_;
			_tmp10_ = param;
			_tmp11_ = vala_symbol_get_parent_symbol ((ValaSymbol*) _tmp10_);
			_tmp12_ = _tmp11_;
			_tmp13_ = _vala_code_node_ref0 (_tmp12_);
			sym = _tmp13_;
			_tmp14_ = sym;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp14_, VALA_TYPE_CALLABLE)) {
				ValaSymbol* _tmp15_;
				ValaList* _tmp16_;
				ValaList* _tmp17_;
				ValaParameter* _tmp18_;
				gint _tmp19_;
				gdouble _tmp20_;
				gdouble* _tmp21_;
				_tmp15_ = sym;
				_tmp16_ = vala_callable_get_parameters (G_TYPE_CHECK_INSTANCE_CAST (_tmp15_, VALA_TYPE_CALLABLE, ValaCallable));
				_tmp17_ = _tmp16_;
				_tmp18_ = param;
				_tmp19_ = vala_list_index_of (_tmp17_, _tmp18_);
				_tmp20_ = _tmp19_ + 1.0;
				_tmp21_ = __double_dup0 (&_tmp20_);
				_g_free0 (self->priv->_pos);
				self->priv->_pos = _tmp21_;
				_vala_iterable_unref0 (_tmp17_);
			} else {
				gdouble _tmp22_;
				gdouble* _tmp23_;
				_tmp22_ = 0.0;
				_tmp23_ = __double_dup0 (&_tmp22_);
				_g_free0 (self->priv->_pos);
				self->priv->_pos = _tmp23_;
			}
			_vala_code_node_unref0 (sym);
			_vala_code_node_unref0 (param);
		}
	}
	_tmp24_ = self->priv->_pos;
	result = *_tmp24_;
	return result;
}


const gchar* vala_ccode_attribute_get_real_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp8_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_real_name;
	if (_tmp0_ == NULL) {
		gboolean _tmp1_ = FALSE;
		ValaAttribute* _tmp2_;
		const gchar* _tmp6_;
		_tmp2_ = self->priv->ccode;
		if (_tmp2_ != NULL) {
			ValaSymbol* _tmp3_;
			_tmp3_ = self->priv->sym;
			_tmp1_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_CREATION_METHOD);
		} else {
			_tmp1_ = FALSE;
		}
		if (_tmp1_) {
			ValaAttribute* _tmp4_;
			gchar* _tmp5_;
			_tmp4_ = self->priv->ccode;
			_tmp5_ = vala_attribute_get_string (_tmp4_, "construct_function", NULL);
			_g_free0 (self->priv->_real_name);
			self->priv->_real_name = _tmp5_;
		}
		_tmp6_ = self->priv->_real_name;
		if (_tmp6_ == NULL) {
			gchar* _tmp7_;
			_tmp7_ = vala_ccode_attribute_get_default_real_name (self);
			_g_free0 (self->priv->_real_name);
			self->priv->_real_name = _tmp7_;
		}
	}
	_tmp8_ = self->priv->_real_name;
	result = _tmp8_;
	return result;
}


const gchar* vala_ccode_attribute_get_vfunc_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp20_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_vfunc_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "vfunc_name", NULL);
			_g_free0 (self->priv->_vfunc_name);
			self->priv->_vfunc_name = _tmp3_;
		}
		_tmp4_ = self->priv->_vfunc_name;
		if (_tmp4_ == NULL) {
			ValaMethod* m = NULL;
			ValaCodeNode* _tmp5_;
			ValaMethod* _tmp6_;
			gboolean _tmp7_ = FALSE;
			ValaMethod* _tmp8_;
			_tmp5_ = self->priv->node;
			_tmp6_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp5_) : NULL);
			m = _tmp6_;
			_tmp8_ = m;
			if (_tmp8_ != NULL) {
				ValaMethod* _tmp9_;
				ValaSignal* _tmp10_;
				ValaSignal* _tmp11_;
				_tmp9_ = m;
				_tmp10_ = vala_method_get_signal_reference (_tmp9_);
				_tmp11_ = _tmp10_;
				_tmp7_ = _tmp11_ != NULL;
			} else {
				_tmp7_ = FALSE;
			}
			if (_tmp7_) {
				ValaMethod* _tmp12_;
				ValaSignal* _tmp13_;
				ValaSignal* _tmp14_;
				gchar* _tmp15_;
				_tmp12_ = m;
				_tmp13_ = vala_method_get_signal_reference (_tmp12_);
				_tmp14_ = _tmp13_;
				_tmp15_ = vala_get_ccode_lower_case_name ((ValaCodeNode*) _tmp14_, NULL);
				_g_free0 (self->priv->_vfunc_name);
				self->priv->_vfunc_name = _tmp15_;
			} else {
				ValaSymbol* _tmp16_;
				const gchar* _tmp17_;
				const gchar* _tmp18_;
				gchar* _tmp19_;
				_tmp16_ = self->priv->sym;
				_tmp17_ = vala_symbol_get_name (_tmp16_);
				_tmp18_ = _tmp17_;
				_tmp19_ = g_strdup (_tmp18_);
				_g_free0 (self->priv->_vfunc_name);
				self->priv->_vfunc_name = _tmp19_;
			}
			_vala_code_node_unref0 (m);
		}
	}
	_tmp20_ = self->priv->_vfunc_name;
	result = _tmp20_;
	return result;
}


const gchar* vala_ccode_attribute_get_finish_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp11_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_finish_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp7_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			const gchar* _tmp4_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "finish_name", NULL);
			_g_free0 (self->priv->_finish_name);
			self->priv->_finish_name = _tmp3_;
			_tmp4_ = self->priv->_finish_name;
			if (_tmp4_ == NULL) {
				ValaAttribute* _tmp5_;
				gchar* _tmp6_;
				_tmp5_ = self->priv->ccode;
				_tmp6_ = vala_attribute_get_string (_tmp5_, "finish_function", NULL);
				_g_free0 (self->priv->_finish_name);
				self->priv->_finish_name = _tmp6_;
			}
		}
		_tmp7_ = self->priv->_finish_name;
		if (_tmp7_ == NULL) {
			const gchar* _tmp8_;
			const gchar* _tmp9_;
			gchar* _tmp10_;
			_tmp8_ = vala_ccode_attribute_get_name (self);
			_tmp9_ = _tmp8_;
			_tmp10_ = vala_ccode_attribute_get_finish_name_for_basename (self, _tmp9_);
			_g_free0 (self->priv->_finish_name);
			self->priv->_finish_name = _tmp10_;
		}
	}
	_tmp11_ = self->priv->_finish_name;
	result = _tmp11_;
	return result;
}


const gchar* vala_ccode_attribute_get_finish_vfunc_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp8_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_finish_vfunc_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "finish_vfunc_name", NULL);
			_g_free0 (self->priv->_finish_vfunc_name);
			self->priv->_finish_vfunc_name = _tmp3_;
		}
		_tmp4_ = self->priv->_finish_vfunc_name;
		if (_tmp4_ == NULL) {
			const gchar* _tmp5_;
			const gchar* _tmp6_;
			gchar* _tmp7_;
			_tmp5_ = vala_ccode_attribute_get_vfunc_name (self);
			_tmp6_ = _tmp5_;
			_tmp7_ = vala_ccode_attribute_get_finish_name_for_basename (self, _tmp6_);
			_g_free0 (self->priv->_finish_vfunc_name);
			self->priv->_finish_vfunc_name = _tmp7_;
		}
	}
	_tmp8_ = self->priv->_finish_vfunc_name;
	result = _tmp8_;
	return result;
}


const gchar* vala_ccode_attribute_get_finish_real_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp4_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_finish_real_name;
	if (_tmp0_ == NULL) {
		const gchar* _tmp1_;
		const gchar* _tmp2_;
		gchar* _tmp3_;
		_tmp1_ = vala_ccode_attribute_get_real_name (self);
		_tmp2_ = _tmp1_;
		_tmp3_ = vala_ccode_attribute_get_finish_name_for_basename (self, _tmp2_);
		_g_free0 (self->priv->_finish_real_name);
		self->priv->_finish_real_name = _tmp3_;
	}
	_tmp4_ = self->priv->_finish_real_name;
	result = _tmp4_;
	return result;
}


gboolean vala_ccode_attribute_get_finish_instance (ValaCCodeAttribute* self) {
	gboolean result;
	gboolean* _tmp0_;
	gboolean* _tmp22_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_finish_instance;
	if (_tmp0_ == NULL) {
		ValaMethod* m = NULL;
		ValaCodeNode* _tmp1_;
		ValaMethod* _tmp2_;
		gboolean is_creation_method = FALSE;
		ValaMethod* _tmp3_;
		gboolean _tmp4_ = FALSE;
		gboolean _tmp5_ = FALSE;
		gboolean _tmp6_ = FALSE;
		ValaAttribute* _tmp7_;
		_tmp1_ = self->priv->node;
		_tmp2_ = _vala_code_node_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, VALA_TYPE_METHOD) ? ((ValaMethod*) _tmp1_) : NULL);
		m = _tmp2_;
		_tmp3_ = m;
		is_creation_method = G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, VALA_TYPE_CREATION_METHOD);
		_tmp7_ = self->priv->ccode;
		if (_tmp7_ == NULL) {
			_tmp6_ = TRUE;
		} else {
			ValaMethod* _tmp8_;
			_tmp8_ = m;
			_tmp6_ = _tmp8_ == NULL;
		}
		if (_tmp6_) {
			_tmp5_ = TRUE;
		} else {
			ValaMethod* _tmp9_;
			gboolean _tmp10_;
			gboolean _tmp11_;
			_tmp9_ = m;
			_tmp10_ = vala_method_get_is_abstract (_tmp9_);
			_tmp11_ = _tmp10_;
			_tmp5_ = _tmp11_;
		}
		if (_tmp5_) {
			_tmp4_ = TRUE;
		} else {
			ValaMethod* _tmp12_;
			gboolean _tmp13_;
			gboolean _tmp14_;
			_tmp12_ = m;
			_tmp13_ = vala_method_get_is_virtual (_tmp12_);
			_tmp14_ = _tmp13_;
			_tmp4_ = _tmp14_;
		}
		if (_tmp4_) {
			gboolean _tmp15_;
			gboolean _tmp16_;
			gboolean* _tmp17_;
			_tmp15_ = is_creation_method;
			_tmp16_ = !_tmp15_;
			_tmp17_ = __bool_dup0 (&_tmp16_);
			_g_free0 (self->priv->_finish_instance);
			self->priv->_finish_instance = _tmp17_;
		} else {
			ValaAttribute* _tmp18_;
			gboolean _tmp19_;
			gboolean _tmp20_;
			gboolean* _tmp21_;
			_tmp18_ = self->priv->ccode;
			_tmp19_ = is_creation_method;
			_tmp20_ = vala_attribute_get_bool (_tmp18_, "finish_instance", !_tmp19_);
			_tmp21_ = __bool_dup0 (&_tmp20_);
			_g_free0 (self->priv->_finish_instance);
			self->priv->_finish_instance = _tmp21_;
		}
		_vala_code_node_unref0 (m);
	}
	_tmp22_ = self->priv->_finish_instance;
	result = *_tmp22_;
	return result;
}


const gchar* vala_ccode_attribute_get_delegate_target_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	const gchar* _tmp8_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_delegate_target_name;
	if (_tmp0_ == NULL) {
		ValaAttribute* _tmp1_;
		const gchar* _tmp4_;
		_tmp1_ = self->priv->ccode;
		if (_tmp1_ != NULL) {
			ValaAttribute* _tmp2_;
			gchar* _tmp3_;
			_tmp2_ = self->priv->ccode;
			_tmp3_ = vala_attribute_get_string (_tmp2_, "delegate_target_cname", NULL);
			_g_free0 (self->priv->_delegate_target_name);
			self->priv->_delegate_target_name = _tmp3_;
		}
		_tmp4_ = self->priv->_delegate_target_name;
		if (_tmp4_ == NULL) {
			const gchar* _tmp5_;
			const gchar* _tmp6_;
			gchar* _tmp7_;
			_tmp5_ = vala_ccode_attribute_get_name (self);
			_tmp6_ = _tmp5_;
			_tmp7_ = g_strdup_printf ("%s_target", _tmp6_);
			_g_free0 (self->priv->_delegate_target_name);
			self->priv->_delegate_target_name = _tmp7_;
		}
	}
	_tmp8_ = self->priv->_delegate_target_name;
	result = _tmp8_;
	return result;
}


gboolean vala_ccode_attribute_get_array_length (ValaCCodeAttribute* self) {
	gboolean result;
	gboolean* _tmp0_;
	gboolean* _tmp19_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_array_length;
	if (_tmp0_ == NULL) {
		ValaCodeNode* _tmp1_;
		ValaAttribute* _tmp2_;
		ValaAttribute* _tmp3_;
		gboolean _tmp4_;
		_tmp1_ = self->priv->node;
		_tmp2_ = vala_code_node_get_attribute (_tmp1_, "NoArrayLength");
		_tmp3_ = _tmp2_;
		_tmp4_ = _tmp3_ != NULL;
		_vala_code_node_unref0 (_tmp3_);
		if (_tmp4_) {
			ValaCodeNode* _tmp5_;
			ValaSourceReference* _tmp6_;
			ValaSourceReference* _tmp7_;
			gboolean _tmp8_;
			gboolean* _tmp9_;
			_tmp5_ = self->priv->node;
			_tmp6_ = vala_code_node_get_source_reference (_tmp5_);
			_tmp7_ = _tmp6_;
			vala_report_deprecated (_tmp7_, "[NoArrayLength] is deprecated, use [CCode (array_length = false)] inst" \
"ead.");
			_tmp8_ = FALSE;
			_tmp9_ = __bool_dup0 (&_tmp8_);
			_g_free0 (self->priv->_array_length);
			self->priv->_array_length = _tmp9_;
		} else {
			gboolean _tmp10_ = FALSE;
			ValaAttribute* _tmp11_;
			_tmp11_ = self->priv->ccode;
			if (_tmp11_ != NULL) {
				ValaAttribute* _tmp12_;
				gboolean _tmp13_;
				_tmp12_ = self->priv->ccode;
				_tmp13_ = vala_attribute_has_argument (_tmp12_, "array_length");
				_tmp10_ = _tmp13_;
			} else {
				_tmp10_ = FALSE;
			}
			if (_tmp10_) {
				ValaAttribute* _tmp14_;
				gboolean _tmp15_;
				gboolean* _tmp16_;
				_tmp14_ = self->priv->ccode;
				_tmp15_ = vala_attribute_get_bool (_tmp14_, "array_length", FALSE);
				_tmp16_ = __bool_dup0 (&_tmp15_);
				_g_free0 (self->priv->_array_length);
				self->priv->_array_length = _tmp16_;
			} else {
				gboolean _tmp17_;
				gboolean* _tmp18_;
				_tmp17_ = vala_ccode_attribute_get_default_array_length (self);
				_tmp18_ = __bool_dup0 (&_tmp17_);
				_g_free0 (self->priv->_array_length);
				self->priv->_array_length = _tmp18_;
			}
		}
	}
	_tmp19_ = self->priv->_array_length;
	result = *_tmp19_;
	return result;
}


gboolean vala_ccode_attribute_get_array_null_terminated (ValaCCodeAttribute* self) {
	gboolean result;
	gboolean* _tmp0_;
	gboolean* _tmp19_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_array_null_terminated;
	if (_tmp0_ == NULL) {
		gboolean _tmp1_ = FALSE;
		gboolean _tmp2_ = FALSE;
		ValaAttribute* _tmp3_;
		_tmp3_ = self->priv->ccode;
		if (_tmp3_ != NULL) {
			ValaAttribute* _tmp4_;
			gboolean _tmp5_;
			_tmp4_ = self->priv->ccode;
			_tmp5_ = vala_attribute_has_argument (_tmp4_, "array_length");
			_tmp2_ = _tmp5_;
		} else {
			_tmp2_ = FALSE;
		}
		if (_tmp2_) {
			ValaAttribute* _tmp6_;
			gboolean _tmp7_;
			_tmp6_ = self->priv->ccode;
			_tmp7_ = vala_attribute_get_bool (_tmp6_, "array_length", FALSE);
			_tmp1_ = _tmp7_;
		} else {
			_tmp1_ = FALSE;
		}
		if (_tmp1_) {
			gboolean _tmp8_;
			gboolean* _tmp9_;
			_tmp8_ = FALSE;
			_tmp9_ = __bool_dup0 (&_tmp8_);
			_g_free0 (self->priv->_array_null_terminated);
			self->priv->_array_null_terminated = _tmp9_;
		} else {
			gboolean _tmp10_ = FALSE;
			ValaAttribute* _tmp11_;
			_tmp11_ = self->priv->ccode;
			if (_tmp11_ != NULL) {
				ValaAttribute* _tmp12_;
				gboolean _tmp13_;
				_tmp12_ = self->priv->ccode;
				_tmp13_ = vala_attribute_has_argument (_tmp12_, "array_null_terminated");
				_tmp10_ = _tmp13_;
			} else {
				_tmp10_ = FALSE;
			}
			if (_tmp10_) {
				ValaAttribute* _tmp14_;
				gboolean _tmp15_;
				gboolean* _tmp16_;
				_tmp14_ = self->priv->ccode;
				_tmp15_ = vala_attribute_get_bool (_tmp14_, "array_null_terminated", FALSE);
				_tmp16_ = __bool_dup0 (&_tmp15_);
				_g_free0 (self->priv->_array_null_terminated);
				self->priv->_array_null_terminated = _tmp16_;
			} else {
				gboolean _tmp17_;
				gboolean* _tmp18_;
				_tmp17_ = vala_ccode_attribute_get_default_array_null_terminated (self);
				_tmp18_ = __bool_dup0 (&_tmp17_);
				_g_free0 (self->priv->_array_null_terminated);
				self->priv->_array_null_terminated = _tmp18_;
			}
		}
	}
	_tmp19_ = self->priv->_array_null_terminated;
	result = *_tmp19_;
	return result;
}


const gchar* vala_ccode_attribute_get_array_length_type (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_array_length_type;
	result = _tmp0_;
	return result;
}


static void vala_ccode_attribute_set_array_length_type (ValaCCodeAttribute* self, const gchar* value) {
	const gchar* _tmp0_;
	gchar* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	_tmp1_ = g_strdup (_tmp0_);
	_g_free0 (self->priv->_array_length_type);
	self->priv->_array_length_type = _tmp1_;
}


const gchar* vala_ccode_attribute_get_array_length_name (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_array_length_name;
	result = _tmp0_;
	return result;
}


static void vala_ccode_attribute_set_array_length_name (ValaCCodeAttribute* self, const gchar* value) {
	const gchar* _tmp0_;
	gchar* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	_tmp1_ = g_strdup (_tmp0_);
	_g_free0 (self->priv->_array_length_name);
	self->priv->_array_length_name = _tmp1_;
}


const gchar* vala_ccode_attribute_get_array_length_expr (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_array_length_expr;
	result = _tmp0_;
	return result;
}


static void vala_ccode_attribute_set_array_length_expr (ValaCCodeAttribute* self, const gchar* value) {
	const gchar* _tmp0_;
	gchar* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	_tmp1_ = g_strdup (_tmp0_);
	_g_free0 (self->priv->_array_length_expr);
	self->priv->_array_length_expr = _tmp1_;
}


gboolean vala_ccode_attribute_get_delegate_target (ValaCCodeAttribute* self) {
	gboolean result;
	gboolean _tmp0_;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_delegate_target;
	result = _tmp0_;
	return result;
}


static void vala_ccode_attribute_set_delegate_target (ValaCCodeAttribute* self, gboolean value) {
	gboolean _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	self->priv->_delegate_target = _tmp0_;
}


const gchar* vala_ccode_attribute_get_sentinel (ValaCCodeAttribute* self) {
	const gchar* result;
	const gchar* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->_sentinel;
	result = _tmp0_;
	return result;
}


static void vala_ccode_attribute_set_sentinel (ValaCCodeAttribute* self, const gchar* value) {
	const gchar* _tmp0_;
	gchar* _tmp1_;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	_tmp1_ = g_strdup (_tmp0_);
	_g_free0 (self->priv->_sentinel);
	self->priv->_sentinel = _tmp1_;
}


static void vala_ccode_attribute_class_init (ValaCCodeAttributeClass * klass) {
	vala_ccode_attribute_parent_class = g_type_class_peek_parent (klass);
	((ValaAttributeCacheClass *) klass)->finalize = vala_ccode_attribute_finalize;
	g_type_class_add_private (klass, sizeof (ValaCCodeAttributePrivate));
}


static void vala_ccode_attribute_instance_init (ValaCCodeAttribute * self) {
	self->priv = VALA_CCODE_ATTRIBUTE_GET_PRIVATE (self);
	self->priv->ctype_set = FALSE;
}


static void vala_ccode_attribute_finalize (ValaAttributeCache * obj) {
	ValaCCodeAttribute * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_CCODE_ATTRIBUTE, ValaCCodeAttribute);
	_vala_code_node_unref0 (self->priv->ccode);
	_g_free0 (self->priv->_array_length_type);
	_g_free0 (self->priv->_array_length_name);
	_g_free0 (self->priv->_array_length_expr);
	_g_free0 (self->priv->_sentinel);
	_g_free0 (self->priv->_name);
	_g_free0 (self->priv->_const_name);
	_g_free0 (self->priv->_type_name);
	_g_free0 (self->priv->_header_filenames);
	_g_free0 (self->priv->_prefix);
	_g_free0 (self->priv->_lower_case_prefix);
	_g_free0 (self->priv->_lower_case_suffix);
	_g_free0 (self->priv->_ref_function);
	_g_free0 (self->priv->_ref_function_void);
	_g_free0 (self->priv->_unref_function);
	_g_free0 (self->priv->_ref_sink_function);
	_g_free0 (self->priv->_copy_function);
	_g_free0 (self->priv->_destroy_function);
	_g_free0 (self->priv->_dup_function);
	_g_free0 (self->priv->_free_function);
	_g_free0 (self->priv->_free_function_address_of);
	_g_free0 (self->priv->_type_id);
	_g_free0 (self->priv->_marshaller_type_name);
	_g_free0 (self->priv->_get_value_function);
	_g_free0 (self->priv->_set_value_function);
	_g_free0 (self->priv->_take_value_function);
	_g_free0 (self->priv->_param_spec_function);
	_g_free0 (self->priv->_default_value);
	_g_free0 (self->priv->_pos);
	_g_free0 (self->priv->_vfunc_name);
	_g_free0 (self->priv->_finish_name);
	_g_free0 (self->priv->_finish_vfunc_name);
	_g_free0 (self->priv->_finish_real_name);
	_g_free0 (self->priv->_finish_instance);
	_g_free0 (self->priv->_real_name);
	_g_free0 (self->priv->_delegate_target_name);
	_g_free0 (self->priv->_ctype);
	_g_free0 (self->priv->_array_length);
	_g_free0 (self->priv->_array_null_terminated);
	VALA_ATTRIBUTE_CACHE_CLASS (vala_ccode_attribute_parent_class)->finalize (obj);
}


/**
 * Cache for the CCode attribute
 */
GType vala_ccode_attribute_get_type (void) {
	static volatile gsize vala_ccode_attribute_type_id__volatile = 0;
	if (g_once_init_enter (&vala_ccode_attribute_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ValaCCodeAttributeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_ccode_attribute_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaCCodeAttribute), 0, (GInstanceInitFunc) vala_ccode_attribute_instance_init, NULL };
		GType vala_ccode_attribute_type_id;
		vala_ccode_attribute_type_id = g_type_register_static (VALA_TYPE_ATTRIBUTE_CACHE, "ValaCCodeAttribute", &g_define_type_info, 0);
		g_once_init_leave (&vala_ccode_attribute_type_id__volatile, vala_ccode_attribute_type_id);
	}
	return vala_ccode_attribute_type_id__volatile;
}



