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

/* initializerbuilder.vala
 *
 * Copyright (C) 2011  Florian Brosch
 *
 * 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:
 * 	Florian Brosch <flo.brosch@gmail.com>
 */

#include <glib.h>
#include <glib-object.h>
#include <vala.h>
#include <valagee.h>
#include <valadoc.h>


#define VALADOC_API_TYPE_INITIALIZER_BUILDER (valadoc_api_initializer_builder_get_type ())
#define VALADOC_API_INITIALIZER_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALADOC_API_TYPE_INITIALIZER_BUILDER, ValadocApiInitializerBuilder))
#define VALADOC_API_INITIALIZER_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALADOC_API_TYPE_INITIALIZER_BUILDER, ValadocApiInitializerBuilderClass))
#define VALADOC_API_IS_INITIALIZER_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALADOC_API_TYPE_INITIALIZER_BUILDER))
#define VALADOC_API_IS_INITIALIZER_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALADOC_API_TYPE_INITIALIZER_BUILDER))
#define VALADOC_API_INITIALIZER_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALADOC_API_TYPE_INITIALIZER_BUILDER, ValadocApiInitializerBuilderClass))

typedef struct _ValadocApiInitializerBuilder ValadocApiInitializerBuilder;
typedef struct _ValadocApiInitializerBuilderClass ValadocApiInitializerBuilderClass;
typedef struct _ValadocApiInitializerBuilderPrivate ValadocApiInitializerBuilderPrivate;
#define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
#define _valadoc_api_signature_builder_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_api_signature_builder_unref (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))

struct _ValadocApiInitializerBuilder {
	ValaCodeVisitor parent_instance;
	ValadocApiInitializerBuilderPrivate * priv;
};

struct _ValadocApiInitializerBuilderClass {
	ValaCodeVisitorClass parent_class;
};

struct _ValadocApiInitializerBuilderPrivate {
	ValaHashMap* symbol_map;
	ValadocApiSignatureBuilder* signature;
};


static gpointer valadoc_api_initializer_builder_parent_class = NULL;

G_GNUC_INTERNAL GType valadoc_api_initializer_builder_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
#define VALADOC_API_INITIALIZER_BUILDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALADOC_API_TYPE_INITIALIZER_BUILDER, ValadocApiInitializerBuilderPrivate))
static ValadocApiSymbol* valadoc_api_initializer_builder_resolve (ValadocApiInitializerBuilder* self, ValaSymbol* symbol);
static void valadoc_api_initializer_builder_write_node (ValadocApiInitializerBuilder* self, ValaSymbol* vsymbol);
static void valadoc_api_initializer_builder_write_type (ValadocApiInitializerBuilder* self, ValaDataType* vsymbol);
static void valadoc_api_initializer_builder_real_visit_array_creation_expression (ValaCodeVisitor* base, ValaArrayCreationExpression* expr);
G_GNUC_INTERNAL ValadocApiInitializerBuilder* valadoc_api_initializer_builder_new (ValadocApiSignatureBuilder* signature, ValaHashMap* symbol_map);
G_GNUC_INTERNAL ValadocApiInitializerBuilder* valadoc_api_initializer_builder_construct (GType object_type, ValadocApiSignatureBuilder* signature, ValaHashMap* symbol_map);
static void valadoc_api_initializer_builder_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr);
static void valadoc_api_initializer_builder_real_visit_unary_expression (ValaCodeVisitor* base, ValaUnaryExpression* expr);
static void valadoc_api_initializer_builder_real_visit_assignment (ValaCodeVisitor* base, ValaAssignment* a);
static void valadoc_api_initializer_builder_real_visit_cast_expression (ValaCodeVisitor* base, ValaCastExpression* expr);
static void valadoc_api_initializer_builder_real_visit_initializer_list (ValaCodeVisitor* base, ValaInitializerList* list);
static void valadoc_api_initializer_builder_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr);
static void valadoc_api_initializer_builder_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr);
static void valadoc_api_initializer_builder_real_visit_pointer_indirection (ValaCodeVisitor* base, ValaPointerIndirection* expr);
static void valadoc_api_initializer_builder_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr);
static void valadoc_api_initializer_builder_real_visit_reference_transfer_expression (ValaCodeVisitor* base, ValaReferenceTransferExpression* expr);
static void valadoc_api_initializer_builder_real_visit_type_check (ValaCodeVisitor* base, ValaTypeCheck* expr);
static void valadoc_api_initializer_builder_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr);
static void valadoc_api_initializer_builder_real_visit_slice_expression (ValaCodeVisitor* base, ValaSliceExpression* expr);
static void valadoc_api_initializer_builder_real_visit_base_access (ValaCodeVisitor* base, ValaBaseAccess* expr);
static void valadoc_api_initializer_builder_real_visit_postfix_expression (ValaCodeVisitor* base, ValaPostfixExpression* expr);
static void valadoc_api_initializer_builder_real_visit_object_creation_expression (ValaCodeVisitor* base, ValaObjectCreationExpression* expr);
static void valadoc_api_initializer_builder_real_visit_sizeof_expression (ValaCodeVisitor* base, ValaSizeofExpression* expr);
static void valadoc_api_initializer_builder_real_visit_typeof_expression (ValaCodeVisitor* base, ValaTypeofExpression* expr);
static void valadoc_api_initializer_builder_real_visit_lambda_expression (ValaCodeVisitor* base, ValaLambdaExpression* expr);
static void valadoc_api_initializer_builder_real_visit_boolean_literal (ValaCodeVisitor* base, ValaBooleanLiteral* lit);
static void valadoc_api_initializer_builder_real_visit_character_literal (ValaCodeVisitor* base, ValaCharacterLiteral* lit);
static void valadoc_api_initializer_builder_real_visit_integer_literal (ValaCodeVisitor* base, ValaIntegerLiteral* lit);
static void valadoc_api_initializer_builder_real_visit_real_literal (ValaCodeVisitor* base, ValaRealLiteral* lit);
static void valadoc_api_initializer_builder_real_visit_regex_literal (ValaCodeVisitor* base, ValaRegexLiteral* lit);
static void valadoc_api_initializer_builder_real_visit_string_literal (ValaCodeVisitor* base, ValaStringLiteral* lit);
static void valadoc_api_initializer_builder_real_visit_null_literal (ValaCodeVisitor* base, ValaNullLiteral* lit);
static void valadoc_api_initializer_builder_real_visit_field (ValaCodeVisitor* base, ValaField* field);
static void valadoc_api_initializer_builder_real_visit_constant (ValaCodeVisitor* base, ValaConstant* constant);
static void valadoc_api_initializer_builder_real_visit_enum_value (ValaCodeVisitor* base, ValaEnumValue* ev);
static void valadoc_api_initializer_builder_real_visit_error_code (ValaCodeVisitor* base, ValaErrorCode* ec);
static void valadoc_api_initializer_builder_real_visit_delegate (ValaCodeVisitor* base, ValaDelegate* d);
static void valadoc_api_initializer_builder_real_visit_method (ValaCodeVisitor* base, ValaMethod* m);
static void valadoc_api_initializer_builder_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m);
static void valadoc_api_initializer_builder_real_visit_signal (ValaCodeVisitor* base, ValaSignal* sig);
static void valadoc_api_initializer_builder_real_visit_class (ValaCodeVisitor* base, ValaClass* c);
static void valadoc_api_initializer_builder_real_visit_struct (ValaCodeVisitor* base, ValaStruct* s);
static void valadoc_api_initializer_builder_real_visit_interface (ValaCodeVisitor* base, ValaInterface* i);
static void valadoc_api_initializer_builder_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en);
static void valadoc_api_initializer_builder_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* ed);
static void valadoc_api_initializer_builder_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop);
static void valadoc_api_initializer_builder_finalize (ValaCodeVisitor * obj);


static ValadocApiSymbol* valadoc_api_initializer_builder_resolve (ValadocApiInitializerBuilder* self, ValaSymbol* symbol) {
	ValadocApiSymbol* result = NULL;
	ValaHashMap* _tmp0_;
	ValaSymbol* _tmp1_;
	gpointer _tmp2_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (symbol != NULL, NULL);
	_tmp0_ = self->priv->symbol_map;
	_tmp1_ = symbol;
	_tmp2_ = vala_map_get ((ValaMap*) _tmp0_, _tmp1_);
	result = (ValadocApiSymbol*) _tmp2_;
	return result;
}


