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

/* valatraversevisitor.vala
 *
 * Copyright (C) 2012  Luca Bruno
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.

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

 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 * Author:
 * 	Luca Bruno <lucabru@src.gnome.org>
 */

#include "vala.h"
#include <glib.h>

struct _ValaTraverseVisitorPrivate {
	ValaTraverseFunc func;
	gpointer func_target;
	GDestroyNotify func_target_destroy_notify;
};

static gint ValaTraverseVisitor_private_offset;
static gpointer vala_traverse_visitor_parent_class = NULL;

static void vala_traverse_visitor_real_visit_namespace (ValaCodeVisitor* base,
                                                 ValaNamespace* ns);
static void vala_traverse_visitor_real_visit_class (ValaCodeVisitor* base,
                                             ValaClass* cl);
static void vala_traverse_visitor_real_visit_struct (ValaCodeVisitor* base,
                                              ValaStruct* st);
static void vala_traverse_visitor_real_visit_interface (ValaCodeVisitor* base,
                                                 ValaInterface* iface);
static void vala_traverse_visitor_real_visit_enum (ValaCodeVisitor* base,
                                            ValaEnum* en);
static void vala_traverse_visitor_real_visit_enum_value (ValaCodeVisitor* base,
                                                  ValaEnumValue* ev);
static void vala_traverse_visitor_real_visit_error_domain (ValaCodeVisitor* base,
                                                    ValaErrorDomain* edomain);
static void vala_traverse_visitor_real_visit_error_code (ValaCodeVisitor* base,
                                                  ValaErrorCode* ecode);
static void vala_traverse_visitor_real_visit_delegate (ValaCodeVisitor* base,
                                                ValaDelegate* d);
static void vala_traverse_visitor_real_visit_constant (ValaCodeVisitor* base,
                                                ValaConstant* c);
static void vala_traverse_visitor_real_visit_field (ValaCodeVisitor* base,
                                             ValaField* f);
static void vala_traverse_visitor_real_visit_method (ValaCodeVisitor* base,
                                              ValaMethod* m);
static void vala_traverse_visitor_real_visit_creation_method (ValaCodeVisitor* base,
                                                       ValaCreationMethod* m);
static void vala_traverse_visitor_real_visit_formal_parameter (ValaCodeVisitor* base,
                                                        ValaParameter* p);
static void vala_traverse_visitor_real_visit_property (ValaCodeVisitor* base,
                                                ValaProperty* prop);
static void vala_traverse_visitor_real_visit_property_accessor (ValaCodeVisitor* base,
                                                         ValaPropertyAccessor* acc);
static void vala_traverse_visitor_real_visit_signal (ValaCodeVisitor* base,
                                              ValaSignal* sig);
static void vala_traverse_visitor_real_visit_constructor (ValaCodeVisitor* base,
                                                   ValaConstructor* c);
static void vala_traverse_visitor_real_visit_destructor (ValaCodeVisitor* base,
                                                  ValaDestructor* d);
static void vala_traverse_visitor_real_visit_block (ValaCodeVisitor* base,
                                             ValaBlock* b);
static void vala_traverse_visitor_real_visit_data_type (ValaCodeVisitor* base,
                                                 ValaDataType* data_type);
static void vala_traverse_visitor_real_visit_declaration_statement (ValaCodeVisitor* base,
                                                             ValaDeclarationStatement* stmt);
static void vala_traverse_visitor_real_visit_local_variable (ValaCodeVisitor* base,
                                                      ValaLocalVariable* local);
static void vala_traverse_visitor_real_visit_initializer_list (ValaCodeVisitor* base,
                                                        ValaInitializerList* list);
static void vala_traverse_visitor_real_visit_expression_statement (ValaCodeVisitor* base,
                                                            ValaExpressionStatement* stmt);
static void vala_traverse_visitor_real_visit_if_statement (ValaCodeVisitor* base,
                                                    ValaIfStatement* stmt);
static void vala_traverse_visitor_real_visit_switch_statement (ValaCodeVisitor* base,
                                                        ValaSwitchStatement* stmt);
static void vala_traverse_visitor_real_visit_switch_section (ValaCodeVisitor* base,
                                                      ValaSwitchSection* section);
