/* 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 <vala.h>
#include <glib-object.h>
#include <valagee.h>
#include <valadoc.h>
#include <glib.h>
#include <stdlib.h>
#include <string.h>

#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#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 gint ValadocApiInitializerBuilder_private_offset;
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 ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ValadocApiInitializerBuilder, vala_code_visitor_unref)
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 GType valadoc_api_initializer_builder_get_type_once (void);

static inline gpointer
valadoc_api_initializer_builder_get_instance_private (ValadocApiInitializerBuilder* self)
{
	return G_STRUCT_MEMBER_P (self, ValadocApiInitializerBuilder_private_offset);
}

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

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

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)
{
	ValaTypeSymbol* _tmp0_;
	ValaTypeSymbol* _tmp1_;
	ValaList* type_args = NULL;
	ValaList* _tmp5_;
	ValaList* _tmp6_;
	ValaList* _tmp7_;
	gint _tmp8_;
	gint _tmp9_;
	gboolean _tmp29_;
	gboolean _tmp30_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (vsymbol != NULL);
	_tmp0_ = vala_data_type_get_type_symbol (vsymbol);
	_tmp1_ = _tmp0_;
	if (_tmp1_ != NULL) {
		ValaTypeSymbol* _tmp2_;
		ValaTypeSymbol* _tmp3_;
		_tmp2_ = vala_data_type_get_type_symbol (vsymbol);
		_tmp3_ = _tmp2_;
		valadoc_api_initializer_builder_write_node (self, (ValaSymbol*) _tmp3_);
	} else {
		ValadocApiSignatureBuilder* _tmp4_;
		_tmp4_ = self->priv->signature;
		valadoc_api_signature_builder_append_literal (_tmp4_, "null", TRUE);
	}
	_tmp5_ = vala_data_type_get_type_arguments (vsymbol);
	_tmp6_ = _vala_iterable_ref0 (_tmp5_);
	type_args = _tmp6_;
	_tmp7_ = type_args;
	_tmp8_ = vala_collection_get_size ((ValaCollection*) _tmp7_);
	_tmp9_ = _tmp8_;
	if (_tmp9_ > 0) {
		ValadocApiSignatureBuilder* _tmp10_;
		gboolean first = FALSE;
		ValadocApiSignatureBuilder* _tmp28_;
		_tmp10_ = self->priv->signature;
		valadoc_api_signature_builder_append (_tmp10_, "<", TRUE);
		first = TRUE;
		{
			ValaList* _type_arg_list = NULL;
			ValaList* _tmp11_;
			gint _type_arg_size = 0;
			ValaList* _tmp12_;
			gint _tmp13_;
			gint _tmp14_;
			gint _type_arg_index = 0;
			_tmp11_ = type_args;
			_type_arg_list = _tmp11_;
			_tmp12_ = _type_arg_list;
			_tmp13_ = vala_collection_get_size ((ValaCollection*) _tmp12_);
			_tmp14_ = _tmp13_;
			_type_arg_size = _tmp14_;
			_type_arg_index = -1;
			while (TRUE) {
				gint _tmp15_;
				gint _tmp16_;
				ValaDataType* type_arg = NULL;
				ValaList* _tmp17_;
				gpointer _tmp18_;
				ValaDataType* _tmp20_;
				gboolean _tmp21_;
				gboolean _tmp22_;
				ValadocApiSignatureBuilder* _tmp24_;
				ValaDataType* _tmp25_;
				gchar* _tmp26_;
				gchar* _tmp27_;
				_type_arg_index = _type_arg_index + 1;
				_tmp15_ = _type_arg_index;
				_tmp16_ = _type_arg_size;
				if (!(_tmp15_ < _tmp16_)) {
					break;
				}
				_tmp17_ = _type_arg_list;
				_tmp18_ = vala_list_get (_tmp17_, _type_arg_index);
				type_arg = (ValaDataType*) _tmp18_;
				if (!first) {
					ValadocApiSignatureBuilder* _tmp19_;
					_tmp19_ = self->priv->signature;
					valadoc_api_signature_builder_append (_tmp19_, ",", TRUE);
				} else {
					first = FALSE;
				}
				_tmp20_ = type_arg;
				_tmp21_ = vala_data_type_get_value_owned (_tmp20_);
				_tmp22_ = _tmp21_;
				if (!_tmp22_) {
					ValadocApiSignatureBuilder* _tmp23_;
					_tmp23_ = self->priv->signature;
					valadoc_api_signature_builder_append_keyword (_tmp23_, "weak", TRUE);
				}
				_tmp24_ = self->priv->signature;
				_tmp25_ = type_arg;
				_tmp26_ = vala_data_type_to_qualified_string (_tmp25_, NULL);
				_tmp27_ = _tmp26_;
				valadoc_api_signature_builder_append (_tmp24_, _tmp27_, TRUE);
				_g_free0 (_tmp27_);
				_vala_code_node_unref0 (type_arg);
			}
		}
		_tmp28_ = self->priv->signature;
		valadoc_api_signature_builder_append (_tmp28_, ">", TRUE);
	}
	_tmp29_ = vala_data_type_get_nullable (vsymbol);
	_tmp30_ = _tmp29_;
	if (_tmp30_) {
		ValadocApiSignatureBuilder* _tmp31_;
		_tmp31_ = self->priv->signature;
		valadoc_api_signature_builder_append (_tmp31_, "?", TRUE);
	}
	_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_;
	ValaDataType* _tmp1_;
	ValaDataType* _tmp2_;
	ValadocApiSignatureBuilder* _tmp3_;
	gboolean first = FALSE;
	ValadocApiSignatureBuilder* _tmp14_;
	ValaInitializerList* _tmp15_;
	ValaInitializerList* _tmp16_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	valadoc_api_signature_builder_append_keyword (_tmp0_, "new", TRUE);
	_tmp1_ = vala_array_creation_expression_get_element_type (expr);
	_tmp2_ = _tmp1_;
	valadoc_api_initializer_builder_write_type (self, _tmp2_);
	_tmp3_ = self->priv->signature;
	valadoc_api_signature_builder_append (_tmp3_, "[", FALSE);
	first = TRUE;
	{
		ValaList* _size_list = NULL;
		ValaList* _tmp4_;
		gint _size_size = 0;
		ValaList* _tmp5_;
		gint _tmp6_;
		gint _tmp7_;
		gint _size_index = 0;
		_tmp4_ = vala_array_creation_expression_get_sizes (expr);
		_size_list = _tmp4_;
		_tmp5_ = _size_list;
		_tmp6_ = vala_collection_get_size ((ValaCollection*) _tmp5_);
		_tmp7_ = _tmp6_;
		_size_size = _tmp7_;
		_size_index = -1;
		while (TRUE) {
			gint _tmp8_;
			gint _tmp9_;
			ValaExpression* size = NULL;
			ValaList* _tmp10_;
			gpointer _tmp11_;
			ValaExpression* _tmp13_;
			_size_index = _size_index + 1;
			_tmp8_ = _size_index;
			_tmp9_ = _size_size;
			if (!(_tmp8_ < _tmp9_)) {
				break;
			}
			_tmp10_ = _size_list;
			_tmp11_ = vala_list_get (_tmp10_, _size_index);
			size = (ValaExpression*) _tmp11_;
			if (!first) {
				ValadocApiSignatureBuilder* _tmp12_;
				_tmp12_ = self->priv->signature;
				valadoc_api_signature_builder_append (_tmp12_, ", ", FALSE);
			}
			_tmp13_ = size;
			vala_code_node_accept ((ValaCodeNode*) _tmp13_, (ValaCodeVisitor*) self);
			first = FALSE;
			_vala_code_node_unref0 (size);
		}
	}
	_tmp14_ = self->priv->signature;
	valadoc_api_signature_builder_append (_tmp14_, "]", FALSE);
	_tmp15_ = vala_array_creation_expression_get_initializer_list (expr);
	_tmp16_ = _tmp15_;
	if (_tmp16_ != NULL) {
		ValadocApiSignatureBuilder* _tmp17_;
		ValaInitializerList* _tmp18_;
		ValaInitializerList* _tmp19_;
		_tmp17_ = self->priv->signature;
		valadoc_api_signature_builder_append (_tmp17_, " ", FALSE);
		_tmp18_ = vala_array_creation_expression_get_initializer_list (expr);
		_tmp19_ = _tmp18_;
		vala_code_node_accept ((ValaCodeNode*) _tmp19_, (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_;
	ValadocApiSignatureBuilder* _tmp1_;
	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_ = _vala_map_ref0 (symbol_map);
	_vala_map_unref0 (self->priv->symbol_map);
	self->priv->symbol_map = _tmp0_;
	_tmp1_ = _valadoc_api_signature_builder_ref0 (signature);
	_valadoc_api_signature_builder_unref0 (self->priv->signature);
	self->priv->signature = _tmp1_;
	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;
	ValaExpression* _tmp0_;
	ValaExpression* _tmp1_;
	ValaBinaryOperator _tmp2_;
	ValaBinaryOperator _tmp3_;
	ValadocApiSignatureBuilder* _tmp10_;
	ValaExpression* _tmp11_;
	ValaExpression* _tmp12_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = vala_binary_expression_get_left (expr);
	_tmp1_ = _tmp0_;
	vala_code_node_accept ((ValaCodeNode*) _tmp1_, (ValaCodeVisitor*) self);
	_tmp2_ = vala_binary_expression_get_operator (expr);
	_tmp3_ = _tmp2_;
	if (_tmp3_ == VALA_BINARY_OPERATOR_IN) {
		ValadocApiSignatureBuilder* _tmp4_;
		const gchar* _tmp5_;
		_tmp4_ = self->priv->signature;
		_tmp5_ = vala_binary_operator_to_string (VALA_BINARY_OPERATOR_IN);
		valadoc_api_signature_builder_append_keyword (_tmp4_, _tmp5_, TRUE);
	} else {
		ValadocApiSignatureBuilder* _tmp6_;
		ValaBinaryOperator _tmp7_;
		ValaBinaryOperator _tmp8_;
		const gchar* _tmp9_;
		_tmp6_ = self->priv->signature;
		_tmp7_ = vala_binary_expression_get_operator (expr);
		_tmp8_ = _tmp7_;
		_tmp9_ = vala_binary_operator_to_string (_tmp8_);
		valadoc_api_signature_builder_append (_tmp6_, _tmp9_, TRUE);
	}
	_tmp10_ = self->priv->signature;
	valadoc_api_signature_builder_append (_tmp10_, " ", TRUE);
	_tmp11_ = vala_binary_expression_get_right (expr);
	_tmp12_ = _tmp11_;
	vala_code_node_accept ((ValaCodeNode*) _tmp12_, (ValaCodeVisitor*) self);
}

/**
 * {@inheritDoc}
 */