static void valadoc_api_initializer_builder_write_node (ValadocApiInitializerBuilder* self, ValaSymbol* vsymbol) {
	ValadocApiSignatureBuilder* _tmp0_;
	ValaSymbol* _tmp1_;
	ValadocApiSymbol* _tmp2_;
	ValadocApiSymbol* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (vsymbol != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = vsymbol;
	_tmp2_ = valadoc_api_initializer_builder_resolve (self, _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_symbol (_tmp0_, (ValadocApiNode*) _tmp3_, TRUE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_object_unref0 (_tmp3_);
}


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


static void valadoc_api_initializer_builder_write_type (ValadocApiInitializerBuilder* self, ValaDataType* vsymbol) {
	ValaDataType* _tmp0_;
	ValaTypeSymbol* _tmp1_;
	ValaTypeSymbol* _tmp2_;
	ValaList* type_args = NULL;
	ValaDataType* _tmp9_;
	ValaList* _tmp10_;
	ValaList* _tmp11_;
	gint _tmp12_;
	gint _tmp13_;
	ValaDataType* _tmp47_;
	gboolean _tmp48_;
	gboolean _tmp49_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (vsymbol != NULL);
	_tmp0_ = vsymbol;
	_tmp1_ = vala_data_type_get_data_type (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != NULL) {
		ValaDataType* _tmp3_;
		ValaTypeSymbol* _tmp4_;
		ValaTypeSymbol* _tmp5_;
		_tmp3_ = vsymbol;
		_tmp4_ = vala_data_type_get_data_type (_tmp3_);
		_tmp5_ = _tmp4_;
		valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp5_);
	} else {
		ValadocApiSignatureBuilder* _tmp6_;
		ValadocApiSignatureBuilder* _tmp7_;
		ValadocApiSignatureBuilder* _tmp8_;
		_tmp6_ = self->priv->signature;
		_tmp7_ = valadoc_api_signature_builder_append_literal (_tmp6_, "null", TRUE);
		_tmp8_ = _tmp7_;
		_valadoc_api_signature_builder_unref0 (_tmp8_);
	}
	_tmp9_ = vsymbol;
	_tmp10_ = vala_data_type_get_type_arguments (_tmp9_);
	type_args = _tmp10_;
	_tmp11_ = type_args;
	_tmp12_ = vala_collection_get_size ((ValaCollection*) _tmp11_);
	_tmp13_ = _tmp12_;
	if (_tmp13_ > 0) {
		ValadocApiSignatureBuilder* _tmp14_;
		ValadocApiSignatureBuilder* _tmp15_;
		ValadocApiSignatureBuilder* _tmp16_;
		gboolean first = FALSE;
		ValadocApiSignatureBuilder* _tmp44_;
		ValadocApiSignatureBuilder* _tmp45_;
		ValadocApiSignatureBuilder* _tmp46_;
		_tmp14_ = self->priv->signature;
		_tmp15_ = valadoc_api_signature_builder_append (_tmp14_, "<", TRUE);
		_tmp16_ = _tmp15_;
		_valadoc_api_signature_builder_unref0 (_tmp16_);
		first = TRUE;
		{
			ValaList* _type_arg_list = NULL;
			ValaList* _tmp17_;
			ValaList* _tmp18_;
			gint _type_arg_size = 0;
			ValaList* _tmp19_;
			gint _tmp20_;
			gint _tmp21_;
			gint _type_arg_index = 0;
			_tmp17_ = type_args;
			_tmp18_ = _vala_iterable_ref0 (_tmp17_);
			_type_arg_list = _tmp18_;
			_tmp19_ = _type_arg_list;
			_tmp20_ = vala_collection_get_size ((ValaCollection*) _tmp19_);
			_tmp21_ = _tmp20_;
			_type_arg_size = _tmp21_;
			_type_arg_index = -1;
			while (TRUE) {
				gint _tmp22_;
				gint _tmp23_;
				gint _tmp24_;
				ValaDataType* type_arg = NULL;
				ValaList* _tmp25_;
				gint _tmp26_;
				gpointer _tmp27_;
				gboolean _tmp28_;
				ValaDataType* _tmp32_;
				gboolean _tmp33_;
				gboolean _tmp34_;
				ValadocApiSignatureBuilder* _tmp38_;
				ValaDataType* _tmp39_;
				gchar* _tmp40_;
				gchar* _tmp41_;
				ValadocApiSignatureBuilder* _tmp42_;
				ValadocApiSignatureBuilder* _tmp43_;
				_tmp22_ = _type_arg_index;
				_type_arg_index = _tmp22_ + 1;
				_tmp23_ = _type_arg_index;
				_tmp24_ = _type_arg_size;
				if (!(_tmp23_ < _tmp24_)) {
					break;
				}
				_tmp25_ = _type_arg_list;
				_tmp26_ = _type_arg_index;
				_tmp27_ = vala_list_get (_tmp25_, _tmp26_);
				type_arg = (ValaDataType*) _tmp27_;
				_tmp28_ = first;
				if (!_tmp28_) {
					ValadocApiSignatureBuilder* _tmp29_;
					ValadocApiSignatureBuilder* _tmp30_;
					ValadocApiSignatureBuilder* _tmp31_;
					_tmp29_ = self->priv->signature;
					_tmp30_ = valadoc_api_signature_builder_append (_tmp29_, ",", TRUE);
					_tmp31_ = _tmp30_;
					_valadoc_api_signature_builder_unref0 (_tmp31_);
				} else {
					first = FALSE;
				}
				_tmp32_ = type_arg;
				_tmp33_ = vala_data_type_get_value_owned (_tmp32_);
				_tmp34_ = _tmp33_;
				if (!_tmp34_) {
					ValadocApiSignatureBuilder* _tmp35_;
					ValadocApiSignatureBuilder* _tmp36_;
					ValadocApiSignatureBuilder* _tmp37_;
					_tmp35_ = self->priv->signature;
					_tmp36_ = valadoc_api_signature_builder_append_keyword (_tmp35_, "weak", TRUE);
					_tmp37_ = _tmp36_;
					_valadoc_api_signature_builder_unref0 (_tmp37_);
				}
				_tmp38_ = self->priv->signature;
				_tmp39_ = type_arg;
				_tmp40_ = vala_data_type_to_qualified_string (_tmp39_, NULL);
				_tmp41_ = _tmp40_;
				_tmp42_ = valadoc_api_signature_builder_append (_tmp38_, _tmp41_, TRUE);
				_tmp43_ = _tmp42_;
				_valadoc_api_signature_builder_unref0 (_tmp43_);
				_g_free0 (_tmp41_);
				_vala_code_node_unref0 (type_arg);
			}
			_vala_iterable_unref0 (_type_arg_list);
		}
		_tmp44_ = self->priv->signature;
		_tmp45_ = valadoc_api_signature_builder_append (_tmp44_, ">", TRUE);
		_tmp46_ = _tmp45_;
		_valadoc_api_signature_builder_unref0 (_tmp46_);
	}
	_tmp47_ = vsymbol;
	_tmp48_ = vala_data_type_get_nullable (_tmp47_);
	_tmp49_ = _tmp48_;
	if (_tmp49_) {
		ValadocApiSignatureBuilder* _tmp50_;
		ValadocApiSignatureBuilder* _tmp51_;
		ValadocApiSignatureBuilder* _tmp52_;
		_tmp50_ = self->priv->signature;
		_tmp51_ = valadoc_api_signature_builder_append (_tmp50_, "?", TRUE);
		_tmp52_ = _tmp51_;
		_valadoc_api_signature_builder_unref0 (_tmp52_);
	}
	_vala_iterable_unref0 (type_args);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_array_creation_expression (ValaCodeVisitor* base, ValaArrayCreationExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValaArrayCreationExpression* _tmp3_;
	ValaDataType* _tmp4_;
	ValaDataType* _tmp5_;
	ValadocApiSignatureBuilder* _tmp6_;
	ValadocApiSignatureBuilder* _tmp7_;
	ValadocApiSignatureBuilder* _tmp8_;
	gboolean first = FALSE;
	ValadocApiSignatureBuilder* _tmp25_;
	ValadocApiSignatureBuilder* _tmp26_;
	ValadocApiSignatureBuilder* _tmp27_;
	ValaArrayCreationExpression* _tmp28_;
	ValaInitializerList* _tmp29_;
	ValaInitializerList* _tmp30_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append_keyword (_tmp0_, "new", TRUE);
	_tmp2_ = _tmp1_;
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	_tmp3_ = expr;
	_tmp4_ = vala_array_creation_expression_get_element_type (_tmp3_);
	_tmp5_ = _tmp4_;
	valadoc_api_initializer_builder_write_type (self, _tmp5_);
	_tmp6_ = self->priv->signature;
	_tmp7_ = valadoc_api_signature_builder_append (_tmp6_, "[", FALSE);
	_tmp8_ = _tmp7_;
	_valadoc_api_signature_builder_unref0 (_tmp8_);
	first = TRUE;
	{
		ValaList* _size_list = NULL;
		ValaArrayCreationExpression* _tmp9_;
		ValaList* _tmp10_;
		gint _size_size = 0;
		ValaList* _tmp11_;
		gint _tmp12_;
		gint _tmp13_;
		gint _size_index = 0;
		_tmp9_ = expr;
		_tmp10_ = vala_array_creation_expression_get_sizes (_tmp9_);
		_size_list = _tmp10_;
		_tmp11_ = _size_list;
		_tmp12_ = vala_collection_get_size ((ValaCollection*) _tmp11_);
		_tmp13_ = _tmp12_;
		_size_size = _tmp13_;
		_size_index = -1;
		while (TRUE) {
			gint _tmp14_;
			gint _tmp15_;
			gint _tmp16_;
			ValaExpression* size = NULL;
			ValaList* _tmp17_;
			gint _tmp18_;
			gpointer _tmp19_;
			gboolean _tmp20_;
			ValaExpression* _tmp24_;
			_tmp14_ = _size_index;
			_size_index = _tmp14_ + 1;
			_tmp15_ = _size_index;
			_tmp16_ = _size_size;
			if (!(_tmp15_ < _tmp16_)) {
				break;
			}
			_tmp17_ = _size_list;
			_tmp18_ = _size_index;
			_tmp19_ = vala_list_get (_tmp17_, _tmp18_);
			size = (ValaExpression*) _tmp19_;
			_tmp20_ = first;
			if (!_tmp20_) {
				ValadocApiSignatureBuilder* _tmp21_;
				ValadocApiSignatureBuilder* _tmp22_;
				ValadocApiSignatureBuilder* _tmp23_;
				_tmp21_ = self->priv->signature;
				_tmp22_ = valadoc_api_signature_builder_append (_tmp21_, ", ", FALSE);
				_tmp23_ = _tmp22_;
				_valadoc_api_signature_builder_unref0 (_tmp23_);
			}
			_tmp24_ = size;
			vala_code_node_accept ((ValaCodeNode*) _tmp24_, (ValaCodeVisitor*) self);
			first = FALSE;
			_vala_code_node_unref0 (size);
		}
		_vala_iterable_unref0 (_size_list);
	}
	_tmp25_ = self->priv->signature;
	_tmp26_ = valadoc_api_signature_builder_append (_tmp25_, "]", FALSE);
	_tmp27_ = _tmp26_;
	_valadoc_api_signature_builder_unref0 (_tmp27_);
	_tmp28_ = expr;
	_tmp29_ = vala_array_creation_expression_get_initializer_list (_tmp28_);
	_tmp30_ = _tmp29_;
	if (_tmp30_ != NULL) {
		ValadocApiSignatureBuilder* _tmp31_;
		ValadocApiSignatureBuilder* _tmp32_;
		ValadocApiSignatureBuilder* _tmp33_;
		ValaArrayCreationExpression* _tmp34_;
		ValaInitializerList* _tmp35_;
		ValaInitializerList* _tmp36_;
		_tmp31_ = self->priv->signature;
		_tmp32_ = valadoc_api_signature_builder_append (_tmp31_, " ", FALSE);
		_tmp33_ = _tmp32_;
		_valadoc_api_signature_builder_unref0 (_tmp33_);
		_tmp34_ = expr;
		_tmp35_ = vala_array_creation_expression_get_initializer_list (_tmp34_);
		_tmp36_ = _tmp35_;
		vala_code_node_accept ((ValaCodeNode*) _tmp36_, (ValaCodeVisitor*) self);
	}
}


static gpointer _vala_map_ref0 (gpointer self) {
	return self ? vala_map_ref (self) : NULL;
}


static gpointer _valadoc_api_signature_builder_ref0 (gpointer self) {
	return self ? valadoc_api_signature_builder_ref (self) : NULL;
}


G_GNUC_INTERNAL ValadocApiInitializerBuilder* valadoc_api_initializer_builder_construct (GType object_type, ValadocApiSignatureBuilder* signature, ValaHashMap* symbol_map) {
	ValadocApiInitializerBuilder* self = NULL;
	ValaHashMap* _tmp0_;
	ValaHashMap* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	g_return_val_if_fail (signature != NULL, NULL);
	g_return_val_if_fail (symbol_map != NULL, NULL);
	self = (ValadocApiInitializerBuilder*) vala_code_visitor_construct (object_type);
	_tmp0_ = symbol_map;
	_tmp1_ = _vala_map_ref0 (_tmp0_);
	_vala_map_unref0 (self->priv->symbol_map);
	self->priv->symbol_map = _tmp1_;
	_tmp2_ = signature;
	_tmp3_ = _valadoc_api_signature_builder_ref0 (_tmp2_);
	_valadoc_api_signature_builder_unref0 (self->priv->signature);
	self->priv->signature = _tmp3_;
	return self;
}


G_GNUC_INTERNAL ValadocApiInitializerBuilder* valadoc_api_initializer_builder_new (ValadocApiSignatureBuilder* signature, ValaHashMap* symbol_map) {
	return valadoc_api_initializer_builder_construct (VALADOC_API_TYPE_INITIALIZER_BUILDER, signature, symbol_map);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_binary_expression (ValaCodeVisitor* base, ValaBinaryExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValaBinaryExpression* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValaBinaryExpression* _tmp3_;
	ValaBinaryOperator _tmp4_;
	ValaBinaryOperator _tmp5_;
	ValaBinaryExpression* _tmp69_;
	ValaExpression* _tmp70_;
	ValaExpression* _tmp71_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_binary_expression_get_left (_tmp0_);
	_tmp2_ = _tmp1_;
	vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self);
	_tmp3_ = expr;
	_tmp4_ = vala_binary_expression_get_operator (_tmp3_);
	_tmp5_ = _tmp4_;
	switch (_tmp5_) {
		case VALA_BINARY_OPERATOR_PLUS:
		{
			ValadocApiSignatureBuilder* _tmp6_;
			ValadocApiSignatureBuilder* _tmp7_;
			ValadocApiSignatureBuilder* _tmp8_;
			_tmp6_ = self->priv->signature;
			_tmp7_ = valadoc_api_signature_builder_append (_tmp6_, "+ ", TRUE);
			_tmp8_ = _tmp7_;
			_valadoc_api_signature_builder_unref0 (_tmp8_);
			break;
		}
		case VALA_BINARY_OPERATOR_MINUS:
		{
			ValadocApiSignatureBuilder* _tmp9_;
			ValadocApiSignatureBuilder* _tmp10_;
			ValadocApiSignatureBuilder* _tmp11_;
			_tmp9_ = self->priv->signature;
			_tmp10_ = valadoc_api_signature_builder_append (_tmp9_, "- ", TRUE);
			_tmp11_ = _tmp10_;
			_valadoc_api_signature_builder_unref0 (_tmp11_);
			break;
		}
		case VALA_BINARY_OPERATOR_MUL:
		{
			ValadocApiSignatureBuilder* _tmp12_;
			ValadocApiSignatureBuilder* _tmp13_;
			ValadocApiSignatureBuilder* _tmp14_;
			_tmp12_ = self->priv->signature;
			_tmp13_ = valadoc_api_signature_builder_append (_tmp12_, "* ", TRUE);
			_tmp14_ = _tmp13_;
			_valadoc_api_signature_builder_unref0 (_tmp14_);
			break;
		}
		case VALA_BINARY_OPERATOR_DIV:
		{
			ValadocApiSignatureBuilder* _tmp15_;
			ValadocApiSignatureBuilder* _tmp16_;
			ValadocApiSignatureBuilder* _tmp17_;
			_tmp15_ = self->priv->signature;
			_tmp16_ = valadoc_api_signature_builder_append (_tmp15_, "/ ", TRUE);
			_tmp17_ = _tmp16_;
			_valadoc_api_signature_builder_unref0 (_tmp17_);
			break;
		}
		case VALA_BINARY_OPERATOR_MOD:
		{
			ValadocApiSignatureBuilder* _tmp18_;
			ValadocApiSignatureBuilder* _tmp19_;
			ValadocApiSignatureBuilder* _tmp20_;
			_tmp18_ = self->priv->signature;
			_tmp19_ = valadoc_api_signature_builder_append (_tmp18_, "% ", TRUE);
			_tmp20_ = _tmp19_;
			_valadoc_api_signature_builder_unref0 (_tmp20_);
			break;
		}
		case VALA_BINARY_OPERATOR_SHIFT_LEFT:
		{
			ValadocApiSignatureBuilder* _tmp21_;
			ValadocApiSignatureBuilder* _tmp22_;
			ValadocApiSignatureBuilder* _tmp23_;
			_tmp21_ = self->priv->signature;
			_tmp22_ = valadoc_api_signature_builder_append (_tmp21_, "<< ", TRUE);
			_tmp23_ = _tmp22_;
			_valadoc_api_signature_builder_unref0 (_tmp23_);
			break;
		}
		case VALA_BINARY_OPERATOR_SHIFT_RIGHT:
		{
			ValadocApiSignatureBuilder* _tmp24_;
			ValadocApiSignatureBuilder* _tmp25_;
			ValadocApiSignatureBuilder* _tmp26_;
			_tmp24_ = self->priv->signature;
			_tmp25_ = valadoc_api_signature_builder_append (_tmp24_, ">> ", TRUE);
			_tmp26_ = _tmp25_;
			_valadoc_api_signature_builder_unref0 (_tmp26_);
			break;
		}
		case VALA_BINARY_OPERATOR_LESS_THAN:
		{
			ValadocApiSignatureBuilder* _tmp27_;
			ValadocApiSignatureBuilder* _tmp28_;
			ValadocApiSignatureBuilder* _tmp29_;
			_tmp27_ = self->priv->signature;
			_tmp28_ = valadoc_api_signature_builder_append (_tmp27_, "< ", TRUE);
			_tmp29_ = _tmp28_;
			_valadoc_api_signature_builder_unref0 (_tmp29_);
			break;
		}
		case VALA_BINARY_OPERATOR_GREATER_THAN:
		{
			ValadocApiSignatureBuilder* _tmp30_;
			ValadocApiSignatureBuilder* _tmp31_;
			ValadocApiSignatureBuilder* _tmp32_;
			_tmp30_ = self->priv->signature;
			_tmp31_ = valadoc_api_signature_builder_append (_tmp30_, "> ", TRUE);
			_tmp32_ = _tmp31_;
			_valadoc_api_signature_builder_unref0 (_tmp32_);
			break;
		}
		case VALA_BINARY_OPERATOR_LESS_THAN_OR_EQUAL:
		{
			ValadocApiSignatureBuilder* _tmp33_;
			ValadocApiSignatureBuilder* _tmp34_;
			ValadocApiSignatureBuilder* _tmp35_;
			_tmp33_ = self->priv->signature;
			_tmp34_ = valadoc_api_signature_builder_append (_tmp33_, "<= ", TRUE);
			_tmp35_ = _tmp34_;
			_valadoc_api_signature_builder_unref0 (_tmp35_);
			break;
		}
		case VALA_BINARY_OPERATOR_GREATER_THAN_OR_EQUAL:
		{
			ValadocApiSignatureBuilder* _tmp36_;
			ValadocApiSignatureBuilder* _tmp37_;
			ValadocApiSignatureBuilder* _tmp38_;
			_tmp36_ = self->priv->signature;
			_tmp37_ = valadoc_api_signature_builder_append (_tmp36_, ">= ", TRUE);
			_tmp38_ = _tmp37_;
			_valadoc_api_signature_builder_unref0 (_tmp38_);
			break;
		}
		case VALA_BINARY_OPERATOR_EQUALITY:
		{
			ValadocApiSignatureBuilder* _tmp39_;
			ValadocApiSignatureBuilder* _tmp40_;
			ValadocApiSignatureBuilder* _tmp41_;
			_tmp39_ = self->priv->signature;
			_tmp40_ = valadoc_api_signature_builder_append (_tmp39_, "== ", TRUE);
			_tmp41_ = _tmp40_;
			_valadoc_api_signature_builder_unref0 (_tmp41_);
			break;
		}
		case VALA_BINARY_OPERATOR_INEQUALITY:
		{
			ValadocApiSignatureBuilder* _tmp42_;
			ValadocApiSignatureBuilder* _tmp43_;
			ValadocApiSignatureBuilder* _tmp44_;
			_tmp42_ = self->priv->signature;
			_tmp43_ = valadoc_api_signature_builder_append (_tmp42_, "!= ", TRUE);
			_tmp44_ = _tmp43_;
			_valadoc_api_signature_builder_unref0 (_tmp44_);
			break;
		}
		case VALA_BINARY_OPERATOR_BITWISE_AND:
		{
			ValadocApiSignatureBuilder* _tmp45_;
			ValadocApiSignatureBuilder* _tmp46_;
			ValadocApiSignatureBuilder* _tmp47_;
			_tmp45_ = self->priv->signature;
			_tmp46_ = valadoc_api_signature_builder_append (_tmp45_, "& ", TRUE);
			_tmp47_ = _tmp46_;
			_valadoc_api_signature_builder_unref0 (_tmp47_);
			break;
		}
		case VALA_BINARY_OPERATOR_BITWISE_OR:
		{
			ValadocApiSignatureBuilder* _tmp48_;
			ValadocApiSignatureBuilder* _tmp49_;
			ValadocApiSignatureBuilder* _tmp50_;
			_tmp48_ = self->priv->signature;
			_tmp49_ = valadoc_api_signature_builder_append (_tmp48_, "| ", TRUE);
			_tmp50_ = _tmp49_;
			_valadoc_api_signature_builder_unref0 (_tmp50_);
			break;
		}
		case VALA_BINARY_OPERATOR_BITWISE_XOR:
		{
			ValadocApiSignatureBuilder* _tmp51_;
			ValadocApiSignatureBuilder* _tmp52_;
			ValadocApiSignatureBuilder* _tmp53_;
			_tmp51_ = self->priv->signature;
			_tmp52_ = valadoc_api_signature_builder_append (_tmp51_, "^ ", TRUE);
			_tmp53_ = _tmp52_;
			_valadoc_api_signature_builder_unref0 (_tmp53_);
			break;
		}
		case VALA_BINARY_OPERATOR_AND:
		{
			ValadocApiSignatureBuilder* _tmp54_;
			ValadocApiSignatureBuilder* _tmp55_;
			ValadocApiSignatureBuilder* _tmp56_;
			_tmp54_ = self->priv->signature;
			_tmp55_ = valadoc_api_signature_builder_append (_tmp54_, "&& ", TRUE);
			_tmp56_ = _tmp55_;
			_valadoc_api_signature_builder_unref0 (_tmp56_);
			break;
		}
		case VALA_BINARY_OPERATOR_OR:
		{
			ValadocApiSignatureBuilder* _tmp57_;
			ValadocApiSignatureBuilder* _tmp58_;
			ValadocApiSignatureBuilder* _tmp59_;
			_tmp57_ = self->priv->signature;
			_tmp58_ = valadoc_api_signature_builder_append (_tmp57_, "|| ", TRUE);
			_tmp59_ = _tmp58_;
			_valadoc_api_signature_builder_unref0 (_tmp59_);
			break;
		}
		case VALA_BINARY_OPERATOR_IN:
		{
			ValadocApiSignatureBuilder* _tmp60_;
			ValadocApiSignatureBuilder* _tmp61_;
			ValadocApiSignatureBuilder* _tmp62_;
			ValadocApiSignatureBuilder* _tmp63_;
			ValadocApiSignatureBuilder* _tmp64_;
			ValadocApiSignatureBuilder* _tmp65_;
			_tmp60_ = self->priv->signature;
			_tmp61_ = valadoc_api_signature_builder_append_keyword (_tmp60_, "in", TRUE);
			_tmp62_ = _tmp61_;
			_valadoc_api_signature_builder_unref0 (_tmp62_);
			_tmp63_ = self->priv->signature;
			_tmp64_ = valadoc_api_signature_builder_append (_tmp63_, " ", TRUE);
			_tmp65_ = _tmp64_;
			_valadoc_api_signature_builder_unref0 (_tmp65_);
			break;
		}
		case VALA_BINARY_OPERATOR_COALESCE:
		{
			ValadocApiSignatureBuilder* _tmp66_;
			ValadocApiSignatureBuilder* _tmp67_;
			ValadocApiSignatureBuilder* _tmp68_;
			_tmp66_ = self->priv->signature;
			_tmp67_ = valadoc_api_signature_builder_append (_tmp66_, "?? ", TRUE);
			_tmp68_ = _tmp67_;
			_valadoc_api_signature_builder_unref0 (_tmp68_);
			break;
		}
		default:
		{
			g_assert_not_reached ();
		}
	}
	_tmp69_ = expr;
	_tmp70_ = vala_binary_expression_get_right (_tmp69_);
	_tmp71_ = _tmp70_;
	vala_code_node_accept ((ValaCodeNode*) _tmp71_, (ValaCodeVisitor*) self);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_unary_expression (ValaCodeVisitor* base, ValaUnaryExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValaUnaryExpression* _tmp0_;
	ValaUnaryOperator _tmp1_;
	ValaUnaryOperator _tmp2_;
	ValaUnaryExpression* _tmp27_;
	ValaExpression* _tmp28_;
	ValaExpression* _tmp29_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_unary_expression_get_operator (_tmp0_);
	_tmp2_ = _tmp1_;
	switch (_tmp2_) {
		case VALA_UNARY_OPERATOR_PLUS:
		{
			ValadocApiSignatureBuilder* _tmp3_;
			ValadocApiSignatureBuilder* _tmp4_;
			ValadocApiSignatureBuilder* _tmp5_;
			_tmp3_ = self->priv->signature;
			_tmp4_ = valadoc_api_signature_builder_append (_tmp3_, "+", TRUE);
			_tmp5_ = _tmp4_;
			_valadoc_api_signature_builder_unref0 (_tmp5_);
			break;
		}
		case VALA_UNARY_OPERATOR_MINUS:
		{
			ValadocApiSignatureBuilder* _tmp6_;
			ValadocApiSignatureBuilder* _tmp7_;
			ValadocApiSignatureBuilder* _tmp8_;
			_tmp6_ = self->priv->signature;
			_tmp7_ = valadoc_api_signature_builder_append (_tmp6_, "-", TRUE);
			_tmp8_ = _tmp7_;
			_valadoc_api_signature_builder_unref0 (_tmp8_);
			break;
		}
		case VALA_UNARY_OPERATOR_LOGICAL_NEGATION:
		{
			ValadocApiSignatureBuilder* _tmp9_;
			ValadocApiSignatureBuilder* _tmp10_;
			ValadocApiSignatureBuilder* _tmp11_;
			_tmp9_ = self->priv->signature;
			_tmp10_ = valadoc_api_signature_builder_append (_tmp9_, "!", TRUE);
			_tmp11_ = _tmp10_;
			_valadoc_api_signature_builder_unref0 (_tmp11_);
			break;
		}
		case VALA_UNARY_OPERATOR_BITWISE_COMPLEMENT:
		{
			ValadocApiSignatureBuilder* _tmp12_;
			ValadocApiSignatureBuilder* _tmp13_;
			ValadocApiSignatureBuilder* _tmp14_;
			_tmp12_ = self->priv->signature;
			_tmp13_ = valadoc_api_signature_builder_append (_tmp12_, "~", TRUE);
			_tmp14_ = _tmp13_;
			_valadoc_api_signature_builder_unref0 (_tmp14_);
			break;
		}
		case VALA_UNARY_OPERATOR_INCREMENT:
		{
			ValadocApiSignatureBuilder* _tmp15_;
			ValadocApiSignatureBuilder* _tmp16_;
			ValadocApiSignatureBuilder* _tmp17_;
			_tmp15_ = self->priv->signature;
			_tmp16_ = valadoc_api_signature_builder_append (_tmp15_, "++", TRUE);
			_tmp17_ = _tmp16_;
			_valadoc_api_signature_builder_unref0 (_tmp17_);
			break;
		}
		case VALA_UNARY_OPERATOR_DECREMENT:
		{
			ValadocApiSignatureBuilder* _tmp18_;
			ValadocApiSignatureBuilder* _tmp19_;
			ValadocApiSignatureBuilder* _tmp20_;
			_tmp18_ = self->priv->signature;
			_tmp19_ = valadoc_api_signature_builder_append (_tmp18_, "--", TRUE);
			_tmp20_ = _tmp19_;
			_valadoc_api_signature_builder_unref0 (_tmp20_);
			break;
		}
		case VALA_UNARY_OPERATOR_REF:
		{
			ValadocApiSignatureBuilder* _tmp21_;
			ValadocApiSignatureBuilder* _tmp22_;
			ValadocApiSignatureBuilder* _tmp23_;
			_tmp21_ = self->priv->signature;
			_tmp22_ = valadoc_api_signature_builder_append_keyword (_tmp21_, "ref", TRUE);
			_tmp23_ = _tmp22_;
			_valadoc_api_signature_builder_unref0 (_tmp23_);
			break;
		}
		case VALA_UNARY_OPERATOR_OUT:
		{
			ValadocApiSignatureBuilder* _tmp24_;
			ValadocApiSignatureBuilder* _tmp25_;
			ValadocApiSignatureBuilder* _tmp26_;
			_tmp24_ = self->priv->signature;
			_tmp25_ = valadoc_api_signature_builder_append_keyword (_tmp24_, "out", TRUE);
			_tmp26_ = _tmp25_;
			_valadoc_api_signature_builder_unref0 (_tmp26_);
			break;
		}
		default:
		{
			g_assert_not_reached ();
		}
	}
	_tmp27_ = expr;
	_tmp28_ = vala_unary_expression_get_inner (_tmp27_);
	_tmp29_ = _tmp28_;
	vala_code_node_accept ((ValaCodeNode*) _tmp29_, (ValaCodeVisitor*) self);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_assignment (ValaCodeVisitor* base, ValaAssignment* a) {
	ValadocApiInitializerBuilder * self;
	ValaAssignment* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValaAssignment* _tmp3_;
	ValaAssignmentOperator _tmp4_;
	ValaAssignmentOperator _tmp5_;
	ValaAssignment* _tmp39_;
	ValaExpression* _tmp40_;
	ValaExpression* _tmp41_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (a != NULL);
	_tmp0_ = a;
	_tmp1_ = vala_assignment_get_left (_tmp0_);
	_tmp2_ = _tmp1_;
	vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self);
	_tmp3_ = a;
	_tmp4_ = vala_assignment_get_operator (_tmp3_);
	_tmp5_ = _tmp4_;
	switch (_tmp5_) {
		case VALA_ASSIGNMENT_OPERATOR_SIMPLE:
		{
			ValadocApiSignatureBuilder* _tmp6_;
			ValadocApiSignatureBuilder* _tmp7_;
			ValadocApiSignatureBuilder* _tmp8_;
			_tmp6_ = self->priv->signature;
			_tmp7_ = valadoc_api_signature_builder_append (_tmp6_, "=", TRUE);
			_tmp8_ = _tmp7_;
			_valadoc_api_signature_builder_unref0 (_tmp8_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_BITWISE_OR:
		{
			ValadocApiSignatureBuilder* _tmp9_;
			ValadocApiSignatureBuilder* _tmp10_;
			ValadocApiSignatureBuilder* _tmp11_;
			_tmp9_ = self->priv->signature;
			_tmp10_ = valadoc_api_signature_builder_append (_tmp9_, "|", TRUE);
			_tmp11_ = _tmp10_;
			_valadoc_api_signature_builder_unref0 (_tmp11_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_BITWISE_AND:
		{
			ValadocApiSignatureBuilder* _tmp12_;
			ValadocApiSignatureBuilder* _tmp13_;
			ValadocApiSignatureBuilder* _tmp14_;
			_tmp12_ = self->priv->signature;
			_tmp13_ = valadoc_api_signature_builder_append (_tmp12_, "&", TRUE);
			_tmp14_ = _tmp13_;
			_valadoc_api_signature_builder_unref0 (_tmp14_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_BITWISE_XOR:
		{
			ValadocApiSignatureBuilder* _tmp15_;
			ValadocApiSignatureBuilder* _tmp16_;
			ValadocApiSignatureBuilder* _tmp17_;
			_tmp15_ = self->priv->signature;
			_tmp16_ = valadoc_api_signature_builder_append (_tmp15_, "^", TRUE);
			_tmp17_ = _tmp16_;
			_valadoc_api_signature_builder_unref0 (_tmp17_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_ADD:
		{
			ValadocApiSignatureBuilder* _tmp18_;
			ValadocApiSignatureBuilder* _tmp19_;
			ValadocApiSignatureBuilder* _tmp20_;
			_tmp18_ = self->priv->signature;
			_tmp19_ = valadoc_api_signature_builder_append (_tmp18_, "+", TRUE);
			_tmp20_ = _tmp19_;
			_valadoc_api_signature_builder_unref0 (_tmp20_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_SUB:
		{
			ValadocApiSignatureBuilder* _tmp21_;
			ValadocApiSignatureBuilder* _tmp22_;
			ValadocApiSignatureBuilder* _tmp23_;
			_tmp21_ = self->priv->signature;
			_tmp22_ = valadoc_api_signature_builder_append (_tmp21_, "-", TRUE);
			_tmp23_ = _tmp22_;
			_valadoc_api_signature_builder_unref0 (_tmp23_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_MUL:
		{
			ValadocApiSignatureBuilder* _tmp24_;
			ValadocApiSignatureBuilder* _tmp25_;
			ValadocApiSignatureBuilder* _tmp26_;
			_tmp24_ = self->priv->signature;
			_tmp25_ = valadoc_api_signature_builder_append (_tmp24_, "*", TRUE);
			_tmp26_ = _tmp25_;
			_valadoc_api_signature_builder_unref0 (_tmp26_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_DIV:
		{
			ValadocApiSignatureBuilder* _tmp27_;
			ValadocApiSignatureBuilder* _tmp28_;
			ValadocApiSignatureBuilder* _tmp29_;
			_tmp27_ = self->priv->signature;
			_tmp28_ = valadoc_api_signature_builder_append (_tmp27_, "/", TRUE);
			_tmp29_ = _tmp28_;
			_valadoc_api_signature_builder_unref0 (_tmp29_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_PERCENT:
		{
			ValadocApiSignatureBuilder* _tmp30_;
			ValadocApiSignatureBuilder* _tmp31_;
			ValadocApiSignatureBuilder* _tmp32_;
			_tmp30_ = self->priv->signature;
			_tmp31_ = valadoc_api_signature_builder_append (_tmp30_, "%", TRUE);
			_tmp32_ = _tmp31_;
			_valadoc_api_signature_builder_unref0 (_tmp32_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_SHIFT_LEFT:
		{
			ValadocApiSignatureBuilder* _tmp33_;
			ValadocApiSignatureBuilder* _tmp34_;
			ValadocApiSignatureBuilder* _tmp35_;
			_tmp33_ = self->priv->signature;
			_tmp34_ = valadoc_api_signature_builder_append (_tmp33_, "<<", TRUE);
			_tmp35_ = _tmp34_;
			_valadoc_api_signature_builder_unref0 (_tmp35_);
			break;
		}
		case VALA_ASSIGNMENT_OPERATOR_SHIFT_RIGHT:
		{
			ValadocApiSignatureBuilder* _tmp36_;
			ValadocApiSignatureBuilder* _tmp37_;
			ValadocApiSignatureBuilder* _tmp38_;
			_tmp36_ = self->priv->signature;
			_tmp37_ = valadoc_api_signature_builder_append (_tmp36_, ">>", TRUE);
			_tmp38_ = _tmp37_;
			_valadoc_api_signature_builder_unref0 (_tmp38_);
			break;
		}
		default:
		{
			g_assert_not_reached ();
		}
	}
	_tmp39_ = a;
	_tmp40_ = vala_assignment_get_right (_tmp39_);
	_tmp41_ = _tmp40_;
	vala_code_node_accept ((ValaCodeNode*) _tmp41_, (ValaCodeVisitor*) self);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_cast_expression (ValaCodeVisitor* base, ValaCastExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValaCastExpression* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	ValaCastExpression* _tmp9_;
	gboolean _tmp10_;
	gboolean _tmp11_;
	ValaCastExpression* _tmp21_;
	ValaExpression* _tmp22_;
	ValaExpression* _tmp23_;
	ValaCastExpression* _tmp24_;
	gboolean _tmp25_;
	gboolean _tmp26_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_cast_expression_get_is_non_null_cast (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_) {
		ValadocApiSignatureBuilder* _tmp3_;
		ValadocApiSignatureBuilder* _tmp4_;
		ValadocApiSignatureBuilder* _tmp5_;
		ValaCastExpression* _tmp6_;
		ValaExpression* _tmp7_;
		ValaExpression* _tmp8_;
		_tmp3_ = self->priv->signature;
		_tmp4_ = valadoc_api_signature_builder_append (_tmp3_, "(!)", TRUE);
		_tmp5_ = _tmp4_;
		_valadoc_api_signature_builder_unref0 (_tmp5_);
		_tmp6_ = expr;
		_tmp7_ = vala_cast_expression_get_inner (_tmp6_);
		_tmp8_ = _tmp7_;
		vala_code_node_accept ((ValaCodeNode*) _tmp8_, (ValaCodeVisitor*) self);
		return;
	}
	_tmp9_ = expr;
	_tmp10_ = vala_cast_expression_get_is_silent_cast (_tmp9_);
	_tmp11_ = _tmp10_;
	if (!_tmp11_) {
		ValadocApiSignatureBuilder* _tmp12_;
		ValadocApiSignatureBuilder* _tmp13_;
		ValadocApiSignatureBuilder* _tmp14_;
		ValaCastExpression* _tmp15_;
		ValaDataType* _tmp16_;
		ValaDataType* _tmp17_;
		ValadocApiSignatureBuilder* _tmp18_;
		ValadocApiSignatureBuilder* _tmp19_;
		ValadocApiSignatureBuilder* _tmp20_;
		_tmp12_ = self->priv->signature;
		_tmp13_ = valadoc_api_signature_builder_append (_tmp12_, "(", FALSE);
		_tmp14_ = _tmp13_;
		_valadoc_api_signature_builder_unref0 (_tmp14_);
		_tmp15_ = expr;
		_tmp16_ = vala_cast_expression_get_type_reference (_tmp15_);
		_tmp17_ = _tmp16_;
		valadoc_api_initializer_builder_write_type (self, _tmp17_);
		_tmp18_ = self->priv->signature;
		_tmp19_ = valadoc_api_signature_builder_append (_tmp18_, ")", FALSE);
		_tmp20_ = _tmp19_;
		_valadoc_api_signature_builder_unref0 (_tmp20_);
	}
	_tmp21_ = expr;
	_tmp22_ = vala_cast_expression_get_inner (_tmp21_);
	_tmp23_ = _tmp22_;
	vala_code_node_accept ((ValaCodeNode*) _tmp23_, (ValaCodeVisitor*) self);
	_tmp24_ = expr;
	_tmp25_ = vala_cast_expression_get_is_silent_cast (_tmp24_);
	_tmp26_ = _tmp25_;
	if (_tmp26_) {
		ValadocApiSignatureBuilder* _tmp27_;
		ValadocApiSignatureBuilder* _tmp28_;
		ValadocApiSignatureBuilder* _tmp29_;
		ValaCastExpression* _tmp30_;
		ValaDataType* _tmp31_;
		ValaDataType* _tmp32_;
		_tmp27_ = self->priv->signature;
		_tmp28_ = valadoc_api_signature_builder_append_keyword (_tmp27_, "as", TRUE);
		_tmp29_ = _tmp28_;
		_valadoc_api_signature_builder_unref0 (_tmp29_);
		_tmp30_ = expr;
		_tmp31_ = vala_cast_expression_get_type_reference (_tmp30_);
		_tmp32_ = _tmp31_;
		valadoc_api_initializer_builder_write_type (self, _tmp32_);
	}
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_initializer_list (ValaCodeVisitor* base, ValaInitializerList* list) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	gboolean first = FALSE;
	ValadocApiSignatureBuilder* _tmp19_;
	ValadocApiSignatureBuilder* _tmp20_;
	ValadocApiSignatureBuilder* _tmp21_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (list != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append (_tmp0_, "{", FALSE);
	_tmp2_ = _tmp1_;
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	first = TRUE;
	{
		ValaList* _initializer_list = NULL;
		ValaInitializerList* _tmp3_;
		ValaList* _tmp4_;
		gint _initializer_size = 0;
		ValaList* _tmp5_;
		gint _tmp6_;
		gint _tmp7_;
		gint _initializer_index = 0;
		_tmp3_ = list;
		_tmp4_ = vala_initializer_list_get_initializers (_tmp3_);
		_initializer_list = _tmp4_;
		_tmp5_ = _initializer_list;
		_tmp6_ = vala_collection_get_size ((ValaCollection*) _tmp5_);
		_tmp7_ = _tmp6_;
		_initializer_size = _tmp7_;
		_initializer_index = -1;
		while (TRUE) {
			gint _tmp8_;
			gint _tmp9_;
			gint _tmp10_;
			ValaExpression* initializer = NULL;
			ValaList* _tmp11_;
			gint _tmp12_;
			gpointer _tmp13_;
			gboolean _tmp14_;
			ValaExpression* _tmp18_;
			_tmp8_ = _initializer_index;
			_initializer_index = _tmp8_ + 1;
			_tmp9_ = _initializer_index;
			_tmp10_ = _initializer_size;
			if (!(_tmp9_ < _tmp10_)) {
				break;
			}
			_tmp11_ = _initializer_list;
			_tmp12_ = _initializer_index;
			_tmp13_ = vala_list_get (_tmp11_, _tmp12_);
			initializer = (ValaExpression*) _tmp13_;
			_tmp14_ = first;
			if (!_tmp14_) {
				ValadocApiSignatureBuilder* _tmp15_;
				ValadocApiSignatureBuilder* _tmp16_;
				ValadocApiSignatureBuilder* _tmp17_;
				_tmp15_ = self->priv->signature;
				_tmp16_ = valadoc_api_signature_builder_append (_tmp15_, ", ", FALSE);
				_tmp17_ = _tmp16_;
				_valadoc_api_signature_builder_unref0 (_tmp17_);
			}
			first = FALSE;
			_tmp18_ = initializer;
			vala_code_node_accept ((ValaCodeNode*) _tmp18_, (ValaCodeVisitor*) self);
			_vala_code_node_unref0 (initializer);
		}
		_vala_iterable_unref0 (_initializer_list);
	}
	_tmp19_ = self->priv->signature;
	_tmp20_ = valadoc_api_signature_builder_append (_tmp19_, "}", FALSE);
	_tmp21_ = _tmp20_;
	_valadoc_api_signature_builder_unref0 (_tmp21_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_member_access (ValaCodeVisitor* base, ValaMemberAccess* expr) {
	ValadocApiInitializerBuilder * self;
	ValaMemberAccess* _tmp0_;
	ValaSymbol* _tmp1_;
	ValaSymbol* _tmp2_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != NULL) {
		ValaMemberAccess* _tmp3_;
		ValaSymbol* _tmp4_;
		ValaSymbol* _tmp5_;
		_tmp3_ = expr;
		_tmp4_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp3_);
		_tmp5_ = _tmp4_;
		vala_code_node_accept ((ValaCodeNode*) _tmp5_, (ValaCodeVisitor*) self);
	} else {
		ValadocApiSignatureBuilder* _tmp6_;
		ValaMemberAccess* _tmp7_;
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		ValadocApiSignatureBuilder* _tmp10_;
		ValadocApiSignatureBuilder* _tmp11_;
		_tmp6_ = self->priv->signature;
		_tmp7_ = expr;
		_tmp8_ = vala_member_access_get_member_name (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = valadoc_api_signature_builder_append (_tmp6_, _tmp9_, TRUE);
		_tmp11_ = _tmp10_;
		_valadoc_api_signature_builder_unref0 (_tmp11_);
	}
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_element_access (ValaCodeVisitor* base, ValaElementAccess* expr) {
	ValadocApiInitializerBuilder * self;
	ValaElementAccess* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	gboolean first = FALSE;
	ValadocApiSignatureBuilder* _tmp22_;
	ValadocApiSignatureBuilder* _tmp23_;
	ValadocApiSignatureBuilder* _tmp24_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_element_access_get_container (_tmp0_);
	_tmp2_ = _tmp1_;
	vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self);
	_tmp3_ = self->priv->signature;
	_tmp4_ = valadoc_api_signature_builder_append (_tmp3_, "[", FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	first = TRUE;
	{
		ValaList* _index_list = NULL;
		ValaElementAccess* _tmp6_;
		ValaList* _tmp7_;
		gint _index_size = 0;
		ValaList* _tmp8_;
		gint _tmp9_;
		gint _tmp10_;
		gint _index_index = 0;
		_tmp6_ = expr;
		_tmp7_ = vala_element_access_get_indices (_tmp6_);
		_index_list = _tmp7_;
		_tmp8_ = _index_list;
		_tmp9_ = vala_collection_get_size ((ValaCollection*) _tmp8_);
		_tmp10_ = _tmp9_;
		_index_size = _tmp10_;
		_index_index = -1;
		while (TRUE) {
			gint _tmp11_;
			gint _tmp12_;
			gint _tmp13_;
			ValaExpression* index = NULL;
			ValaList* _tmp14_;
			gint _tmp15_;
			gpointer _tmp16_;
			gboolean _tmp17_;
			ValaExpression* _tmp21_;
			_tmp11_ = _index_index;
			_index_index = _tmp11_ + 1;
			_tmp12_ = _index_index;
			_tmp13_ = _index_size;
			if (!(_tmp12_ < _tmp13_)) {
				break;
			}
			_tmp14_ = _index_list;
			_tmp15_ = _index_index;
			_tmp16_ = vala_list_get (_tmp14_, _tmp15_);
			index = (ValaExpression*) _tmp16_;
			_tmp17_ = first;
			if (!_tmp17_) {
				ValadocApiSignatureBuilder* _tmp18_;
				ValadocApiSignatureBuilder* _tmp19_;
				ValadocApiSignatureBuilder* _tmp20_;
				_tmp18_ = self->priv->signature;
				_tmp19_ = valadoc_api_signature_builder_append (_tmp18_, ", ", FALSE);
				_tmp20_ = _tmp19_;
				_valadoc_api_signature_builder_unref0 (_tmp20_);
			}
			first = FALSE;
			_tmp21_ = index;
			vala_code_node_accept ((ValaCodeNode*) _tmp21_, (ValaCodeVisitor*) self);
			_vala_code_node_unref0 (index);
		}
		_vala_iterable_unref0 (_index_list);
	}
	_tmp22_ = self->priv->signature;
	_tmp23_ = valadoc_api_signature_builder_append (_tmp22_, "]", FALSE);
	_tmp24_ = _tmp23_;
	_valadoc_api_signature_builder_unref0 (_tmp24_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_pointer_indirection (ValaCodeVisitor* base, ValaPointerIndirection* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValaPointerIndirection* _tmp3_;
	ValaExpression* _tmp4_;
	ValaExpression* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append (_tmp0_, "*", FALSE);
	_tmp2_ = _tmp1_;
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	_tmp3_ = expr;
	_tmp4_ = vala_pointer_indirection_get_inner (_tmp3_);
	_tmp5_ = _tmp4_;
	vala_code_node_accept ((ValaCodeNode*) _tmp5_, (ValaCodeVisitor*) self);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_addressof_expression (ValaCodeVisitor* base, ValaAddressofExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValaAddressofExpression* _tmp3_;
	ValaExpression* _tmp4_;
	ValaExpression* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append (_tmp0_, "&", FALSE);
	_tmp2_ = _tmp1_;
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	_tmp3_ = expr;
	_tmp4_ = vala_addressof_expression_get_inner (_tmp3_);
	_tmp5_ = _tmp4_;
	vala_code_node_accept ((ValaCodeNode*) _tmp5_, (ValaCodeVisitor*) self);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_reference_transfer_expression (ValaCodeVisitor* base, ValaReferenceTransferExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	ValadocApiSignatureBuilder* _tmp6_;
	ValaReferenceTransferExpression* _tmp7_;
	ValaExpression* _tmp8_;
	ValaExpression* _tmp9_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append (_tmp0_, "(", FALSE);
	_tmp2_ = _tmp1_;
	_tmp3_ = valadoc_api_signature_builder_append_keyword (_tmp2_, "owned", FALSE);
	_tmp4_ = _tmp3_;
	_tmp5_ = valadoc_api_signature_builder_append (_tmp4_, ")", FALSE);
	_tmp6_ = _tmp5_;
	_valadoc_api_signature_builder_unref0 (_tmp6_);
	_valadoc_api_signature_builder_unref0 (_tmp4_);
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	_tmp7_ = expr;
	_tmp8_ = vala_reference_transfer_expression_get_inner (_tmp7_);
	_tmp9_ = _tmp8_;
	vala_code_node_accept ((ValaCodeNode*) _tmp9_, (ValaCodeVisitor*) self);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_type_check (ValaCodeVisitor* base, ValaTypeCheck* expr) {
	ValadocApiInitializerBuilder * self;
	ValaTypeCheck* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	ValaTypeCheck* _tmp6_;
	ValaDataType* _tmp7_;
	ValaDataType* _tmp8_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_typecheck_get_expression (_tmp0_);
	_tmp2_ = _tmp1_;
	vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self);
	_tmp3_ = self->priv->signature;
	_tmp4_ = valadoc_api_signature_builder_append_keyword (_tmp3_, "is", TRUE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_tmp6_ = expr;
	_tmp7_ = vala_typecheck_get_type_reference (_tmp6_);
	_tmp8_ = _tmp7_;
	valadoc_api_initializer_builder_write_type (self, _tmp8_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_method_call (ValaCodeVisitor* base, ValaMethodCall* expr) {
	ValadocApiInitializerBuilder * self;
	ValaMethodCall* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValaSymbol* _tmp3_;
	ValaSymbol* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	ValadocApiSignatureBuilder* _tmp6_;
	ValadocApiSignatureBuilder* _tmp7_;
	gboolean first = FALSE;
	ValadocApiSignatureBuilder* _tmp24_;
	ValadocApiSignatureBuilder* _tmp25_;
	ValadocApiSignatureBuilder* _tmp26_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_method_call_get_call (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = vala_expression_get_symbol_reference (_tmp2_);
	_tmp4_ = _tmp3_;
	vala_code_node_accept ((ValaCodeNode*) _tmp4_, (ValaCodeVisitor*) self);
	_tmp5_ = self->priv->signature;
	_tmp6_ = valadoc_api_signature_builder_append (_tmp5_, " (", FALSE);
	_tmp7_ = _tmp6_;
	_valadoc_api_signature_builder_unref0 (_tmp7_);
	first = TRUE;
	{
		ValaList* _literal_list = NULL;
		ValaMethodCall* _tmp8_;
		ValaList* _tmp9_;
		gint _literal_size = 0;
		ValaList* _tmp10_;
		gint _tmp11_;
		gint _tmp12_;
		gint _literal_index = 0;
		_tmp8_ = expr;
		_tmp9_ = vala_method_call_get_argument_list (_tmp8_);
		_literal_list = _tmp9_;
		_tmp10_ = _literal_list;
		_tmp11_ = vala_collection_get_size ((ValaCollection*) _tmp10_);
		_tmp12_ = _tmp11_;
		_literal_size = _tmp12_;
		_literal_index = -1;
		while (TRUE) {
			gint _tmp13_;
			gint _tmp14_;
			gint _tmp15_;
			ValaExpression* literal = NULL;
			ValaList* _tmp16_;
			gint _tmp17_;
			gpointer _tmp18_;
			gboolean _tmp19_;
			ValaExpression* _tmp23_;
			_tmp13_ = _literal_index;
			_literal_index = _tmp13_ + 1;
			_tmp14_ = _literal_index;
			_tmp15_ = _literal_size;
			if (!(_tmp14_ < _tmp15_)) {
				break;
			}
			_tmp16_ = _literal_list;
			_tmp17_ = _literal_index;
			_tmp18_ = vala_list_get (_tmp16_, _tmp17_);
			literal = (ValaExpression*) _tmp18_;
			_tmp19_ = first;
			if (!_tmp19_) {
				ValadocApiSignatureBuilder* _tmp20_;
				ValadocApiSignatureBuilder* _tmp21_;
				ValadocApiSignatureBuilder* _tmp22_;
				_tmp20_ = self->priv->signature;
				_tmp21_ = valadoc_api_signature_builder_append (_tmp20_, ", ", FALSE);
				_tmp22_ = _tmp21_;
				_valadoc_api_signature_builder_unref0 (_tmp22_);
			}
			_tmp23_ = literal;
			vala_code_node_accept ((ValaCodeNode*) _tmp23_, (ValaCodeVisitor*) self);
			first = FALSE;
			_vala_code_node_unref0 (literal);
		}
		_vala_iterable_unref0 (_literal_list);
	}
	_tmp24_ = self->priv->signature;
	_tmp25_ = valadoc_api_signature_builder_append (_tmp24_, ")", FALSE);
	_tmp26_ = _tmp25_;
	_valadoc_api_signature_builder_unref0 (_tmp26_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_slice_expression (ValaCodeVisitor* base, ValaSliceExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValaSliceExpression* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	ValaSliceExpression* _tmp6_;
	ValaExpression* _tmp7_;
	ValaExpression* _tmp8_;
	ValadocApiSignatureBuilder* _tmp9_;
	ValadocApiSignatureBuilder* _tmp10_;
	ValadocApiSignatureBuilder* _tmp11_;
	ValaSliceExpression* _tmp12_;
	ValaExpression* _tmp13_;
	ValaExpression* _tmp14_;
	ValadocApiSignatureBuilder* _tmp15_;
	ValadocApiSignatureBuilder* _tmp16_;
	ValadocApiSignatureBuilder* _tmp17_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_slice_expression_get_container (_tmp0_);
	_tmp2_ = _tmp1_;
	vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self);
	_tmp3_ = self->priv->signature;
	_tmp4_ = valadoc_api_signature_builder_append (_tmp3_, "[", FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_tmp6_ = expr;
	_tmp7_ = vala_slice_expression_get_start (_tmp6_);
	_tmp8_ = _tmp7_;
	vala_code_node_accept ((ValaCodeNode*) _tmp8_, (ValaCodeVisitor*) self);
	_tmp9_ = self->priv->signature;
	_tmp10_ = valadoc_api_signature_builder_append (_tmp9_, ":", FALSE);
	_tmp11_ = _tmp10_;
	_valadoc_api_signature_builder_unref0 (_tmp11_);
	_tmp12_ = expr;
	_tmp13_ = vala_slice_expression_get_stop (_tmp12_);
	_tmp14_ = _tmp13_;
	vala_code_node_accept ((ValaCodeNode*) _tmp14_, (ValaCodeVisitor*) self);
	_tmp15_ = self->priv->signature;
	_tmp16_ = valadoc_api_signature_builder_append (_tmp15_, "]", FALSE);
	_tmp17_ = _tmp16_;
	_valadoc_api_signature_builder_unref0 (_tmp17_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_base_access (ValaCodeVisitor* base, ValaBaseAccess* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append_keyword (_tmp0_, "base", FALSE);
	_tmp2_ = _tmp1_;
	_valadoc_api_signature_builder_unref0 (_tmp2_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_postfix_expression (ValaCodeVisitor* base, ValaPostfixExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValaPostfixExpression* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	ValaPostfixExpression* _tmp3_;
	gboolean _tmp4_;
	gboolean _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_postfix_expression_get_inner (_tmp0_);
	_tmp2_ = _tmp1_;
	vala_code_node_accept ((ValaCodeNode*) _tmp2_, (ValaCodeVisitor*) self);
	_tmp3_ = expr;
	_tmp4_ = vala_postfix_expression_get_increment (_tmp3_);
	_tmp5_ = _tmp4_;
	if (_tmp5_) {
		ValadocApiSignatureBuilder* _tmp6_;
		ValadocApiSignatureBuilder* _tmp7_;
		ValadocApiSignatureBuilder* _tmp8_;
		_tmp6_ = self->priv->signature;
		_tmp7_ = valadoc_api_signature_builder_append (_tmp6_, "++", FALSE);
		_tmp8_ = _tmp7_;
		_valadoc_api_signature_builder_unref0 (_tmp8_);
	} else {
		ValadocApiSignatureBuilder* _tmp9_;
		ValadocApiSignatureBuilder* _tmp10_;
		ValadocApiSignatureBuilder* _tmp11_;
		_tmp9_ = self->priv->signature;
		_tmp10_ = valadoc_api_signature_builder_append (_tmp9_, "--", FALSE);
		_tmp11_ = _tmp10_;
		_valadoc_api_signature_builder_unref0 (_tmp11_);
	}
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_object_creation_expression (ValaCodeVisitor* base, ValaObjectCreationExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValaObjectCreationExpression* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	ValadocApiSignatureBuilder* _tmp6_;
	ValaObjectCreationExpression* _tmp7_;
	ValaSymbol* _tmp8_;
	ValaSymbol* _tmp9_;
	ValadocApiSymbol* _tmp10_;
	ValadocApiSymbol* _tmp11_;
	ValadocApiSignatureBuilder* _tmp12_;
	ValadocApiSignatureBuilder* _tmp13_;
	ValadocApiSignatureBuilder* _tmp14_;
	ValadocApiSignatureBuilder* _tmp15_;
	ValadocApiSignatureBuilder* _tmp16_;
	gboolean first = FALSE;
	ValadocApiSignatureBuilder* _tmp33_;
	ValadocApiSignatureBuilder* _tmp34_;
	ValadocApiSignatureBuilder* _tmp35_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = expr;
	_tmp1_ = vala_object_creation_expression_get_struct_creation (_tmp0_);
	_tmp2_ = _tmp1_;
	if (!_tmp2_) {
		ValadocApiSignatureBuilder* _tmp3_;
		ValadocApiSignatureBuilder* _tmp4_;
		ValadocApiSignatureBuilder* _tmp5_;
		_tmp3_ = self->priv->signature;
		_tmp4_ = valadoc_api_signature_builder_append_keyword (_tmp3_, "new", TRUE);
		_tmp5_ = _tmp4_;
		_valadoc_api_signature_builder_unref0 (_tmp5_);
	}
	_tmp6_ = self->priv->signature;
	_tmp7_ = expr;
	_tmp8_ = vala_expression_get_symbol_reference ((ValaExpression*) _tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = valadoc_api_initializer_builder_resolve (self, _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = valadoc_api_signature_builder_append_symbol (_tmp6_, (ValadocApiNode*) _tmp11_, TRUE);
	_tmp13_ = _tmp12_;
	_valadoc_api_signature_builder_unref0 (_tmp13_);
	_g_object_unref0 (_tmp11_);
	_tmp14_ = self->priv->signature;
	_tmp15_ = valadoc_api_signature_builder_append (_tmp14_, " (", FALSE);
	_tmp16_ = _tmp15_;
	_valadoc_api_signature_builder_unref0 (_tmp16_);
	first = TRUE;
	{
		ValaList* _arg_list = NULL;
		ValaObjectCreationExpression* _tmp17_;
		ValaList* _tmp18_;
		gint _arg_size = 0;
		ValaList* _tmp19_;
		gint _tmp20_;
		gint _tmp21_;
		gint _arg_index = 0;
		_tmp17_ = expr;
		_tmp18_ = vala_object_creation_expression_get_argument_list (_tmp17_);
		_arg_list = _tmp18_;
		_tmp19_ = _arg_list;
		_tmp20_ = vala_collection_get_size ((ValaCollection*) _tmp19_);
		_tmp21_ = _tmp20_;
		_arg_size = _tmp21_;
		_arg_index = -1;
		while (TRUE) {
			gint _tmp22_;
			gint _tmp23_;
			gint _tmp24_;
			ValaExpression* arg = NULL;
			ValaList* _tmp25_;
			gint _tmp26_;
			gpointer _tmp27_;
			gboolean _tmp28_;
			ValaExpression* _tmp32_;
			_tmp22_ = _arg_index;
			_arg_index = _tmp22_ + 1;
			_tmp23_ = _arg_index;
			_tmp24_ = _arg_size;
			if (!(_tmp23_ < _tmp24_)) {
				break;
			}
			_tmp25_ = _arg_list;
			_tmp26_ = _arg_index;
			_tmp27_ = vala_list_get (_tmp25_, _tmp26_);
			arg = (ValaExpression*) _tmp27_;
			_tmp28_ = first;
			if (!_tmp28_) {
				ValadocApiSignatureBuilder* _tmp29_;
				ValadocApiSignatureBuilder* _tmp30_;
				ValadocApiSignatureBuilder* _tmp31_;
				_tmp29_ = self->priv->signature;
				_tmp30_ = valadoc_api_signature_builder_append (_tmp29_, ", ", FALSE);
				_tmp31_ = _tmp30_;
				_valadoc_api_signature_builder_unref0 (_tmp31_);
			}
			_tmp32_ = arg;
			vala_code_node_accept ((ValaCodeNode*) _tmp32_, (ValaCodeVisitor*) self);
			first = FALSE;
			_vala_code_node_unref0 (arg);
		}
		_vala_iterable_unref0 (_arg_list);
	}
	_tmp33_ = self->priv->signature;
	_tmp34_ = valadoc_api_signature_builder_append (_tmp33_, ")", FALSE);
	_tmp35_ = _tmp34_;
	_valadoc_api_signature_builder_unref0 (_tmp35_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_sizeof_expression (ValaCodeVisitor* base, ValaSizeofExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValaSizeofExpression* _tmp5_;
	ValaDataType* _tmp6_;
	ValaDataType* _tmp7_;
	ValadocApiSignatureBuilder* _tmp8_;
	ValadocApiSignatureBuilder* _tmp9_;
	ValadocApiSignatureBuilder* _tmp10_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append_keyword (_tmp0_, "sizeof", FALSE);
	_tmp2_ = _tmp1_;
	_tmp3_ = valadoc_api_signature_builder_append (_tmp2_, " (", FALSE);
	_tmp4_ = _tmp3_;
	_valadoc_api_signature_builder_unref0 (_tmp4_);
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	_tmp5_ = expr;
	_tmp6_ = vala_sizeof_expression_get_type_reference (_tmp5_);
	_tmp7_ = _tmp6_;
	valadoc_api_initializer_builder_write_type (self, _tmp7_);
	_tmp8_ = self->priv->signature;
	_tmp9_ = valadoc_api_signature_builder_append (_tmp8_, ")", FALSE);
	_tmp10_ = _tmp9_;
	_valadoc_api_signature_builder_unref0 (_tmp10_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_typeof_expression (ValaCodeVisitor* base, ValaTypeofExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValaTypeofExpression* _tmp5_;
	ValaDataType* _tmp6_;
	ValaDataType* _tmp7_;
	ValadocApiSignatureBuilder* _tmp8_;
	ValadocApiSignatureBuilder* _tmp9_;
	ValadocApiSignatureBuilder* _tmp10_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append_keyword (_tmp0_, "typeof", FALSE);
	_tmp2_ = _tmp1_;
	_tmp3_ = valadoc_api_signature_builder_append (_tmp2_, " (", FALSE);
	_tmp4_ = _tmp3_;
	_valadoc_api_signature_builder_unref0 (_tmp4_);
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	_tmp5_ = expr;
	_tmp6_ = vala_typeof_expression_get_type_reference (_tmp5_);
	_tmp7_ = _tmp6_;
	valadoc_api_initializer_builder_write_type (self, _tmp7_);
	_tmp8_ = self->priv->signature;
	_tmp9_ = valadoc_api_signature_builder_append (_tmp8_, ")", FALSE);
	_tmp10_ = _tmp9_;
	_valadoc_api_signature_builder_unref0 (_tmp10_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_lambda_expression (ValaCodeVisitor* base, ValaLambdaExpression* expr) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValadocApiSignatureBuilder* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	gboolean first = FALSE;
	ValadocApiSignatureBuilder* _tmp24_;
	ValadocApiSignatureBuilder* _tmp25_;
	ValadocApiSignatureBuilder* _tmp26_;
	ValadocApiSignatureBuilder* _tmp27_;
	ValadocApiSignatureBuilder* _tmp28_;
	ValadocApiSignatureBuilder* _tmp29_;
	ValadocApiSignatureBuilder* _tmp30_;
	ValadocApiSignatureBuilder* _tmp31_;
	ValadocApiSignatureBuilder* _tmp32_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append (_tmp0_, "(", FALSE);
	_tmp2_ = _tmp1_;
	_valadoc_api_signature_builder_unref0 (_tmp2_);
	first = TRUE;
	{
		ValaList* _param_list = NULL;
		ValaLambdaExpression* _tmp3_;
		ValaList* _tmp4_;
		gint _param_size = 0;
		ValaList* _tmp5_;
		gint _tmp6_;
		gint _tmp7_;
		gint _param_index = 0;
		_tmp3_ = expr;
		_tmp4_ = vala_lambda_expression_get_parameters (_tmp3_);
		_param_list = _tmp4_;
		_tmp5_ = _param_list;
		_tmp6_ = vala_collection_get_size ((ValaCollection*) _tmp5_);
		_tmp7_ = _tmp6_;
		_param_size = _tmp7_;
		_param_index = -1;
		while (TRUE) {
			gint _tmp8_;
			gint _tmp9_;
			gint _tmp10_;
			ValaParameter* param = NULL;
			ValaList* _tmp11_;
			gint _tmp12_;
			gpointer _tmp13_;
			gboolean _tmp14_;
			ValadocApiSignatureBuilder* _tmp18_;
			ValaParameter* _tmp19_;
			const gchar* _tmp20_;
			const gchar* _tmp21_;
			ValadocApiSignatureBuilder* _tmp22_;
			ValadocApiSignatureBuilder* _tmp23_;
			_tmp8_ = _param_index;
			_param_index = _tmp8_ + 1;
			_tmp9_ = _param_index;
			_tmp10_ = _param_size;
			if (!(_tmp9_ < _tmp10_)) {
				break;
			}
			_tmp11_ = _param_list;
			_tmp12_ = _param_index;
			_tmp13_ = vala_list_get (_tmp11_, _tmp12_);
			param = (ValaParameter*) _tmp13_;
			_tmp14_ = first;
			if (!_tmp14_) {
				ValadocApiSignatureBuilder* _tmp15_;
				ValadocApiSignatureBuilder* _tmp16_;
				ValadocApiSignatureBuilder* _tmp17_;
				_tmp15_ = self->priv->signature;
				_tmp16_ = valadoc_api_signature_builder_append (_tmp15_, ", ", FALSE);
				_tmp17_ = _tmp16_;
				_valadoc_api_signature_builder_unref0 (_tmp17_);
			}
			_tmp18_ = self->priv->signature;
			_tmp19_ = param;
			_tmp20_ = vala_symbol_get_name ((ValaSymbol*) _tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = valadoc_api_signature_builder_append (_tmp18_, _tmp21_, FALSE);
			_tmp23_ = _tmp22_;
			_valadoc_api_signature_builder_unref0 (_tmp23_);
			first = FALSE;
			_vala_code_node_unref0 (param);
		}
		_vala_iterable_unref0 (_param_list);
	}
	_tmp24_ = self->priv->signature;
	_tmp25_ = valadoc_api_signature_builder_append (_tmp24_, ") => {", FALSE);
	_tmp26_ = _tmp25_;
	_valadoc_api_signature_builder_unref0 (_tmp26_);
	_tmp27_ = self->priv->signature;
	_tmp28_ = valadoc_api_signature_builder_append_highlighted (_tmp27_, " [...] ", FALSE);
	_tmp29_ = _tmp28_;
	_valadoc_api_signature_builder_unref0 (_tmp29_);
	_tmp30_ = self->priv->signature;
	_tmp31_ = valadoc_api_signature_builder_append (_tmp30_, "}", FALSE);
	_tmp32_ = _tmp31_;
	_valadoc_api_signature_builder_unref0 (_tmp32_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_boolean_literal (ValaCodeVisitor* base, ValaBooleanLiteral* lit) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaBooleanLiteral* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (lit != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = lit;
	_tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_literal (_tmp0_, _tmp3_, FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_free0 (_tmp3_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_character_literal (ValaCodeVisitor* base, ValaCharacterLiteral* lit) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaCharacterLiteral* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (lit != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = lit;
	_tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_literal (_tmp0_, _tmp3_, FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_free0 (_tmp3_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_integer_literal (ValaCodeVisitor* base, ValaIntegerLiteral* lit) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaIntegerLiteral* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (lit != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = lit;
	_tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_literal (_tmp0_, _tmp3_, FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_free0 (_tmp3_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_real_literal (ValaCodeVisitor* base, ValaRealLiteral* lit) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaRealLiteral* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (lit != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = lit;
	_tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_literal (_tmp0_, _tmp3_, FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_free0 (_tmp3_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_regex_literal (ValaCodeVisitor* base, ValaRegexLiteral* lit) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaRegexLiteral* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (lit != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = lit;
	_tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_literal (_tmp0_, _tmp3_, FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_free0 (_tmp3_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_string_literal (ValaCodeVisitor* base, ValaStringLiteral* lit) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaStringLiteral* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (lit != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = lit;
	_tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_literal (_tmp0_, _tmp3_, FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_free0 (_tmp3_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_null_literal (ValaCodeVisitor* base, ValaNullLiteral* lit) {
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaNullLiteral* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	ValadocApiSignatureBuilder* _tmp4_;
	ValadocApiSignatureBuilder* _tmp5_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (lit != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = lit;
	_tmp2_ = vala_code_node_to_string ((ValaCodeNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = valadoc_api_signature_builder_append_literal (_tmp0_, _tmp3_, FALSE);
	_tmp5_ = _tmp4_;
	_valadoc_api_signature_builder_unref0 (_tmp5_);
	_g_free0 (_tmp3_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_field (ValaCodeVisitor* base, ValaField* field) {
	ValadocApiInitializerBuilder * self;
	ValaField* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (field != NULL);
	_tmp0_ = field;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_constant (ValaCodeVisitor* base, ValaConstant* constant) {
	ValadocApiInitializerBuilder * self;
	ValaConstant* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (constant != NULL);
	_tmp0_ = constant;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_enum_value (ValaCodeVisitor* base, ValaEnumValue* ev) {
	ValadocApiInitializerBuilder * self;
	ValaEnumValue* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (ev != NULL);
	_tmp0_ = ev;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_error_code (ValaCodeVisitor* base, ValaErrorCode* ec) {
	ValadocApiInitializerBuilder * self;
	ValaErrorCode* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (ec != NULL);
	_tmp0_ = ec;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_delegate (ValaCodeVisitor* base, ValaDelegate* d) {
	ValadocApiInitializerBuilder * self;
	ValaDelegate* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (d != NULL);
	_tmp0_ = d;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_method (ValaCodeVisitor* base, ValaMethod* m) {
	ValadocApiInitializerBuilder * self;
	ValaMethod* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (m != NULL);
	_tmp0_ = m;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_creation_method (ValaCodeVisitor* base, ValaCreationMethod* m) {
	ValadocApiInitializerBuilder * self;
	ValaCreationMethod* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (m != NULL);
	_tmp0_ = m;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_signal (ValaCodeVisitor* base, ValaSignal* sig) {
	ValadocApiInitializerBuilder * self;
	ValaSignal* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (sig != NULL);
	_tmp0_ = sig;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_class (ValaCodeVisitor* base, ValaClass* c) {
	ValadocApiInitializerBuilder * self;
	ValaClass* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (c != NULL);
	_tmp0_ = c;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_struct (ValaCodeVisitor* base, ValaStruct* s) {
	ValadocApiInitializerBuilder * self;
	ValaStruct* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (s != NULL);
	_tmp0_ = s;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_interface (ValaCodeVisitor* base, ValaInterface* i) {
	ValadocApiInitializerBuilder * self;
	ValaInterface* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (i != NULL);
	_tmp0_ = i;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_enum (ValaCodeVisitor* base, ValaEnum* en) {
	ValadocApiInitializerBuilder * self;
	ValaEnum* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (en != NULL);
	_tmp0_ = en;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_error_domain (ValaCodeVisitor* base, ValaErrorDomain* ed) {
	ValadocApiInitializerBuilder * self;
	ValaErrorDomain* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (ed != NULL);
	_tmp0_ = ed;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


/**
 * {@inheritDoc}
 */
static void valadoc_api_initializer_builder_real_visit_property (ValaCodeVisitor* base, ValaProperty* prop) {
	ValadocApiInitializerBuilder * self;
	ValaProperty* _tmp0_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (prop != NULL);
	_tmp0_ = prop;
	valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp0_);
}


static void valadoc_api_initializer_builder_class_init (ValadocApiInitializerBuilderClass * klass) {
	valadoc_api_initializer_builder_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->finalize = valadoc_api_initializer_builder_finalize;
	g_type_class_add_private (klass, sizeof (ValadocApiInitializerBuilderPrivate));
	((ValaCodeVisitorClass *) klass)->visit_array_creation_expression = (void (*) (ValaCodeVisitor *, ValaArrayCreationExpression*)) valadoc_api_initializer_builder_real_visit_array_creation_expression;
	((ValaCodeVisitorClass *) klass)->visit_binary_expression = (void (*) (ValaCodeVisitor *, ValaBinaryExpression*)) valadoc_api_initializer_builder_real_visit_binary_expression;
	((ValaCodeVisitorClass *) klass)->visit_unary_expression = (void (*) (ValaCodeVisitor *, ValaUnaryExpression*)) valadoc_api_initializer_builder_real_visit_unary_expression;
	((ValaCodeVisitorClass *) klass)->visit_assignment = (void (*) (ValaCodeVisitor *, ValaAssignment*)) valadoc_api_initializer_builder_real_visit_assignment;
	((ValaCodeVisitorClass *) klass)->visit_cast_expression = (void (*) (ValaCodeVisitor *, ValaCastExpression*)) valadoc_api_initializer_builder_real_visit_cast_expression;
	((ValaCodeVisitorClass *) klass)->visit_initializer_list = (void (*) (ValaCodeVisitor *, ValaInitializerList*)) valadoc_api_initializer_builder_real_visit_initializer_list;
	((ValaCodeVisitorClass *) klass)->visit_member_access = (void (*) (ValaCodeVisitor *, ValaMemberAccess*)) valadoc_api_initializer_builder_real_visit_member_access;
	((ValaCodeVisitorClass *) klass)->visit_element_access = (void (*) (ValaCodeVisitor *, ValaElementAccess*)) valadoc_api_initializer_builder_real_visit_element_access;
	((ValaCodeVisitorClass *) klass)->visit_pointer_indirection = (void (*) (ValaCodeVisitor *, ValaPointerIndirection*)) valadoc_api_initializer_builder_real_visit_pointer_indirection;
	((ValaCodeVisitorClass *) klass)->visit_addressof_expression = (void (*) (ValaCodeVisitor *, ValaAddressofExpression*)) valadoc_api_initializer_builder_real_visit_addressof_expression;
	((ValaCodeVisitorClass *) klass)->visit_reference_transfer_expression = (void (*) (ValaCodeVisitor *, ValaReferenceTransferExpression*)) valadoc_api_initializer_builder_real_visit_reference_transfer_expression;
	((ValaCodeVisitorClass *) klass)->visit_type_check = (void (*) (ValaCodeVisitor *, ValaTypeCheck*)) valadoc_api_initializer_builder_real_visit_type_check;
	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor *, ValaMethodCall*)) valadoc_api_initializer_builder_real_visit_method_call;
	((ValaCodeVisitorClass *) klass)->visit_slice_expression = (void (*) (ValaCodeVisitor *, ValaSliceExpression*)) valadoc_api_initializer_builder_real_visit_slice_expression;
	((ValaCodeVisitorClass *) klass)->visit_base_access = (void (*) (ValaCodeVisitor *, ValaBaseAccess*)) valadoc_api_initializer_builder_real_visit_base_access;
	((ValaCodeVisitorClass *) klass)->visit_postfix_expression = (void (*) (ValaCodeVisitor *, ValaPostfixExpression*)) valadoc_api_initializer_builder_real_visit_postfix_expression;
	((ValaCodeVisitorClass *) klass)->visit_object_creation_expression = (void (*) (ValaCodeVisitor *, ValaObjectCreationExpression*)) valadoc_api_initializer_builder_real_visit_object_creation_expression;
	((ValaCodeVisitorClass *) klass)->visit_sizeof_expression = (void (*) (ValaCodeVisitor *, ValaSizeofExpression*)) valadoc_api_initializer_builder_real_visit_sizeof_expression;
	((ValaCodeVisitorClass *) klass)->visit_typeof_expression = (void (*) (ValaCodeVisitor *, ValaTypeofExpression*)) valadoc_api_initializer_builder_real_visit_typeof_expression;
	((ValaCodeVisitorClass *) klass)->visit_lambda_expression = (void (*) (ValaCodeVisitor *, ValaLambdaExpression*)) valadoc_api_initializer_builder_real_visit_lambda_expression;
	((ValaCodeVisitorClass *) klass)->visit_boolean_literal = (void (*) (ValaCodeVisitor *, ValaBooleanLiteral*)) valadoc_api_initializer_builder_real_visit_boolean_literal;
	((ValaCodeVisitorClass *) klass)->visit_character_literal = (void (*) (ValaCodeVisitor *, ValaCharacterLiteral*)) valadoc_api_initializer_builder_real_visit_character_literal;
	((ValaCodeVisitorClass *) klass)->visit_integer_literal = (void (*) (ValaCodeVisitor *, ValaIntegerLiteral*)) valadoc_api_initializer_builder_real_visit_integer_literal;
	((ValaCodeVisitorClass *) klass)->visit_real_literal = (void (*) (ValaCodeVisitor *, ValaRealLiteral*)) valadoc_api_initializer_builder_real_visit_real_literal;
	((ValaCodeVisitorClass *) klass)->visit_regex_literal = (void (*) (ValaCodeVisitor *, ValaRegexLiteral*)) valadoc_api_initializer_builder_real_visit_regex_literal;
	((ValaCodeVisitorClass *) klass)->visit_string_literal = (void (*) (ValaCodeVisitor *, ValaStringLiteral*)) valadoc_api_initializer_builder_real_visit_string_literal;
	((ValaCodeVisitorClass *) klass)->visit_null_literal = (void (*) (ValaCodeVisitor *, ValaNullLiteral*)) valadoc_api_initializer_builder_real_visit_null_literal;
	((ValaCodeVisitorClass *) klass)->visit_field = (void (*) (ValaCodeVisitor *, ValaField*)) valadoc_api_initializer_builder_real_visit_field;
	((ValaCodeVisitorClass *) klass)->visit_constant = (void (*) (ValaCodeVisitor *, ValaConstant*)) valadoc_api_initializer_builder_real_visit_constant;
	((ValaCodeVisitorClass *) klass)->visit_enum_value = (void (*) (ValaCodeVisitor *, ValaEnumValue*)) valadoc_api_initializer_builder_real_visit_enum_value;
	((ValaCodeVisitorClass *) klass)->visit_error_code = (void (*) (ValaCodeVisitor *, ValaErrorCode*)) valadoc_api_initializer_builder_real_visit_error_code;
	((ValaCodeVisitorClass *) klass)->visit_delegate = (void (*) (ValaCodeVisitor *, ValaDelegate*)) valadoc_api_initializer_builder_real_visit_delegate;
	((ValaCodeVisitorClass *) klass)->visit_method = (void (*) (ValaCodeVisitor *, ValaMethod*)) valadoc_api_initializer_builder_real_visit_method;
	((ValaCodeVisitorClass *) klass)->visit_creation_method = (void (*) (ValaCodeVisitor *, ValaCreationMethod*)) valadoc_api_initializer_builder_real_visit_creation_method;
	((ValaCodeVisitorClass *) klass)->visit_signal = (void (*) (ValaCodeVisitor *, ValaSignal*)) valadoc_api_initializer_builder_real_visit_signal;
	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor *, ValaClass*)) valadoc_api_initializer_builder_real_visit_class;
	((ValaCodeVisitorClass *) klass)->visit_struct = (void (*) (ValaCodeVisitor *, ValaStruct*)) valadoc_api_initializer_builder_real_visit_struct;
	((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor *, ValaInterface*)) valadoc_api_initializer_builder_real_visit_interface;
	((ValaCodeVisitorClass *) klass)->visit_enum = (void (*) (ValaCodeVisitor *, ValaEnum*)) valadoc_api_initializer_builder_real_visit_enum;
	((ValaCodeVisitorClass *) klass)->visit_error_domain = (void (*) (ValaCodeVisitor *, ValaErrorDomain*)) valadoc_api_initializer_builder_real_visit_error_domain;
	((ValaCodeVisitorClass *) klass)->visit_property = (void (*) (ValaCodeVisitor *, ValaProperty*)) valadoc_api_initializer_builder_real_visit_property;
}


static void valadoc_api_initializer_builder_instance_init (ValadocApiInitializerBuilder * self) {
	self->priv = VALADOC_API_INITIALIZER_BUILDER_GET_PRIVATE (self);
}


static void valadoc_api_initializer_builder_finalize (ValaCodeVisitor * obj) {
	ValadocApiInitializerBuilder * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALADOC_API_TYPE_INITIALIZER_BUILDER, ValadocApiInitializerBuilder);
	_vala_map_unref0 (self->priv->symbol_map);
	_valadoc_api_signature_builder_unref0 (self->priv->signature);
	VALA_CODE_VISITOR_CLASS (valadoc_api_initializer_builder_parent_class)->finalize (obj);
}


G_GNUC_INTERNAL GType valadoc_api_initializer_builder_get_type (void) {
	static volatile gsize valadoc_api_initializer_builder_type_id__volatile = 0;
	if (g_once_init_enter (&valadoc_api_initializer_builder_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (ValadocApiInitializerBuilderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) valadoc_api_initializer_builder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValadocApiInitializerBuilder), 0, (GInstanceInitFunc) valadoc_api_initializer_builder_instance_init, NULL };
		GType valadoc_api_initializer_builder_type_id;
		valadoc_api_initializer_builder_type_id = g_type_register_static (VALA_TYPE_CODE_VISITOR, "ValadocApiInitializerBuilder", &g_define_type_info, 0);
		g_once_init_leave (&valadoc_api_initializer_builder_type_id__volatile, valadoc_api_initializer_builder_type_id);
	}
	return valadoc_api_initializer_builder_type_id__volatile;
}