static void vala_traverse_visitor_real_visit_switch_label (ValaCodeVisitor* base,
                                                    ValaSwitchLabel* label);
static void vala_traverse_visitor_real_visit_loop_statement (ValaCodeVisitor* base,
                                                      ValaLoopStatement* loop);
static void vala_traverse_visitor_real_visit_while_statement (ValaCodeVisitor* base,
                                                       ValaWhileStatement* stmt);
static void vala_traverse_visitor_real_visit_do_statement (ValaCodeVisitor* base,
                                                    ValaDoStatement* stmt);
static void vala_traverse_visitor_real_visit_for_statement (ValaCodeVisitor* base,
                                                     ValaForStatement* stmt);
static void vala_traverse_visitor_real_visit_foreach_statement (ValaCodeVisitor* base,
                                                         ValaForeachStatement* stmt);
static void vala_traverse_visitor_real_visit_break_statement (ValaCodeVisitor* base,
                                                       ValaBreakStatement* stmt);
static void vala_traverse_visitor_real_visit_continue_statement (ValaCodeVisitor* base,
                                                          ValaContinueStatement* stmt);
static void vala_traverse_visitor_real_visit_return_statement (ValaCodeVisitor* base,
                                                        ValaReturnStatement* stmt);
static void vala_traverse_visitor_real_visit_yield_statement (ValaCodeVisitor* base,
                                                       ValaYieldStatement* stmt);
static void vala_traverse_visitor_real_visit_throw_statement (ValaCodeVisitor* base,
                                                       ValaThrowStatement* stmt);
static void vala_traverse_visitor_real_visit_try_statement (ValaCodeVisitor* base,
                                                     ValaTryStatement* stmt);
static void vala_traverse_visitor_real_visit_catch_clause (ValaCodeVisitor* base,
                                                    ValaCatchClause* clause);
static void vala_traverse_visitor_real_visit_lock_statement (ValaCodeVisitor* base,
                                                      ValaLockStatement* stmt);
static void vala_traverse_visitor_real_visit_unlock_statement (ValaCodeVisitor* base,
                                                        ValaUnlockStatement* stmt);
static void vala_traverse_visitor_real_visit_with_statement (ValaCodeVisitor* base,
                                                      ValaWithStatement* stmt);
static void vala_traverse_visitor_real_visit_delete_statement (ValaCodeVisitor* base,
                                                        ValaDeleteStatement* stmt);
static void vala_traverse_visitor_real_visit_member_access (ValaCodeVisitor* base,
                                                     ValaMemberAccess* expr);
static void vala_traverse_visitor_real_visit_assignment (ValaCodeVisitor* base,
                                                  ValaAssignment* expr);
static void vala_traverse_visitor_real_visit_method_call (ValaCodeVisitor* base,
                                                   ValaMethodCall* expr);
static void vala_traverse_visitor_real_visit_conditional_expression (ValaCodeVisitor* base,
                                                              ValaConditionalExpression* expr);
static void vala_traverse_visitor_real_visit_binary_expression (ValaCodeVisitor* base,
                                                         ValaBinaryExpression* expr);
static void vala_traverse_visitor_real_visit_unary_expression (ValaCodeVisitor* base,
                                                        ValaUnaryExpression* expr);
static void vala_traverse_visitor_real_visit_reference_transfer_expression (ValaCodeVisitor* base,
                                                                     ValaReferenceTransferExpression* expr);
static void vala_traverse_visitor_real_visit_object_creation_expression (ValaCodeVisitor* base,
                                                                  ValaObjectCreationExpression* expr);
static void vala_traverse_visitor_real_visit_postfix_expression (ValaCodeVisitor* base,
                                                          ValaPostfixExpression* expr);
static void vala_traverse_visitor_real_visit_array_creation_expression (ValaCodeVisitor* base,
                                                                 ValaArrayCreationExpression* expr);
static void vala_traverse_visitor_real_visit_cast_expression (ValaCodeVisitor* base,
                                                       ValaCastExpression* expr);
static void vala_traverse_visitor_real_visit_element_access (ValaCodeVisitor* base,
                                                      ValaElementAccess* expr);
static void vala_traverse_visitor_real_visit_lambda_expression (ValaCodeVisitor* base,
                                                         ValaLambdaExpression* expr);