static void
valadoc_api_initializer_builder_real_visit_unary_expression (ValaCodeVisitor* base,
                                                             ValaUnaryExpression* expr)
{
	ValadocApiInitializerBuilder * self;
	gboolean _tmp0_ = FALSE;
	ValaUnaryOperator _tmp1_;
	ValaUnaryOperator _tmp2_;
	ValaExpression* _tmp13_;
	ValaExpression* _tmp14_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp1_ = vala_unary_expression_get_operator (expr);
	_tmp2_ = _tmp1_;
	if (_tmp2_ == VALA_UNARY_OPERATOR_REF) {
		_tmp0_ = TRUE;
	} else {
		ValaUnaryOperator _tmp3_;
		ValaUnaryOperator _tmp4_;
		_tmp3_ = vala_unary_expression_get_operator (expr);
		_tmp4_ = _tmp3_;
		_tmp0_ = _tmp4_ == VALA_UNARY_OPERATOR_OUT;
	}
	if (_tmp0_) {
		ValadocApiSignatureBuilder* _tmp5_;
		ValaUnaryOperator _tmp6_;
		ValaUnaryOperator _tmp7_;
		const gchar* _tmp8_;
		_tmp5_ = self->priv->signature;
		_tmp6_ = vala_unary_expression_get_operator (expr);
		_tmp7_ = _tmp6_;
		_tmp8_ = vala_unary_operator_to_string (_tmp7_);
		valadoc_api_signature_builder_append_keyword (_tmp5_, _tmp8_, TRUE);
	} else {
		ValadocApiSignatureBuilder* _tmp9_;
		ValaUnaryOperator _tmp10_;
		ValaUnaryOperator _tmp11_;
		const gchar* _tmp12_;
		_tmp9_ = self->priv->signature;
		_tmp10_ = vala_unary_expression_get_operator (expr);
		_tmp11_ = _tmp10_;
		_tmp12_ = vala_unary_operator_to_string (_tmp11_);
		valadoc_api_signature_builder_append (_tmp9_, _tmp12_, TRUE);
	}
	_tmp13_ = vala_unary_expression_get_inner (expr);
	_tmp14_ = _tmp13_;
	vala_code_node_accept ((ValaCodeNode*) _tmp14_, (ValaCodeVisitor*) self);
}