static void vala_traverse_visitor_real_visit_pointer_indirection (ValaCodeVisitor* base,
                                                           ValaPointerIndirection* expr);
static void vala_traverse_visitor_real_visit_addressof_expression (ValaCodeVisitor* base,
                                                            ValaAddressofExpression* expr);
static void vala_traverse_visitor_real_visit_slice_expression (ValaCodeVisitor* base,
                                                        ValaSliceExpression* expr);
static void vala_traverse_visitor_finalize (ValaCodeVisitor * obj);
static GType vala_traverse_visitor_get_type_once (void);

static inline gpointer
vala_traverse_visitor_get_instance_private (ValaTraverseVisitor* self)
{
	return G_STRUCT_MEMBER_P (self, ValaTraverseVisitor_private_offset);
}

ValaTraverseVisitor*
vala_traverse_visitor_construct (GType object_type,
                                 ValaTraverseFunc func,
                                 gpointer func_target,
                                 GDestroyNotify func_target_destroy_notify)
{
	ValaTraverseVisitor* self = NULL;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	GDestroyNotify _tmp0__target_destroy_notify;
	self = (ValaTraverseVisitor*) vala_code_visitor_construct (object_type);
	_tmp0_ = func;
	_tmp0__target = func_target;
	_tmp0__target_destroy_notify = func_target_destroy_notify;
	func = NULL;
	func_target = NULL;
	func_target_destroy_notify = NULL;
	(self->priv->func_target_destroy_notify == NULL) ? NULL : (self->priv->func_target_destroy_notify (self->priv->func_target), NULL);
	self->priv->func = NULL;
	self->priv->func_target = NULL;
	self->priv->func_target_destroy_notify = NULL;
	self->priv->func = _tmp0_;
	self->priv->func_target = _tmp0__target;
	self->priv->func_target_destroy_notify = _tmp0__target_destroy_notify;
	(func_target_destroy_notify == NULL) ? NULL : (func_target_destroy_notify (func_target), NULL);
	func = NULL;
	func_target = NULL;
	func_target_destroy_notify = NULL;
	return self;
}

ValaTraverseVisitor*
vala_traverse_visitor_new (ValaTraverseFunc func,
                           gpointer func_target,
                           GDestroyNotify func_target_destroy_notify)
{
	return vala_traverse_visitor_construct (VALA_TYPE_TRAVERSE_VISITOR, func, func_target, func_target_destroy_notify);
}