/**
 * {@inheritDoc}
 */
static void
valadoc_api_initializer_builder_real_visit_assignment (ValaCodeVisitor* base,
                                                       ValaAssignment* a)
{
	ValadocApiInitializerBuilder * self;
	ValaExpression* _tmp0_;
	ValaExpression* _tmp1_;
	ValadocApiSignatureBuilder* _tmp2_;
	ValaAssignmentOperator _tmp3_;
	ValaAssignmentOperator _tmp4_;
	const gchar* _tmp5_;
	ValaExpression* _tmp6_;
	ValaExpression* _tmp7_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (a != NULL);
	_tmp0_ = vala_assignment_get_left (a);
	_tmp1_ = _tmp0_;
	vala_code_node_accept ((ValaCodeNode*) _tmp1_, (ValaCodeVisitor*) self);
	_tmp2_ = self->priv->signature;
	_tmp3_ = vala_assignment_get_operator (a);
	_tmp4_ = _tmp3_;
	_tmp5_ = vala_assignment_operator_to_string (_tmp4_);
	valadoc_api_signature_builder_append (_tmp2_, _tmp5_, TRUE);
	_tmp6_ = vala_assignment_get_right (a);
	_tmp7_ = _tmp6_;
	vala_code_node_accept ((ValaCodeNode*) _tmp7_, (ValaCodeVisitor*) self);
}

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

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

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

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

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

/**
 * {@inheritDoc}
 */
static void
valadoc_api_initializer_builder_real_visit_addressof_expression (ValaCodeVisitor* base,
                                                                 ValaAddressofExpression* expr)
{
	ValadocApiInitializerBuilder * self;
	ValadocApiSignatureBuilder* _tmp0_;
	ValaExpression* _tmp1_;
	ValaExpression* _tmp2_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	valadoc_api_signature_builder_append (_tmp0_, "&", FALSE);
	_tmp1_ = vala_addressof_expression_get_inner (expr);
	_tmp2_ = _tmp1_;
	vala_code_node_accept ((ValaCodeNode*) _tmp2_, (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_;
	ValaExpression* _tmp3_;
	ValaExpression* _tmp4_;
	self = (ValadocApiInitializerBuilder*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->signature;
	_tmp1_ = valadoc_api_signature_builder_append (_tmp0_, "(", FALSE);
	_tmp2_ = valadoc_api_signature_builder_append_keyword (_tmp1_, "owned", FALSE);
	valadoc_api_signature_builder_append (_tmp2_, ")", FALSE);
	_tmp3_ = vala_reference_transfer_expression_get_inner (expr);
	_tmp4_ = _tmp3_;
	vala_code_node_accept ((ValaCodeNode*) _tmp4_, (ValaCodeVisitor*) self);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

static void
valadoc_api_initializer_builder_class_init (ValadocApiInitializerBuilderClass * klass,
                                            gpointer klass_data)
{
	valadoc_api_initializer_builder_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->finalize = valadoc_api_initializer_builder_finalize;
	g_type_class_adjust_private_offset (klass, &ValadocApiInitializerBuilder_private_offset);
	((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,
                                               gpointer klass)
{
	self->priv = valadoc_api_initializer_builder_get_instance_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);
}

static GType
valadoc_api_initializer_builder_get_type_once (void)
{
	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);
	ValadocApiInitializerBuilder_private_offset = g_type_add_instance_private (valadoc_api_initializer_builder_type_id, sizeof (ValadocApiInitializerBuilderPrivate));
	return valadoc_api_initializer_builder_type_id;
}

 G_GNUC_INTERNAL GType
valadoc_api_initializer_builder_get_type (void)
{
	static volatile gsize valadoc_api_initializer_builder_type_id__once = 0;
	if (g_once_init_enter (&valadoc_api_initializer_builder_type_id__once)) {
		GType valadoc_api_initializer_builder_type_id;
		valadoc_api_initializer_builder_type_id = valadoc_api_initializer_builder_get_type_once ();
		g_once_init_leave (&valadoc_api_initializer_builder_type_id__once, valadoc_api_initializer_builder_type_id);
	}
	return valadoc_api_initializer_builder_type_id__once;
}