static void
vala_traverse_visitor_real_visit_namespace (ValaCodeVisitor* base,
                                            ValaNamespace* ns)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (ns != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) ns, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) ns, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_class (ValaCodeVisitor* base,
                                        ValaClass* cl)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (cl != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) cl, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) cl, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_struct (ValaCodeVisitor* base,
                                         ValaStruct* st)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (st != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) st, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) st, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_interface (ValaCodeVisitor* base,
                                            ValaInterface* iface)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (iface != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) iface, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) iface, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_enum (ValaCodeVisitor* base,
                                       ValaEnum* en)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (en != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) en, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) en, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_enum_value (ValaCodeVisitor* base,
                                             ValaEnumValue* ev)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (ev != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) ev, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) ev, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_error_domain (ValaCodeVisitor* base,
                                               ValaErrorDomain* edomain)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (edomain != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) edomain, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) edomain, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_error_code (ValaCodeVisitor* base,
                                             ValaErrorCode* ecode)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (ecode != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) ecode, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) ecode, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_delegate (ValaCodeVisitor* base,
                                           ValaDelegate* d)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (d != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) d, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) d, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_constant (ValaCodeVisitor* base,
                                           ValaConstant* c)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (c != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) c, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) c, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_field (ValaCodeVisitor* base,
                                        ValaField* f)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (f != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) f, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) f, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_method (ValaCodeVisitor* base,
                                         ValaMethod* m)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (m != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) m, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) m, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_creation_method (ValaCodeVisitor* base,
                                                  ValaCreationMethod* m)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (m != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) m, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) m, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_formal_parameter (ValaCodeVisitor* base,
                                                   ValaParameter* p)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (p != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) p, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) p, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_property (ValaCodeVisitor* base,
                                           ValaProperty* prop)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (prop != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) prop, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) prop, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_property_accessor (ValaCodeVisitor* base,
                                                    ValaPropertyAccessor* acc)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (acc != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) acc, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) acc, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_signal (ValaCodeVisitor* base,
                                         ValaSignal* sig)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (sig != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) sig, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) sig, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_constructor (ValaCodeVisitor* base,
                                              ValaConstructor* c)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (c != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) c, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) c, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_destructor (ValaCodeVisitor* base,
                                             ValaDestructor* d)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (d != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) d, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) d, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_block (ValaCodeVisitor* base,
                                        ValaBlock* b)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (b != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) b, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) b, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_data_type (ValaCodeVisitor* base,
                                            ValaDataType* data_type)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (data_type != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) data_type, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) data_type, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_declaration_statement (ValaCodeVisitor* base,
                                                        ValaDeclarationStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_local_variable (ValaCodeVisitor* base,
                                                 ValaLocalVariable* local)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (local != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) local, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) local, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_initializer_list (ValaCodeVisitor* base,
                                                   ValaInitializerList* list)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (list != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) list, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) list, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_expression_statement (ValaCodeVisitor* base,
                                                       ValaExpressionStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_if_statement (ValaCodeVisitor* base,
                                               ValaIfStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_switch_statement (ValaCodeVisitor* base,
                                                   ValaSwitchStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_switch_section (ValaCodeVisitor* base,
                                                 ValaSwitchSection* section)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (section != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) section, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) section, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_switch_label (ValaCodeVisitor* base,
                                               ValaSwitchLabel* label)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (label != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) label, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) label, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_loop_statement (ValaCodeVisitor* base,
                                                 ValaLoopStatement* loop)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (loop != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) loop, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) loop, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_while_statement (ValaCodeVisitor* base,
                                                  ValaWhileStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_do_statement (ValaCodeVisitor* base,
                                               ValaDoStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_for_statement (ValaCodeVisitor* base,
                                                ValaForStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_foreach_statement (ValaCodeVisitor* base,
                                                    ValaForeachStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_break_statement (ValaCodeVisitor* base,
                                                  ValaBreakStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_continue_statement (ValaCodeVisitor* base,
                                                     ValaContinueStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_return_statement (ValaCodeVisitor* base,
                                                   ValaReturnStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_yield_statement (ValaCodeVisitor* base,
                                                  ValaYieldStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_throw_statement (ValaCodeVisitor* base,
                                                  ValaThrowStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_try_statement (ValaCodeVisitor* base,
                                                ValaTryStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_catch_clause (ValaCodeVisitor* base,
                                               ValaCatchClause* clause)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (clause != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) clause, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) clause, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_lock_statement (ValaCodeVisitor* base,
                                                 ValaLockStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_unlock_statement (ValaCodeVisitor* base,
                                                   ValaUnlockStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_with_statement (ValaCodeVisitor* base,
                                                 ValaWithStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_delete_statement (ValaCodeVisitor* base,
                                                   ValaDeleteStatement* stmt)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (stmt != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) stmt, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) stmt, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_member_access (ValaCodeVisitor* base,
                                                ValaMemberAccess* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_assignment (ValaCodeVisitor* base,
                                             ValaAssignment* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_method_call (ValaCodeVisitor* base,
                                              ValaMethodCall* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_conditional_expression (ValaCodeVisitor* base,
                                                         ValaConditionalExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_binary_expression (ValaCodeVisitor* base,
                                                    ValaBinaryExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_unary_expression (ValaCodeVisitor* base,
                                                   ValaUnaryExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_reference_transfer_expression (ValaCodeVisitor* base,
                                                                ValaReferenceTransferExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_object_creation_expression (ValaCodeVisitor* base,
                                                             ValaObjectCreationExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_postfix_expression (ValaCodeVisitor* base,
                                                     ValaPostfixExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_array_creation_expression (ValaCodeVisitor* base,
                                                            ValaArrayCreationExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_cast_expression (ValaCodeVisitor* base,
                                                  ValaCastExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_element_access (ValaCodeVisitor* base,
                                                 ValaElementAccess* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_lambda_expression (ValaCodeVisitor* base,
                                                    ValaLambdaExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_pointer_indirection (ValaCodeVisitor* base,
                                                      ValaPointerIndirection* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_addressof_expression (ValaCodeVisitor* base,
                                                       ValaAddressofExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_real_visit_slice_expression (ValaCodeVisitor* base,
                                                   ValaSliceExpression* expr)
{
	ValaTraverseVisitor * self;
	ValaTraverseFunc _tmp0_;
	gpointer _tmp0__target;
	self = (ValaTraverseVisitor*) base;
	g_return_if_fail (expr != NULL);
	_tmp0_ = self->priv->func;
	_tmp0__target = self->priv->func_target;
	if (_tmp0_ ((ValaCodeNode*) expr, _tmp0__target) == VALA_TRAVERSE_STATUS_CONTINUE) {
		vala_code_node_accept_children ((ValaCodeNode*) expr, (ValaCodeVisitor*) self);
	}
}

static void
vala_traverse_visitor_class_init (ValaTraverseVisitorClass * klass,
                                  gpointer klass_data)
{
	vala_traverse_visitor_parent_class = g_type_class_peek_parent (klass);
	((ValaCodeVisitorClass *) klass)->finalize = vala_traverse_visitor_finalize;
	g_type_class_adjust_private_offset (klass, &ValaTraverseVisitor_private_offset);
	((ValaCodeVisitorClass *) klass)->visit_namespace = (void (*) (ValaCodeVisitor*, ValaNamespace*)) vala_traverse_visitor_real_visit_namespace;
	((ValaCodeVisitorClass *) klass)->visit_class = (void (*) (ValaCodeVisitor*, ValaClass*)) vala_traverse_visitor_real_visit_class;
	((ValaCodeVisitorClass *) klass)->visit_struct = (void (*) (ValaCodeVisitor*, ValaStruct*)) vala_traverse_visitor_real_visit_struct;
	((ValaCodeVisitorClass *) klass)->visit_interface = (void (*) (ValaCodeVisitor*, ValaInterface*)) vala_traverse_visitor_real_visit_interface;
	((ValaCodeVisitorClass *) klass)->visit_enum = (void (*) (ValaCodeVisitor*, ValaEnum*)) vala_traverse_visitor_real_visit_enum;
	((ValaCodeVisitorClass *) klass)->visit_enum_value = (void (*) (ValaCodeVisitor*, ValaEnumValue*)) vala_traverse_visitor_real_visit_enum_value;
	((ValaCodeVisitorClass *) klass)->visit_error_domain = (void (*) (ValaCodeVisitor*, ValaErrorDomain*)) vala_traverse_visitor_real_visit_error_domain;
	((ValaCodeVisitorClass *) klass)->visit_error_code = (void (*) (ValaCodeVisitor*, ValaErrorCode*)) vala_traverse_visitor_real_visit_error_code;
	((ValaCodeVisitorClass *) klass)->visit_delegate = (void (*) (ValaCodeVisitor*, ValaDelegate*)) vala_traverse_visitor_real_visit_delegate;
	((ValaCodeVisitorClass *) klass)->visit_constant = (void (*) (ValaCodeVisitor*, ValaConstant*)) vala_traverse_visitor_real_visit_constant;
	((ValaCodeVisitorClass *) klass)->visit_field = (void (*) (ValaCodeVisitor*, ValaField*)) vala_traverse_visitor_real_visit_field;
	((ValaCodeVisitorClass *) klass)->visit_method = (void (*) (ValaCodeVisitor*, ValaMethod*)) vala_traverse_visitor_real_visit_method;
	((ValaCodeVisitorClass *) klass)->visit_creation_method = (void (*) (ValaCodeVisitor*, ValaCreationMethod*)) vala_traverse_visitor_real_visit_creation_method;
	((ValaCodeVisitorClass *) klass)->visit_formal_parameter = (void (*) (ValaCodeVisitor*, ValaParameter*)) vala_traverse_visitor_real_visit_formal_parameter;
	((ValaCodeVisitorClass *) klass)->visit_property = (void (*) (ValaCodeVisitor*, ValaProperty*)) vala_traverse_visitor_real_visit_property;
	((ValaCodeVisitorClass *) klass)->visit_property_accessor = (void (*) (ValaCodeVisitor*, ValaPropertyAccessor*)) vala_traverse_visitor_real_visit_property_accessor;
	((ValaCodeVisitorClass *) klass)->visit_signal = (void (*) (ValaCodeVisitor*, ValaSignal*)) vala_traverse_visitor_real_visit_signal;
	((ValaCodeVisitorClass *) klass)->visit_constructor = (void (*) (ValaCodeVisitor*, ValaConstructor*)) vala_traverse_visitor_real_visit_constructor;
	((ValaCodeVisitorClass *) klass)->visit_destructor = (void (*) (ValaCodeVisitor*, ValaDestructor*)) vala_traverse_visitor_real_visit_destructor;
	((ValaCodeVisitorClass *) klass)->visit_block = (void (*) (ValaCodeVisitor*, ValaBlock*)) vala_traverse_visitor_real_visit_block;
	((ValaCodeVisitorClass *) klass)->visit_data_type = (void (*) (ValaCodeVisitor*, ValaDataType*)) vala_traverse_visitor_real_visit_data_type;
	((ValaCodeVisitorClass *) klass)->visit_declaration_statement = (void (*) (ValaCodeVisitor*, ValaDeclarationStatement*)) vala_traverse_visitor_real_visit_declaration_statement;
	((ValaCodeVisitorClass *) klass)->visit_local_variable = (void (*) (ValaCodeVisitor*, ValaLocalVariable*)) vala_traverse_visitor_real_visit_local_variable;
	((ValaCodeVisitorClass *) klass)->visit_initializer_list = (void (*) (ValaCodeVisitor*, ValaInitializerList*)) vala_traverse_visitor_real_visit_initializer_list;
	((ValaCodeVisitorClass *) klass)->visit_expression_statement = (void (*) (ValaCodeVisitor*, ValaExpressionStatement*)) vala_traverse_visitor_real_visit_expression_statement;
	((ValaCodeVisitorClass *) klass)->visit_if_statement = (void (*) (ValaCodeVisitor*, ValaIfStatement*)) vala_traverse_visitor_real_visit_if_statement;
	((ValaCodeVisitorClass *) klass)->visit_switch_statement = (void (*) (ValaCodeVisitor*, ValaSwitchStatement*)) vala_traverse_visitor_real_visit_switch_statement;
	((ValaCodeVisitorClass *) klass)->visit_switch_section = (void (*) (ValaCodeVisitor*, ValaSwitchSection*)) vala_traverse_visitor_real_visit_switch_section;
	((ValaCodeVisitorClass *) klass)->visit_switch_label = (void (*) (ValaCodeVisitor*, ValaSwitchLabel*)) vala_traverse_visitor_real_visit_switch_label;
	((ValaCodeVisitorClass *) klass)->visit_loop_statement = (void (*) (ValaCodeVisitor*, ValaLoopStatement*)) vala_traverse_visitor_real_visit_loop_statement;
	((ValaCodeVisitorClass *) klass)->visit_while_statement = (void (*) (ValaCodeVisitor*, ValaWhileStatement*)) vala_traverse_visitor_real_visit_while_statement;
	((ValaCodeVisitorClass *) klass)->visit_do_statement = (void (*) (ValaCodeVisitor*, ValaDoStatement*)) vala_traverse_visitor_real_visit_do_statement;
	((ValaCodeVisitorClass *) klass)->visit_for_statement = (void (*) (ValaCodeVisitor*, ValaForStatement*)) vala_traverse_visitor_real_visit_for_statement;
	((ValaCodeVisitorClass *) klass)->visit_foreach_statement = (void (*) (ValaCodeVisitor*, ValaForeachStatement*)) vala_traverse_visitor_real_visit_foreach_statement;
	((ValaCodeVisitorClass *) klass)->visit_break_statement = (void (*) (ValaCodeVisitor*, ValaBreakStatement*)) vala_traverse_visitor_real_visit_break_statement;
	((ValaCodeVisitorClass *) klass)->visit_continue_statement = (void (*) (ValaCodeVisitor*, ValaContinueStatement*)) vala_traverse_visitor_real_visit_continue_statement;
	((ValaCodeVisitorClass *) klass)->visit_return_statement = (void (*) (ValaCodeVisitor*, ValaReturnStatement*)) vala_traverse_visitor_real_visit_return_statement;
	((ValaCodeVisitorClass *) klass)->visit_yield_statement = (void (*) (ValaCodeVisitor*, ValaYieldStatement*)) vala_traverse_visitor_real_visit_yield_statement;
	((ValaCodeVisitorClass *) klass)->visit_throw_statement = (void (*) (ValaCodeVisitor*, ValaThrowStatement*)) vala_traverse_visitor_real_visit_throw_statement;
	((ValaCodeVisitorClass *) klass)->visit_try_statement = (void (*) (ValaCodeVisitor*, ValaTryStatement*)) vala_traverse_visitor_real_visit_try_statement;
	((ValaCodeVisitorClass *) klass)->visit_catch_clause = (void (*) (ValaCodeVisitor*, ValaCatchClause*)) vala_traverse_visitor_real_visit_catch_clause;
	((ValaCodeVisitorClass *) klass)->visit_lock_statement = (void (*) (ValaCodeVisitor*, ValaLockStatement*)) vala_traverse_visitor_real_visit_lock_statement;
	((ValaCodeVisitorClass *) klass)->visit_unlock_statement = (void (*) (ValaCodeVisitor*, ValaUnlockStatement*)) vala_traverse_visitor_real_visit_unlock_statement;
	((ValaCodeVisitorClass *) klass)->visit_with_statement = (void (*) (ValaCodeVisitor*, ValaWithStatement*)) vala_traverse_visitor_real_visit_with_statement;
	((ValaCodeVisitorClass *) klass)->visit_delete_statement = (void (*) (ValaCodeVisitor*, ValaDeleteStatement*)) vala_traverse_visitor_real_visit_delete_statement;
	((ValaCodeVisitorClass *) klass)->visit_member_access = (void (*) (ValaCodeVisitor*, ValaMemberAccess*)) vala_traverse_visitor_real_visit_member_access;
	((ValaCodeVisitorClass *) klass)->visit_assignment = (void (*) (ValaCodeVisitor*, ValaAssignment*)) vala_traverse_visitor_real_visit_assignment;
	((ValaCodeVisitorClass *) klass)->visit_method_call = (void (*) (ValaCodeVisitor*, ValaMethodCall*)) vala_traverse_visitor_real_visit_method_call;
	((ValaCodeVisitorClass *) klass)->visit_conditional_expression = (void (*) (ValaCodeVisitor*, ValaConditionalExpression*)) vala_traverse_visitor_real_visit_conditional_expression;
	((ValaCodeVisitorClass *) klass)->visit_binary_expression = (void (*) (ValaCodeVisitor*, ValaBinaryExpression*)) vala_traverse_visitor_real_visit_binary_expression;
	((ValaCodeVisitorClass *) klass)->visit_unary_expression = (void (*) (ValaCodeVisitor*, ValaUnaryExpression*)) vala_traverse_visitor_real_visit_unary_expression;
	((ValaCodeVisitorClass *) klass)->visit_reference_transfer_expression = (void (*) (ValaCodeVisitor*, ValaReferenceTransferExpression*)) vala_traverse_visitor_real_visit_reference_transfer_expression;
	((ValaCodeVisitorClass *) klass)->visit_object_creation_expression = (void (*) (ValaCodeVisitor*, ValaObjectCreationExpression*)) vala_traverse_visitor_real_visit_object_creation_expression;
	((ValaCodeVisitorClass *) klass)->visit_postfix_expression = (void (*) (ValaCodeVisitor*, ValaPostfixExpression*)) vala_traverse_visitor_real_visit_postfix_expression;
	((ValaCodeVisitorClass *) klass)->visit_array_creation_expression = (void (*) (ValaCodeVisitor*, ValaArrayCreationExpression*)) vala_traverse_visitor_real_visit_array_creation_expression;
	((ValaCodeVisitorClass *) klass)->visit_cast_expression = (void (*) (ValaCodeVisitor*, ValaCastExpression*)) vala_traverse_visitor_real_visit_cast_expression;
	((ValaCodeVisitorClass *) klass)->visit_element_access = (void (*) (ValaCodeVisitor*, ValaElementAccess*)) vala_traverse_visitor_real_visit_element_access;
	((ValaCodeVisitorClass *) klass)->visit_lambda_expression = (void (*) (ValaCodeVisitor*, ValaLambdaExpression*)) vala_traverse_visitor_real_visit_lambda_expression;
	((ValaCodeVisitorClass *) klass)->visit_pointer_indirection = (void (*) (ValaCodeVisitor*, ValaPointerIndirection*)) vala_traverse_visitor_real_visit_pointer_indirection;
	((ValaCodeVisitorClass *) klass)->visit_addressof_expression = (void (*) (ValaCodeVisitor*, ValaAddressofExpression*)) vala_traverse_visitor_real_visit_addressof_expression;
	((ValaCodeVisitorClass *) klass)->visit_slice_expression = (void (*) (ValaCodeVisitor*, ValaSliceExpression*)) vala_traverse_visitor_real_visit_slice_expression;
}

static void
vala_traverse_visitor_instance_init (ValaTraverseVisitor * self,
                                     gpointer klass)
{
	self->priv = vala_traverse_visitor_get_instance_private (self);
}

static void
vala_traverse_visitor_finalize (ValaCodeVisitor * obj)
{
	ValaTraverseVisitor * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, VALA_TYPE_TRAVERSE_VISITOR, ValaTraverseVisitor);
	(self->priv->func_target_destroy_notify == NULL) ? NULL : (self->priv->func_target_destroy_notify (self->priv->func_target), NULL);
	self->priv->func = NULL;
	self->priv->func_target = NULL;
	self->priv->func_target_destroy_notify = NULL;
	VALA_CODE_VISITOR_CLASS (vala_traverse_visitor_parent_class)->finalize (obj);
}

/**
 * Code visitor for traversing the tree with a simple callback
 */
static GType
vala_traverse_visitor_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ValaTraverseVisitorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_traverse_visitor_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaTraverseVisitor), 0, (GInstanceInitFunc) vala_traverse_visitor_instance_init, NULL };
	GType vala_traverse_visitor_type_id;
	vala_traverse_visitor_type_id = g_type_register_static (VALA_TYPE_CODE_VISITOR, "ValaTraverseVisitor", &g_define_type_info, 0);
	ValaTraverseVisitor_private_offset = g_type_add_instance_private (vala_traverse_visitor_type_id, sizeof (ValaTraverseVisitorPrivate));
	return vala_traverse_visitor_type_id;
}

GType
vala_traverse_visitor_get_type (void)
{
	static volatile gsize vala_traverse_visitor_type_id__once = 0;
	if (g_once_init_enter (&vala_traverse_visitor_type_id__once)) {
		GType vala_traverse_visitor_type_id;
		vala_traverse_visitor_type_id = vala_traverse_visitor_get_type_once ();
		g_once_init_leave (&vala_traverse_visitor_type_id__once, vala_traverse_visitor_type_id);
	}
	return vala_traverse_visitor_type_id__once;
}

static GType
vala_traverse_status_get_type_once (void)
{
	static const GEnumValue values[] = {{VALA_TRAVERSE_STATUS_STOP, "VALA_TRAVERSE_STATUS_STOP", "stop"}, {VALA_TRAVERSE_STATUS_CONTINUE, "VALA_TRAVERSE_STATUS_CONTINUE", "continue"}, {0, NULL, NULL}};
	GType vala_traverse_status_type_id;
	vala_traverse_status_type_id = g_enum_register_static ("ValaTraverseStatus", values);
	return vala_traverse_status_type_id;
}

GType
vala_traverse_status_get_type (void)
{
	static volatile gsize vala_traverse_status_type_id__once = 0;
	if (g_once_init_enter (&vala_traverse_status_type_id__once)) {
		GType vala_traverse_status_type_id;
		vala_traverse_status_type_id = vala_traverse_status_get_type_once ();
		g_once_init_leave (&vala_traverse_status_type_id__once, vala_traverse_status_type_id);
	}
	return vala_traverse_status_type_id__once;
}

