Logo Search packages:      
Sourcecode: vala-0.12 version File versions  Download package

valamethod.c

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

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

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

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

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


#define VALA_TYPE_CODE_NODE (vala_code_node_get_type ())
#define VALA_CODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_NODE, ValaCodeNode))
#define VALA_CODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_NODE, ValaCodeNodeClass))
#define VALA_IS_CODE_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_NODE))
#define VALA_IS_CODE_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_NODE))
#define VALA_CODE_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_NODE, ValaCodeNodeClass))

typedef struct _ValaCodeNode ValaCodeNode;
typedef struct _ValaCodeNodeClass ValaCodeNodeClass;
typedef struct _ValaCodeNodePrivate ValaCodeNodePrivate;

#define VALA_TYPE_CODE_VISITOR (vala_code_visitor_get_type ())
#define VALA_CODE_VISITOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_VISITOR, ValaCodeVisitor))
#define VALA_CODE_VISITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_VISITOR, ValaCodeVisitorClass))
#define VALA_IS_CODE_VISITOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_VISITOR))
#define VALA_IS_CODE_VISITOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_VISITOR))
#define VALA_CODE_VISITOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_VISITOR, ValaCodeVisitorClass))

typedef struct _ValaCodeVisitor ValaCodeVisitor;
typedef struct _ValaCodeVisitorClass ValaCodeVisitorClass;

#define VALA_TYPE_CODE_CONTEXT (vala_code_context_get_type ())
#define VALA_CODE_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_CONTEXT, ValaCodeContext))
#define VALA_CODE_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_CONTEXT, ValaCodeContextClass))
#define VALA_IS_CODE_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_CONTEXT))
#define VALA_IS_CODE_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_CONTEXT))
#define VALA_CODE_CONTEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_CONTEXT, ValaCodeContextClass))

typedef struct _ValaCodeContext ValaCodeContext;
typedef struct _ValaCodeContextClass ValaCodeContextClass;

#define VALA_TYPE_CODE_GENERATOR (vala_code_generator_get_type ())
#define VALA_CODE_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CODE_GENERATOR, ValaCodeGenerator))
#define VALA_CODE_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CODE_GENERATOR, ValaCodeGeneratorClass))
#define VALA_IS_CODE_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CODE_GENERATOR))
#define VALA_IS_CODE_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CODE_GENERATOR))
#define VALA_CODE_GENERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CODE_GENERATOR, ValaCodeGeneratorClass))

typedef struct _ValaCodeGenerator ValaCodeGenerator;
typedef struct _ValaCodeGeneratorClass ValaCodeGeneratorClass;

#define VALA_TYPE_DATA_TYPE (vala_data_type_get_type ())
#define VALA_DATA_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DATA_TYPE, ValaDataType))
#define VALA_DATA_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DATA_TYPE, ValaDataTypeClass))
#define VALA_IS_DATA_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DATA_TYPE))
#define VALA_IS_DATA_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DATA_TYPE))
#define VALA_DATA_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DATA_TYPE, ValaDataTypeClass))

typedef struct _ValaDataType ValaDataType;
typedef struct _ValaDataTypeClass ValaDataTypeClass;

#define VALA_TYPE_EXPRESSION (vala_expression_get_type ())
#define VALA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_EXPRESSION, ValaExpression))
#define VALA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_EXPRESSION, ValaExpressionClass))
#define VALA_IS_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_EXPRESSION))
#define VALA_IS_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_EXPRESSION))
#define VALA_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_EXPRESSION, ValaExpressionClass))

typedef struct _ValaExpression ValaExpression;
typedef struct _ValaExpressionClass ValaExpressionClass;

#define VALA_TYPE_SYMBOL (vala_symbol_get_type ())
#define VALA_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SYMBOL, ValaSymbol))
#define VALA_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SYMBOL, ValaSymbolClass))
#define VALA_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SYMBOL))
#define VALA_IS_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SYMBOL))
#define VALA_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SYMBOL, ValaSymbolClass))

typedef struct _ValaSymbol ValaSymbol;
typedef struct _ValaSymbolClass ValaSymbolClass;

#define VALA_TYPE_VARIABLE (vala_variable_get_type ())
#define VALA_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VARIABLE, ValaVariable))
#define VALA_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VARIABLE, ValaVariableClass))
#define VALA_IS_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VARIABLE))
#define VALA_IS_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VARIABLE))
#define VALA_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VARIABLE, ValaVariableClass))

typedef struct _ValaVariable ValaVariable;
typedef struct _ValaVariableClass ValaVariableClass;

#define VALA_TYPE_LOCAL_VARIABLE (vala_local_variable_get_type ())
#define VALA_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariable))
#define VALA_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))
#define VALA_IS_LOCAL_VARIABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LOCAL_VARIABLE))
#define VALA_IS_LOCAL_VARIABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LOCAL_VARIABLE))
#define VALA_LOCAL_VARIABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LOCAL_VARIABLE, ValaLocalVariableClass))

typedef struct _ValaLocalVariable ValaLocalVariable;
typedef struct _ValaLocalVariableClass ValaLocalVariableClass;

#define VALA_TYPE_ATTRIBUTE (vala_attribute_get_type ())
#define VALA_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ATTRIBUTE, ValaAttribute))
#define VALA_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ATTRIBUTE, ValaAttributeClass))
#define VALA_IS_ATTRIBUTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ATTRIBUTE))
#define VALA_IS_ATTRIBUTE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ATTRIBUTE))
#define VALA_ATTRIBUTE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ATTRIBUTE, ValaAttributeClass))

typedef struct _ValaAttribute ValaAttribute;
typedef struct _ValaAttributeClass ValaAttributeClass;
typedef struct _ValaSymbolPrivate ValaSymbolPrivate;

#define VALA_TYPE_NAMESPACE (vala_namespace_get_type ())
#define VALA_NAMESPACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NAMESPACE, ValaNamespace))
#define VALA_NAMESPACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NAMESPACE, ValaNamespaceClass))
#define VALA_IS_NAMESPACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_NAMESPACE))
#define VALA_IS_NAMESPACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_NAMESPACE))
#define VALA_NAMESPACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_NAMESPACE, ValaNamespaceClass))

typedef struct _ValaNamespace ValaNamespace;
typedef struct _ValaNamespaceClass ValaNamespaceClass;

#define VALA_TYPE_TYPESYMBOL (vala_typesymbol_get_type ())
#define VALA_TYPESYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPESYMBOL, ValaTypeSymbol))
#define VALA_TYPESYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPESYMBOL, ValaTypeSymbolClass))
#define VALA_IS_TYPESYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPESYMBOL))
#define VALA_IS_TYPESYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPESYMBOL))
#define VALA_TYPESYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPESYMBOL, ValaTypeSymbolClass))

typedef struct _ValaTypeSymbol ValaTypeSymbol;
typedef struct _ValaTypeSymbolClass ValaTypeSymbolClass;

#define VALA_TYPE_OBJECT_TYPE_SYMBOL (vala_object_type_symbol_get_type ())
#define VALA_OBJECT_TYPE_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbol))
#define VALA_OBJECT_TYPE_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbolClass))
#define VALA_IS_OBJECT_TYPE_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_OBJECT_TYPE_SYMBOL))
#define VALA_IS_OBJECT_TYPE_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_OBJECT_TYPE_SYMBOL))
#define VALA_OBJECT_TYPE_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_OBJECT_TYPE_SYMBOL, ValaObjectTypeSymbolClass))

typedef struct _ValaObjectTypeSymbol ValaObjectTypeSymbol;
typedef struct _ValaObjectTypeSymbolClass ValaObjectTypeSymbolClass;

#define VALA_TYPE_CLASS (vala_class_get_type ())
#define VALA_CLASS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CLASS, ValaClass))
#define VALA_CLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CLASS, ValaClassClass))
#define VALA_IS_CLASS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CLASS))
#define VALA_IS_CLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CLASS))
#define VALA_CLASS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CLASS, ValaClassClass))

typedef struct _ValaClass ValaClass;
typedef struct _ValaClassClass ValaClassClass;

#define VALA_TYPE_INTERFACE (vala_interface_get_type ())
#define VALA_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INTERFACE, ValaInterface))
#define VALA_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INTERFACE, ValaInterfaceClass))
#define VALA_IS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INTERFACE))
#define VALA_IS_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INTERFACE))
#define VALA_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INTERFACE, ValaInterfaceClass))

typedef struct _ValaInterface ValaInterface;
typedef struct _ValaInterfaceClass ValaInterfaceClass;

#define VALA_TYPE_STRUCT (vala_struct_get_type ())
#define VALA_STRUCT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRUCT, ValaStruct))
#define VALA_STRUCT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRUCT, ValaStructClass))
#define VALA_IS_STRUCT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STRUCT))
#define VALA_IS_STRUCT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_STRUCT))
#define VALA_STRUCT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_STRUCT, ValaStructClass))

typedef struct _ValaStruct ValaStruct;
typedef struct _ValaStructClass ValaStructClass;

#define VALA_TYPE_ENUM (vala_enum_get_type ())
#define VALA_ENUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM, ValaEnum))
#define VALA_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM, ValaEnumClass))
#define VALA_IS_ENUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ENUM))
#define VALA_IS_ENUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ENUM))
#define VALA_ENUM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ENUM, ValaEnumClass))

typedef struct _ValaEnum ValaEnum;
typedef struct _ValaEnumClass ValaEnumClass;

#define VALA_TYPE_ERROR_DOMAIN (vala_error_domain_get_type ())
#define VALA_ERROR_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ERROR_DOMAIN, ValaErrorDomain))
#define VALA_ERROR_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ERROR_DOMAIN, ValaErrorDomainClass))
#define VALA_IS_ERROR_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ERROR_DOMAIN))
#define VALA_IS_ERROR_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ERROR_DOMAIN))
#define VALA_ERROR_DOMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ERROR_DOMAIN, ValaErrorDomainClass))

typedef struct _ValaErrorDomain ValaErrorDomain;
typedef struct _ValaErrorDomainClass ValaErrorDomainClass;

#define VALA_TYPE_DELEGATE (vala_delegate_get_type ())
#define VALA_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DELEGATE, ValaDelegate))
#define VALA_DELEGATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DELEGATE, ValaDelegateClass))
#define VALA_IS_DELEGATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DELEGATE))
#define VALA_IS_DELEGATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DELEGATE))
#define VALA_DELEGATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DELEGATE, ValaDelegateClass))

typedef struct _ValaDelegate ValaDelegate;
typedef struct _ValaDelegateClass ValaDelegateClass;

#define VALA_TYPE_CONSTANT (vala_constant_get_type ())
#define VALA_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTANT, ValaConstant))
#define VALA_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTANT, ValaConstantClass))
#define VALA_IS_CONSTANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTANT))
#define VALA_IS_CONSTANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTANT))
#define VALA_CONSTANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTANT, ValaConstantClass))

typedef struct _ValaConstant ValaConstant;
typedef struct _ValaConstantClass ValaConstantClass;

#define VALA_TYPE_FIELD (vala_field_get_type ())
#define VALA_FIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FIELD, ValaField))
#define VALA_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FIELD, ValaFieldClass))
#define VALA_IS_FIELD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_FIELD))
#define VALA_IS_FIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_FIELD))
#define VALA_FIELD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_FIELD, ValaFieldClass))

typedef struct _ValaField ValaField;
typedef struct _ValaFieldClass ValaFieldClass;

#define VALA_TYPE_SUBROUTINE (vala_subroutine_get_type ())
#define VALA_SUBROUTINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SUBROUTINE, ValaSubroutine))
#define VALA_SUBROUTINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SUBROUTINE, ValaSubroutineClass))
#define VALA_IS_SUBROUTINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SUBROUTINE))
#define VALA_IS_SUBROUTINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SUBROUTINE))
#define VALA_SUBROUTINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SUBROUTINE, ValaSubroutineClass))

typedef struct _ValaSubroutine ValaSubroutine;
typedef struct _ValaSubroutineClass ValaSubroutineClass;

#define VALA_TYPE_METHOD (vala_method_get_type ())
#define VALA_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD, ValaMethod))
#define VALA_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD, ValaMethodClass))
#define VALA_IS_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_METHOD))
#define VALA_IS_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_METHOD))
#define VALA_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_METHOD, ValaMethodClass))

typedef struct _ValaMethod ValaMethod;
typedef struct _ValaMethodClass ValaMethodClass;

#define VALA_TYPE_PROPERTY (vala_property_get_type ())
#define VALA_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PROPERTY, ValaProperty))
#define VALA_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PROPERTY, ValaPropertyClass))
#define VALA_IS_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PROPERTY))
#define VALA_IS_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PROPERTY))
#define VALA_PROPERTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PROPERTY, ValaPropertyClass))

typedef struct _ValaProperty ValaProperty;
typedef struct _ValaPropertyClass ValaPropertyClass;

#define VALA_TYPE_SIGNAL (vala_signal_get_type ())
#define VALA_SIGNAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SIGNAL, ValaSignal))
#define VALA_SIGNAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SIGNAL, ValaSignalClass))
#define VALA_IS_SIGNAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SIGNAL))
#define VALA_IS_SIGNAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SIGNAL))
#define VALA_SIGNAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SIGNAL, ValaSignalClass))

typedef struct _ValaSignal ValaSignal;
typedef struct _ValaSignalClass ValaSignalClass;

#define VALA_TYPE_CONSTRUCTOR (vala_constructor_get_type ())
#define VALA_CONSTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONSTRUCTOR, ValaConstructor))
#define VALA_CONSTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONSTRUCTOR, ValaConstructorClass))
#define VALA_IS_CONSTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONSTRUCTOR))
#define VALA_IS_CONSTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONSTRUCTOR))
#define VALA_CONSTRUCTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONSTRUCTOR, ValaConstructorClass))

typedef struct _ValaConstructor ValaConstructor;
typedef struct _ValaConstructorClass ValaConstructorClass;

#define VALA_TYPE_DESTRUCTOR (vala_destructor_get_type ())
#define VALA_DESTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DESTRUCTOR, ValaDestructor))
#define VALA_DESTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DESTRUCTOR, ValaDestructorClass))
#define VALA_IS_DESTRUCTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DESTRUCTOR))
#define VALA_IS_DESTRUCTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DESTRUCTOR))
#define VALA_DESTRUCTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DESTRUCTOR, ValaDestructorClass))

typedef struct _ValaDestructor ValaDestructor;
typedef struct _ValaDestructorClass ValaDestructorClass;
typedef struct _ValaSubroutinePrivate ValaSubroutinePrivate;
typedef struct _ValaMethodPrivate ValaMethodPrivate;

#define VALA_TYPE_TYPEPARAMETER (vala_typeparameter_get_type ())
#define VALA_TYPEPARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPEPARAMETER, ValaTypeParameter))
#define VALA_TYPEPARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPEPARAMETER, ValaTypeParameterClass))
#define VALA_IS_TYPEPARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPEPARAMETER))
#define VALA_IS_TYPEPARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPEPARAMETER))
#define VALA_TYPEPARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPEPARAMETER, ValaTypeParameterClass))

typedef struct _ValaTypeParameter ValaTypeParameter;
typedef struct _ValaTypeParameterClass ValaTypeParameterClass;

#define VALA_TYPE_MEMBER_BINDING (vala_member_binding_get_type ())

#define VALA_TYPE_PARAMETER (vala_parameter_get_type ())
#define VALA_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PARAMETER, ValaParameter))
#define VALA_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PARAMETER, ValaParameterClass))
#define VALA_IS_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PARAMETER))
#define VALA_IS_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PARAMETER))
#define VALA_PARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PARAMETER, ValaParameterClass))

typedef struct _ValaParameter ValaParameter;
typedef struct _ValaParameterClass ValaParameterClass;
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
#define _vala_code_node_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_node_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))

#define VALA_TYPE_SOURCE_REFERENCE (vala_source_reference_get_type ())
#define VALA_SOURCE_REFERENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SOURCE_REFERENCE, ValaSourceReference))
#define VALA_SOURCE_REFERENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SOURCE_REFERENCE, ValaSourceReferenceClass))
#define VALA_IS_SOURCE_REFERENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SOURCE_REFERENCE))
#define VALA_IS_SOURCE_REFERENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SOURCE_REFERENCE))
#define VALA_SOURCE_REFERENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SOURCE_REFERENCE, ValaSourceReferenceClass))

typedef struct _ValaSourceReference ValaSourceReference;
typedef struct _ValaSourceReferenceClass ValaSourceReferenceClass;

#define VALA_TYPE_COMMENT (vala_comment_get_type ())
#define VALA_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_COMMENT, ValaComment))
#define VALA_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_COMMENT, ValaCommentClass))
#define VALA_IS_COMMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_COMMENT))
#define VALA_IS_COMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_COMMENT))
#define VALA_COMMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_COMMENT, ValaCommentClass))

typedef struct _ValaComment ValaComment;
typedef struct _ValaCommentClass ValaCommentClass;

#define VALA_TYPE_SCOPE (vala_scope_get_type ())
#define VALA_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SCOPE, ValaScope))
#define VALA_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SCOPE, ValaScopeClass))
#define VALA_IS_SCOPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SCOPE))
#define VALA_IS_SCOPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SCOPE))
#define VALA_SCOPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SCOPE, ValaScopeClass))

typedef struct _ValaScope ValaScope;
typedef struct _ValaScopeClass ValaScopeClass;

#define VALA_TYPE_BLOCK (vala_block_get_type ())
#define VALA_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BLOCK, ValaBlock))
#define VALA_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BLOCK, ValaBlockClass))
#define VALA_IS_BLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BLOCK))
#define VALA_IS_BLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BLOCK))
#define VALA_BLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BLOCK, ValaBlockClass))

typedef struct _ValaBlock ValaBlock;
typedef struct _ValaBlockClass ValaBlockClass;

#define VALA_TYPE_REFERENCE_TYPE (vala_reference_type_get_type ())
#define VALA_REFERENCE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REFERENCE_TYPE, ValaReferenceType))
#define VALA_REFERENCE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REFERENCE_TYPE, ValaReferenceTypeClass))
#define VALA_IS_REFERENCE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REFERENCE_TYPE))
#define VALA_IS_REFERENCE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REFERENCE_TYPE))
#define VALA_REFERENCE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REFERENCE_TYPE, ValaReferenceTypeClass))

typedef struct _ValaReferenceType ValaReferenceType;
typedef struct _ValaReferenceTypeClass ValaReferenceTypeClass;

#define VALA_TYPE_OBJECT_TYPE (vala_object_type_get_type ())
#define VALA_OBJECT_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_OBJECT_TYPE, ValaObjectType))
#define VALA_OBJECT_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_OBJECT_TYPE, ValaObjectTypeClass))
#define VALA_IS_OBJECT_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_OBJECT_TYPE))
#define VALA_IS_OBJECT_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_OBJECT_TYPE))
#define VALA_OBJECT_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_OBJECT_TYPE, ValaObjectTypeClass))

typedef struct _ValaObjectType ValaObjectType;
typedef struct _ValaObjectTypeClass ValaObjectTypeClass;

#define VALA_TYPE_GENERIC_TYPE (vala_generic_type_get_type ())
#define VALA_GENERIC_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_GENERIC_TYPE, ValaGenericType))
#define VALA_GENERIC_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_GENERIC_TYPE, ValaGenericTypeClass))
#define VALA_IS_GENERIC_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_GENERIC_TYPE))
#define VALA_IS_GENERIC_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_GENERIC_TYPE))
#define VALA_GENERIC_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_GENERIC_TYPE, ValaGenericTypeClass))

typedef struct _ValaGenericType ValaGenericType;
typedef struct _ValaGenericTypeClass ValaGenericTypeClass;

#define VALA_TYPE_MEMBER_ACCESS (vala_member_access_get_type ())
#define VALA_MEMBER_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccess))
#define VALA_MEMBER_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccessClass))
#define VALA_IS_MEMBER_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MEMBER_ACCESS))
#define VALA_IS_MEMBER_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MEMBER_ACCESS))
#define VALA_MEMBER_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MEMBER_ACCESS, ValaMemberAccessClass))

typedef struct _ValaMemberAccess ValaMemberAccess;
typedef struct _ValaMemberAccessClass ValaMemberAccessClass;
#define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))

#define VALA_TYPE_CREATION_METHOD (vala_creation_method_get_type ())
#define VALA_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethod))
#define VALA_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))
#define VALA_IS_CREATION_METHOD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CREATION_METHOD))
#define VALA_IS_CREATION_METHOD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CREATION_METHOD))
#define VALA_CREATION_METHOD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CREATION_METHOD, ValaCreationMethodClass))

typedef struct _ValaCreationMethod ValaCreationMethod;
typedef struct _ValaCreationMethodClass ValaCreationMethodClass;

#define VALA_TYPE_SYMBOL_ACCESSIBILITY (vala_symbol_accessibility_get_type ())

#define VALA_TYPE_SOURCE_FILE_TYPE (vala_source_file_type_get_type ())

#define VALA_TYPE_SEMANTIC_ANALYZER (vala_semantic_analyzer_get_type ())
#define VALA_SEMANTIC_ANALYZER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SEMANTIC_ANALYZER, ValaSemanticAnalyzer))
#define VALA_SEMANTIC_ANALYZER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SEMANTIC_ANALYZER, ValaSemanticAnalyzerClass))
#define VALA_IS_SEMANTIC_ANALYZER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SEMANTIC_ANALYZER))
#define VALA_IS_SEMANTIC_ANALYZER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SEMANTIC_ANALYZER))
#define VALA_SEMANTIC_ANALYZER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SEMANTIC_ANALYZER, ValaSemanticAnalyzerClass))

typedef struct _ValaSemanticAnalyzer ValaSemanticAnalyzer;
typedef struct _ValaSemanticAnalyzerClass ValaSemanticAnalyzerClass;

#define VALA_TYPE_SOURCE_FILE (vala_source_file_get_type ())
#define VALA_SOURCE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SOURCE_FILE, ValaSourceFile))
#define VALA_SOURCE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SOURCE_FILE, ValaSourceFileClass))
#define VALA_IS_SOURCE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SOURCE_FILE))
#define VALA_IS_SOURCE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SOURCE_FILE))
#define VALA_SOURCE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SOURCE_FILE, ValaSourceFileClass))

typedef struct _ValaSourceFile ValaSourceFile;
typedef struct _ValaSourceFileClass ValaSourceFileClass;

#define VALA_TYPE_PARAMETER_DIRECTION (vala_parameter_direction_get_type ())
#define _vala_source_file_unref0(var) ((var == NULL) ? NULL : (var = (vala_source_file_unref (var), NULL)))
typedef struct _ValaCodeVisitorPrivate ValaCodeVisitorPrivate;

#define VALA_TYPE_ENUM_VALUE (vala_enum_value_get_type ())
#define VALA_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ENUM_VALUE, ValaEnumValue))
#define VALA_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ENUM_VALUE, ValaEnumValueClass))
#define VALA_IS_ENUM_VALUE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ENUM_VALUE))
#define VALA_IS_ENUM_VALUE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ENUM_VALUE))
#define VALA_ENUM_VALUE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ENUM_VALUE, ValaEnumValueClass))

typedef struct _ValaEnumValue ValaEnumValue;
typedef struct _ValaEnumValueClass ValaEnumValueClass;

#define VALA_TYPE_ERROR_CODE (vala_error_code_get_type ())
#define VALA_ERROR_CODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ERROR_CODE, ValaErrorCode))
#define VALA_ERROR_CODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ERROR_CODE, ValaErrorCodeClass))
#define VALA_IS_ERROR_CODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ERROR_CODE))
#define VALA_IS_ERROR_CODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ERROR_CODE))
#define VALA_ERROR_CODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ERROR_CODE, ValaErrorCodeClass))

typedef struct _ValaErrorCode ValaErrorCode;
typedef struct _ValaErrorCodeClass ValaErrorCodeClass;

#define VALA_TYPE_PROPERTY_ACCESSOR (vala_property_accessor_get_type ())
#define VALA_PROPERTY_ACCESSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessor))
#define VALA_PROPERTY_ACCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessorClass))
#define VALA_IS_PROPERTY_ACCESSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_PROPERTY_ACCESSOR))
#define VALA_IS_PROPERTY_ACCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_PROPERTY_ACCESSOR))
#define VALA_PROPERTY_ACCESSOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_PROPERTY_ACCESSOR, ValaPropertyAccessorClass))

typedef struct _ValaPropertyAccessor ValaPropertyAccessor;
typedef struct _ValaPropertyAccessorClass ValaPropertyAccessorClass;

#define VALA_TYPE_USING_DIRECTIVE (vala_using_directive_get_type ())
#define VALA_USING_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_USING_DIRECTIVE, ValaUsingDirective))
#define VALA_USING_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_USING_DIRECTIVE, ValaUsingDirectiveClass))
#define VALA_IS_USING_DIRECTIVE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_USING_DIRECTIVE))
#define VALA_IS_USING_DIRECTIVE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_USING_DIRECTIVE))
#define VALA_USING_DIRECTIVE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_USING_DIRECTIVE, ValaUsingDirectiveClass))

typedef struct _ValaUsingDirective ValaUsingDirective;
typedef struct _ValaUsingDirectiveClass ValaUsingDirectiveClass;

#define VALA_TYPE_EMPTY_STATEMENT (vala_empty_statement_get_type ())
#define VALA_EMPTY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_EMPTY_STATEMENT, ValaEmptyStatement))
#define VALA_EMPTY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_EMPTY_STATEMENT, ValaEmptyStatementClass))
#define VALA_IS_EMPTY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_EMPTY_STATEMENT))
#define VALA_IS_EMPTY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_EMPTY_STATEMENT))
#define VALA_EMPTY_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_EMPTY_STATEMENT, ValaEmptyStatementClass))

typedef struct _ValaEmptyStatement ValaEmptyStatement;
typedef struct _ValaEmptyStatementClass ValaEmptyStatementClass;

#define VALA_TYPE_DECLARATION_STATEMENT (vala_declaration_statement_get_type ())
#define VALA_DECLARATION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DECLARATION_STATEMENT, ValaDeclarationStatement))
#define VALA_DECLARATION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DECLARATION_STATEMENT, ValaDeclarationStatementClass))
#define VALA_IS_DECLARATION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DECLARATION_STATEMENT))
#define VALA_IS_DECLARATION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DECLARATION_STATEMENT))
#define VALA_DECLARATION_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DECLARATION_STATEMENT, ValaDeclarationStatementClass))

typedef struct _ValaDeclarationStatement ValaDeclarationStatement;
typedef struct _ValaDeclarationStatementClass ValaDeclarationStatementClass;

#define VALA_TYPE_INITIALIZER_LIST (vala_initializer_list_get_type ())
#define VALA_INITIALIZER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INITIALIZER_LIST, ValaInitializerList))
#define VALA_INITIALIZER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INITIALIZER_LIST, ValaInitializerListClass))
#define VALA_IS_INITIALIZER_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INITIALIZER_LIST))
#define VALA_IS_INITIALIZER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INITIALIZER_LIST))
#define VALA_INITIALIZER_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INITIALIZER_LIST, ValaInitializerListClass))

typedef struct _ValaInitializerList ValaInitializerList;
typedef struct _ValaInitializerListClass ValaInitializerListClass;

#define VALA_TYPE_EXPRESSION_STATEMENT (vala_expression_statement_get_type ())
#define VALA_EXPRESSION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_EXPRESSION_STATEMENT, ValaExpressionStatement))
#define VALA_EXPRESSION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_EXPRESSION_STATEMENT, ValaExpressionStatementClass))
#define VALA_IS_EXPRESSION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_EXPRESSION_STATEMENT))
#define VALA_IS_EXPRESSION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_EXPRESSION_STATEMENT))
#define VALA_EXPRESSION_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_EXPRESSION_STATEMENT, ValaExpressionStatementClass))

typedef struct _ValaExpressionStatement ValaExpressionStatement;
typedef struct _ValaExpressionStatementClass ValaExpressionStatementClass;

#define VALA_TYPE_IF_STATEMENT (vala_if_statement_get_type ())
#define VALA_IF_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_IF_STATEMENT, ValaIfStatement))
#define VALA_IF_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_IF_STATEMENT, ValaIfStatementClass))
#define VALA_IS_IF_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_IF_STATEMENT))
#define VALA_IS_IF_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_IF_STATEMENT))
#define VALA_IF_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_IF_STATEMENT, ValaIfStatementClass))

typedef struct _ValaIfStatement ValaIfStatement;
typedef struct _ValaIfStatementClass ValaIfStatementClass;

#define VALA_TYPE_SWITCH_STATEMENT (vala_switch_statement_get_type ())
#define VALA_SWITCH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SWITCH_STATEMENT, ValaSwitchStatement))
#define VALA_SWITCH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SWITCH_STATEMENT, ValaSwitchStatementClass))
#define VALA_IS_SWITCH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SWITCH_STATEMENT))
#define VALA_IS_SWITCH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SWITCH_STATEMENT))
#define VALA_SWITCH_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SWITCH_STATEMENT, ValaSwitchStatementClass))

typedef struct _ValaSwitchStatement ValaSwitchStatement;
typedef struct _ValaSwitchStatementClass ValaSwitchStatementClass;

#define VALA_TYPE_SWITCH_SECTION (vala_switch_section_get_type ())
#define VALA_SWITCH_SECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SWITCH_SECTION, ValaSwitchSection))
#define VALA_SWITCH_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SWITCH_SECTION, ValaSwitchSectionClass))
#define VALA_IS_SWITCH_SECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SWITCH_SECTION))
#define VALA_IS_SWITCH_SECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SWITCH_SECTION))
#define VALA_SWITCH_SECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SWITCH_SECTION, ValaSwitchSectionClass))

typedef struct _ValaSwitchSection ValaSwitchSection;
typedef struct _ValaSwitchSectionClass ValaSwitchSectionClass;

#define VALA_TYPE_SWITCH_LABEL (vala_switch_label_get_type ())
#define VALA_SWITCH_LABEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SWITCH_LABEL, ValaSwitchLabel))
#define VALA_SWITCH_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SWITCH_LABEL, ValaSwitchLabelClass))
#define VALA_IS_SWITCH_LABEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SWITCH_LABEL))
#define VALA_IS_SWITCH_LABEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SWITCH_LABEL))
#define VALA_SWITCH_LABEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SWITCH_LABEL, ValaSwitchLabelClass))

typedef struct _ValaSwitchLabel ValaSwitchLabel;
typedef struct _ValaSwitchLabelClass ValaSwitchLabelClass;

#define VALA_TYPE_LOOP (vala_loop_get_type ())
#define VALA_LOOP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOOP, ValaLoop))
#define VALA_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOOP, ValaLoopClass))
#define VALA_IS_LOOP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LOOP))
#define VALA_IS_LOOP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LOOP))
#define VALA_LOOP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LOOP, ValaLoopClass))

typedef struct _ValaLoop ValaLoop;
typedef struct _ValaLoopClass ValaLoopClass;

#define VALA_TYPE_WHILE_STATEMENT (vala_while_statement_get_type ())
#define VALA_WHILE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_WHILE_STATEMENT, ValaWhileStatement))
#define VALA_WHILE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_WHILE_STATEMENT, ValaWhileStatementClass))
#define VALA_IS_WHILE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_WHILE_STATEMENT))
#define VALA_IS_WHILE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_WHILE_STATEMENT))
#define VALA_WHILE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_WHILE_STATEMENT, ValaWhileStatementClass))

typedef struct _ValaWhileStatement ValaWhileStatement;
typedef struct _ValaWhileStatementClass ValaWhileStatementClass;

#define VALA_TYPE_DO_STATEMENT (vala_do_statement_get_type ())
#define VALA_DO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DO_STATEMENT, ValaDoStatement))
#define VALA_DO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DO_STATEMENT, ValaDoStatementClass))
#define VALA_IS_DO_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DO_STATEMENT))
#define VALA_IS_DO_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DO_STATEMENT))
#define VALA_DO_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DO_STATEMENT, ValaDoStatementClass))

typedef struct _ValaDoStatement ValaDoStatement;
typedef struct _ValaDoStatementClass ValaDoStatementClass;

#define VALA_TYPE_FOR_STATEMENT (vala_for_statement_get_type ())
#define VALA_FOR_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FOR_STATEMENT, ValaForStatement))
#define VALA_FOR_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FOR_STATEMENT, ValaForStatementClass))
#define VALA_IS_FOR_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_FOR_STATEMENT))
#define VALA_IS_FOR_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_FOR_STATEMENT))
#define VALA_FOR_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_FOR_STATEMENT, ValaForStatementClass))

typedef struct _ValaForStatement ValaForStatement;
typedef struct _ValaForStatementClass ValaForStatementClass;

#define VALA_TYPE_FOREACH_STATEMENT (vala_foreach_statement_get_type ())
#define VALA_FOREACH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatement))
#define VALA_FOREACH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatementClass))
#define VALA_IS_FOREACH_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_FOREACH_STATEMENT))
#define VALA_IS_FOREACH_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_FOREACH_STATEMENT))
#define VALA_FOREACH_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_FOREACH_STATEMENT, ValaForeachStatementClass))

typedef struct _ValaForeachStatement ValaForeachStatement;
typedef struct _ValaForeachStatementClass ValaForeachStatementClass;

#define VALA_TYPE_BREAK_STATEMENT (vala_break_statement_get_type ())
#define VALA_BREAK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BREAK_STATEMENT, ValaBreakStatement))
#define VALA_BREAK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BREAK_STATEMENT, ValaBreakStatementClass))
#define VALA_IS_BREAK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BREAK_STATEMENT))
#define VALA_IS_BREAK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BREAK_STATEMENT))
#define VALA_BREAK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BREAK_STATEMENT, ValaBreakStatementClass))

typedef struct _ValaBreakStatement ValaBreakStatement;
typedef struct _ValaBreakStatementClass ValaBreakStatementClass;

#define VALA_TYPE_CONTINUE_STATEMENT (vala_continue_statement_get_type ())
#define VALA_CONTINUE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONTINUE_STATEMENT, ValaContinueStatement))
#define VALA_CONTINUE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONTINUE_STATEMENT, ValaContinueStatementClass))
#define VALA_IS_CONTINUE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONTINUE_STATEMENT))
#define VALA_IS_CONTINUE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONTINUE_STATEMENT))
#define VALA_CONTINUE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONTINUE_STATEMENT, ValaContinueStatementClass))

typedef struct _ValaContinueStatement ValaContinueStatement;
typedef struct _ValaContinueStatementClass ValaContinueStatementClass;

#define VALA_TYPE_RETURN_STATEMENT (vala_return_statement_get_type ())
#define VALA_RETURN_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_RETURN_STATEMENT, ValaReturnStatement))
#define VALA_RETURN_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_RETURN_STATEMENT, ValaReturnStatementClass))
#define VALA_IS_RETURN_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_RETURN_STATEMENT))
#define VALA_IS_RETURN_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_RETURN_STATEMENT))
#define VALA_RETURN_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_RETURN_STATEMENT, ValaReturnStatementClass))

typedef struct _ValaReturnStatement ValaReturnStatement;
typedef struct _ValaReturnStatementClass ValaReturnStatementClass;

#define VALA_TYPE_YIELD_STATEMENT (vala_yield_statement_get_type ())
#define VALA_YIELD_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_YIELD_STATEMENT, ValaYieldStatement))
#define VALA_YIELD_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_YIELD_STATEMENT, ValaYieldStatementClass))
#define VALA_IS_YIELD_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_YIELD_STATEMENT))
#define VALA_IS_YIELD_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_YIELD_STATEMENT))
#define VALA_YIELD_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_YIELD_STATEMENT, ValaYieldStatementClass))

typedef struct _ValaYieldStatement ValaYieldStatement;
typedef struct _ValaYieldStatementClass ValaYieldStatementClass;

#define VALA_TYPE_THROW_STATEMENT (vala_throw_statement_get_type ())
#define VALA_THROW_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_THROW_STATEMENT, ValaThrowStatement))
#define VALA_THROW_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_THROW_STATEMENT, ValaThrowStatementClass))
#define VALA_IS_THROW_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_THROW_STATEMENT))
#define VALA_IS_THROW_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_THROW_STATEMENT))
#define VALA_THROW_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_THROW_STATEMENT, ValaThrowStatementClass))

typedef struct _ValaThrowStatement ValaThrowStatement;
typedef struct _ValaThrowStatementClass ValaThrowStatementClass;

#define VALA_TYPE_TRY_STATEMENT (vala_try_statement_get_type ())
#define VALA_TRY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TRY_STATEMENT, ValaTryStatement))
#define VALA_TRY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TRY_STATEMENT, ValaTryStatementClass))
#define VALA_IS_TRY_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TRY_STATEMENT))
#define VALA_IS_TRY_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TRY_STATEMENT))
#define VALA_TRY_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TRY_STATEMENT, ValaTryStatementClass))

typedef struct _ValaTryStatement ValaTryStatement;
typedef struct _ValaTryStatementClass ValaTryStatementClass;

#define VALA_TYPE_CATCH_CLAUSE (vala_catch_clause_get_type ())
#define VALA_CATCH_CLAUSE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CATCH_CLAUSE, ValaCatchClause))
#define VALA_CATCH_CLAUSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CATCH_CLAUSE, ValaCatchClauseClass))
#define VALA_IS_CATCH_CLAUSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CATCH_CLAUSE))
#define VALA_IS_CATCH_CLAUSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CATCH_CLAUSE))
#define VALA_CATCH_CLAUSE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CATCH_CLAUSE, ValaCatchClauseClass))

typedef struct _ValaCatchClause ValaCatchClause;
typedef struct _ValaCatchClauseClass ValaCatchClauseClass;

#define VALA_TYPE_LOCK_STATEMENT (vala_lock_statement_get_type ())
#define VALA_LOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LOCK_STATEMENT, ValaLockStatement))
#define VALA_LOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LOCK_STATEMENT, ValaLockStatementClass))
#define VALA_IS_LOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LOCK_STATEMENT))
#define VALA_IS_LOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LOCK_STATEMENT))
#define VALA_LOCK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LOCK_STATEMENT, ValaLockStatementClass))

typedef struct _ValaLockStatement ValaLockStatement;
typedef struct _ValaLockStatementClass ValaLockStatementClass;

#define VALA_TYPE_UNLOCK_STATEMENT (vala_unlock_statement_get_type ())
#define VALA_UNLOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatement))
#define VALA_UNLOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatementClass))
#define VALA_IS_UNLOCK_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_UNLOCK_STATEMENT))
#define VALA_IS_UNLOCK_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_UNLOCK_STATEMENT))
#define VALA_UNLOCK_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_UNLOCK_STATEMENT, ValaUnlockStatementClass))

typedef struct _ValaUnlockStatement ValaUnlockStatement;
typedef struct _ValaUnlockStatementClass ValaUnlockStatementClass;

#define VALA_TYPE_DELETE_STATEMENT (vala_delete_statement_get_type ())
#define VALA_DELETE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatement))
#define VALA_DELETE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatementClass))
#define VALA_IS_DELETE_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DELETE_STATEMENT))
#define VALA_IS_DELETE_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DELETE_STATEMENT))
#define VALA_DELETE_STATEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DELETE_STATEMENT, ValaDeleteStatementClass))

typedef struct _ValaDeleteStatement ValaDeleteStatement;
typedef struct _ValaDeleteStatementClass ValaDeleteStatementClass;

#define VALA_TYPE_ARRAY_CREATION_EXPRESSION (vala_array_creation_expression_get_type ())
#define VALA_ARRAY_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ARRAY_CREATION_EXPRESSION, ValaArrayCreationExpression))
#define VALA_ARRAY_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ARRAY_CREATION_EXPRESSION, ValaArrayCreationExpressionClass))
#define VALA_IS_ARRAY_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ARRAY_CREATION_EXPRESSION))
#define VALA_IS_ARRAY_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ARRAY_CREATION_EXPRESSION))
#define VALA_ARRAY_CREATION_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ARRAY_CREATION_EXPRESSION, ValaArrayCreationExpressionClass))

typedef struct _ValaArrayCreationExpression ValaArrayCreationExpression;
typedef struct _ValaArrayCreationExpressionClass ValaArrayCreationExpressionClass;

#define VALA_TYPE_LITERAL (vala_literal_get_type ())
#define VALA_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LITERAL, ValaLiteral))
#define VALA_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LITERAL, ValaLiteralClass))
#define VALA_IS_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LITERAL))
#define VALA_IS_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LITERAL))
#define VALA_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LITERAL, ValaLiteralClass))

typedef struct _ValaLiteral ValaLiteral;
typedef struct _ValaLiteralClass ValaLiteralClass;

#define VALA_TYPE_BOOLEAN_LITERAL (vala_boolean_literal_get_type ())
#define VALA_BOOLEAN_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BOOLEAN_LITERAL, ValaBooleanLiteral))
#define VALA_BOOLEAN_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BOOLEAN_LITERAL, ValaBooleanLiteralClass))
#define VALA_IS_BOOLEAN_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BOOLEAN_LITERAL))
#define VALA_IS_BOOLEAN_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BOOLEAN_LITERAL))
#define VALA_BOOLEAN_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BOOLEAN_LITERAL, ValaBooleanLiteralClass))

typedef struct _ValaBooleanLiteral ValaBooleanLiteral;
typedef struct _ValaBooleanLiteralClass ValaBooleanLiteralClass;

#define VALA_TYPE_CHARACTER_LITERAL (vala_character_literal_get_type ())
#define VALA_CHARACTER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CHARACTER_LITERAL, ValaCharacterLiteral))
#define VALA_CHARACTER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CHARACTER_LITERAL, ValaCharacterLiteralClass))
#define VALA_IS_CHARACTER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CHARACTER_LITERAL))
#define VALA_IS_CHARACTER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CHARACTER_LITERAL))
#define VALA_CHARACTER_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CHARACTER_LITERAL, ValaCharacterLiteralClass))

typedef struct _ValaCharacterLiteral ValaCharacterLiteral;
typedef struct _ValaCharacterLiteralClass ValaCharacterLiteralClass;

#define VALA_TYPE_INTEGER_LITERAL (vala_integer_literal_get_type ())
#define VALA_INTEGER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteral))
#define VALA_INTEGER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteralClass))
#define VALA_IS_INTEGER_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_INTEGER_LITERAL))
#define VALA_IS_INTEGER_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_INTEGER_LITERAL))
#define VALA_INTEGER_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_INTEGER_LITERAL, ValaIntegerLiteralClass))

typedef struct _ValaIntegerLiteral ValaIntegerLiteral;
typedef struct _ValaIntegerLiteralClass ValaIntegerLiteralClass;

#define VALA_TYPE_REAL_LITERAL (vala_real_literal_get_type ())
#define VALA_REAL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REAL_LITERAL, ValaRealLiteral))
#define VALA_REAL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REAL_LITERAL, ValaRealLiteralClass))
#define VALA_IS_REAL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REAL_LITERAL))
#define VALA_IS_REAL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REAL_LITERAL))
#define VALA_REAL_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REAL_LITERAL, ValaRealLiteralClass))

typedef struct _ValaRealLiteral ValaRealLiteral;
typedef struct _ValaRealLiteralClass ValaRealLiteralClass;

#define VALA_TYPE_REGEX_LITERAL (vala_regex_literal_get_type ())
#define VALA_REGEX_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteral))
#define VALA_REGEX_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteralClass))
#define VALA_IS_REGEX_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REGEX_LITERAL))
#define VALA_IS_REGEX_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REGEX_LITERAL))
#define VALA_REGEX_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REGEX_LITERAL, ValaRegexLiteralClass))

typedef struct _ValaRegexLiteral ValaRegexLiteral;
typedef struct _ValaRegexLiteralClass ValaRegexLiteralClass;

#define VALA_TYPE_STRING_LITERAL (vala_string_literal_get_type ())
#define VALA_STRING_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRING_LITERAL, ValaStringLiteral))
#define VALA_STRING_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRING_LITERAL, ValaStringLiteralClass))
#define VALA_IS_STRING_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STRING_LITERAL))
#define VALA_IS_STRING_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_STRING_LITERAL))
#define VALA_STRING_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_STRING_LITERAL, ValaStringLiteralClass))

typedef struct _ValaStringLiteral ValaStringLiteral;
typedef struct _ValaStringLiteralClass ValaStringLiteralClass;

#define VALA_TYPE_TEMPLATE (vala_template_get_type ())
#define VALA_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TEMPLATE, ValaTemplate))
#define VALA_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TEMPLATE, ValaTemplateClass))
#define VALA_IS_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TEMPLATE))
#define VALA_IS_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TEMPLATE))
#define VALA_TEMPLATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TEMPLATE, ValaTemplateClass))

typedef struct _ValaTemplate ValaTemplate;
typedef struct _ValaTemplateClass ValaTemplateClass;

#define VALA_TYPE_LIST_LITERAL (vala_list_literal_get_type ())
#define VALA_LIST_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LIST_LITERAL, ValaListLiteral))
#define VALA_LIST_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LIST_LITERAL, ValaListLiteralClass))
#define VALA_IS_LIST_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LIST_LITERAL))
#define VALA_IS_LIST_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LIST_LITERAL))
#define VALA_LIST_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LIST_LITERAL, ValaListLiteralClass))

typedef struct _ValaListLiteral ValaListLiteral;
typedef struct _ValaListLiteralClass ValaListLiteralClass;

#define VALA_TYPE_SET_LITERAL (vala_set_literal_get_type ())
#define VALA_SET_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SET_LITERAL, ValaSetLiteral))
#define VALA_SET_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SET_LITERAL, ValaSetLiteralClass))
#define VALA_IS_SET_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SET_LITERAL))
#define VALA_IS_SET_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SET_LITERAL))
#define VALA_SET_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SET_LITERAL, ValaSetLiteralClass))

typedef struct _ValaSetLiteral ValaSetLiteral;
typedef struct _ValaSetLiteralClass ValaSetLiteralClass;

#define VALA_TYPE_MAP_LITERAL (vala_map_literal_get_type ())
#define VALA_MAP_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_MAP_LITERAL, ValaMapLiteral))
#define VALA_MAP_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_MAP_LITERAL, ValaMapLiteralClass))
#define VALA_IS_MAP_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_MAP_LITERAL))
#define VALA_IS_MAP_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_MAP_LITERAL))
#define VALA_MAP_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_MAP_LITERAL, ValaMapLiteralClass))

typedef struct _ValaMapLiteral ValaMapLiteral;
typedef struct _ValaMapLiteralClass ValaMapLiteralClass;

#define VALA_TYPE_TUPLE (vala_tuple_get_type ())
#define VALA_TUPLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TUPLE, ValaTuple))
#define VALA_TUPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TUPLE, ValaTupleClass))
#define VALA_IS_TUPLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TUPLE))
#define VALA_IS_TUPLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TUPLE))
#define VALA_TUPLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TUPLE, ValaTupleClass))

typedef struct _ValaTuple ValaTuple;
typedef struct _ValaTupleClass ValaTupleClass;

#define VALA_TYPE_NULL_LITERAL (vala_null_literal_get_type ())
#define VALA_NULL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NULL_LITERAL, ValaNullLiteral))
#define VALA_NULL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NULL_LITERAL, ValaNullLiteralClass))
#define VALA_IS_NULL_LITERAL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_NULL_LITERAL))
#define VALA_IS_NULL_LITERAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_NULL_LITERAL))
#define VALA_NULL_LITERAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_NULL_LITERAL, ValaNullLiteralClass))

typedef struct _ValaNullLiteral ValaNullLiteral;
typedef struct _ValaNullLiteralClass ValaNullLiteralClass;

#define VALA_TYPE_METHOD_CALL (vala_method_call_get_type ())
#define VALA_METHOD_CALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_METHOD_CALL, ValaMethodCall))
#define VALA_METHOD_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_METHOD_CALL, ValaMethodCallClass))
#define VALA_IS_METHOD_CALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_METHOD_CALL))
#define VALA_IS_METHOD_CALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_METHOD_CALL))
#define VALA_METHOD_CALL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_METHOD_CALL, ValaMethodCallClass))

typedef struct _ValaMethodCall ValaMethodCall;
typedef struct _ValaMethodCallClass ValaMethodCallClass;

#define VALA_TYPE_ELEMENT_ACCESS (vala_element_access_get_type ())
#define VALA_ELEMENT_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ELEMENT_ACCESS, ValaElementAccess))
#define VALA_ELEMENT_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ELEMENT_ACCESS, ValaElementAccessClass))
#define VALA_IS_ELEMENT_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ELEMENT_ACCESS))
#define VALA_IS_ELEMENT_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ELEMENT_ACCESS))
#define VALA_ELEMENT_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ELEMENT_ACCESS, ValaElementAccessClass))

typedef struct _ValaElementAccess ValaElementAccess;
typedef struct _ValaElementAccessClass ValaElementAccessClass;

#define VALA_TYPE_SLICE_EXPRESSION (vala_slice_expression_get_type ())
#define VALA_SLICE_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SLICE_EXPRESSION, ValaSliceExpression))
#define VALA_SLICE_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SLICE_EXPRESSION, ValaSliceExpressionClass))
#define VALA_IS_SLICE_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SLICE_EXPRESSION))
#define VALA_IS_SLICE_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SLICE_EXPRESSION))
#define VALA_SLICE_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SLICE_EXPRESSION, ValaSliceExpressionClass))

typedef struct _ValaSliceExpression ValaSliceExpression;
typedef struct _ValaSliceExpressionClass ValaSliceExpressionClass;

#define VALA_TYPE_BASE_ACCESS (vala_base_access_get_type ())
#define VALA_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccess))
#define VALA_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))
#define VALA_IS_BASE_ACCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BASE_ACCESS))
#define VALA_IS_BASE_ACCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BASE_ACCESS))
#define VALA_BASE_ACCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BASE_ACCESS, ValaBaseAccessClass))

typedef struct _ValaBaseAccess ValaBaseAccess;
typedef struct _ValaBaseAccessClass ValaBaseAccessClass;

#define VALA_TYPE_POSTFIX_EXPRESSION (vala_postfix_expression_get_type ())
#define VALA_POSTFIX_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpression))
#define VALA_POSTFIX_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpressionClass))
#define VALA_IS_POSTFIX_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_POSTFIX_EXPRESSION))
#define VALA_IS_POSTFIX_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_POSTFIX_EXPRESSION))
#define VALA_POSTFIX_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_POSTFIX_EXPRESSION, ValaPostfixExpressionClass))

typedef struct _ValaPostfixExpression ValaPostfixExpression;
typedef struct _ValaPostfixExpressionClass ValaPostfixExpressionClass;

#define VALA_TYPE_OBJECT_CREATION_EXPRESSION (vala_object_creation_expression_get_type ())
#define VALA_OBJECT_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_OBJECT_CREATION_EXPRESSION, ValaObjectCreationExpression))
#define VALA_OBJECT_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_OBJECT_CREATION_EXPRESSION, ValaObjectCreationExpressionClass))
#define VALA_IS_OBJECT_CREATION_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_OBJECT_CREATION_EXPRESSION))
#define VALA_IS_OBJECT_CREATION_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_OBJECT_CREATION_EXPRESSION))
#define VALA_OBJECT_CREATION_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_OBJECT_CREATION_EXPRESSION, ValaObjectCreationExpressionClass))

typedef struct _ValaObjectCreationExpression ValaObjectCreationExpression;
typedef struct _ValaObjectCreationExpressionClass ValaObjectCreationExpressionClass;

#define VALA_TYPE_SIZEOF_EXPRESSION (vala_sizeof_expression_get_type ())
#define VALA_SIZEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_SIZEOF_EXPRESSION, ValaSizeofExpression))
#define VALA_SIZEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_SIZEOF_EXPRESSION, ValaSizeofExpressionClass))
#define VALA_IS_SIZEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_SIZEOF_EXPRESSION))
#define VALA_IS_SIZEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_SIZEOF_EXPRESSION))
#define VALA_SIZEOF_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_SIZEOF_EXPRESSION, ValaSizeofExpressionClass))

typedef struct _ValaSizeofExpression ValaSizeofExpression;
typedef struct _ValaSizeofExpressionClass ValaSizeofExpressionClass;

#define VALA_TYPE_TYPEOF_EXPRESSION (vala_typeof_expression_get_type ())
#define VALA_TYPEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPEOF_EXPRESSION, ValaTypeofExpression))
#define VALA_TYPEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPEOF_EXPRESSION, ValaTypeofExpressionClass))
#define VALA_IS_TYPEOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPEOF_EXPRESSION))
#define VALA_IS_TYPEOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPEOF_EXPRESSION))
#define VALA_TYPEOF_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPEOF_EXPRESSION, ValaTypeofExpressionClass))

typedef struct _ValaTypeofExpression ValaTypeofExpression;
typedef struct _ValaTypeofExpressionClass ValaTypeofExpressionClass;

#define VALA_TYPE_UNARY_EXPRESSION (vala_unary_expression_get_type ())
#define VALA_UNARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_UNARY_EXPRESSION, ValaUnaryExpression))
#define VALA_UNARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_UNARY_EXPRESSION, ValaUnaryExpressionClass))
#define VALA_IS_UNARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_UNARY_EXPRESSION))
#define VALA_IS_UNARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_UNARY_EXPRESSION))
#define VALA_UNARY_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_UNARY_EXPRESSION, ValaUnaryExpressionClass))

typedef struct _ValaUnaryExpression ValaUnaryExpression;
typedef struct _ValaUnaryExpressionClass ValaUnaryExpressionClass;

#define VALA_TYPE_CAST_EXPRESSION (vala_cast_expression_get_type ())
#define VALA_CAST_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CAST_EXPRESSION, ValaCastExpression))
#define VALA_CAST_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CAST_EXPRESSION, ValaCastExpressionClass))
#define VALA_IS_CAST_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CAST_EXPRESSION))
#define VALA_IS_CAST_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CAST_EXPRESSION))
#define VALA_CAST_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CAST_EXPRESSION, ValaCastExpressionClass))

typedef struct _ValaCastExpression ValaCastExpression;
typedef struct _ValaCastExpressionClass ValaCastExpressionClass;

#define VALA_TYPE_NAMED_ARGUMENT (vala_named_argument_get_type ())
#define VALA_NAMED_ARGUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_NAMED_ARGUMENT, ValaNamedArgument))
#define VALA_NAMED_ARGUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_NAMED_ARGUMENT, ValaNamedArgumentClass))
#define VALA_IS_NAMED_ARGUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_NAMED_ARGUMENT))
#define VALA_IS_NAMED_ARGUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_NAMED_ARGUMENT))
#define VALA_NAMED_ARGUMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_NAMED_ARGUMENT, ValaNamedArgumentClass))

typedef struct _ValaNamedArgument ValaNamedArgument;
typedef struct _ValaNamedArgumentClass ValaNamedArgumentClass;

#define VALA_TYPE_POINTER_INDIRECTION (vala_pointer_indirection_get_type ())
#define VALA_POINTER_INDIRECTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_POINTER_INDIRECTION, ValaPointerIndirection))
#define VALA_POINTER_INDIRECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_POINTER_INDIRECTION, ValaPointerIndirectionClass))
#define VALA_IS_POINTER_INDIRECTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_POINTER_INDIRECTION))
#define VALA_IS_POINTER_INDIRECTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_POINTER_INDIRECTION))
#define VALA_POINTER_INDIRECTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_POINTER_INDIRECTION, ValaPointerIndirectionClass))

typedef struct _ValaPointerIndirection ValaPointerIndirection;
typedef struct _ValaPointerIndirectionClass ValaPointerIndirectionClass;

#define VALA_TYPE_ADDRESSOF_EXPRESSION (vala_addressof_expression_get_type ())
#define VALA_ADDRESSOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ADDRESSOF_EXPRESSION, ValaAddressofExpression))
#define VALA_ADDRESSOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ADDRESSOF_EXPRESSION, ValaAddressofExpressionClass))
#define VALA_IS_ADDRESSOF_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ADDRESSOF_EXPRESSION))
#define VALA_IS_ADDRESSOF_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ADDRESSOF_EXPRESSION))
#define VALA_ADDRESSOF_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ADDRESSOF_EXPRESSION, ValaAddressofExpressionClass))

typedef struct _ValaAddressofExpression ValaAddressofExpression;
typedef struct _ValaAddressofExpressionClass ValaAddressofExpressionClass;

#define VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION (vala_reference_transfer_expression_get_type ())
#define VALA_REFERENCE_TRANSFER_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION, ValaReferenceTransferExpression))
#define VALA_REFERENCE_TRANSFER_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION, ValaReferenceTransferExpressionClass))
#define VALA_IS_REFERENCE_TRANSFER_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION))
#define VALA_IS_REFERENCE_TRANSFER_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION))
#define VALA_REFERENCE_TRANSFER_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_REFERENCE_TRANSFER_EXPRESSION, ValaReferenceTransferExpressionClass))

typedef struct _ValaReferenceTransferExpression ValaReferenceTransferExpression;
typedef struct _ValaReferenceTransferExpressionClass ValaReferenceTransferExpressionClass;

#define VALA_TYPE_BINARY_EXPRESSION (vala_binary_expression_get_type ())
#define VALA_BINARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpression))
#define VALA_BINARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpressionClass))
#define VALA_IS_BINARY_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BINARY_EXPRESSION))
#define VALA_IS_BINARY_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BINARY_EXPRESSION))
#define VALA_BINARY_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BINARY_EXPRESSION, ValaBinaryExpressionClass))

typedef struct _ValaBinaryExpression ValaBinaryExpression;
typedef struct _ValaBinaryExpressionClass ValaBinaryExpressionClass;

#define VALA_TYPE_TYPECHECK (vala_typecheck_get_type ())
#define VALA_TYPECHECK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_TYPECHECK, ValaTypeCheck))
#define VALA_TYPECHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_TYPECHECK, ValaTypeCheckClass))
#define VALA_IS_TYPECHECK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_TYPECHECK))
#define VALA_IS_TYPECHECK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_TYPECHECK))
#define VALA_TYPECHECK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_TYPECHECK, ValaTypeCheckClass))

typedef struct _ValaTypeCheck ValaTypeCheck;
typedef struct _ValaTypeCheckClass ValaTypeCheckClass;

#define VALA_TYPE_CONDITIONAL_EXPRESSION (vala_conditional_expression_get_type ())
#define VALA_CONDITIONAL_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_CONDITIONAL_EXPRESSION, ValaConditionalExpression))
#define VALA_CONDITIONAL_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_CONDITIONAL_EXPRESSION, ValaConditionalExpressionClass))
#define VALA_IS_CONDITIONAL_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_CONDITIONAL_EXPRESSION))
#define VALA_IS_CONDITIONAL_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_CONDITIONAL_EXPRESSION))
#define VALA_CONDITIONAL_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_CONDITIONAL_EXPRESSION, ValaConditionalExpressionClass))

typedef struct _ValaConditionalExpression ValaConditionalExpression;
typedef struct _ValaConditionalExpressionClass ValaConditionalExpressionClass;

#define VALA_TYPE_LAMBDA_EXPRESSION (vala_lambda_expression_get_type ())
#define VALA_LAMBDA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_LAMBDA_EXPRESSION, ValaLambdaExpression))
#define VALA_LAMBDA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_LAMBDA_EXPRESSION, ValaLambdaExpressionClass))
#define VALA_IS_LAMBDA_EXPRESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_LAMBDA_EXPRESSION))
#define VALA_IS_LAMBDA_EXPRESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_LAMBDA_EXPRESSION))
#define VALA_LAMBDA_EXPRESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_LAMBDA_EXPRESSION, ValaLambdaExpressionClass))

typedef struct _ValaLambdaExpression ValaLambdaExpression;
typedef struct _ValaLambdaExpressionClass ValaLambdaExpressionClass;

#define VALA_TYPE_ASSIGNMENT (vala_assignment_get_type ())
#define VALA_ASSIGNMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ASSIGNMENT, ValaAssignment))
#define VALA_ASSIGNMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ASSIGNMENT, ValaAssignmentClass))
#define VALA_IS_ASSIGNMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ASSIGNMENT))
#define VALA_IS_ASSIGNMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ASSIGNMENT))
#define VALA_ASSIGNMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ASSIGNMENT, ValaAssignmentClass))

typedef struct _ValaAssignment ValaAssignment;
typedef struct _ValaAssignmentClass ValaAssignmentClass;
typedef struct _ValaSemanticAnalyzerPrivate ValaSemanticAnalyzerPrivate;

#define VALA_TYPE_VALUE_TYPE (vala_value_type_get_type ())
#define VALA_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VALUE_TYPE, ValaValueType))
#define VALA_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VALUE_TYPE, ValaValueTypeClass))
#define VALA_IS_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VALUE_TYPE))
#define VALA_IS_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VALUE_TYPE))
#define VALA_VALUE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VALUE_TYPE, ValaValueTypeClass))

typedef struct _ValaValueType ValaValueType;
typedef struct _ValaValueTypeClass ValaValueTypeClass;

#define VALA_TYPE_STRUCT_VALUE_TYPE (vala_struct_value_type_get_type ())
#define VALA_STRUCT_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_STRUCT_VALUE_TYPE, ValaStructValueType))
#define VALA_STRUCT_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_STRUCT_VALUE_TYPE, ValaStructValueTypeClass))
#define VALA_IS_STRUCT_VALUE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_STRUCT_VALUE_TYPE))
#define VALA_IS_STRUCT_VALUE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_STRUCT_VALUE_TYPE))
#define VALA_STRUCT_VALUE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_STRUCT_VALUE_TYPE, ValaStructValueTypeClass))

typedef struct _ValaStructValueType ValaStructValueType;
typedef struct _ValaStructValueTypeClass ValaStructValueTypeClass;

#define VALA_TYPE_ERROR_TYPE (vala_error_type_get_type ())
#define VALA_ERROR_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ERROR_TYPE, ValaErrorType))
#define VALA_ERROR_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ERROR_TYPE, ValaErrorTypeClass))
#define VALA_IS_ERROR_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ERROR_TYPE))
#define VALA_IS_ERROR_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ERROR_TYPE))
#define VALA_ERROR_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ERROR_TYPE, ValaErrorTypeClass))

typedef struct _ValaErrorType ValaErrorType;
typedef struct _ValaErrorTypeClass ValaErrorTypeClass;

#define VALA_TYPE_PROFILE (vala_profile_get_type ())

#define VALA_TYPE_VOID_TYPE (vala_void_type_get_type ())
#define VALA_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_VOID_TYPE, ValaVoidType))
#define VALA_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_VOID_TYPE, ValaVoidTypeClass))
#define VALA_IS_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_VOID_TYPE))
#define VALA_IS_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_VOID_TYPE))
#define VALA_VOID_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_VOID_TYPE, ValaVoidTypeClass))

typedef struct _ValaVoidType ValaVoidType;
typedef struct _ValaVoidTypeClass ValaVoidTypeClass;

#define VALA_TYPE_ARRAY_TYPE (vala_array_type_get_type ())
#define VALA_ARRAY_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_ARRAY_TYPE, ValaArrayType))
#define VALA_ARRAY_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_ARRAY_TYPE, ValaArrayTypeClass))
#define VALA_IS_ARRAY_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_ARRAY_TYPE))
#define VALA_IS_ARRAY_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_ARRAY_TYPE))
#define VALA_ARRAY_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_ARRAY_TYPE, ValaArrayTypeClass))

typedef struct _ValaArrayType ValaArrayType;
typedef struct _ValaArrayTypeClass ValaArrayTypeClass;

#define VALA_TYPE_BOOLEAN_TYPE (vala_boolean_type_get_type ())
#define VALA_BOOLEAN_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_BOOLEAN_TYPE, ValaBooleanType))
#define VALA_BOOLEAN_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_BOOLEAN_TYPE, ValaBooleanTypeClass))
#define VALA_IS_BOOLEAN_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_BOOLEAN_TYPE))
#define VALA_IS_BOOLEAN_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_BOOLEAN_TYPE))
#define VALA_BOOLEAN_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_BOOLEAN_TYPE, ValaBooleanTypeClass))

typedef struct _ValaBooleanType ValaBooleanType;
typedef struct _ValaBooleanTypeClass ValaBooleanTypeClass;
#define _vala_code_context_unref0(var) ((var == NULL) ? NULL : (var = (vala_code_context_unref (var), NULL)))

#define VALA_TYPE_DELEGATE_TYPE (vala_delegate_type_get_type ())
#define VALA_DELEGATE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), VALA_TYPE_DELEGATE_TYPE, ValaDelegateType))
#define VALA_DELEGATE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), VALA_TYPE_DELEGATE_TYPE, ValaDelegateTypeClass))
#define VALA_IS_DELEGATE_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), VALA_TYPE_DELEGATE_TYPE))
#define VALA_IS_DELEGATE_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), VALA_TYPE_DELEGATE_TYPE))
#define VALA_DELEGATE_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), VALA_TYPE_DELEGATE_TYPE, ValaDelegateTypeClass))

typedef struct _ValaDelegateType ValaDelegateType;
typedef struct _ValaDelegateTypeClass ValaDelegateTypeClass;

struct _ValaCodeNode {
      GTypeInstance parent_instance;
      volatile int ref_count;
      ValaCodeNodePrivate * priv;
      GList* attributes;
};

struct _ValaCodeNodeClass {
      GTypeClass parent_class;
      void (*finalize) (ValaCodeNode *self);
      void (*accept) (ValaCodeNode* self, ValaCodeVisitor* visitor);
      void (*accept_children) (ValaCodeNode* self, ValaCodeVisitor* visitor);
      gboolean (*check) (ValaCodeNode* self, ValaCodeContext* context);
      void (*emit) (ValaCodeNode* self, ValaCodeGenerator* codegen);
      void (*replace_type) (ValaCodeNode* self, ValaDataType* old_type, ValaDataType* new_type);
      void (*replace_expression) (ValaCodeNode* self, ValaExpression* old_node, ValaExpression* new_node);
      gchar* (*to_string) (ValaCodeNode* self);
      void (*get_defined_variables) (ValaCodeNode* self, ValaCollection* collection);
      void (*get_used_variables) (ValaCodeNode* self, ValaCollection* collection);
};

struct _ValaSymbol {
      ValaCodeNode parent_instance;
      ValaSymbolPrivate * priv;
};

struct _ValaSymbolClass {
      ValaCodeNodeClass parent_class;
      gchar* (*get_cprefix) (ValaSymbol* self);
      gchar* (*get_lower_case_cname) (ValaSymbol* self, const gchar* infix);
      gchar* (*get_lower_case_cprefix) (ValaSymbol* self);
      ValaList* (*get_cheader_filenames) (ValaSymbol* self);
      gboolean (*is_instance_member) (ValaSymbol* self);
      gboolean (*is_class_member) (ValaSymbol* self);
      void (*process_deprecated_attribute) (ValaSymbol* self, ValaAttribute* attr);
      void (*process_experimental_attribute) (ValaSymbol* self, ValaAttribute* attr);
      void (*add_namespace) (ValaSymbol* self, ValaNamespace* ns);
      void (*add_class) (ValaSymbol* self, ValaClass* cl);
      void (*add_interface) (ValaSymbol* self, ValaInterface* iface);
      void (*add_struct) (ValaSymbol* self, ValaStruct* st);
      void (*add_enum) (ValaSymbol* self, ValaEnum* en);
      void (*add_error_domain) (ValaSymbol* self, ValaErrorDomain* edomain);
      void (*add_delegate) (ValaSymbol* self, ValaDelegate* d);
      void (*add_constant) (ValaSymbol* self, ValaConstant* constant);
      void (*add_field) (ValaSymbol* self, ValaField* f);
      void (*add_method) (ValaSymbol* self, ValaMethod* m);
      void (*add_property) (ValaSymbol* self, ValaProperty* prop);
      void (*add_signal) (ValaSymbol* self, ValaSignal* sig);
      void (*add_constructor) (ValaSymbol* self, ValaConstructor* c);
      void (*add_destructor) (ValaSymbol* self, ValaDestructor* d);
};

struct _ValaSubroutine {
      ValaSymbol parent_instance;
      ValaSubroutinePrivate * priv;
};

struct _ValaSubroutineClass {
      ValaSymbolClass parent_class;
      gboolean (*get_has_result) (ValaSubroutine* self);
};

struct _ValaMethod {
      ValaSubroutine parent_instance;
      ValaMethodPrivate * priv;
};

struct _ValaMethodClass {
      ValaSubroutineClass parent_class;
      gchar* (*get_default_cname) (ValaMethod* self);
      gchar* (*get_real_cname) (ValaMethod* self);
};

typedef enum  {
      VALA_MEMBER_BINDING_INSTANCE,
      VALA_MEMBER_BINDING_CLASS,
      VALA_MEMBER_BINDING_STATIC
} ValaMemberBinding;

01208 struct _ValaMethodPrivate {
      ValaList* type_parameters;
      ValaMemberBinding _binding;
      gboolean _is_abstract;
      gboolean _is_virtual;
      gboolean _overrides;
      gboolean _is_inline;
      gboolean _returns_floating_reference;
      gboolean _returns_modified_pointer;
      gboolean _entry_point;
      ValaParameter* _this_parameter;
      gdouble _cinstance_parameter_position;
      gdouble _carray_length_parameter_position;
      gdouble _cdelegate_target_parameter_position;
      gboolean _no_array_length;
      gboolean _array_null_terminated;
      gchar* _array_length_type;
      gboolean _printf_format;
      gboolean _scanf_format;
      gboolean _has_new_function;
      gboolean _has_construct_function;
      gboolean _has_generic_type_parameter;
      gdouble _generic_type_parameter_position;
      gboolean _simple_generics;
      ValaSignal* _signal_reference;
      gboolean _closure;
      gboolean _coroutine;
      gboolean _is_async_callback;
      gint _yield_count;
      ValaList* parameters;
      gchar* cname;
      gchar* finish_name;
      gchar* _vfunc_name;
      gchar* _sentinel;
      ValaList* preconditions;
      ValaList* postconditions;
      ValaDataType* _return_type;
      ValaMethod* _base_method;
      ValaMethod* _base_interface_method;
      gboolean base_methods_valid;
      ValaMethod* callback_method;
      ValaList* captured_variables;
};

typedef enum  {
      VALA_SYMBOL_ACCESSIBILITY_PRIVATE,
      VALA_SYMBOL_ACCESSIBILITY_INTERNAL,
      VALA_SYMBOL_ACCESSIBILITY_PROTECTED,
      VALA_SYMBOL_ACCESSIBILITY_PUBLIC
} ValaSymbolAccessibility;

typedef enum  {
      VALA_SOURCE_FILE_TYPE_NONE,
      VALA_SOURCE_FILE_TYPE_SOURCE,
      VALA_SOURCE_FILE_TYPE_PACKAGE,
      VALA_SOURCE_FILE_TYPE_FAST
} ValaSourceFileType;

typedef enum  {
      VALA_PARAMETER_DIRECTION_IN,
      VALA_PARAMETER_DIRECTION_OUT,
      VALA_PARAMETER_DIRECTION_REF
} ValaParameterDirection;

struct _ValaCodeVisitor {
      GTypeInstance parent_instance;
      volatile int ref_count;
      ValaCodeVisitorPrivate * priv;
};

struct _ValaCodeVisitorClass {
      GTypeClass parent_class;
      void (*finalize) (ValaCodeVisitor *self);
      void (*visit_source_file) (ValaCodeVisitor* self, ValaSourceFile* source_file);
      void (*visit_namespace) (ValaCodeVisitor* self, ValaNamespace* ns);
      void (*visit_class) (ValaCodeVisitor* self, ValaClass* cl);
      void (*visit_struct) (ValaCodeVisitor* self, ValaStruct* st);
      void (*visit_interface) (ValaCodeVisitor* self, ValaInterface* iface);
      void (*visit_enum) (ValaCodeVisitor* self, ValaEnum* en);
      void (*visit_enum_value) (ValaCodeVisitor* self, ValaEnumValue* ev);
      void (*visit_error_domain) (ValaCodeVisitor* self, ValaErrorDomain* edomain);
      void (*visit_error_code) (ValaCodeVisitor* self, ValaErrorCode* ecode);
      void (*visit_delegate) (ValaCodeVisitor* self, ValaDelegate* d);
      void (*visit_constant) (ValaCodeVisitor* self, ValaConstant* c);
      void (*visit_field) (ValaCodeVisitor* self, ValaField* f);
      void (*visit_method) (ValaCodeVisitor* self, ValaMethod* m);
      void (*visit_creation_method) (ValaCodeVisitor* self, ValaCreationMethod* m);
      void (*visit_formal_parameter) (ValaCodeVisitor* self, ValaParameter* p);
      void (*visit_property) (ValaCodeVisitor* self, ValaProperty* prop);
      void (*visit_property_accessor) (ValaCodeVisitor* self, ValaPropertyAccessor* acc);
      void (*visit_signal) (ValaCodeVisitor* self, ValaSignal* sig);
      void (*visit_constructor) (ValaCodeVisitor* self, ValaConstructor* c);
      void (*visit_destructor) (ValaCodeVisitor* self, ValaDestructor* d);
      void (*visit_type_parameter) (ValaCodeVisitor* self, ValaTypeParameter* p);
      void (*visit_using_directive) (ValaCodeVisitor* self, ValaUsingDirective* ns);
      void (*visit_data_type) (ValaCodeVisitor* self, ValaDataType* type);
      void (*visit_block) (ValaCodeVisitor* self, ValaBlock* b);
      void (*visit_empty_statement) (ValaCodeVisitor* self, ValaEmptyStatement* stmt);
      void (*visit_declaration_statement) (ValaCodeVisitor* self, ValaDeclarationStatement* stmt);
      void (*visit_local_variable) (ValaCodeVisitor* self, ValaLocalVariable* local);
      void (*visit_initializer_list) (ValaCodeVisitor* self, ValaInitializerList* list);
      void (*visit_expression_statement) (ValaCodeVisitor* self, ValaExpressionStatement* stmt);
      void (*visit_if_statement) (ValaCodeVisitor* self, ValaIfStatement* stmt);
      void (*visit_switch_statement) (ValaCodeVisitor* self, ValaSwitchStatement* stmt);
      void (*visit_switch_section) (ValaCodeVisitor* self, ValaSwitchSection* section);
      void (*visit_switch_label) (ValaCodeVisitor* self, ValaSwitchLabel* label);
      void (*visit_loop) (ValaCodeVisitor* self, ValaLoop* stmt);
      void (*visit_while_statement) (ValaCodeVisitor* self, ValaWhileStatement* stmt);
      void (*visit_do_statement) (ValaCodeVisitor* self, ValaDoStatement* stmt);
      void (*visit_for_statement) (ValaCodeVisitor* self, ValaForStatement* stmt);
      void (*visit_foreach_statement) (ValaCodeVisitor* self, ValaForeachStatement* stmt);
      void (*visit_break_statement) (ValaCodeVisitor* self, ValaBreakStatement* stmt);
      void (*visit_continue_statement) (ValaCodeVisitor* self, ValaContinueStatement* stmt);
      void (*visit_return_statement) (ValaCodeVisitor* self, ValaReturnStatement* stmt);
      void (*visit_yield_statement) (ValaCodeVisitor* self, ValaYieldStatement* y);
      void (*visit_throw_statement) (ValaCodeVisitor* self, ValaThrowStatement* stmt);
      void (*visit_try_statement) (ValaCodeVisitor* self, ValaTryStatement* stmt);
      void (*visit_catch_clause) (ValaCodeVisitor* self, ValaCatchClause* clause);
      void (*visit_lock_statement) (ValaCodeVisitor* self, ValaLockStatement* stmt);
      void (*visit_unlock_statement) (ValaCodeVisitor* self, ValaUnlockStatement* stmt);
      void (*visit_delete_statement) (ValaCodeVisitor* self, ValaDeleteStatement* stmt);
      void (*visit_expression) (ValaCodeVisitor* self, ValaExpression* expr);
      void (*visit_array_creation_expression) (ValaCodeVisitor* self, ValaArrayCreationExpression* expr);
      void (*visit_boolean_literal) (ValaCodeVisitor* self, ValaBooleanLiteral* lit);
      void (*visit_character_literal) (ValaCodeVisitor* self, ValaCharacterLiteral* lit);
      void (*visit_integer_literal) (ValaCodeVisitor* self, ValaIntegerLiteral* lit);
      void (*visit_real_literal) (ValaCodeVisitor* self, ValaRealLiteral* lit);
      void (*visit_regex_literal) (ValaCodeVisitor* self, ValaRegexLiteral* lit);
      void (*visit_string_literal) (ValaCodeVisitor* self, ValaStringLiteral* lit);
      void (*visit_template) (ValaCodeVisitor* self, ValaTemplate* tmpl);
      void (*visit_list_literal) (ValaCodeVisitor* self, ValaListLiteral* lit);
      void (*visit_set_literal) (ValaCodeVisitor* self, ValaSetLiteral* lit);
      void (*visit_map_literal) (ValaCodeVisitor* self, ValaMapLiteral* lit);
      void (*visit_tuple) (ValaCodeVisitor* self, ValaTuple* tuple);
      void (*visit_null_literal) (ValaCodeVisitor* self, ValaNullLiteral* lit);
      void (*visit_member_access) (ValaCodeVisitor* self, ValaMemberAccess* expr);
      void (*visit_method_call) (ValaCodeVisitor* self, ValaMethodCall* expr);
      void (*visit_element_access) (ValaCodeVisitor* self, ValaElementAccess* expr);
      void (*visit_slice_expression) (ValaCodeVisitor* self, ValaSliceExpression* expr);
      void (*visit_base_access) (ValaCodeVisitor* self, ValaBaseAccess* expr);
      void (*visit_postfix_expression) (ValaCodeVisitor* self, ValaPostfixExpression* expr);
      void (*visit_object_creation_expression) (ValaCodeVisitor* self, ValaObjectCreationExpression* expr);
      void (*visit_sizeof_expression) (ValaCodeVisitor* self, ValaSizeofExpression* expr);
      void (*visit_typeof_expression) (ValaCodeVisitor* self, ValaTypeofExpression* expr);
      void (*visit_unary_expression) (ValaCodeVisitor* self, ValaUnaryExpression* expr);
      void (*visit_cast_expression) (ValaCodeVisitor* self, ValaCastExpression* expr);
      void (*visit_named_argument) (ValaCodeVisitor* self, ValaNamedArgument* expr);
      void (*visit_pointer_indirection) (ValaCodeVisitor* self, ValaPointerIndirection* expr);
      void (*visit_addressof_expression) (ValaCodeVisitor* self, ValaAddressofExpression* expr);
      void (*visit_reference_transfer_expression) (ValaCodeVisitor* self, ValaReferenceTransferExpression* expr);
      void (*visit_binary_expression) (ValaCodeVisitor* self, ValaBinaryExpression* expr);
      void (*visit_type_check) (ValaCodeVisitor* self, ValaTypeCheck* expr);
      void (*visit_conditional_expression) (ValaCodeVisitor* self, ValaConditionalExpression* expr);
      void (*visit_lambda_expression) (ValaCodeVisitor* self, ValaLambdaExpression* expr);
      void (*visit_assignment) (ValaCodeVisitor* self, ValaAssignment* a);
      void (*visit_end_full_expression) (ValaCodeVisitor* self, ValaExpression* expr);
};

struct _ValaSemanticAnalyzer {
      ValaCodeVisitor parent_instance;
      ValaSemanticAnalyzerPrivate * priv;
      ValaSymbol* root_symbol;
      ValaBlock* insert_block;
      ValaDataType* void_type;
      ValaDataType* bool_type;
      ValaDataType* string_type;
      ValaDataType* regex_type;
      ValaDataType* uchar_type;
      ValaDataType* short_type;
      ValaDataType* ushort_type;
      ValaDataType* int_type;
      ValaDataType* uint_type;
      ValaDataType* long_type;
      ValaDataType* ulong_type;
      ValaDataType* size_t_type;
      ValaDataType* ssize_t_type;
      ValaDataType* int8_type;
      ValaDataType* unichar_type;
      ValaDataType* double_type;
      ValaDataType* type_type;
      ValaClass* object_type;
      ValaStructValueType* gvalue_type;
      ValaDataType* glist_type;
      ValaDataType* gslist_type;
      ValaDataType* garray_type;
      ValaDataType* gvaluearray_type;
      ValaClass* gerror_type;
      ValaDataType* list_type;
      ValaDataType* tuple_type;
      ValaDataType* error_type;
      gint next_lambda_id;
      ValaList* replaced_nodes;
};

struct _ValaSemanticAnalyzerClass {
      ValaCodeVisitorClass parent_class;
};

typedef enum  {
      VALA_PROFILE_POSIX,
      VALA_PROFILE_GOBJECT,
      VALA_PROFILE_DOVA
} ValaProfile;


static gpointer vala_method_parent_class = NULL;
static ValaList* vala_method__empty_expression_list;
static ValaList* vala_method__empty_expression_list = NULL;
static ValaList* vala_method__empty_type_parameter_list;
static ValaList* vala_method__empty_type_parameter_list = NULL;

gpointer vala_code_node_ref (gpointer instance);
void vala_code_node_unref (gpointer instance);
GParamSpec* vala_param_spec_code_node (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_code_node (GValue* value, gpointer v_object);
void vala_value_take_code_node (GValue* value, gpointer v_object);
gpointer vala_value_get_code_node (const GValue* value);
GType vala_code_node_get_type (void) G_GNUC_CONST;
gpointer vala_code_visitor_ref (gpointer instance);
void vala_code_visitor_unref (gpointer instance);
GParamSpec* vala_param_spec_code_visitor (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_code_visitor (GValue* value, gpointer v_object);
void vala_value_take_code_visitor (GValue* value, gpointer v_object);
gpointer vala_value_get_code_visitor (const GValue* value);
GType vala_code_visitor_get_type (void) G_GNUC_CONST;
gpointer vala_code_context_ref (gpointer instance);
void vala_code_context_unref (gpointer instance);
GParamSpec* vala_param_spec_code_context (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_code_context (GValue* value, gpointer v_object);
void vala_value_take_code_context (GValue* value, gpointer v_object);
gpointer vala_value_get_code_context (const GValue* value);
GType vala_code_context_get_type (void) G_GNUC_CONST;
GType vala_code_generator_get_type (void) G_GNUC_CONST;
GType vala_data_type_get_type (void) G_GNUC_CONST;
GType vala_expression_get_type (void) G_GNUC_CONST;
GType vala_symbol_get_type (void) G_GNUC_CONST;
GType vala_variable_get_type (void) G_GNUC_CONST;
GType vala_local_variable_get_type (void) G_GNUC_CONST;
GType vala_attribute_get_type (void) G_GNUC_CONST;
GType vala_namespace_get_type (void) G_GNUC_CONST;
GType vala_typesymbol_get_type (void) G_GNUC_CONST;
GType vala_object_type_symbol_get_type (void) G_GNUC_CONST;
GType vala_class_get_type (void) G_GNUC_CONST;
GType vala_interface_get_type (void) G_GNUC_CONST;
GType vala_struct_get_type (void) G_GNUC_CONST;
GType vala_enum_get_type (void) G_GNUC_CONST;
GType vala_error_domain_get_type (void) G_GNUC_CONST;
GType vala_delegate_get_type (void) G_GNUC_CONST;
GType vala_constant_get_type (void) G_GNUC_CONST;
GType vala_field_get_type (void) G_GNUC_CONST;
GType vala_subroutine_get_type (void) G_GNUC_CONST;
GType vala_method_get_type (void) G_GNUC_CONST;
GType vala_property_get_type (void) G_GNUC_CONST;
GType vala_signal_get_type (void) G_GNUC_CONST;
GType vala_constructor_get_type (void) G_GNUC_CONST;
GType vala_destructor_get_type (void) G_GNUC_CONST;
GType vala_typeparameter_get_type (void) G_GNUC_CONST;
GType vala_member_binding_get_type (void) G_GNUC_CONST;
GType vala_parameter_get_type (void) G_GNUC_CONST;
#define VALA_METHOD_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), VALA_TYPE_METHOD, ValaMethodPrivate))
enum  {
      VALA_METHOD_DUMMY_PROPERTY
};
#define VALA_METHOD_DEFAULT_SENTINEL "NULL"
gpointer vala_source_reference_ref (gpointer instance);
void vala_source_reference_unref (gpointer instance);
GParamSpec* vala_param_spec_source_reference (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_source_reference (GValue* value, gpointer v_object);
void vala_value_take_source_reference (GValue* value, gpointer v_object);
gpointer vala_value_get_source_reference (const GValue* value);
GType vala_source_reference_get_type (void) G_GNUC_CONST;
gpointer vala_comment_ref (gpointer instance);
void vala_comment_unref (gpointer instance);
GParamSpec* vala_param_spec_comment (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_comment (GValue* value, gpointer v_object);
void vala_value_take_comment (GValue* value, gpointer v_object);
gpointer vala_value_get_comment (const GValue* value);
GType vala_comment_get_type (void) G_GNUC_CONST;
ValaMethod* vala_method_new (const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
ValaMethod* vala_method_construct (GType object_type, const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment);
ValaSubroutine* vala_subroutine_construct (GType object_type, const gchar* name, ValaSourceReference* source_reference, ValaComment* comment);
void vala_method_set_return_type (ValaMethod* self, ValaDataType* value);
void vala_method_set_carray_length_parameter_position (ValaMethod* self, gdouble value);
void vala_method_set_cdelegate_target_parameter_position (ValaMethod* self, gdouble value);
void vala_method_add_parameter (ValaMethod* self, ValaParameter* param);
void vala_parameter_set_cparameter_position (ValaParameter* self, gdouble value);
gdouble vala_parameter_get_cparameter_position (ValaParameter* self);
void vala_parameter_set_carray_length_parameter_position (ValaParameter* self, gdouble value);
void vala_parameter_set_cdelegate_target_parameter_position (ValaParameter* self, gdouble value);
void vala_parameter_set_cdestroy_notify_parameter_position (ValaParameter* self, gdouble value);
gboolean vala_parameter_get_ellipsis (ValaParameter* self);
gpointer vala_scope_ref (gpointer instance);
void vala_scope_unref (gpointer instance);
GParamSpec* vala_param_spec_scope (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_scope (GValue* value, gpointer v_object);
void vala_value_take_scope (GValue* value, gpointer v_object);
gpointer vala_value_get_scope (const GValue* value);
GType vala_scope_get_type (void) G_GNUC_CONST;
ValaScope* vala_symbol_get_scope (ValaSymbol* self);
void vala_scope_add (ValaScope* self, const gchar* name, ValaSymbol* sym);
const gchar* vala_symbol_get_name (ValaSymbol* self);
ValaList* vala_method_get_parameters (ValaMethod* self);
void vala_method_clear_parameters (ValaMethod* self);
void vala_scope_remove (ValaScope* self, const gchar* name);
static void vala_method_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor);
void vala_code_visitor_visit_method (ValaCodeVisitor* self, ValaMethod* m);
static void vala_method_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor);
ValaList* vala_method_get_type_parameters (ValaMethod* self);
void vala_code_node_accept (ValaCodeNode* self, ValaCodeVisitor* visitor);
ValaDataType* vala_method_get_return_type (ValaMethod* self);
ValaList* vala_code_node_get_error_types (ValaCodeNode* self);
ValaLocalVariable* vala_subroutine_get_result_var (ValaSubroutine* self);
GType vala_block_get_type (void) G_GNUC_CONST;
ValaBlock* vala_subroutine_get_body (ValaSubroutine* self);
gchar* vala_method_get_cname (ValaMethod* self);
gchar* vala_method_get_default_cname (ValaMethod* self);
gchar* vala_method_get_finish_cname (ValaMethod* self);
gboolean vala_method_get_coroutine (ValaMethod* self);
gchar* vala_method_get_default_finish_cname (ValaMethod* self);
void vala_method_set_finish_cname (ValaMethod* self, const gchar* name);
static gchar* vala_method_real_get_default_cname (ValaMethod* self);
ValaSymbol* vala_symbol_get_parent_symbol (ValaSymbol* self);
gchar* vala_symbol_get_lower_case_cprefix (ValaSymbol* self);
gchar* vala_method_get_real_cname (ValaMethod* self);
static gchar* vala_method_real_get_real_cname (ValaMethod* self);
ValaMethod* vala_method_get_base_method (ValaMethod* self);
ValaMethod* vala_method_get_base_interface_method (ValaMethod* self);
gchar* vala_method_get_finish_name_for_basename (ValaMethod* self, const gchar* basename);
gchar* vala_method_get_finish_real_cname (ValaMethod* self);
gchar* vala_method_get_finish_vfunc_name (ValaMethod* self);
const gchar* vala_method_get_vfunc_name (ValaMethod* self);
void vala_method_set_cname (ValaMethod* self, const gchar* cname);
static void vala_method_process_ccode_attribute (ValaMethod* self, ValaAttribute* a);
gboolean vala_attribute_has_argument (ValaAttribute* self, const gchar* name);
gchar* vala_attribute_get_string (ValaAttribute* self, const gchar* name);
void vala_symbol_add_cheader_filename (ValaSymbol* self, const gchar* filename);
void vala_method_set_vfunc_name (ValaMethod* self, const gchar* value);
void vala_method_set_sentinel (ValaMethod* self, const gchar* value);
gdouble vala_attribute_get_double (ValaAttribute* self, const gchar* name);
void vala_method_set_cinstance_parameter_position (ValaMethod* self, gdouble value);
gboolean vala_attribute_get_bool (ValaAttribute* self, const gchar* name);
void vala_method_set_no_array_length (ValaMethod* self, gboolean value);
void vala_method_set_array_length_type (ValaMethod* self, const gchar* value);
void vala_method_set_array_null_terminated (ValaMethod* self, gboolean value);
void vala_method_set_has_new_function (ValaMethod* self, gboolean value);
void vala_method_set_has_construct_function (ValaMethod* self, gboolean value);
void vala_method_set_has_generic_type_parameter (ValaMethod* self, gboolean value);
void vala_method_set_generic_type_parameter_position (ValaMethod* self, gdouble value);
void vala_method_set_simple_generics (ValaMethod* self, gboolean value);
void vala_method_set_returns_floating_reference (ValaMethod* self, gboolean value);
void vala_method_process_attributes (ValaMethod* self);
const gchar* vala_attribute_get_name (ValaAttribute* self);
void vala_method_set_returns_modified_pointer (ValaMethod* self, gboolean value);
void vala_data_type_set_floating_reference (ValaDataType* self, gboolean value);
void vala_method_set_printf_format (ValaMethod* self, gboolean value);
void vala_method_set_scanf_format (ValaMethod* self, gboolean value);
void vala_report_warning (ValaSourceReference* source, const gchar* message);
ValaSourceReference* vala_code_node_get_source_reference (ValaCodeNode* self);
void vala_symbol_process_deprecated_attribute (ValaSymbol* self, ValaAttribute* attr);
void vala_symbol_process_experimental_attribute (ValaSymbol* self, ValaAttribute* attr);
gboolean vala_method_compatible (ValaMethod* self, ValaMethod* base_method, gchar** invalid_match);
ValaMemberBinding vala_method_get_binding (ValaMethod* self);
GType vala_reference_type_get_type (void) G_GNUC_CONST;
GType vala_object_type_get_type (void) G_GNUC_CONST;
ValaObjectType* vala_object_type_new (ValaObjectTypeSymbol* type_symbol);
ValaObjectType* vala_object_type_construct (GType object_type, ValaObjectTypeSymbol* type_symbol);
ValaObjectTypeSymbol* vala_object_type_get_type_symbol (ValaObjectType* self);
ValaList* vala_object_type_symbol_get_type_parameters (ValaObjectTypeSymbol* self);
ValaGenericType* vala_generic_type_new (ValaTypeParameter* type_parameter);
ValaGenericType* vala_generic_type_construct (GType object_type, ValaTypeParameter* type_parameter);
GType vala_generic_type_get_type (void) G_GNUC_CONST;
void vala_data_type_set_value_owned (ValaDataType* self, gboolean value);
void vala_data_type_add_type_argument (ValaDataType* self, ValaDataType* arg);
GType vala_member_access_get_type (void) G_GNUC_CONST;
ValaDataType* vala_data_type_get_actual_type (ValaDataType* self, ValaDataType* derived_instance_type, ValaMemberAccess* method_access, ValaCodeNode* node_reference);
gboolean vala_data_type_equals (ValaDataType* self, ValaDataType* type2);
ValaDataType* vala_variable_get_variable_type (ValaVariable* self);
gboolean vala_data_type_compatible (ValaDataType* self, ValaDataType* target_type);
gchar* vala_code_node_to_string (ValaCodeNode* self);
void vala_method_add_type_parameter (ValaMethod* self, ValaTypeParameter* p);
gint vala_method_get_type_parameter_index (ValaMethod* self, const gchar* name);
void vala_method_add_precondition (ValaMethod* self, ValaExpression* precondition);
void vala_code_node_set_parent_node (ValaCodeNode* self, ValaCodeNode* value);
ValaList* vala_method_get_preconditions (ValaMethod* self);
void vala_method_add_postcondition (ValaMethod* self, ValaExpression* postcondition);
ValaList* vala_method_get_postconditions (ValaMethod* self);
static void vala_method_real_replace_type (ValaCodeNode* base, ValaDataType* old_type, ValaDataType* new_type);
static void vala_method_find_base_methods (ValaMethod* self);
GType vala_creation_method_get_type (void) G_GNUC_CONST;
static void vala_method_find_base_interface_method (ValaMethod* self, ValaClass* cl);
gboolean vala_method_get_is_virtual (ValaMethod* self);
gboolean vala_method_get_is_abstract (ValaMethod* self);
gboolean vala_method_get_overrides (ValaMethod* self);
static void vala_method_find_base_class_method (ValaMethod* self, ValaClass* cl);
ValaSymbol* vala_scope_lookup (ValaScope* self, const gchar* name);
void vala_code_node_set_error (ValaCodeNode* self, gboolean value);
void vala_report_error (ValaSourceReference* source, const gchar* message);
gchar* vala_symbol_get_full_name (ValaSymbol* self);
gboolean vala_signal_get_is_virtual (ValaSignal* self);
ValaMethod* vala_signal_get_default_handler (ValaSignal* self);
ValaClass* vala_class_get_base_class (ValaClass* self);
ValaList* vala_class_get_base_types (ValaClass* self);
ValaTypeSymbol* vala_data_type_get_data_type (ValaDataType* self);
static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* context);
gboolean vala_code_node_get_checked (ValaCodeNode* self);
gboolean vala_code_node_get_error (ValaCodeNode* self);
void vala_code_node_set_checked (ValaCodeNode* self, gboolean value);
gboolean vala_class_get_is_abstract (ValaClass* self);
gboolean vala_class_get_is_compact (ValaClass* self);
GType vala_symbol_accessibility_get_type (void) G_GNUC_CONST;
ValaSymbolAccessibility vala_symbol_get_access (ValaSymbol* self);
gboolean vala_symbol_get_external (ValaSymbol* self);
gboolean vala_symbol_get_external_package (ValaSymbol* self);
GType vala_source_file_type_get_type (void) G_GNUC_CONST;
ValaSourceFileType vala_symbol_get_source_type (ValaSymbol* self);
gboolean vala_code_context_has_package (ValaCodeContext* self, const gchar* pkg);
GType vala_semantic_analyzer_get_type (void) G_GNUC_CONST;
ValaSemanticAnalyzer* vala_code_context_get_analyzer (ValaCodeContext* self);
gpointer vala_source_file_ref (gpointer instance);
void vala_source_file_unref (gpointer instance);
GParamSpec* vala_param_spec_source_file (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void vala_value_set_source_file (GValue* value, gpointer v_object);
void vala_value_take_source_file (GValue* value, gpointer v_object);
gpointer vala_value_get_source_file (const GValue* value);
GType vala_source_file_get_type (void) G_GNUC_CONST;
ValaSourceFile* vala_semantic_analyzer_get_current_source_file (ValaSemanticAnalyzer* self);
ValaSymbol* vala_semantic_analyzer_get_current_symbol (ValaSemanticAnalyzer* self);
ValaSourceFile* vala_source_reference_get_file (ValaSourceReference* self);
void vala_semantic_analyzer_set_current_source_file (ValaSemanticAnalyzer* self, ValaSourceFile* value);
void vala_semantic_analyzer_set_current_symbol (ValaSemanticAnalyzer* self, ValaSymbol* value);
gboolean vala_code_node_check (ValaCodeNode* self, ValaCodeContext* context);
ValaAttribute* vala_code_node_get_attribute (ValaCodeNode* self, const gchar* name);
ValaCodeContext* vala_source_file_get_context (ValaSourceFile* self);
void vala_code_context_set_module_init_method (ValaCodeContext* self, ValaMethod* value);
GType vala_parameter_direction_get_type (void) G_GNUC_CONST;
ValaParameterDirection vala_parameter_get_direction (ValaParameter* self);
gboolean vala_semantic_analyzer_is_type_accessible (ValaSemanticAnalyzer* self, ValaSymbol* sym, ValaDataType* type);
ValaStruct* vala_semantic_analyzer_get_current_struct (ValaSemanticAnalyzer* self);
gboolean vala_symbol_get_hides (ValaSymbol* self);
ValaSymbol* vala_symbol_get_hidden_member (ValaSymbol* self);
ValaDataType* vala_expression_get_value_type (ValaExpression* self);
GType vala_enum_value_get_type (void) G_GNUC_CONST;
GType vala_error_code_get_type (void) G_GNUC_CONST;
GType vala_property_accessor_get_type (void) G_GNUC_CONST;
GType vala_using_directive_get_type (void) G_GNUC_CONST;
GType vala_empty_statement_get_type (void) G_GNUC_CONST;
GType vala_declaration_statement_get_type (void) G_GNUC_CONST;
GType vala_initializer_list_get_type (void) G_GNUC_CONST;
GType vala_expression_statement_get_type (void) G_GNUC_CONST;
GType vala_if_statement_get_type (void) G_GNUC_CONST;
GType vala_switch_statement_get_type (void) G_GNUC_CONST;
GType vala_switch_section_get_type (void) G_GNUC_CONST;
GType vala_switch_label_get_type (void) G_GNUC_CONST;
GType vala_loop_get_type (void) G_GNUC_CONST;
GType vala_while_statement_get_type (void) G_GNUC_CONST;
GType vala_do_statement_get_type (void) G_GNUC_CONST;
GType vala_for_statement_get_type (void) G_GNUC_CONST;
GType vala_foreach_statement_get_type (void) G_GNUC_CONST;
GType vala_break_statement_get_type (void) G_GNUC_CONST;
GType vala_continue_statement_get_type (void) G_GNUC_CONST;
GType vala_return_statement_get_type (void) G_GNUC_CONST;
GType vala_yield_statement_get_type (void) G_GNUC_CONST;
GType vala_throw_statement_get_type (void) G_GNUC_CONST;
GType vala_try_statement_get_type (void) G_GNUC_CONST;
GType vala_catch_clause_get_type (void) G_GNUC_CONST;
GType vala_lock_statement_get_type (void) G_GNUC_CONST;
GType vala_unlock_statement_get_type (void) G_GNUC_CONST;
GType vala_delete_statement_get_type (void) G_GNUC_CONST;
GType vala_array_creation_expression_get_type (void) G_GNUC_CONST;
GType vala_literal_get_type (void) G_GNUC_CONST;
GType vala_boolean_literal_get_type (void) G_GNUC_CONST;
GType vala_character_literal_get_type (void) G_GNUC_CONST;
GType vala_integer_literal_get_type (void) G_GNUC_CONST;
GType vala_real_literal_get_type (void) G_GNUC_CONST;
GType vala_regex_literal_get_type (void) G_GNUC_CONST;
GType vala_string_literal_get_type (void) G_GNUC_CONST;
GType vala_template_get_type (void) G_GNUC_CONST;
GType vala_list_literal_get_type (void) G_GNUC_CONST;
GType vala_set_literal_get_type (void) G_GNUC_CONST;
GType vala_map_literal_get_type (void) G_GNUC_CONST;
GType vala_tuple_get_type (void) G_GNUC_CONST;
GType vala_null_literal_get_type (void) G_GNUC_CONST;
GType vala_method_call_get_type (void) G_GNUC_CONST;
GType vala_element_access_get_type (void) G_GNUC_CONST;
GType vala_slice_expression_get_type (void) G_GNUC_CONST;
GType vala_base_access_get_type (void) G_GNUC_CONST;
GType vala_postfix_expression_get_type (void) G_GNUC_CONST;
GType vala_object_creation_expression_get_type (void) G_GNUC_CONST;
GType vala_sizeof_expression_get_type (void) G_GNUC_CONST;
GType vala_typeof_expression_get_type (void) G_GNUC_CONST;
GType vala_unary_expression_get_type (void) G_GNUC_CONST;
GType vala_cast_expression_get_type (void) G_GNUC_CONST;
GType vala_named_argument_get_type (void) G_GNUC_CONST;
GType vala_pointer_indirection_get_type (void) G_GNUC_CONST;
GType vala_addressof_expression_get_type (void) G_GNUC_CONST;
GType vala_reference_transfer_expression_get_type (void) G_GNUC_CONST;
GType vala_binary_expression_get_type (void) G_GNUC_CONST;
GType vala_typecheck_get_type (void) G_GNUC_CONST;
GType vala_conditional_expression_get_type (void) G_GNUC_CONST;
GType vala_lambda_expression_get_type (void) G_GNUC_CONST;
GType vala_assignment_get_type (void) G_GNUC_CONST;
GType vala_value_type_get_type (void) G_GNUC_CONST;
GType vala_struct_value_type_get_type (void) G_GNUC_CONST;
GType vala_error_type_get_type (void) G_GNUC_CONST;
gboolean vala_error_type_get_dynamic_error (ValaErrorType* self);
static gboolean vala_method_is_possible_entry_point (ValaMethod* self, ValaCodeContext* context);
ValaMethod* vala_code_context_get_entry_point (ValaCodeContext* self);
static void vala_method_set_entry_point (ValaMethod* self, gboolean value);
void vala_code_context_set_entry_point (ValaCodeContext* self, ValaMethod* value);
gboolean vala_code_node_get_tree_can_fail (ValaCodeNode* self);
GType vala_profile_get_type (void) G_GNUC_CONST;
ValaProfile vala_code_context_get_profile (ValaCodeContext* self);
const gchar* vala_code_context_get_entry_point_name (ValaCodeContext* self);
GType vala_void_type_get_type (void) G_GNUC_CONST;
GType vala_array_type_get_type (void) G_GNUC_CONST;
ValaDataType* vala_array_type_get_element_type (ValaArrayType* self);
gint vala_method_get_required_arguments (ValaMethod* self);
ValaExpression* vala_variable_get_initializer (ValaVariable* self);
ValaMethod* vala_method_get_callback_method (ValaMethod* self);
ValaCodeContext* vala_code_context_get (void);
ValaNamespace* vala_code_context_get_root (ValaCodeContext* self);
ValaBooleanType* vala_boolean_type_new (ValaStruct* type_symbol);
ValaBooleanType* vala_boolean_type_construct (GType object_type, ValaStruct* type_symbol);
GType vala_boolean_type_get_type (void) G_GNUC_CONST;
void vala_symbol_set_access (ValaSymbol* self, ValaSymbolAccessibility value);
void vala_symbol_set_external (ValaSymbol* self, gboolean value);
void vala_method_set_binding (ValaMethod* self, ValaMemberBinding value);
void vala_symbol_set_owner (ValaSymbol* self, ValaScope* value);
void vala_method_set_is_async_callback (ValaMethod* self, gboolean value);
ValaList* vala_method_get_async_begin_parameters (ValaMethod* self);
ValaDelegateType* vala_delegate_type_new (ValaDelegate* delegate_symbol);
ValaDelegateType* vala_delegate_type_construct (GType object_type, ValaDelegate* delegate_symbol);
GType vala_delegate_type_get_type (void) G_GNUC_CONST;
void vala_data_type_set_nullable (ValaDataType* self, gboolean value);
void vala_delegate_type_set_is_called_once (ValaDelegateType* self, gboolean value);
ValaParameter* vala_parameter_new (const gchar* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
ValaParameter* vala_parameter_construct (GType object_type, const gchar* name, ValaDataType* variable_type, ValaSourceReference* source_reference);
ValaNullLiteral* vala_null_literal_new (ValaSourceReference* source);
ValaNullLiteral* vala_null_literal_construct (GType object_type, ValaSourceReference* source);
void vala_variable_set_initializer (ValaVariable* self, ValaExpression* value);
ValaDataType* vala_data_type_copy (ValaDataType* self);
void vala_expression_set_target_type (ValaExpression* self, ValaDataType* value);
ValaList* vala_method_get_async_end_parameters (ValaMethod* self);
void vala_method_add_captured_variable (ValaMethod* self, ValaLocalVariable* local);
gboolean vala_method_get_closure (ValaMethod* self);
void vala_method_get_captured_variables (ValaMethod* self, ValaCollection* variables);
static void vala_method_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection);
const gchar* vala_method_get_sentinel (ValaMethod* self);
void vala_method_set_is_abstract (ValaMethod* self, gboolean value);
void vala_method_set_is_virtual (ValaMethod* self, gboolean value);
void vala_method_set_overrides (ValaMethod* self, gboolean value);
gboolean vala_method_get_is_inline (ValaMethod* self);
void vala_method_set_is_inline (ValaMethod* self, gboolean value);
gboolean vala_method_get_returns_floating_reference (ValaMethod* self);
gboolean vala_method_get_returns_modified_pointer (ValaMethod* self);
gboolean vala_method_get_entry_point (ValaMethod* self);
ValaParameter* vala_method_get_this_parameter (ValaMethod* self);
void vala_method_set_this_parameter (ValaMethod* self, ValaParameter* value);
gdouble vala_method_get_cinstance_parameter_position (ValaMethod* self);
gdouble vala_method_get_carray_length_parameter_position (ValaMethod* self);
gdouble vala_method_get_cdelegate_target_parameter_position (ValaMethod* self);
gboolean vala_method_get_no_array_length (ValaMethod* self);
gboolean vala_method_get_array_null_terminated (ValaMethod* self);
const gchar* vala_method_get_array_length_type (ValaMethod* self);
gboolean vala_method_get_printf_format (ValaMethod* self);
gboolean vala_method_get_scanf_format (ValaMethod* self);
gboolean vala_method_get_has_new_function (ValaMethod* self);
gboolean vala_method_get_has_construct_function (ValaMethod* self);
gboolean vala_method_get_has_generic_type_parameter (ValaMethod* self);
gdouble vala_method_get_generic_type_parameter_position (ValaMethod* self);
gboolean vala_method_get_simple_generics (ValaMethod* self);
ValaSignal* vala_method_get_signal_reference (ValaMethod* self);
void vala_method_set_signal_reference (ValaMethod* self, ValaSignal* value);
void vala_method_set_closure (ValaMethod* self, gboolean value);
void vala_method_set_coroutine (ValaMethod* self, gboolean value);
gboolean vala_method_get_is_async_callback (ValaMethod* self);
gint vala_method_get_yield_count (ValaMethod* self);
void vala_method_set_yield_count (ValaMethod* self, gint value);
static void vala_method_finalize (ValaCodeNode* obj);
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
static gint _vala_array_length (gpointer array);


/**
 * Creates a new method.
 *
 * @param name        method name
 * @param return_type method return type
 * @param source      reference to source code
 * @return            newly created method
 */
ValaMethod* vala_method_construct (GType object_type, const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment) {
      ValaMethod* self = NULL;
      g_return_val_if_fail (return_type != NULL, NULL);
      self = (ValaMethod*) vala_subroutine_construct (object_type, name, source_reference, comment);
      vala_method_set_return_type (self, return_type);
      vala_method_set_carray_length_parameter_position (self, (gdouble) (-3));
      vala_method_set_cdelegate_target_parameter_position (self, (gdouble) (-3));
      return self;
}


ValaMethod* vala_method_new (const gchar* name, ValaDataType* return_type, ValaSourceReference* source_reference, ValaComment* comment) {
      return vala_method_construct (VALA_TYPE_METHOD, name, return_type, source_reference, comment);
}


/**
 * Appends parameter to this method.
 *
 * @param param a formal parameter
 */
void vala_method_add_parameter (ValaMethod* self, ValaParameter* param) {
      gint _tmp0_;
      gdouble _tmp1_;
      gdouble _tmp2_;
      gdouble _tmp3_;
      gboolean _tmp4_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (param != NULL);
      _tmp0_ = vala_collection_get_size ((ValaCollection*) self->priv->parameters);
      vala_parameter_set_cparameter_position (param, (gdouble) (_tmp0_ + 1));
      _tmp1_ = vala_parameter_get_cparameter_position (param);
      vala_parameter_set_carray_length_parameter_position (param, _tmp1_ + 0.1);
      _tmp2_ = vala_parameter_get_cparameter_position (param);
      vala_parameter_set_cdelegate_target_parameter_position (param, _tmp2_ + 0.1);
      _tmp3_ = vala_parameter_get_cparameter_position (param);
      vala_parameter_set_cdestroy_notify_parameter_position (param, _tmp3_ + 0.1);
      vala_collection_add ((ValaCollection*) self->priv->parameters, param);
      _tmp4_ = vala_parameter_get_ellipsis (param);
      if (!_tmp4_) {
            ValaScope* _tmp5_ = NULL;
            const gchar* _tmp6_ = NULL;
            _tmp5_ = vala_symbol_get_scope ((ValaSymbol*) self);
            _tmp6_ = vala_symbol_get_name ((ValaSymbol*) param);
            vala_scope_add (_tmp5_, _tmp6_, (ValaSymbol*) param);
      }
}


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


ValaList* vala_method_get_parameters (ValaMethod* self) {
      ValaList* result = NULL;
      ValaList* _tmp0_;
      g_return_val_if_fail (self != NULL, NULL);
      _tmp0_ = _vala_iterable_ref0 (self->priv->parameters);
      result = _tmp0_;
      return result;
}


/**
 * Remove all parameters from this method.
 */
void vala_method_clear_parameters (ValaMethod* self) {
      g_return_if_fail (self != NULL);
      {
            ValaList* _tmp0_;
            ValaList* _param_list;
            gint _tmp1_;
            gint _param_size;
            gint _param_index;
            _tmp0_ = _vala_iterable_ref0 (self->priv->parameters);
            _param_list = _tmp0_;
            _tmp1_ = vala_collection_get_size ((ValaCollection*) _param_list);
            _param_size = _tmp1_;
            _param_index = -1;
            while (TRUE) {
                  gpointer _tmp2_ = NULL;
                  ValaParameter* param;
                  gboolean _tmp3_;
                  _param_index = _param_index + 1;
                  if (!(_param_index < _param_size)) {
                        break;
                  }
                  _tmp2_ = vala_list_get (_param_list, _param_index);
                  param = (ValaParameter*) _tmp2_;
                  _tmp3_ = vala_parameter_get_ellipsis (param);
                  if (!_tmp3_) {
                        ValaScope* _tmp4_ = NULL;
                        const gchar* _tmp5_ = NULL;
                        _tmp4_ = vala_symbol_get_scope ((ValaSymbol*) self);
                        _tmp5_ = vala_symbol_get_name ((ValaSymbol*) param);
                        vala_scope_remove (_tmp4_, _tmp5_);
                  }
                  _vala_code_node_unref0 (param);
            }
            _vala_iterable_unref0 (_param_list);
      }
      vala_collection_clear ((ValaCollection*) self->priv->parameters);
}


static void vala_method_real_accept (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaMethod * self;
      self = (ValaMethod*) base;
      g_return_if_fail (visitor != NULL);
      vala_code_visitor_visit_method (visitor, self);
}


static void vala_method_real_accept_children (ValaCodeNode* base, ValaCodeVisitor* visitor) {
      ValaMethod * self;
      ValaDataType* _tmp3_ = NULL;
      ValaLocalVariable* _tmp11_ = NULL;
      ValaBlock* _tmp19_ = NULL;
      self = (ValaMethod*) base;
      g_return_if_fail (visitor != NULL);
      {
            ValaList* _tmp0_ = NULL;
            ValaList* _p_list;
            gint _tmp1_;
            gint _p_size;
            gint _p_index;
            _tmp0_ = vala_method_get_type_parameters (self);
            _p_list = _tmp0_;
            _tmp1_ = vala_collection_get_size ((ValaCollection*) _p_list);
            _p_size = _tmp1_;
            _p_index = -1;
            while (TRUE) {
                  gpointer _tmp2_ = NULL;
                  ValaTypeParameter* p;
                  _p_index = _p_index + 1;
                  if (!(_p_index < _p_size)) {
                        break;
                  }
                  _tmp2_ = vala_list_get (_p_list, _p_index);
                  p = (ValaTypeParameter*) _tmp2_;
                  vala_code_node_accept ((ValaCodeNode*) p, visitor);
                  _vala_code_node_unref0 (p);
            }
            _vala_iterable_unref0 (_p_list);
      }
      _tmp3_ = vala_method_get_return_type (self);
      if (_tmp3_ != NULL) {
            ValaDataType* _tmp4_ = NULL;
            _tmp4_ = vala_method_get_return_type (self);
            vala_code_node_accept ((ValaCodeNode*) _tmp4_, visitor);
      }
      {
            ValaList* _tmp5_;
            ValaList* _param_list;
            gint _tmp6_;
            gint _param_size;
            gint _param_index;
            _tmp5_ = _vala_iterable_ref0 (self->priv->parameters);
            _param_list = _tmp5_;
            _tmp6_ = vala_collection_get_size ((ValaCollection*) _param_list);
            _param_size = _tmp6_;
            _param_index = -1;
            while (TRUE) {
                  gpointer _tmp7_ = NULL;
                  ValaParameter* param;
                  _param_index = _param_index + 1;
                  if (!(_param_index < _param_size)) {
                        break;
                  }
                  _tmp7_ = vala_list_get (_param_list, _param_index);
                  param = (ValaParameter*) _tmp7_;
                  vala_code_node_accept ((ValaCodeNode*) param, visitor);
                  _vala_code_node_unref0 (param);
            }
            _vala_iterable_unref0 (_param_list);
      }
      {
            ValaList* _tmp8_ = NULL;
            ValaList* _error_type_list;
            gint _tmp9_;
            gint _error_type_size;
            gint _error_type_index;
            _tmp8_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
            _error_type_list = _tmp8_;
            _tmp9_ = vala_collection_get_size ((ValaCollection*) _error_type_list);
            _error_type_size = _tmp9_;
            _error_type_index = -1;
            while (TRUE) {
                  gpointer _tmp10_ = NULL;
                  ValaDataType* error_type;
                  _error_type_index = _error_type_index + 1;
                  if (!(_error_type_index < _error_type_size)) {
                        break;
                  }
                  _tmp10_ = vala_list_get (_error_type_list, _error_type_index);
                  error_type = (ValaDataType*) _tmp10_;
                  vala_code_node_accept ((ValaCodeNode*) error_type, visitor);
                  _vala_code_node_unref0 (error_type);
            }
            _vala_iterable_unref0 (_error_type_list);
      }
      _tmp11_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
      if (_tmp11_ != NULL) {
            ValaLocalVariable* _tmp12_ = NULL;
            _tmp12_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
            vala_code_node_accept ((ValaCodeNode*) _tmp12_, visitor);
      }
      if (self->priv->preconditions != NULL) {
            {
                  ValaList* _tmp13_;
                  ValaList* _precondition_list;
                  gint _tmp14_;
                  gint _precondition_size;
                  gint _precondition_index;
                  _tmp13_ = _vala_iterable_ref0 (self->priv->preconditions);
                  _precondition_list = _tmp13_;
                  _tmp14_ = vala_collection_get_size ((ValaCollection*) _precondition_list);
                  _precondition_size = _tmp14_;
                  _precondition_index = -1;
                  while (TRUE) {
                        gpointer _tmp15_ = NULL;
                        ValaExpression* precondition;
                        _precondition_index = _precondition_index + 1;
                        if (!(_precondition_index < _precondition_size)) {
                              break;
                        }
                        _tmp15_ = vala_list_get (_precondition_list, _precondition_index);
                        precondition = (ValaExpression*) _tmp15_;
                        vala_code_node_accept ((ValaCodeNode*) precondition, visitor);
                        _vala_code_node_unref0 (precondition);
                  }
                  _vala_iterable_unref0 (_precondition_list);
            }
      }
      if (self->priv->postconditions != NULL) {
            {
                  ValaList* _tmp16_;
                  ValaList* _postcondition_list;
                  gint _tmp17_;
                  gint _postcondition_size;
                  gint _postcondition_index;
                  _tmp16_ = _vala_iterable_ref0 (self->priv->postconditions);
                  _postcondition_list = _tmp16_;
                  _tmp17_ = vala_collection_get_size ((ValaCollection*) _postcondition_list);
                  _postcondition_size = _tmp17_;
                  _postcondition_index = -1;
                  while (TRUE) {
                        gpointer _tmp18_ = NULL;
                        ValaExpression* postcondition;
                        _postcondition_index = _postcondition_index + 1;
                        if (!(_postcondition_index < _postcondition_size)) {
                              break;
                        }
                        _tmp18_ = vala_list_get (_postcondition_list, _postcondition_index);
                        postcondition = (ValaExpression*) _tmp18_;
                        vala_code_node_accept ((ValaCodeNode*) postcondition, visitor);
                        _vala_code_node_unref0 (postcondition);
                  }
                  _vala_iterable_unref0 (_postcondition_list);
            }
      }
      _tmp19_ = vala_subroutine_get_body ((ValaSubroutine*) self);
      if (_tmp19_ != NULL) {
            ValaBlock* _tmp20_ = NULL;
            _tmp20_ = vala_subroutine_get_body ((ValaSubroutine*) self);
            vala_code_node_accept ((ValaCodeNode*) _tmp20_, visitor);
      }
}


/**
 * Returns the interface name of this method as it is used in C code.
 *
 * @return the name to be used in C code
 */
gchar* vala_method_get_cname (ValaMethod* self) {
      gchar* result = NULL;
      gchar* _tmp1_;
      g_return_val_if_fail (self != NULL, NULL);
      if (self->priv->cname == NULL) {
            gchar* _tmp0_ = NULL;
            _tmp0_ = vala_method_get_default_cname (self);
            _g_free0 (self->priv->cname);
            self->priv->cname = _tmp0_;
      }
      _tmp1_ = g_strdup (self->priv->cname);
      result = _tmp1_;
      return result;
}


gchar* vala_method_get_finish_cname (ValaMethod* self) {
      gchar* result = NULL;
      gchar* _tmp1_;
      g_return_val_if_fail (self != NULL, NULL);
      g_assert (self->priv->_coroutine);
      if (self->priv->finish_name == NULL) {
            gchar* _tmp0_ = NULL;
            _tmp0_ = vala_method_get_default_finish_cname (self);
            _g_free0 (self->priv->finish_name);
            self->priv->finish_name = _tmp0_;
      }
      _tmp1_ = g_strdup (self->priv->finish_name);
      result = _tmp1_;
      return result;
}


void vala_method_set_finish_cname (ValaMethod* self, const gchar* name) {
      gchar* _tmp0_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (name != NULL);
      _tmp0_ = g_strdup (name);
      _g_free0 (self->priv->finish_name);
      self->priv->finish_name = _tmp0_;
}


/**
 * Returns the default interface name of this method as it is used in C
 * code.
 *
 * @return the name to be used in C code by default
 */
static glong string_strnlen (gchar* str, glong maxlen) {
      glong result = 0L;
      gchar* _tmp0_ = NULL;
      gchar* end;
      _tmp0_ = memchr (str, 0, (gsize) maxlen);
      end = _tmp0_;
      if (end == NULL) {
            result = maxlen;
            return result;
      } else {
            result = (glong) (end - str);
            return result;
      }
}


static gchar* string_substring (const gchar* self, glong offset, glong len) {
      gchar* result = NULL;
      glong string_length = 0L;
      gboolean _tmp0_ = FALSE;
      gchar* _tmp3_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      if (offset >= 0) {
            _tmp0_ = len >= 0;
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            glong _tmp1_;
            _tmp1_ = string_strnlen ((gchar*) self, offset + len);
            string_length = _tmp1_;
      } else {
            gint _tmp2_;
            _tmp2_ = strlen (self);
            string_length = (glong) _tmp2_;
      }
      if (offset < 0) {
            offset = string_length + offset;
            g_return_val_if_fail (offset >= 0, NULL);
      } else {
            g_return_val_if_fail (offset <= string_length, NULL);
      }
      if (len < 0) {
            len = string_length - offset;
      }
      g_return_val_if_fail ((offset + len) <= string_length, NULL);
      _tmp3_ = g_strndup (((gchar*) self) + offset, (gsize) len);
      result = _tmp3_;
      return result;
}


static gchar* vala_method_real_get_default_cname (ValaMethod* self) {
      gchar* result = NULL;
      gboolean _tmp0_ = FALSE;
      const gchar* _tmp1_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      _tmp1_ = vala_symbol_get_name ((ValaSymbol*) self);
      if (g_strcmp0 (_tmp1_, "main") == 0) {
            ValaSymbol* _tmp2_ = NULL;
            const gchar* _tmp3_ = NULL;
            _tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
            _tmp3_ = vala_symbol_get_name (_tmp2_);
            _tmp0_ = _tmp3_ == NULL;
      } else {
            _tmp0_ = FALSE;
      }
      if (_tmp0_) {
            gchar* _tmp4_;
            _tmp4_ = g_strdup ("_vala_main");
            result = _tmp4_;
            return result;
      } else {
            const gchar* _tmp5_ = NULL;
            gboolean _tmp6_;
            _tmp5_ = vala_symbol_get_name ((ValaSymbol*) self);
            _tmp6_ = g_str_has_prefix (_tmp5_, "_");
            if (_tmp6_) {
                  ValaSymbol* _tmp7_ = NULL;
                  gchar* _tmp8_ = NULL;
                  gchar* _tmp9_;
                  const gchar* _tmp10_ = NULL;
                  gchar* _tmp11_ = NULL;
                  gchar* _tmp12_;
                  gchar* _tmp13_ = NULL;
                  gchar* _tmp14_;
                  _tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  _tmp8_ = vala_symbol_get_lower_case_cprefix (_tmp7_);
                  _tmp9_ = _tmp8_;
                  _tmp10_ = vala_symbol_get_name ((ValaSymbol*) self);
                  _tmp11_ = string_substring (_tmp10_, (glong) 1, (glong) (-1));
                  _tmp12_ = _tmp11_;
                  _tmp13_ = g_strdup_printf ("_%s%s", _tmp9_, _tmp12_);
                  _tmp14_ = _tmp13_;
                  _g_free0 (_tmp12_);
                  _g_free0 (_tmp9_);
                  result = _tmp14_;
                  return result;
            } else {
                  ValaSymbol* _tmp15_ = NULL;
                  gchar* _tmp16_ = NULL;
                  gchar* _tmp17_;
                  const gchar* _tmp18_ = NULL;
                  gchar* _tmp19_ = NULL;
                  gchar* _tmp20_;
                  _tmp15_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  _tmp16_ = vala_symbol_get_lower_case_cprefix (_tmp15_);
                  _tmp17_ = _tmp16_;
                  _tmp18_ = vala_symbol_get_name ((ValaSymbol*) self);
                  _tmp19_ = g_strdup_printf ("%s%s", _tmp17_, _tmp18_);
                  _tmp20_ = _tmp19_;
                  _g_free0 (_tmp17_);
                  result = _tmp20_;
                  return result;
            }
      }
}


gchar* vala_method_get_default_cname (ValaMethod* self) {
      return VALA_METHOD_GET_CLASS (self)->get_default_cname (self);
}


/**
 * Returns the implementation name of this data type as it is used in C
 * code.
 *
 * @return the name to be used in C code
 */
static gchar* vala_method_real_get_real_cname (ValaMethod* self) {
      gchar* result = NULL;
      gboolean _tmp0_ = FALSE;
      ValaMethod* _tmp1_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      _tmp1_ = vala_method_get_base_method (self);
      if (_tmp1_ != NULL) {
            _tmp0_ = TRUE;
      } else {
            ValaMethod* _tmp2_ = NULL;
            _tmp2_ = vala_method_get_base_interface_method (self);
            _tmp0_ = _tmp2_ != NULL;
      }
      if (_tmp0_) {
            ValaSymbol* _tmp3_ = NULL;
            gchar* _tmp4_ = NULL;
            gchar* _tmp5_;
            const gchar* _tmp6_ = NULL;
            gchar* _tmp7_ = NULL;
            gchar* _tmp8_;
            _tmp3_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
            _tmp4_ = vala_symbol_get_lower_case_cprefix (_tmp3_);
            _tmp5_ = _tmp4_;
            _tmp6_ = vala_symbol_get_name ((ValaSymbol*) self);
            _tmp7_ = g_strdup_printf ("%sreal_%s", _tmp5_, _tmp6_);
            _tmp8_ = _tmp7_;
            _g_free0 (_tmp5_);
            result = _tmp8_;
            return result;
      } else {
            gchar* _tmp9_ = NULL;
            _tmp9_ = vala_method_get_cname (self);
            result = _tmp9_;
            return result;
      }
}


gchar* vala_method_get_real_cname (ValaMethod* self) {
      return VALA_METHOD_GET_CLASS (self)->get_real_cname (self);
}


gchar* vala_method_get_finish_name_for_basename (ValaMethod* self, const gchar* basename) {
      gchar* result = NULL;
      gchar* _tmp0_;
      gchar* _result_;
      gboolean _tmp1_;
      gchar* _tmp5_;
      g_return_val_if_fail (self != NULL, NULL);
      g_return_val_if_fail (basename != NULL, NULL);
      _tmp0_ = g_strdup (basename);
      _result_ = _tmp0_;
      _tmp1_ = g_str_has_suffix (_result_, "_async");
      if (_tmp1_) {
            gint _tmp2_;
            gint _tmp3_;
            gchar* _tmp4_ = NULL;
            _tmp2_ = strlen (_result_);
            _tmp3_ = strlen ("_async");
            _tmp4_ = string_substring (_result_, (glong) 0, (glong) (_tmp2_ - _tmp3_));
            _g_free0 (_result_);
            _result_ = _tmp4_;
      }
      _tmp5_ = g_strconcat (_result_, "_finish", NULL);
      _g_free0 (_result_);
      _result_ = _tmp5_;
      result = _result_;
      return result;
}


gchar* vala_method_get_finish_real_cname (ValaMethod* self) {
      gchar* result = NULL;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      g_return_val_if_fail (self != NULL, NULL);
      g_assert (self->priv->_coroutine);
      _tmp0_ = vala_method_get_real_cname (self);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_method_get_finish_name_for_basename (self, _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      result = _tmp3_;
      return result;
}


gchar* vala_method_get_finish_vfunc_name (ValaMethod* self) {
      gchar* result = NULL;
      const gchar* _tmp0_ = NULL;
      gchar* _tmp1_ = NULL;
      g_return_val_if_fail (self != NULL, NULL);
      g_assert (self->priv->_coroutine);
      _tmp0_ = vala_method_get_vfunc_name (self);
      _tmp1_ = vala_method_get_finish_name_for_basename (self, _tmp0_);
      result = _tmp1_;
      return result;
}


gchar* vala_method_get_default_finish_cname (ValaMethod* self) {
      gchar* result = NULL;
      gchar* _tmp0_ = NULL;
      gchar* _tmp1_;
      gchar* _tmp2_ = NULL;
      gchar* _tmp3_;
      g_return_val_if_fail (self != NULL, NULL);
      _tmp0_ = vala_method_get_cname (self);
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_method_get_finish_name_for_basename (self, _tmp1_);
      _tmp3_ = _tmp2_;
      _g_free0 (_tmp1_);
      result = _tmp3_;
      return result;
}


/**
 * Sets the name of this method as it is used in C code.
 *
 * @param cname the name to be used in C code
 */
void vala_method_set_cname (ValaMethod* self, const gchar* cname) {
      gchar* _tmp0_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cname != NULL);
      _tmp0_ = g_strdup (cname);
      _g_free0 (self->priv->cname);
      self->priv->cname = _tmp0_;
}


static void vala_method_process_ccode_attribute (ValaMethod* self, ValaAttribute* a) {
      gboolean _tmp0_;
      gboolean _tmp3_;
      gboolean _tmp8_;
      gboolean _tmp11_;
      gboolean _tmp13_;
      gboolean _tmp16_;
      gboolean _tmp18_;
      gboolean _tmp20_;
      gboolean _tmp23_;
      gboolean _tmp25_;
      gboolean _tmp27_;
      gboolean _tmp29_;
      gboolean _tmp31_;
      gboolean _tmp33_;
      gboolean _tmp35_;
      gboolean _tmp37_;
      g_return_if_fail (self != NULL);
      g_return_if_fail (a != NULL);
      _tmp0_ = vala_attribute_has_argument (a, "cname");
      if (_tmp0_) {
            gchar* _tmp1_ = NULL;
            gchar* _tmp2_;
            _tmp1_ = vala_attribute_get_string (a, "cname");
            _tmp2_ = _tmp1_;
            vala_method_set_cname (self, _tmp2_);
            _g_free0 (_tmp2_);
      }
      _tmp3_ = vala_attribute_has_argument (a, "cheader_filename");
      if (_tmp3_) {
            gchar* _tmp4_ = NULL;
            gchar* val;
            gchar** _tmp5_;
            gchar** _tmp6_ = NULL;
            _tmp4_ = vala_attribute_get_string (a, "cheader_filename");
            val = _tmp4_;
            _tmp6_ = _tmp5_ = g_strsplit (val, ",", 0);
            {
                  gchar** filename_collection;
                  int filename_collection_length1;
                  int filename_it;
                  filename_collection = _tmp6_;
                  filename_collection_length1 = _vala_array_length (_tmp5_);
                  for (filename_it = 0; filename_it < _vala_array_length (_tmp5_); filename_it = filename_it + 1) {
                        gchar* _tmp7_;
                        gchar* filename;
                        _tmp7_ = g_strdup (filename_collection[filename_it]);
                        filename = _tmp7_;
                        {
                              vala_symbol_add_cheader_filename ((ValaSymbol*) self, filename);
                              _g_free0 (filename);
                        }
                  }
                  filename_collection = (_vala_array_free (filename_collection, filename_collection_length1, (GDestroyNotify) g_free), NULL);
            }
            _g_free0 (val);
      }
      _tmp8_ = vala_attribute_has_argument (a, "vfunc_name");
      if (_tmp8_) {
            gchar* _tmp9_ = NULL;
            gchar* _tmp10_;
            _tmp9_ = vala_attribute_get_string (a, "vfunc_name");
            _tmp10_ = _tmp9_;
            vala_method_set_vfunc_name (self, _tmp10_);
            _g_free0 (_tmp10_);
      }
      _tmp11_ = vala_attribute_has_argument (a, "finish_name");
      if (_tmp11_) {
            gchar* _tmp12_ = NULL;
            _tmp12_ = vala_attribute_get_string (a, "finish_name");
            _g_free0 (self->priv->finish_name);
            self->priv->finish_name = _tmp12_;
      }
      _tmp13_ = vala_attribute_has_argument (a, "sentinel");
      if (_tmp13_) {
            gchar* _tmp14_ = NULL;
            gchar* _tmp15_;
            _tmp14_ = vala_attribute_get_string (a, "sentinel");
            _tmp15_ = _tmp14_;
            vala_method_set_sentinel (self, _tmp15_);
            _g_free0 (_tmp15_);
      }
      _tmp16_ = vala_attribute_has_argument (a, "instance_pos");
      if (_tmp16_) {
            gdouble _tmp17_;
            _tmp17_ = vala_attribute_get_double (a, "instance_pos");
            vala_method_set_cinstance_parameter_position (self, _tmp17_);
      }
      _tmp18_ = vala_attribute_has_argument (a, "array_length");
      if (_tmp18_) {
            gboolean _tmp19_;
            _tmp19_ = vala_attribute_get_bool (a, "array_length");
            vala_method_set_no_array_length (self, !_tmp19_);
      }
      _tmp20_ = vala_attribute_has_argument (a, "array_length_type");
      if (_tmp20_) {
            gchar* _tmp21_ = NULL;
            gchar* _tmp22_;
            _tmp21_ = vala_attribute_get_string (a, "array_length_type");
            _tmp22_ = _tmp21_;
            vala_method_set_array_length_type (self, _tmp22_);
            _g_free0 (_tmp22_);
      }
      _tmp23_ = vala_attribute_has_argument (a, "array_null_terminated");
      if (_tmp23_) {
            gboolean _tmp24_;
            _tmp24_ = vala_attribute_get_bool (a, "array_null_terminated");
            vala_method_set_array_null_terminated (self, _tmp24_);
      }
      _tmp25_ = vala_attribute_has_argument (a, "array_length_pos");
      if (_tmp25_) {
            gdouble _tmp26_;
            _tmp26_ = vala_attribute_get_double (a, "array_length_pos");
            vala_method_set_carray_length_parameter_position (self, _tmp26_);
      }
      _tmp27_ = vala_attribute_has_argument (a, "delegate_target_pos");
      if (_tmp27_) {
            gdouble _tmp28_;
            _tmp28_ = vala_attribute_get_double (a, "delegate_target_pos");
            vala_method_set_cdelegate_target_parameter_position (self, _tmp28_);
      }
      _tmp29_ = vala_attribute_has_argument (a, "has_new_function");
      if (_tmp29_) {
            gboolean _tmp30_;
            _tmp30_ = vala_attribute_get_bool (a, "has_new_function");
            vala_method_set_has_new_function (self, _tmp30_);
      }
      _tmp31_ = vala_attribute_has_argument (a, "has_construct_function");
      if (_tmp31_) {
            gboolean _tmp32_;
            _tmp32_ = vala_attribute_get_bool (a, "has_construct_function");
            vala_method_set_has_construct_function (self, _tmp32_);
      }
      _tmp33_ = vala_attribute_has_argument (a, "generic_type_pos");
      if (_tmp33_) {
            gdouble _tmp34_;
            vala_method_set_has_generic_type_parameter (self, TRUE);
            _tmp34_ = vala_attribute_get_double (a, "generic_type_pos");
            vala_method_set_generic_type_parameter_position (self, _tmp34_);
      }
      _tmp35_ = vala_attribute_has_argument (a, "simple_generics");
      if (_tmp35_) {
            gboolean _tmp36_;
            _tmp36_ = vala_attribute_get_bool (a, "simple_generics");
            vala_method_set_simple_generics (self, _tmp36_);
      }
      _tmp37_ = vala_attribute_has_argument (a, "returns_floating_reference");
      if (_tmp37_) {
            gboolean _tmp38_;
            _tmp38_ = vala_attribute_get_bool (a, "returns_floating_reference");
            vala_method_set_returns_floating_reference (self, _tmp38_);
      }
}


/**
 * Process all associated attributes.
 */
static gpointer _vala_code_node_ref0 (gpointer self) {
      return self ? vala_code_node_ref (self) : NULL;
}


void vala_method_process_attributes (ValaMethod* self) {
      g_return_if_fail (self != NULL);
      {
            GList* a_collection;
            GList* a_it;
            a_collection = ((ValaCodeNode*) self)->attributes;
            for (a_it = a_collection; a_it != NULL; a_it = a_it->next) {
                  ValaAttribute* _tmp0_;
                  ValaAttribute* a;
                  _tmp0_ = _vala_code_node_ref0 ((ValaAttribute*) a_it->data);
                  a = _tmp0_;
                  {
                        const gchar* _tmp1_ = NULL;
                        _tmp1_ = vala_attribute_get_name (a);
                        if (g_strcmp0 (_tmp1_, "CCode") == 0) {
                              vala_method_process_ccode_attribute (self, a);
                        } else {
                              const gchar* _tmp2_ = NULL;
                              _tmp2_ = vala_attribute_get_name (a);
                              if (g_strcmp0 (_tmp2_, "ReturnsModifiedPointer") == 0) {
                                    vala_method_set_returns_modified_pointer (self, TRUE);
                              } else {
                                    const gchar* _tmp3_ = NULL;
                                    _tmp3_ = vala_attribute_get_name (a);
                                    if (g_strcmp0 (_tmp3_, "FloatingReference") == 0) {
                                          ValaDataType* _tmp4_ = NULL;
                                          _tmp4_ = vala_method_get_return_type (self);
                                          vala_data_type_set_floating_reference (_tmp4_, TRUE);
                                    } else {
                                          const gchar* _tmp5_ = NULL;
                                          _tmp5_ = vala_attribute_get_name (a);
                                          if (g_strcmp0 (_tmp5_, "PrintfFormat") == 0) {
                                                vala_method_set_printf_format (self, TRUE);
                                          } else {
                                                const gchar* _tmp6_ = NULL;
                                                _tmp6_ = vala_attribute_get_name (a);
                                                if (g_strcmp0 (_tmp6_, "ScanfFormat") == 0) {
                                                      vala_method_set_scanf_format (self, TRUE);
                                                } else {
                                                      const gchar* _tmp7_ = NULL;
                                                      _tmp7_ = vala_attribute_get_name (a);
                                                      if (g_strcmp0 (_tmp7_, "NoArrayLength") == 0) {
                                                            ValaSourceReference* _tmp8_ = NULL;
                                                            _tmp8_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                                            vala_report_warning (_tmp8_, "NoArrayLength attribute is deprecated, use [CCode (array_length = fals" \
"e)] instead.");
                                                            vala_method_set_no_array_length (self, TRUE);
                                                      } else {
                                                            const gchar* _tmp9_ = NULL;
                                                            _tmp9_ = vala_attribute_get_name (a);
                                                            if (g_strcmp0 (_tmp9_, "Deprecated") == 0) {
                                                                  vala_symbol_process_deprecated_attribute ((ValaSymbol*) self, a);
                                                            } else {
                                                                  const gchar* _tmp10_ = NULL;
                                                                  _tmp10_ = vala_attribute_get_name (a);
                                                                  if (g_strcmp0 (_tmp10_, "NoThrow") == 0) {
                                                                        ValaList* _tmp11_ = NULL;
                                                                        ValaList* _tmp12_;
                                                                        _tmp11_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
                                                                        _tmp12_ = _tmp11_;
                                                                        vala_collection_clear ((ValaCollection*) _tmp12_);
                                                                        _vala_iterable_unref0 (_tmp12_);
                                                                  } else {
                                                                        const gchar* _tmp13_ = NULL;
                                                                        _tmp13_ = vala_attribute_get_name (a);
                                                                        if (g_strcmp0 (_tmp13_, "Experimental") == 0) {
                                                                              vala_symbol_process_experimental_attribute ((ValaSymbol*) self, a);
                                                                        }
                                                                  }
                                                            }
                                                      }
                                                }
                                          }
                                    }
                              }
                        }
                        _vala_code_node_unref0 (a);
                  }
            }
      }
}


/**
 * Checks whether the parameters and return type of this method are
 * compatible with the specified method
 *
 * @param base_method a method
 * @param invalid_match error string about which check failed
 * @return true if the specified method is compatible to this method
 */
gboolean vala_method_compatible (ValaMethod* self, ValaMethod* base_method, gchar** invalid_match) {
      gchar* _invalid_match = NULL;
      gboolean result = FALSE;
      ValaObjectType* object_type;
      ValaSymbol* _tmp1_ = NULL;
      ValaDataType* _tmp9_ = NULL;
      ValaDataType* _tmp10_ = NULL;
      ValaDataType* actual_base_type;
      ValaDataType* _tmp11_ = NULL;
      gboolean _tmp12_;
      ValaIterator* _tmp14_ = NULL;
      ValaIterator* method_params_it;
      gint param_index;
      gboolean _tmp30_;
      g_return_val_if_fail (self != NULL, FALSE);
      g_return_val_if_fail (base_method != NULL, FALSE);
      if (self->priv->_binding != base_method->priv->_binding) {
            gchar* _tmp0_;
            _tmp0_ = g_strdup ("incompatible binding");
            _g_free0 (_invalid_match);
            _invalid_match = _tmp0_;
            result = FALSE;
            if (invalid_match) {
                  *invalid_match = _invalid_match;
            } else {
                  _g_free0 (_invalid_match);
            }
            return result;
      }
      object_type = NULL;
      _tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
      if (VALA_IS_OBJECT_TYPE_SYMBOL (_tmp1_)) {
            ValaSymbol* _tmp2_ = NULL;
            ValaObjectType* _tmp3_ = NULL;
            _tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
            _tmp3_ = vala_object_type_new (VALA_OBJECT_TYPE_SYMBOL (_tmp2_));
            _vala_code_node_unref0 (object_type);
            object_type = _tmp3_;
            {
                  ValaObjectTypeSymbol* _tmp4_ = NULL;
                  ValaList* _tmp5_ = NULL;
                  ValaList* _type_parameter_list;
                  gint _tmp6_;
                  gint _type_parameter_size;
                  gint _type_parameter_index;
                  _tmp4_ = vala_object_type_get_type_symbol (object_type);
                  _tmp5_ = vala_object_type_symbol_get_type_parameters (_tmp4_);
                  _type_parameter_list = _tmp5_;
                  _tmp6_ = vala_collection_get_size ((ValaCollection*) _type_parameter_list);
                  _type_parameter_size = _tmp6_;
                  _type_parameter_index = -1;
                  while (TRUE) {
                        gpointer _tmp7_ = NULL;
                        ValaTypeParameter* type_parameter;
                        ValaGenericType* _tmp8_ = NULL;
                        ValaGenericType* type_arg;
                        _type_parameter_index = _type_parameter_index + 1;
                        if (!(_type_parameter_index < _type_parameter_size)) {
                              break;
                        }
                        _tmp7_ = vala_list_get (_type_parameter_list, _type_parameter_index);
                        type_parameter = (ValaTypeParameter*) _tmp7_;
                        _tmp8_ = vala_generic_type_new (type_parameter);
                        type_arg = _tmp8_;
                        vala_data_type_set_value_owned ((ValaDataType*) type_arg, TRUE);
                        vala_data_type_add_type_argument ((ValaDataType*) object_type, (ValaDataType*) type_arg);
                        _vala_code_node_unref0 (type_arg);
                        _vala_code_node_unref0 (type_parameter);
                  }
                  _vala_iterable_unref0 (_type_parameter_list);
            }
      }
      _tmp9_ = vala_method_get_return_type (base_method);
      _tmp10_ = vala_data_type_get_actual_type (_tmp9_, (ValaDataType*) object_type, NULL, (ValaCodeNode*) self);
      actual_base_type = _tmp10_;
      _tmp11_ = vala_method_get_return_type (self);
      _tmp12_ = vala_data_type_equals (_tmp11_, actual_base_type);
      if (!_tmp12_) {
            gchar* _tmp13_;
            _tmp13_ = g_strdup ("incompatible return type");
            _g_free0 (_invalid_match);
            _invalid_match = _tmp13_;
            result = FALSE;
            _vala_code_node_unref0 (actual_base_type);
            _vala_code_node_unref0 (object_type);
            if (invalid_match) {
                  *invalid_match = _invalid_match;
            } else {
                  _g_free0 (_invalid_match);
            }
            return result;
      }
      _tmp14_ = vala_iterable_iterator ((ValaIterable*) self->priv->parameters);
      method_params_it = _tmp14_;
      param_index = 1;
      {
            ValaList* _tmp15_;
            ValaList* _base_param_list;
            gint _tmp16_;
            gint _base_param_size;
            gint _base_param_index;
            _tmp15_ = _vala_iterable_ref0 (base_method->priv->parameters);
            _base_param_list = _tmp15_;
            _tmp16_ = vala_collection_get_size ((ValaCollection*) _base_param_list);
            _base_param_size = _tmp16_;
            _base_param_index = -1;
            while (TRUE) {
                  gpointer _tmp17_ = NULL;
                  ValaParameter* base_param;
                  gboolean _tmp18_;
                  gpointer _tmp20_ = NULL;
                  ValaParameter* param;
                  gboolean _tmp21_;
                  gboolean _tmp22_;
                  gboolean _tmp24_;
                  _base_param_index = _base_param_index + 1;
                  if (!(_base_param_index < _base_param_size)) {
                        break;
                  }
                  _tmp17_ = vala_list_get (_base_param_list, _base_param_index);
                  base_param = (ValaParameter*) _tmp17_;
                  _tmp18_ = vala_iterator_next (method_params_it);
                  if (!_tmp18_) {
                        gchar* _tmp19_;
                        _tmp19_ = g_strdup ("too few parameters");
                        _g_free0 (_invalid_match);
                        _invalid_match = _tmp19_;
                        result = FALSE;
                        _vala_code_node_unref0 (base_param);
                        _vala_iterable_unref0 (_base_param_list);
                        _vala_iterator_unref0 (method_params_it);
                        _vala_code_node_unref0 (actual_base_type);
                        _vala_code_node_unref0 (object_type);
                        if (invalid_match) {
                              *invalid_match = _invalid_match;
                        } else {
                              _g_free0 (_invalid_match);
                        }
                        return result;
                  }
                  _tmp20_ = vala_iterator_get (method_params_it);
                  param = (ValaParameter*) _tmp20_;
                  _tmp21_ = vala_parameter_get_ellipsis (base_param);
                  _tmp22_ = vala_parameter_get_ellipsis (param);
                  if (_tmp21_ != _tmp22_) {
                        gchar* _tmp23_;
                        _tmp23_ = g_strdup ("ellipsis parameter mismatch");
                        _g_free0 (_invalid_match);
                        _invalid_match = _tmp23_;
                        result = FALSE;
                        _vala_code_node_unref0 (param);
                        _vala_code_node_unref0 (base_param);
                        _vala_iterable_unref0 (_base_param_list);
                        _vala_iterator_unref0 (method_params_it);
                        _vala_code_node_unref0 (actual_base_type);
                        _vala_code_node_unref0 (object_type);
                        if (invalid_match) {
                              *invalid_match = _invalid_match;
                        } else {
                              _g_free0 (_invalid_match);
                        }
                        return result;
                  }
                  _tmp24_ = vala_parameter_get_ellipsis (base_param);
                  if (!_tmp24_) {
                        ValaDataType* _tmp25_ = NULL;
                        ValaDataType* _tmp26_ = NULL;
                        ValaDataType* _tmp27_ = NULL;
                        gboolean _tmp28_;
                        _tmp25_ = vala_variable_get_variable_type ((ValaVariable*) base_param);
                        _tmp26_ = vala_data_type_get_actual_type (_tmp25_, (ValaDataType*) object_type, NULL, (ValaCodeNode*) self);
                        _vala_code_node_unref0 (actual_base_type);
                        actual_base_type = _tmp26_;
                        _tmp27_ = vala_variable_get_variable_type ((ValaVariable*) param);
                        _tmp28_ = vala_data_type_equals (actual_base_type, _tmp27_);
                        if (!_tmp28_) {
                              gchar* _tmp29_ = NULL;
                              _tmp29_ = g_strdup_printf ("incompatible type of parameter %d", param_index);
                              _g_free0 (_invalid_match);
                              _invalid_match = _tmp29_;
                              result = FALSE;
                              _vala_code_node_unref0 (param);
                              _vala_code_node_unref0 (base_param);
                              _vala_iterable_unref0 (_base_param_list);
                              _vala_iterator_unref0 (method_params_it);
                              _vala_code_node_unref0 (actual_base_type);
                              _vala_code_node_unref0 (object_type);
                              if (invalid_match) {
                                    *invalid_match = _invalid_match;
                              } else {
                                    _g_free0 (_invalid_match);
                              }
                              return result;
                        }
                  }
                  param_index++;
                  _vala_code_node_unref0 (param);
                  _vala_code_node_unref0 (base_param);
            }
            _vala_iterable_unref0 (_base_param_list);
      }
      _tmp30_ = vala_iterator_next (method_params_it);
      if (_tmp30_) {
            gchar* _tmp31_;
            _tmp31_ = g_strdup ("too many parameters");
            _g_free0 (_invalid_match);
            _invalid_match = _tmp31_;
            result = FALSE;
            _vala_iterator_unref0 (method_params_it);
            _vala_code_node_unref0 (actual_base_type);
            _vala_code_node_unref0 (object_type);
            if (invalid_match) {
                  *invalid_match = _invalid_match;
            } else {
                  _g_free0 (_invalid_match);
            }
            return result;
      }
      {
            ValaList* _tmp32_ = NULL;
            ValaList* _method_error_type_list;
            gint _tmp33_;
            gint _method_error_type_size;
            gint _method_error_type_index;
            _tmp32_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
            _method_error_type_list = _tmp32_;
            _tmp33_ = vala_collection_get_size ((ValaCollection*) _method_error_type_list);
            _method_error_type_size = _tmp33_;
            _method_error_type_index = -1;
            while (TRUE) {
                  gpointer _tmp34_ = NULL;
                  ValaDataType* method_error_type;
                  gboolean match;
                  _method_error_type_index = _method_error_type_index + 1;
                  if (!(_method_error_type_index < _method_error_type_size)) {
                        break;
                  }
                  _tmp34_ = vala_list_get (_method_error_type_list, _method_error_type_index);
                  method_error_type = (ValaDataType*) _tmp34_;
                  match = FALSE;
                  {
                        ValaList* _tmp35_ = NULL;
                        ValaList* _base_method_error_type_list;
                        gint _tmp36_;
                        gint _base_method_error_type_size;
                        gint _base_method_error_type_index;
                        _tmp35_ = vala_code_node_get_error_types ((ValaCodeNode*) base_method);
                        _base_method_error_type_list = _tmp35_;
                        _tmp36_ = vala_collection_get_size ((ValaCollection*) _base_method_error_type_list);
                        _base_method_error_type_size = _tmp36_;
                        _base_method_error_type_index = -1;
                        while (TRUE) {
                              gpointer _tmp37_ = NULL;
                              ValaDataType* base_method_error_type;
                              gboolean _tmp38_;
                              _base_method_error_type_index = _base_method_error_type_index + 1;
                              if (!(_base_method_error_type_index < _base_method_error_type_size)) {
                                    break;
                              }
                              _tmp37_ = vala_list_get (_base_method_error_type_list, _base_method_error_type_index);
                              base_method_error_type = (ValaDataType*) _tmp37_;
                              _tmp38_ = vala_data_type_compatible (method_error_type, base_method_error_type);
                              if (_tmp38_) {
                                    match = TRUE;
                                    _vala_code_node_unref0 (base_method_error_type);
                                    break;
                              }
                              _vala_code_node_unref0 (base_method_error_type);
                        }
                        _vala_iterable_unref0 (_base_method_error_type_list);
                  }
                  if (!match) {
                        gchar* _tmp39_ = NULL;
                        gchar* _tmp40_;
                        gchar* _tmp41_ = NULL;
                        _tmp39_ = vala_code_node_to_string ((ValaCodeNode*) method_error_type);
                        _tmp40_ = _tmp39_;
                        _tmp41_ = g_strdup_printf ("incompatible error type `%s'", _tmp40_);
                        _g_free0 (_invalid_match);
                        _invalid_match = _tmp41_;
                        _g_free0 (_tmp40_);
                        result = FALSE;
                        _vala_code_node_unref0 (method_error_type);
                        _vala_iterable_unref0 (_method_error_type_list);
                        _vala_iterator_unref0 (method_params_it);
                        _vala_code_node_unref0 (actual_base_type);
                        _vala_code_node_unref0 (object_type);
                        if (invalid_match) {
                              *invalid_match = _invalid_match;
                        } else {
                              _g_free0 (_invalid_match);
                        }
                        return result;
                  }
                  _vala_code_node_unref0 (method_error_type);
            }
            _vala_iterable_unref0 (_method_error_type_list);
      }
      if (base_method->priv->_coroutine != self->priv->_coroutine) {
            gchar* _tmp42_;
            _tmp42_ = g_strdup ("async mismatch");
            _g_free0 (_invalid_match);
            _invalid_match = _tmp42_;
            result = FALSE;
            _vala_iterator_unref0 (method_params_it);
            _vala_code_node_unref0 (actual_base_type);
            _vala_code_node_unref0 (object_type);
            if (invalid_match) {
                  *invalid_match = _invalid_match;
            } else {
                  _g_free0 (_invalid_match);
            }
            return result;
      }
      result = TRUE;
      _vala_iterator_unref0 (method_params_it);
      _vala_code_node_unref0 (actual_base_type);
      _vala_code_node_unref0 (object_type);
      if (invalid_match) {
            *invalid_match = _invalid_match;
      } else {
            _g_free0 (_invalid_match);
      }
      return result;
}


/**
 * Appends the specified parameter to the list of type parameters.
 *
 * @param p a type parameter
 */
void vala_method_add_type_parameter (ValaMethod* self, ValaTypeParameter* p) {
      ValaScope* _tmp1_ = NULL;
      const gchar* _tmp2_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (p != NULL);
      if (self->priv->type_parameters == NULL) {
            ValaArrayList* _tmp0_ = NULL;
            _tmp0_ = vala_array_list_new (VALA_TYPE_TYPEPARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
            _vala_iterable_unref0 (self->priv->type_parameters);
            self->priv->type_parameters = (ValaList*) _tmp0_;
      }
      vala_collection_add ((ValaCollection*) self->priv->type_parameters, p);
      _tmp1_ = vala_symbol_get_scope ((ValaSymbol*) self);
      _tmp2_ = vala_symbol_get_name ((ValaSymbol*) p);
      vala_scope_add (_tmp1_, _tmp2_, (ValaSymbol*) p);
}


/**
 * Returns a copy of the type parameter list.
 *
 * @return list of type parameters
 */
ValaList* vala_method_get_type_parameters (ValaMethod* self) {
      ValaList* result = NULL;
      ValaList* _tmp2_;
      g_return_val_if_fail (self != NULL, NULL);
      if (self->priv->type_parameters != NULL) {
            ValaList* _tmp0_;
            _tmp0_ = _vala_iterable_ref0 (self->priv->type_parameters);
            result = _tmp0_;
            return result;
      }
      if (vala_method__empty_type_parameter_list == NULL) {
            ValaArrayList* _tmp1_ = NULL;
            _tmp1_ = vala_array_list_new (VALA_TYPE_TYPEPARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
            _vala_iterable_unref0 (vala_method__empty_type_parameter_list);
            vala_method__empty_type_parameter_list = (ValaList*) _tmp1_;
      }
      _tmp2_ = _vala_iterable_ref0 (vala_method__empty_type_parameter_list);
      result = _tmp2_;
      return result;
}


gint vala_method_get_type_parameter_index (ValaMethod* self, const gchar* name) {
      gint result = 0;
      gint i;
      g_return_val_if_fail (self != NULL, 0);
      g_return_val_if_fail (name != NULL, 0);
      if (self->priv->type_parameters == NULL) {
            result = -1;
            return result;
      }
      i = 0;
      {
            ValaList* _tmp0_;
            ValaList* _parameter_list;
            gint _tmp1_;
            gint _parameter_size;
            gint _parameter_index;
            _tmp0_ = _vala_iterable_ref0 (self->priv->type_parameters);
            _parameter_list = _tmp0_;
            _tmp1_ = vala_collection_get_size ((ValaCollection*) _parameter_list);
            _parameter_size = _tmp1_;
            _parameter_index = -1;
            while (TRUE) {
                  gpointer _tmp2_ = NULL;
                  ValaTypeParameter* parameter;
                  const gchar* _tmp3_ = NULL;
                  _parameter_index = _parameter_index + 1;
                  if (!(_parameter_index < _parameter_size)) {
                        break;
                  }
                  _tmp2_ = vala_list_get (_parameter_list, _parameter_index);
                  parameter = (ValaTypeParameter*) _tmp2_;
                  _tmp3_ = vala_symbol_get_name ((ValaSymbol*) parameter);
                  if (g_strcmp0 (_tmp3_, name) == 0) {
                        result = i;
                        _vala_code_node_unref0 (parameter);
                        _vala_iterable_unref0 (_parameter_list);
                        return result;
                  }
                  i++;
                  _vala_code_node_unref0 (parameter);
            }
            _vala_iterable_unref0 (_parameter_list);
      }
      result = -1;
      return result;
}


/**
 * Adds a precondition to this method.
 *
 * @param precondition a boolean precondition expression
 */
void vala_method_add_precondition (ValaMethod* self, ValaExpression* precondition) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (precondition != NULL);
      if (self->priv->preconditions == NULL) {
            ValaArrayList* _tmp0_ = NULL;
            _tmp0_ = vala_array_list_new (VALA_TYPE_EXPRESSION, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
            _vala_iterable_unref0 (self->priv->preconditions);
            self->priv->preconditions = (ValaList*) _tmp0_;
      }
      vala_collection_add ((ValaCollection*) self->priv->preconditions, precondition);
      vala_code_node_set_parent_node ((ValaCodeNode*) precondition, (ValaCodeNode*) self);
}


/**
 * Returns a copy of the list of preconditions of this method.
 *
 * @return list of preconditions
 */
ValaList* vala_method_get_preconditions (ValaMethod* self) {
      ValaList* result = NULL;
      ValaList* _tmp2_;
      g_return_val_if_fail (self != NULL, NULL);
      if (self->priv->preconditions != NULL) {
            ValaList* _tmp0_;
            _tmp0_ = _vala_iterable_ref0 (self->priv->preconditions);
            result = _tmp0_;
            return result;
      }
      if (vala_method__empty_expression_list == NULL) {
            ValaArrayList* _tmp1_ = NULL;
            _tmp1_ = vala_array_list_new (VALA_TYPE_EXPRESSION, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
            _vala_iterable_unref0 (vala_method__empty_expression_list);
            vala_method__empty_expression_list = (ValaList*) _tmp1_;
      }
      _tmp2_ = _vala_iterable_ref0 (vala_method__empty_expression_list);
      result = _tmp2_;
      return result;
}


/**
 * Adds a postcondition to this method.
 *
 * @param postcondition a boolean postcondition expression
 */
void vala_method_add_postcondition (ValaMethod* self, ValaExpression* postcondition) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (postcondition != NULL);
      if (self->priv->postconditions == NULL) {
            ValaArrayList* _tmp0_ = NULL;
            _tmp0_ = vala_array_list_new (VALA_TYPE_EXPRESSION, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
            _vala_iterable_unref0 (self->priv->postconditions);
            self->priv->postconditions = (ValaList*) _tmp0_;
      }
      vala_collection_add ((ValaCollection*) self->priv->postconditions, postcondition);
      vala_code_node_set_parent_node ((ValaCodeNode*) postcondition, (ValaCodeNode*) self);
}


/**
 * Returns a copy of the list of postconditions of this method.
 *
 * @return list of postconditions
 */
ValaList* vala_method_get_postconditions (ValaMethod* self) {
      ValaList* result = NULL;
      ValaList* _tmp2_;
      g_return_val_if_fail (self != NULL, NULL);
      if (self->priv->postconditions != NULL) {
            ValaList* _tmp0_;
            _tmp0_ = _vala_iterable_ref0 (self->priv->postconditions);
            result = _tmp0_;
            return result;
      }
      if (vala_method__empty_expression_list == NULL) {
            ValaArrayList* _tmp1_ = NULL;
            _tmp1_ = vala_array_list_new (VALA_TYPE_EXPRESSION, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
            _vala_iterable_unref0 (vala_method__empty_expression_list);
            vala_method__empty_expression_list = (ValaList*) _tmp1_;
      }
      _tmp2_ = _vala_iterable_ref0 (vala_method__empty_expression_list);
      result = _tmp2_;
      return result;
}


static void vala_method_real_replace_type (ValaCodeNode* base, ValaDataType* old_type, ValaDataType* new_type) {
      ValaMethod * self;
      ValaDataType* _tmp0_ = NULL;
      ValaList* _tmp1_ = NULL;
      ValaList* error_types;
      self = (ValaMethod*) base;
      g_return_if_fail (old_type != NULL);
      g_return_if_fail (new_type != NULL);
      _tmp0_ = vala_method_get_return_type (self);
      if (_tmp0_ == old_type) {
            vala_method_set_return_type (self, new_type);
            return;
      }
      _tmp1_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
      error_types = _tmp1_;
      {
            gint i;
            i = 0;
            {
                  gboolean _tmp2_;
                  _tmp2_ = TRUE;
                  while (TRUE) {
                        gint _tmp3_;
                        gpointer _tmp4_ = NULL;
                        ValaDataType* _tmp5_;
                        gboolean _tmp6_;
                        if (!_tmp2_) {
                              i++;
                        }
                        _tmp2_ = FALSE;
                        _tmp3_ = vala_collection_get_size ((ValaCollection*) error_types);
                        if (!(i < _tmp3_)) {
                              break;
                        }
                        _tmp4_ = vala_list_get (error_types, i);
                        _tmp5_ = (ValaDataType*) _tmp4_;
                        _tmp6_ = _tmp5_ == old_type;
                        _vala_code_node_unref0 (_tmp5_);
                        if (_tmp6_) {
                              vala_list_set (error_types, i, new_type);
                              _vala_iterable_unref0 (error_types);
                              return;
                        }
                  }
            }
      }
      _vala_iterable_unref0 (error_types);
}


static void vala_method_find_base_methods (ValaMethod* self) {
      ValaSymbol* _tmp0_ = NULL;
      g_return_if_fail (self != NULL);
      if (self->priv->base_methods_valid) {
            return;
      }
      _tmp0_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
      if (VALA_IS_CLASS (_tmp0_)) {
            if (!VALA_IS_CREATION_METHOD (self)) {
                  ValaSymbol* _tmp1_ = NULL;
                  gboolean _tmp2_ = FALSE;
                  gboolean _tmp3_ = FALSE;
                  _tmp1_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  vala_method_find_base_interface_method (self, VALA_CLASS (_tmp1_));
                  if (self->priv->_is_virtual) {
                        _tmp3_ = TRUE;
                  } else {
                        _tmp3_ = self->priv->_is_abstract;
                  }
                  if (_tmp3_) {
                        _tmp2_ = TRUE;
                  } else {
                        _tmp2_ = self->priv->_overrides;
                  }
                  if (_tmp2_) {
                        ValaSymbol* _tmp4_ = NULL;
                        _tmp4_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                        vala_method_find_base_class_method (self, VALA_CLASS (_tmp4_));
                  }
            }
      } else {
            ValaSymbol* _tmp5_ = NULL;
            _tmp5_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
            if (VALA_IS_INTERFACE (_tmp5_)) {
                  gboolean _tmp6_ = FALSE;
                  if (self->priv->_is_virtual) {
                        _tmp6_ = TRUE;
                  } else {
                        _tmp6_ = self->priv->_is_abstract;
                  }
                  if (_tmp6_) {
                        ValaMethod* _tmp7_;
                        _tmp7_ = _vala_code_node_ref0 (self);
                        _vala_code_node_unref0 (self->priv->_base_interface_method);
                        self->priv->_base_interface_method = _tmp7_;
                  }
            }
      }
      self->priv->base_methods_valid = TRUE;
}


static void vala_method_find_base_class_method (ValaMethod* self, ValaClass* cl) {
      ValaScope* _tmp0_ = NULL;
      const gchar* _tmp1_ = NULL;
      ValaSymbol* _tmp2_ = NULL;
      ValaSymbol* sym;
      ValaClass* _tmp27_ = NULL;
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      _tmp0_ = vala_symbol_get_scope ((ValaSymbol*) cl);
      _tmp1_ = vala_symbol_get_name ((ValaSymbol*) self);
      _tmp2_ = vala_scope_lookup (_tmp0_, _tmp1_);
      sym = _tmp2_;
      if (VALA_IS_METHOD (sym)) {
            ValaMethod* _tmp3_;
            ValaMethod* base_method;
            gboolean _tmp4_ = FALSE;
            _tmp3_ = _vala_code_node_ref0 (VALA_METHOD (sym));
            base_method = _tmp3_;
            if (base_method->priv->_is_abstract) {
                  _tmp4_ = TRUE;
            } else {
                  _tmp4_ = base_method->priv->_is_virtual;
            }
            if (_tmp4_) {
                  gchar* invalid_match = NULL;
                  gchar* _tmp5_ = NULL;
                  gboolean _tmp6_;
                  _tmp6_ = vala_method_compatible (self, base_method, &_tmp5_);
                  _g_free0 (invalid_match);
                  invalid_match = _tmp5_;
                  if (!_tmp6_) {
                        ValaSourceReference* _tmp7_ = NULL;
                        gchar* _tmp8_ = NULL;
                        gchar* _tmp9_;
                        gchar* _tmp10_ = NULL;
                        gchar* _tmp11_;
                        gchar* _tmp12_ = NULL;
                        gchar* _tmp13_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp7_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp8_ = vala_symbol_get_full_name ((ValaSymbol*) self);
                        _tmp9_ = _tmp8_;
                        _tmp10_ = vala_symbol_get_full_name ((ValaSymbol*) base_method);
                        _tmp11_ = _tmp10_;
                        _tmp12_ = g_strdup_printf ("overriding method `%s' is incompatible with base method `%s': %s.", _tmp9_, _tmp11_, invalid_match);
                        _tmp13_ = _tmp12_;
                        vala_report_error (_tmp7_, _tmp13_);
                        _g_free0 (_tmp13_);
                        _g_free0 (_tmp11_);
                        _g_free0 (_tmp9_);
                        _g_free0 (invalid_match);
                        _vala_code_node_unref0 (base_method);
                        _vala_code_node_unref0 (sym);
                        return;
                  }
                  self->priv->_base_method = base_method;
                  _g_free0 (invalid_match);
                  _vala_code_node_unref0 (base_method);
                  _vala_code_node_unref0 (sym);
                  return;
            }
            _vala_code_node_unref0 (base_method);
      } else {
            if (VALA_IS_SIGNAL (sym)) {
                  ValaSignal* _tmp14_;
                  ValaSignal* sig;
                  gboolean _tmp15_;
                  _tmp14_ = _vala_code_node_ref0 (VALA_SIGNAL (sym));
                  sig = _tmp14_;
                  _tmp15_ = vala_signal_get_is_virtual (sig);
                  if (_tmp15_) {
                        ValaMethod* _tmp16_ = NULL;
                        ValaMethod* _tmp17_;
                        ValaMethod* base_method;
                        gchar* invalid_match = NULL;
                        gchar* _tmp18_ = NULL;
                        gboolean _tmp19_;
                        _tmp16_ = vala_signal_get_default_handler (sig);
                        _tmp17_ = _vala_code_node_ref0 (_tmp16_);
                        base_method = _tmp17_;
                        _tmp19_ = vala_method_compatible (self, base_method, &_tmp18_);
                        _g_free0 (invalid_match);
                        invalid_match = _tmp18_;
                        if (!_tmp19_) {
                              ValaSourceReference* _tmp20_ = NULL;
                              gchar* _tmp21_ = NULL;
                              gchar* _tmp22_;
                              gchar* _tmp23_ = NULL;
                              gchar* _tmp24_;
                              gchar* _tmp25_ = NULL;
                              gchar* _tmp26_;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp20_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              _tmp21_ = vala_symbol_get_full_name ((ValaSymbol*) self);
                              _tmp22_ = _tmp21_;
                              _tmp23_ = vala_symbol_get_full_name ((ValaSymbol*) base_method);
                              _tmp24_ = _tmp23_;
                              _tmp25_ = g_strdup_printf ("overriding method `%s' is incompatible with base method `%s': %s.", _tmp22_, _tmp24_, invalid_match);
                              _tmp26_ = _tmp25_;
                              vala_report_error (_tmp20_, _tmp26_);
                              _g_free0 (_tmp26_);
                              _g_free0 (_tmp24_);
                              _g_free0 (_tmp22_);
                              _g_free0 (invalid_match);
                              _vala_code_node_unref0 (base_method);
                              _vala_code_node_unref0 (sig);
                              _vala_code_node_unref0 (sym);
                              return;
                        }
                        self->priv->_base_method = base_method;
                        _g_free0 (invalid_match);
                        _vala_code_node_unref0 (base_method);
                        _vala_code_node_unref0 (sig);
                        _vala_code_node_unref0 (sym);
                        return;
                  }
                  _vala_code_node_unref0 (sig);
            }
      }
      _tmp27_ = vala_class_get_base_class (cl);
      if (_tmp27_ != NULL) {
            ValaClass* _tmp28_ = NULL;
            _tmp28_ = vala_class_get_base_class (cl);
            vala_method_find_base_class_method (self, _tmp28_);
      }
      _vala_code_node_unref0 (sym);
}


static void vala_method_find_base_interface_method (ValaMethod* self, ValaClass* cl) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (cl != NULL);
      {
            ValaList* _tmp0_ = NULL;
            ValaList* _type_list;
            gint _tmp1_;
            gint _type_size;
            gint _type_index;
            _tmp0_ = vala_class_get_base_types (cl);
            _type_list = _tmp0_;
            _tmp1_ = vala_collection_get_size ((ValaCollection*) _type_list);
            _type_size = _tmp1_;
            _type_index = -1;
            while (TRUE) {
                  gpointer _tmp2_ = NULL;
                  ValaDataType* type;
                  ValaTypeSymbol* _tmp3_ = NULL;
                  _type_index = _type_index + 1;
                  if (!(_type_index < _type_size)) {
                        break;
                  }
                  _tmp2_ = vala_list_get (_type_list, _type_index);
                  type = (ValaDataType*) _tmp2_;
                  _tmp3_ = vala_data_type_get_data_type (type);
                  if (VALA_IS_INTERFACE (_tmp3_)) {
                        ValaTypeSymbol* _tmp4_ = NULL;
                        ValaScope* _tmp5_ = NULL;
                        const gchar* _tmp6_ = NULL;
                        ValaSymbol* _tmp7_ = NULL;
                        ValaSymbol* sym;
                        _tmp4_ = vala_data_type_get_data_type (type);
                        _tmp5_ = vala_symbol_get_scope ((ValaSymbol*) _tmp4_);
                        _tmp6_ = vala_symbol_get_name ((ValaSymbol*) self);
                        _tmp7_ = vala_scope_lookup (_tmp5_, _tmp6_);
                        sym = _tmp7_;
                        if (VALA_IS_METHOD (sym)) {
                              ValaMethod* _tmp8_;
                              ValaMethod* base_method;
                              gboolean _tmp9_ = FALSE;
                              _tmp8_ = _vala_code_node_ref0 (VALA_METHOD (sym));
                              base_method = _tmp8_;
                              if (base_method->priv->_is_abstract) {
                                    _tmp9_ = TRUE;
                              } else {
                                    _tmp9_ = base_method->priv->_is_virtual;
                              }
                              if (_tmp9_) {
                                    gchar* invalid_match = NULL;
                                    gchar* _tmp10_ = NULL;
                                    gboolean _tmp11_;
                                    ValaMethod* _tmp19_;
                                    _tmp11_ = vala_method_compatible (self, base_method, &_tmp10_);
                                    _g_free0 (invalid_match);
                                    invalid_match = _tmp10_;
                                    if (!_tmp11_) {
                                          ValaSourceReference* _tmp12_ = NULL;
                                          gchar* _tmp13_ = NULL;
                                          gchar* _tmp14_;
                                          gchar* _tmp15_ = NULL;
                                          gchar* _tmp16_;
                                          gchar* _tmp17_ = NULL;
                                          gchar* _tmp18_;
                                          vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                          _tmp12_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                          _tmp13_ = vala_symbol_get_full_name ((ValaSymbol*) self);
                                          _tmp14_ = _tmp13_;
                                          _tmp15_ = vala_symbol_get_full_name ((ValaSymbol*) base_method);
                                          _tmp16_ = _tmp15_;
                                          _tmp17_ = g_strdup_printf ("overriding method `%s' is incompatible with base method `%s': %s.", _tmp14_, _tmp16_, invalid_match);
                                          _tmp18_ = _tmp17_;
                                          vala_report_error (_tmp12_, _tmp18_);
                                          _g_free0 (_tmp18_);
                                          _g_free0 (_tmp16_);
                                          _g_free0 (_tmp14_);
                                          _g_free0 (invalid_match);
                                          _vala_code_node_unref0 (base_method);
                                          _vala_code_node_unref0 (sym);
                                          _vala_code_node_unref0 (type);
                                          _vala_iterable_unref0 (_type_list);
                                          return;
                                    }
                                    _tmp19_ = _vala_code_node_ref0 (base_method);
                                    _vala_code_node_unref0 (self->priv->_base_interface_method);
                                    self->priv->_base_interface_method = _tmp19_;
                                    _g_free0 (invalid_match);
                                    _vala_code_node_unref0 (base_method);
                                    _vala_code_node_unref0 (sym);
                                    _vala_code_node_unref0 (type);
                                    _vala_iterable_unref0 (_type_list);
                                    return;
                              }
                              _vala_code_node_unref0 (base_method);
                        }
                        _vala_code_node_unref0 (sym);
                  }
                  _vala_code_node_unref0 (type);
            }
            _vala_iterable_unref0 (_type_list);
      }
}


static gpointer _vala_source_file_ref0 (gpointer self) {
      return self ? vala_source_file_ref (self) : NULL;
}


static gboolean vala_method_real_check (ValaCodeNode* base, ValaCodeContext* context) {
      ValaMethod * self;
      gboolean result = FALSE;
      gboolean _tmp0_;
      gboolean _tmp25_ = FALSE;
      gboolean _tmp48_ = FALSE;
      gboolean _tmp49_ = FALSE;
      ValaSemanticAnalyzer* _tmp53_ = NULL;
      ValaSourceFile* _tmp54_ = NULL;
      ValaSourceFile* _tmp55_;
      ValaSourceFile* old_source_file;
      ValaSemanticAnalyzer* _tmp56_ = NULL;
      ValaSymbol* _tmp57_ = NULL;
      ValaSymbol* _tmp58_;
      ValaSymbol* old_symbol;
      ValaSourceReference* _tmp59_ = NULL;
      ValaSemanticAnalyzer* _tmp63_ = NULL;
      ValaDataType* _tmp64_ = NULL;
      ValaAttribute* _tmp65_ = NULL;
      ValaAttribute* init_attr;
      ValaDataType* _tmp69_ = NULL;
      gboolean _tmp71_ = FALSE;
      gboolean _tmp72_ = FALSE;
      gint _tmp73_;
      ValaLocalVariable* _tmp99_ = NULL;
      ValaBlock* _tmp107_ = NULL;
      ValaSemanticAnalyzer* _tmp109_ = NULL;
      ValaSemanticAnalyzer* _tmp110_ = NULL;
      ValaSemanticAnalyzer* _tmp111_ = NULL;
      ValaStruct* _tmp112_ = NULL;
      gboolean _tmp136_ = FALSE;
      gboolean _tmp137_ = FALSE;
      gboolean _tmp138_ = FALSE;
      gboolean _tmp139_;
      ValaSemanticAnalyzer* _tmp152_ = NULL;
      ValaDataType* _tmp153_ = NULL;
      gboolean _tmp154_;
      ValaBlock* _tmp179_ = NULL;
      gboolean _tmp196_;
      gboolean _tmp208_;
      self = (ValaMethod*) base;
      g_return_val_if_fail (context != NULL, FALSE);
      _tmp0_ = vala_code_node_get_checked ((ValaCodeNode*) self);
      if (_tmp0_) {
            gboolean _tmp1_;
            _tmp1_ = vala_code_node_get_error ((ValaCodeNode*) self);
            result = !_tmp1_;
            return result;
      }
      vala_code_node_set_checked ((ValaCodeNode*) self, TRUE);
      vala_method_process_attributes (self);
      if (self->priv->_is_abstract) {
            ValaSymbol* _tmp2_ = NULL;
            _tmp2_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
            if (VALA_IS_CLASS (_tmp2_)) {
                  ValaSymbol* _tmp3_ = NULL;
                  ValaClass* _tmp4_;
                  ValaClass* cl;
                  gboolean _tmp5_;
                  _tmp3_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  _tmp4_ = _vala_code_node_ref0 (VALA_CLASS (_tmp3_));
                  cl = _tmp4_;
                  _tmp5_ = vala_class_get_is_abstract (cl);
                  if (!_tmp5_) {
                        ValaSourceReference* _tmp6_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp6_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp6_, "Abstract methods may not be declared in non-abstract classes");
                        result = FALSE;
                        _vala_code_node_unref0 (cl);
                        return result;
                  }
                  _vala_code_node_unref0 (cl);
            } else {
                  ValaSymbol* _tmp7_ = NULL;
                  _tmp7_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  if (!VALA_IS_INTERFACE (_tmp7_)) {
                        ValaSourceReference* _tmp8_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp8_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp8_, "Abstract methods may not be declared outside of classes and interfaces");
                        result = FALSE;
                        return result;
                  }
            }
      } else {
            if (self->priv->_is_virtual) {
                  gboolean _tmp9_ = FALSE;
                  ValaSymbol* _tmp10_ = NULL;
                  ValaSymbol* _tmp13_ = NULL;
                  _tmp10_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  if (!VALA_IS_CLASS (_tmp10_)) {
                        ValaSymbol* _tmp11_ = NULL;
                        _tmp11_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                        _tmp9_ = !VALA_IS_INTERFACE (_tmp11_);
                  } else {
                        _tmp9_ = FALSE;
                  }
                  if (_tmp9_) {
                        ValaSourceReference* _tmp12_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp12_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp12_, "Virtual methods may not be declared outside of classes and interfaces");
                        result = FALSE;
                        return result;
                  }
                  _tmp13_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  if (VALA_IS_CLASS (_tmp13_)) {
                        ValaSymbol* _tmp14_ = NULL;
                        ValaClass* _tmp15_;
                        ValaClass* cl;
                        gboolean _tmp16_;
                        _tmp14_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                        _tmp15_ = _vala_code_node_ref0 (VALA_CLASS (_tmp14_));
                        cl = _tmp15_;
                        _tmp16_ = vala_class_get_is_compact (cl);
                        if (_tmp16_) {
                              ValaSourceReference* _tmp17_ = NULL;
                              _tmp17_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_error (_tmp17_, "Virtual methods may not be declared in compact classes");
                              result = FALSE;
                              _vala_code_node_unref0 (cl);
                              return result;
                        }
                        _vala_code_node_unref0 (cl);
                  }
            } else {
                  if (self->priv->_overrides) {
                        ValaSymbol* _tmp18_ = NULL;
                        _tmp18_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                        if (!VALA_IS_CLASS (_tmp18_)) {
                              ValaSourceReference* _tmp19_ = NULL;
                              vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                              _tmp19_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_error (_tmp19_, "Methods may not be overridden outside of classes");
                              result = FALSE;
                              return result;
                        }
                  } else {
                        ValaSymbolAccessibility _tmp20_;
                        _tmp20_ = vala_symbol_get_access ((ValaSymbol*) self);
                        if (_tmp20_ == VALA_SYMBOL_ACCESSIBILITY_PROTECTED) {
                              gboolean _tmp21_ = FALSE;
                              ValaSymbol* _tmp22_ = NULL;
                              _tmp22_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                              if (!VALA_IS_CLASS (_tmp22_)) {
                                    ValaSymbol* _tmp23_ = NULL;
                                    _tmp23_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                                    _tmp21_ = !VALA_IS_INTERFACE (_tmp23_);
                              } else {
                                    _tmp21_ = FALSE;
                              }
                              if (_tmp21_) {
                                    ValaSourceReference* _tmp24_ = NULL;
                                    vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                                    _tmp24_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                                    vala_report_error (_tmp24_, "Protected methods may not be declared outside of classes and interface" \
"s");
                                    result = FALSE;
                                    return result;
                              }
                        }
                  }
            }
      }
      if (self->priv->_is_abstract) {
            ValaBlock* _tmp26_ = NULL;
            _tmp26_ = vala_subroutine_get_body ((ValaSubroutine*) self);
            _tmp25_ = _tmp26_ != NULL;
      } else {
            _tmp25_ = FALSE;
      }
      if (_tmp25_) {
            ValaSourceReference* _tmp27_ = NULL;
            _tmp27_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            vala_report_error (_tmp27_, "Abstract methods cannot have bodies");
      } else {
            gboolean _tmp28_ = FALSE;
            gboolean _tmp29_ = FALSE;
            gboolean _tmp30_ = FALSE;
            gboolean _tmp31_ = FALSE;
            if (self->priv->_is_abstract) {
                  _tmp31_ = TRUE;
            } else {
                  _tmp31_ = self->priv->_is_virtual;
            }
            if (_tmp31_) {
                  gboolean _tmp32_;
                  _tmp32_ = vala_symbol_get_external ((ValaSymbol*) self);
                  _tmp30_ = _tmp32_;
            } else {
                  _tmp30_ = FALSE;
            }
            if (_tmp30_) {
                  gboolean _tmp33_;
                  _tmp33_ = vala_symbol_get_external_package ((ValaSymbol*) self);
                  _tmp29_ = !_tmp33_;
            } else {
                  _tmp29_ = FALSE;
            }
            if (_tmp29_) {
                  ValaSymbol* _tmp34_ = NULL;
                  gboolean _tmp35_;
                  _tmp34_ = vala_symbol_get_parent_symbol ((ValaSymbol*) self);
                  _tmp35_ = vala_symbol_get_external (_tmp34_);
                  _tmp28_ = !_tmp35_;
            } else {
                  _tmp28_ = FALSE;
            }
            if (_tmp28_) {
                  ValaSourceReference* _tmp36_ = NULL;
                  _tmp36_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp36_, "Extern methods cannot be abstract or virtual");
            } else {
                  gboolean _tmp37_ = FALSE;
                  gboolean _tmp38_;
                  _tmp38_ = vala_symbol_get_external ((ValaSymbol*) self);
                  if (_tmp38_) {
                        ValaBlock* _tmp39_ = NULL;
                        _tmp39_ = vala_subroutine_get_body ((ValaSubroutine*) self);
                        _tmp37_ = _tmp39_ != NULL;
                  } else {
                        _tmp37_ = FALSE;
                  }
                  if (_tmp37_) {
                        ValaSourceReference* _tmp40_ = NULL;
                        _tmp40_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        vala_report_error (_tmp40_, "Extern methods cannot have bodies");
                  } else {
                        gboolean _tmp41_ = FALSE;
                        gboolean _tmp42_ = FALSE;
                        gboolean _tmp43_ = FALSE;
                        if (!self->priv->_is_abstract) {
                              gboolean _tmp44_;
                              _tmp44_ = vala_symbol_get_external ((ValaSymbol*) self);
                              _tmp43_ = !_tmp44_;
                        } else {
                              _tmp43_ = FALSE;
                        }
                        if (_tmp43_) {
                              ValaSourceFileType _tmp45_;
                              _tmp45_ = vala_symbol_get_source_type ((ValaSymbol*) self);
                              _tmp42_ = _tmp45_ == VALA_SOURCE_FILE_TYPE_SOURCE;
                        } else {
                              _tmp42_ = FALSE;
                        }
                        if (_tmp42_) {
                              ValaBlock* _tmp46_ = NULL;
                              _tmp46_ = vala_subroutine_get_body ((ValaSubroutine*) self);
                              _tmp41_ = _tmp46_ == NULL;
                        } else {
                              _tmp41_ = FALSE;
                        }
                        if (_tmp41_) {
                              ValaSourceReference* _tmp47_ = NULL;
                              _tmp47_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                              vala_report_error (_tmp47_, "Non-abstract, non-extern methods must have bodies");
                        }
                  }
            }
      }
      if (self->priv->_coroutine) {
            gboolean _tmp50_;
            _tmp50_ = vala_symbol_get_external_package ((ValaSymbol*) self);
            _tmp49_ = !_tmp50_;
      } else {
            _tmp49_ = FALSE;
      }
      if (_tmp49_) {
            gboolean _tmp51_;
            _tmp51_ = vala_code_context_has_package (context, "gio-2.0");
            _tmp48_ = !_tmp51_;
      } else {
            _tmp48_ = FALSE;
      }
      if (_tmp48_) {
            ValaSourceReference* _tmp52_ = NULL;
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            _tmp52_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            vala_report_error (_tmp52_, "gio-2.0 package required for async methods");
            result = FALSE;
            return result;
      }
      _tmp53_ = vala_code_context_get_analyzer (context);
      _tmp54_ = vala_semantic_analyzer_get_current_source_file (_tmp53_);
      _tmp55_ = _vala_source_file_ref0 (_tmp54_);
      old_source_file = _tmp55_;
      _tmp56_ = vala_code_context_get_analyzer (context);
      _tmp57_ = vala_semantic_analyzer_get_current_symbol (_tmp56_);
      _tmp58_ = _vala_code_node_ref0 (_tmp57_);
      old_symbol = _tmp58_;
      _tmp59_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
      if (_tmp59_ != NULL) {
            ValaSemanticAnalyzer* _tmp60_ = NULL;
            ValaSourceReference* _tmp61_ = NULL;
            ValaSourceFile* _tmp62_ = NULL;
            _tmp60_ = vala_code_context_get_analyzer (context);
            _tmp61_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp62_ = vala_source_reference_get_file (_tmp61_);
            vala_semantic_analyzer_set_current_source_file (_tmp60_, _tmp62_);
      }
      _tmp63_ = vala_code_context_get_analyzer (context);
      vala_semantic_analyzer_set_current_symbol (_tmp63_, (ValaSymbol*) self);
      _tmp64_ = vala_method_get_return_type (self);
      vala_code_node_check ((ValaCodeNode*) _tmp64_, context);
      _tmp65_ = vala_code_node_get_attribute ((ValaCodeNode*) self, "ModuleInit");
      init_attr = _tmp65_;
      if (init_attr != NULL) {
            ValaSourceReference* _tmp66_ = NULL;
            ValaSourceFile* _tmp67_ = NULL;
            ValaCodeContext* _tmp68_ = NULL;
            _tmp66_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp67_ = vala_source_reference_get_file (_tmp66_);
            _tmp68_ = vala_source_file_get_context (_tmp67_);
            vala_code_context_set_module_init_method (_tmp68_, self);
      }
      _tmp69_ = vala_method_get_return_type (self);
      if (_tmp69_ != NULL) {
            ValaDataType* _tmp70_ = NULL;
            _tmp70_ = vala_method_get_return_type (self);
            vala_code_node_check ((ValaCodeNode*) _tmp70_, context);
      }
      _tmp73_ = vala_collection_get_size ((ValaCollection*) self->priv->parameters);
      if (_tmp73_ == 1) {
            gpointer _tmp74_ = NULL;
            ValaParameter* _tmp75_;
            gboolean _tmp76_;
            _tmp74_ = vala_list_get (self->priv->parameters, 0);
            _tmp75_ = (ValaParameter*) _tmp74_;
            _tmp76_ = vala_parameter_get_ellipsis (_tmp75_);
            _tmp72_ = _tmp76_;
            _vala_code_node_unref0 (_tmp75_);
      } else {
            _tmp72_ = FALSE;
      }
      if (_tmp72_) {
            ValaBlock* _tmp77_ = NULL;
            _tmp77_ = vala_subroutine_get_body ((ValaSubroutine*) self);
            _tmp71_ = _tmp77_ != NULL;
      } else {
            _tmp71_ = FALSE;
      }
      if (_tmp71_) {
            gpointer _tmp78_ = NULL;
            ValaParameter* _tmp79_;
            ValaSourceReference* _tmp80_ = NULL;
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            _tmp78_ = vala_list_get (self->priv->parameters, 0);
            _tmp79_ = (ValaParameter*) _tmp78_;
            _tmp80_ = vala_code_node_get_source_reference ((ValaCodeNode*) _tmp79_);
            vala_report_error (_tmp80_, "Named parameter required before `...'");
            _vala_code_node_unref0 (_tmp79_);
      }
      {
            ValaList* _tmp81_;
            ValaList* _param_list;
            gint _tmp82_;
            gint _param_size;
            gint _param_index;
            _tmp81_ = _vala_iterable_ref0 (self->priv->parameters);
            _param_list = _tmp81_;
            _tmp82_ = vala_collection_get_size ((ValaCollection*) _param_list);
            _param_size = _tmp82_;
            _param_index = -1;
            while (TRUE) {
                  gpointer _tmp83_ = NULL;
                  ValaParameter* param;
                  gboolean _tmp84_ = FALSE;
                  _param_index = _param_index + 1;
                  if (!(_param_index < _param_size)) {
                        break;
                  }
                  _tmp83_ = vala_list_get (_param_list, _param_index);
                  param = (ValaParameter*) _tmp83_;
                  vala_code_node_check ((ValaCodeNode*) param, context);
                  if (self->priv->_coroutine) {
                        ValaParameterDirection _tmp85_;
                        _tmp85_ = vala_parameter_get_direction (param);
                        _tmp84_ = _tmp85_ == VALA_PARAMETER_DIRECTION_REF;
                  } else {
                        _tmp84_ = FALSE;
                  }
                  if (_tmp84_) {
                        ValaSourceReference* _tmp86_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp86_ = vala_code_node_get_source_reference ((ValaCodeNode*) param);
                        vala_report_error (_tmp86_, "Reference parameters are not supported for async methods");
                  }
                  _vala_code_node_unref0 (param);
            }
            _vala_iterable_unref0 (_param_list);
      }
      {
            ValaList* _tmp87_ = NULL;
            ValaList* _error_type_list;
            gint _tmp88_;
            gint _error_type_size;
            gint _error_type_index;
            _tmp87_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
            _error_type_list = _tmp87_;
            _tmp88_ = vala_collection_get_size ((ValaCollection*) _error_type_list);
            _error_type_size = _tmp88_;
            _error_type_index = -1;
            while (TRUE) {
                  gpointer _tmp89_ = NULL;
                  ValaDataType* error_type;
                  ValaSemanticAnalyzer* _tmp90_ = NULL;
                  gboolean _tmp91_;
                  _error_type_index = _error_type_index + 1;
                  if (!(_error_type_index < _error_type_size)) {
                        break;
                  }
                  _tmp89_ = vala_list_get (_error_type_list, _error_type_index);
                  error_type = (ValaDataType*) _tmp89_;
                  vala_code_node_check ((ValaCodeNode*) error_type, context);
                  _tmp90_ = vala_code_context_get_analyzer (context);
                  _tmp91_ = vala_semantic_analyzer_is_type_accessible (_tmp90_, (ValaSymbol*) self, error_type);
                  if (!_tmp91_) {
                        ValaSourceReference* _tmp92_ = NULL;
                        gchar* _tmp93_ = NULL;
                        gchar* _tmp94_;
                        gchar* _tmp95_ = NULL;
                        gchar* _tmp96_;
                        gchar* _tmp97_ = NULL;
                        gchar* _tmp98_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp92_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp93_ = vala_code_node_to_string ((ValaCodeNode*) error_type);
                        _tmp94_ = _tmp93_;
                        _tmp95_ = vala_symbol_get_full_name ((ValaSymbol*) self);
                        _tmp96_ = _tmp95_;
                        _tmp97_ = g_strdup_printf ("error type `%s` is less accessible than method `%s`", _tmp94_, _tmp96_);
                        _tmp98_ = _tmp97_;
                        vala_report_error (_tmp92_, _tmp98_);
                        _g_free0 (_tmp98_);
                        _g_free0 (_tmp96_);
                        _g_free0 (_tmp94_);
                        result = FALSE;
                        _vala_code_node_unref0 (error_type);
                        _vala_iterable_unref0 (_error_type_list);
                        _vala_code_node_unref0 (init_attr);
                        _vala_code_node_unref0 (old_symbol);
                        _vala_source_file_unref0 (old_source_file);
                        return result;
                  }
                  _vala_code_node_unref0 (error_type);
            }
            _vala_iterable_unref0 (_error_type_list);
      }
      _tmp99_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
      if (_tmp99_ != NULL) {
            ValaLocalVariable* _tmp100_ = NULL;
            _tmp100_ = vala_subroutine_get_result_var ((ValaSubroutine*) self);
            vala_code_node_check ((ValaCodeNode*) _tmp100_, context);
      }
      if (self->priv->preconditions != NULL) {
            {
                  ValaList* _tmp101_;
                  ValaList* _precondition_list;
                  gint _tmp102_;
                  gint _precondition_size;
                  gint _precondition_index;
                  _tmp101_ = _vala_iterable_ref0 (self->priv->preconditions);
                  _precondition_list = _tmp101_;
                  _tmp102_ = vala_collection_get_size ((ValaCollection*) _precondition_list);
                  _precondition_size = _tmp102_;
                  _precondition_index = -1;
                  while (TRUE) {
                        gpointer _tmp103_ = NULL;
                        ValaExpression* precondition;
                        _precondition_index = _precondition_index + 1;
                        if (!(_precondition_index < _precondition_size)) {
                              break;
                        }
                        _tmp103_ = vala_list_get (_precondition_list, _precondition_index);
                        precondition = (ValaExpression*) _tmp103_;
                        vala_code_node_check ((ValaCodeNode*) precondition, context);
                        _vala_code_node_unref0 (precondition);
                  }
                  _vala_iterable_unref0 (_precondition_list);
            }
      }
      if (self->priv->postconditions != NULL) {
            {
                  ValaList* _tmp104_;
                  ValaList* _postcondition_list;
                  gint _tmp105_;
                  gint _postcondition_size;
                  gint _postcondition_index;
                  _tmp104_ = _vala_iterable_ref0 (self->priv->postconditions);
                  _postcondition_list = _tmp104_;
                  _tmp105_ = vala_collection_get_size ((ValaCollection*) _postcondition_list);
                  _postcondition_size = _tmp105_;
                  _postcondition_index = -1;
                  while (TRUE) {
                        gpointer _tmp106_ = NULL;
                        ValaExpression* postcondition;
                        _postcondition_index = _postcondition_index + 1;
                        if (!(_postcondition_index < _postcondition_size)) {
                              break;
                        }
                        _tmp106_ = vala_list_get (_postcondition_list, _postcondition_index);
                        postcondition = (ValaExpression*) _tmp106_;
                        vala_code_node_check ((ValaCodeNode*) postcondition, context);
                        _vala_code_node_unref0 (postcondition);
                  }
                  _vala_iterable_unref0 (_postcondition_list);
            }
      }
      _tmp107_ = vala_subroutine_get_body ((ValaSubroutine*) self);
      if (_tmp107_ != NULL) {
            ValaBlock* _tmp108_ = NULL;
            _tmp108_ = vala_subroutine_get_body ((ValaSubroutine*) self);
            vala_code_node_check ((ValaCodeNode*) _tmp108_, context);
      }
      _tmp109_ = vala_code_context_get_analyzer (context);
      vala_semantic_analyzer_set_current_source_file (_tmp109_, old_source_file);
      _tmp110_ = vala_code_context_get_analyzer (context);
      vala_semantic_analyzer_set_current_symbol (_tmp110_, old_symbol);
      _tmp111_ = vala_code_context_get_analyzer (context);
      _tmp112_ = vala_semantic_analyzer_get_current_struct (_tmp111_);
      if (_tmp112_ != NULL) {
            gboolean _tmp113_ = FALSE;
            gboolean _tmp114_ = FALSE;
            if (self->priv->_is_abstract) {
                  _tmp114_ = TRUE;
            } else {
                  _tmp114_ = self->priv->_is_virtual;
            }
            if (_tmp114_) {
                  _tmp113_ = TRUE;
            } else {
                  _tmp113_ = self->priv->_overrides;
            }
            if (_tmp113_) {
                  ValaSourceReference* _tmp115_ = NULL;
                  gchar* _tmp116_ = NULL;
                  gchar* _tmp117_;
                  gchar* _tmp118_ = NULL;
                  gchar* _tmp119_;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp115_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp116_ = vala_symbol_get_full_name ((ValaSymbol*) self);
                  _tmp117_ = _tmp116_;
                  _tmp118_ = g_strdup_printf ("A struct member `%s' cannot be marked as override, virtual, or abstrac" \
"t", _tmp117_);
                  _tmp119_ = _tmp118_;
                  vala_report_error (_tmp115_, _tmp119_);
                  _g_free0 (_tmp119_);
                  _g_free0 (_tmp117_);
                  result = FALSE;
                  _vala_code_node_unref0 (init_attr);
                  _vala_code_node_unref0 (old_symbol);
                  _vala_source_file_unref0 (old_source_file);
                  return result;
            }
      } else {
            gboolean _tmp120_ = FALSE;
            if (self->priv->_overrides) {
                  ValaMethod* _tmp121_ = NULL;
                  _tmp121_ = vala_method_get_base_method (self);
                  _tmp120_ = _tmp121_ == NULL;
            } else {
                  _tmp120_ = FALSE;
            }
            if (_tmp120_) {
                  ValaSourceReference* _tmp122_ = NULL;
                  gchar* _tmp123_ = NULL;
                  gchar* _tmp124_;
                  gchar* _tmp125_ = NULL;
                  gchar* _tmp126_;
                  _tmp122_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp123_ = vala_symbol_get_full_name ((ValaSymbol*) self);
                  _tmp124_ = _tmp123_;
                  _tmp125_ = g_strdup_printf ("%s: no suitable method found to override", _tmp124_);
                  _tmp126_ = _tmp125_;
                  vala_report_error (_tmp122_, _tmp126_);
                  _g_free0 (_tmp126_);
                  _g_free0 (_tmp124_);
            } else {
                  gboolean _tmp127_ = FALSE;
                  gboolean _tmp128_ = FALSE;
                  gboolean _tmp129_ = FALSE;
                  if (self->priv->_is_abstract) {
                        _tmp129_ = TRUE;
                  } else {
                        _tmp129_ = self->priv->_is_virtual;
                  }
                  if (_tmp129_) {
                        _tmp128_ = TRUE;
                  } else {
                        _tmp128_ = self->priv->_overrides;
                  }
                  if (_tmp128_) {
                        ValaSymbolAccessibility _tmp130_;
                        _tmp130_ = vala_symbol_get_access ((ValaSymbol*) self);
                        _tmp127_ = _tmp130_ == VALA_SYMBOL_ACCESSIBILITY_PRIVATE;
                  } else {
                        _tmp127_ = FALSE;
                  }
                  if (_tmp127_) {
                        ValaSourceReference* _tmp131_ = NULL;
                        gchar* _tmp132_ = NULL;
                        gchar* _tmp133_;
                        gchar* _tmp134_ = NULL;
                        gchar* _tmp135_;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp131_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                        _tmp132_ = vala_symbol_get_full_name ((ValaSymbol*) self);
                        _tmp133_ = _tmp132_;
                        _tmp134_ = g_strdup_printf ("Private member `%s' cannot be marked as override, virtual, or abstract", _tmp133_);
                        _tmp135_ = _tmp134_;
                        vala_report_error (_tmp131_, _tmp135_);
                        _g_free0 (_tmp135_);
                        _g_free0 (_tmp133_);
                        result = FALSE;
                        _vala_code_node_unref0 (init_attr);
                        _vala_code_node_unref0 (old_symbol);
                        _vala_source_file_unref0 (old_source_file);
                        return result;
                  }
            }
      }
      _tmp139_ = vala_symbol_get_external_package ((ValaSymbol*) self);
      if (!_tmp139_) {
            _tmp138_ = !self->priv->_overrides;
      } else {
            _tmp138_ = FALSE;
      }
      if (_tmp138_) {
            gboolean _tmp140_;
            _tmp140_ = vala_symbol_get_hides ((ValaSymbol*) self);
            _tmp137_ = !_tmp140_;
      } else {
            _tmp137_ = FALSE;
      }
      if (_tmp137_) {
            ValaSymbol* _tmp141_ = NULL;
            ValaSymbol* _tmp142_;
            _tmp141_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
            _tmp142_ = _tmp141_;
            _tmp136_ = _tmp142_ != NULL;
            _vala_code_node_unref0 (_tmp142_);
      } else {
            _tmp136_ = FALSE;
      }
      if (_tmp136_) {
            ValaSourceReference* _tmp143_ = NULL;
            gchar* _tmp144_ = NULL;
            gchar* _tmp145_;
            ValaSymbol* _tmp146_ = NULL;
            ValaSymbol* _tmp147_;
            gchar* _tmp148_ = NULL;
            gchar* _tmp149_;
            gchar* _tmp150_ = NULL;
            gchar* _tmp151_;
            _tmp143_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp144_ = vala_symbol_get_full_name ((ValaSymbol*) self);
            _tmp145_ = _tmp144_;
            _tmp146_ = vala_symbol_get_hidden_member ((ValaSymbol*) self);
            _tmp147_ = _tmp146_;
            _tmp148_ = vala_symbol_get_full_name (_tmp147_);
            _tmp149_ = _tmp148_;
            _tmp150_ = g_strdup_printf ("%s hides inherited method `%s'. Use the `new' keyword if hiding was in" \
"tentional", _tmp145_, _tmp149_);
            _tmp151_ = _tmp150_;
            vala_report_warning (_tmp143_, _tmp151_);
            _g_free0 (_tmp151_);
            _g_free0 (_tmp149_);
            _vala_code_node_unref0 (_tmp147_);
            _g_free0 (_tmp145_);
      }
      _tmp152_ = vala_code_context_get_analyzer (context);
      _tmp153_ = vala_method_get_return_type (self);
      _tmp154_ = vala_semantic_analyzer_is_type_accessible (_tmp152_, (ValaSymbol*) self, _tmp153_);
      if (!_tmp154_) {
            ValaSourceReference* _tmp155_ = NULL;
            ValaDataType* _tmp156_ = NULL;
            gchar* _tmp157_ = NULL;
            gchar* _tmp158_;
            gchar* _tmp159_ = NULL;
            gchar* _tmp160_;
            gchar* _tmp161_ = NULL;
            gchar* _tmp162_;
            vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
            _tmp155_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp156_ = vala_method_get_return_type (self);
            _tmp157_ = vala_code_node_to_string ((ValaCodeNode*) _tmp156_);
            _tmp158_ = _tmp157_;
            _tmp159_ = vala_symbol_get_full_name ((ValaSymbol*) self);
            _tmp160_ = _tmp159_;
            _tmp161_ = g_strdup_printf ("return type `%s` is less accessible than method `%s`", _tmp158_, _tmp160_);
            _tmp162_ = _tmp161_;
            vala_report_error (_tmp155_, _tmp162_);
            _g_free0 (_tmp162_);
            _g_free0 (_tmp160_);
            _g_free0 (_tmp158_);
            result = FALSE;
            _vala_code_node_unref0 (init_attr);
            _vala_code_node_unref0 (old_symbol);
            _vala_source_file_unref0 (old_source_file);
            return result;
      }
      {
            ValaList* _tmp163_ = NULL;
            ValaList* _precondition_list;
            gint _tmp164_;
            gint _precondition_size;
            gint _precondition_index;
            _tmp163_ = vala_method_get_preconditions (self);
            _precondition_list = _tmp163_;
            _tmp164_ = vala_collection_get_size ((ValaCollection*) _precondition_list);
            _precondition_size = _tmp164_;
            _precondition_index = -1;
            while (TRUE) {
                  gpointer _tmp165_ = NULL;
                  ValaExpression* precondition;
                  gboolean _tmp166_;
                  ValaDataType* _tmp167_ = NULL;
                  ValaSemanticAnalyzer* _tmp168_ = NULL;
                  gboolean _tmp169_;
                  _precondition_index = _precondition_index + 1;
                  if (!(_precondition_index < _precondition_size)) {
                        break;
                  }
                  _tmp165_ = vala_list_get (_precondition_list, _precondition_index);
                  precondition = (ValaExpression*) _tmp165_;
                  _tmp166_ = vala_code_node_get_error ((ValaCodeNode*) precondition);
                  if (_tmp166_) {
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        result = FALSE;
                        _vala_code_node_unref0 (precondition);
                        _vala_iterable_unref0 (_precondition_list);
                        _vala_code_node_unref0 (init_attr);
                        _vala_code_node_unref0 (old_symbol);
                        _vala_source_file_unref0 (old_source_file);
                        return result;
                  }
                  _tmp167_ = vala_expression_get_value_type (precondition);
                  _tmp168_ = vala_code_context_get_analyzer (context);
                  _tmp169_ = vala_data_type_compatible (_tmp167_, _tmp168_->bool_type);
                  if (!_tmp169_) {
                        ValaSourceReference* _tmp170_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp170_ = vala_code_node_get_source_reference ((ValaCodeNode*) precondition);
                        vala_report_error (_tmp170_, "Precondition must be boolean");
                        result = FALSE;
                        _vala_code_node_unref0 (precondition);
                        _vala_iterable_unref0 (_precondition_list);
                        _vala_code_node_unref0 (init_attr);
                        _vala_code_node_unref0 (old_symbol);
                        _vala_source_file_unref0 (old_source_file);
                        return result;
                  }
                  _vala_code_node_unref0 (precondition);
            }
            _vala_iterable_unref0 (_precondition_list);
      }
      {
            ValaList* _tmp171_ = NULL;
            ValaList* _postcondition_list;
            gint _tmp172_;
            gint _postcondition_size;
            gint _postcondition_index;
            _tmp171_ = vala_method_get_postconditions (self);
            _postcondition_list = _tmp171_;
            _tmp172_ = vala_collection_get_size ((ValaCollection*) _postcondition_list);
            _postcondition_size = _tmp172_;
            _postcondition_index = -1;
            while (TRUE) {
                  gpointer _tmp173_ = NULL;
                  ValaExpression* postcondition;
                  gboolean _tmp174_;
                  ValaDataType* _tmp175_ = NULL;
                  ValaSemanticAnalyzer* _tmp176_ = NULL;
                  gboolean _tmp177_;
                  _postcondition_index = _postcondition_index + 1;
                  if (!(_postcondition_index < _postcondition_size)) {
                        break;
                  }
                  _tmp173_ = vala_list_get (_postcondition_list, _postcondition_index);
                  postcondition = (ValaExpression*) _tmp173_;
                  _tmp174_ = vala_code_node_get_error ((ValaCodeNode*) postcondition);
                  if (_tmp174_) {
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        result = FALSE;
                        _vala_code_node_unref0 (postcondition);
                        _vala_iterable_unref0 (_postcondition_list);
                        _vala_code_node_unref0 (init_attr);
                        _vala_code_node_unref0 (old_symbol);
                        _vala_source_file_unref0 (old_source_file);
                        return result;
                  }
                  _tmp175_ = vala_expression_get_value_type (postcondition);
                  _tmp176_ = vala_code_context_get_analyzer (context);
                  _tmp177_ = vala_data_type_compatible (_tmp175_, _tmp176_->bool_type);
                  if (!_tmp177_) {
                        ValaSourceReference* _tmp178_ = NULL;
                        vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                        _tmp178_ = vala_code_node_get_source_reference ((ValaCodeNode*) postcondition);
                        vala_report_error (_tmp178_, "Postcondition must be boolean");
                        result = FALSE;
                        _vala_code_node_unref0 (postcondition);
                        _vala_iterable_unref0 (_postcondition_list);
                        _vala_code_node_unref0 (init_attr);
                        _vala_code_node_unref0 (old_symbol);
                        _vala_source_file_unref0 (old_source_file);
                        return result;
                  }
                  _vala_code_node_unref0 (postcondition);
            }
            _vala_iterable_unref0 (_postcondition_list);
      }
      _tmp179_ = vala_subroutine_get_body ((ValaSubroutine*) self);
      if (_tmp179_ != NULL) {
            {
                  ValaBlock* _tmp180_ = NULL;
                  ValaList* _tmp181_ = NULL;
                  ValaList* _body_error_type_list;
                  gint _tmp182_;
                  gint _body_error_type_size;
                  gint _body_error_type_index;
                  _tmp180_ = vala_subroutine_get_body ((ValaSubroutine*) self);
                  _tmp181_ = vala_code_node_get_error_types ((ValaCodeNode*) _tmp180_);
                  _body_error_type_list = _tmp181_;
                  _tmp182_ = vala_collection_get_size ((ValaCollection*) _body_error_type_list);
                  _body_error_type_size = _tmp182_;
                  _body_error_type_index = -1;
                  while (TRUE) {
                        gpointer _tmp183_ = NULL;
                        ValaDataType* body_error_type;
                        gboolean can_propagate_error;
                        gboolean _tmp188_ = FALSE;
                        gboolean is_dynamic_error;
                        gboolean _tmp190_ = FALSE;
                        _body_error_type_index = _body_error_type_index + 1;
                        if (!(_body_error_type_index < _body_error_type_size)) {
                              break;
                        }
                        _tmp183_ = vala_list_get (_body_error_type_list, _body_error_type_index);
                        body_error_type = (ValaDataType*) _tmp183_;
                        can_propagate_error = FALSE;
                        {
                              ValaList* _tmp184_ = NULL;
                              ValaList* _method_error_type_list;
                              gint _tmp185_;
                              gint _method_error_type_size;
                              gint _method_error_type_index;
                              _tmp184_ = vala_code_node_get_error_types ((ValaCodeNode*) self);
                              _method_error_type_list = _tmp184_;
                              _tmp185_ = vala_collection_get_size ((ValaCollection*) _method_error_type_list);
                              _method_error_type_size = _tmp185_;
                              _method_error_type_index = -1;
                              while (TRUE) {
                                    gpointer _tmp186_ = NULL;
                                    ValaDataType* method_error_type;
                                    gboolean _tmp187_;
                                    _method_error_type_index = _method_error_type_index + 1;
                                    if (!(_method_error_type_index < _method_error_type_size)) {
                                          break;
                                    }
                                    _tmp186_ = vala_list_get (_method_error_type_list, _method_error_type_index);
                                    method_error_type = (ValaDataType*) _tmp186_;
                                    _tmp187_ = vala_data_type_compatible (body_error_type, method_error_type);
                                    if (_tmp187_) {
                                          can_propagate_error = TRUE;
                                    }
                                    _vala_code_node_unref0 (method_error_type);
                              }
                              _vala_iterable_unref0 (_method_error_type_list);
                        }
                        if (VALA_IS_ERROR_TYPE (body_error_type)) {
                              gboolean _tmp189_;
                              _tmp189_ = vala_error_type_get_dynamic_error (VALA_ERROR_TYPE (body_error_type));
                              _tmp188_ = _tmp189_;
                        } else {
                              _tmp188_ = FALSE;
                        }
                        is_dynamic_error = _tmp188_;
                        if (!can_propagate_error) {
                              _tmp190_ = !is_dynamic_error;
                        } else {
                              _tmp190_ = FALSE;
                        }
                        if (_tmp190_) {
                              ValaSourceReference* _tmp191_ = NULL;
                              gchar* _tmp192_ = NULL;
                              gchar* _tmp193_;
                              gchar* _tmp194_ = NULL;
                              gchar* _tmp195_;
                              _tmp191_ = vala_code_node_get_source_reference ((ValaCodeNode*) body_error_type);
                              _tmp192_ = vala_code_node_to_string ((ValaCodeNode*) body_error_type);
                              _tmp193_ = _tmp192_;
                              _tmp194_ = g_strdup_printf ("unhandled error `%s'", _tmp193_);
                              _tmp195_ = _tmp194_;
                              vala_report_warning (_tmp191_, _tmp195_);
                              _g_free0 (_tmp195_);
                              _g_free0 (_tmp193_);
                        }
                        _vala_code_node_unref0 (body_error_type);
                  }
                  _vala_iterable_unref0 (_body_error_type_list);
            }
      }
      _tmp196_ = vala_method_is_possible_entry_point (self, context);
      if (_tmp196_) {
            ValaMethod* _tmp197_ = NULL;
            gboolean _tmp204_ = FALSE;
            gboolean _tmp205_;
            _tmp197_ = vala_code_context_get_entry_point (context);
            if (_tmp197_ != NULL) {
                  ValaSourceReference* _tmp198_ = NULL;
                  ValaMethod* _tmp199_ = NULL;
                  gchar* _tmp200_ = NULL;
                  gchar* _tmp201_;
                  gchar* _tmp202_ = NULL;
                  gchar* _tmp203_;
                  vala_code_node_set_error ((ValaCodeNode*) self, TRUE);
                  _tmp198_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  _tmp199_ = vala_code_context_get_entry_point (context);
                  _tmp200_ = vala_symbol_get_full_name ((ValaSymbol*) _tmp199_);
                  _tmp201_ = _tmp200_;
                  _tmp202_ = g_strdup_printf ("program already has an entry point `%s'", _tmp201_);
                  _tmp203_ = _tmp202_;
                  vala_report_error (_tmp198_, _tmp203_);
                  _g_free0 (_tmp203_);
                  _g_free0 (_tmp201_);
                  result = FALSE;
                  _vala_code_node_unref0 (init_attr);
                  _vala_code_node_unref0 (old_symbol);
                  _vala_source_file_unref0 (old_source_file);
                  return result;
            }
            vala_method_set_entry_point (self, TRUE);
            vala_code_context_set_entry_point (context, self);
            _tmp205_ = vala_code_node_get_tree_can_fail ((ValaCodeNode*) self);
            if (_tmp205_) {
                  ValaProfile _tmp206_;
                  _tmp206_ = vala_code_context_get_profile (context);
                  _tmp204_ = _tmp206_ != VALA_PROFILE_DOVA;
            } else {
                  _tmp204_ = FALSE;
            }
            if (_tmp204_) {
                  ValaSourceReference* _tmp207_ = NULL;
                  _tmp207_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
                  vala_report_error (_tmp207_, "\"main\" method cannot throw errors");
            }
      }
      _tmp208_ = vala_code_node_get_error ((ValaCodeNode*) self);
      result = !_tmp208_;
      _vala_code_node_unref0 (init_attr);
      _vala_code_node_unref0 (old_symbol);
      _vala_source_file_unref0 (old_source_file);
      return result;
}


static gboolean vala_method_is_possible_entry_point (ValaMethod* self, ValaCodeContext* context) {
      gboolean result = FALSE;
      gboolean _tmp0_;
      const gchar* _tmp1_ = NULL;
      ValaDataType* _tmp9_ = NULL;
      ValaList* _tmp14_ = NULL;
      ValaList* params;
      gint _tmp15_;
      gint _tmp16_;
      ValaIterator* _tmp17_ = NULL;
      ValaIterator* params_it;
      gpointer _tmp18_ = NULL;
      ValaParameter* param;
      ValaParameterDirection _tmp19_;
      ValaDataType* _tmp20_ = NULL;
      ValaDataType* _tmp21_ = NULL;
      ValaArrayType* _tmp22_;
      ValaArrayType* array_type;
      ValaDataType* _tmp23_ = NULL;
      ValaTypeSymbol* _tmp24_ = NULL;
      ValaSemanticAnalyzer* _tmp25_ = NULL;
      ValaTypeSymbol* _tmp26_ = NULL;
      g_return_val_if_fail (self != NULL, FALSE);
      g_return_val_if_fail (context != NULL, FALSE);
      _tmp0_ = vala_symbol_get_external_package ((ValaSymbol*) self);
      if (_tmp0_) {
            result = FALSE;
            return result;
      }
      _tmp1_ = vala_code_context_get_entry_point_name (context);
      if (_tmp1_ == NULL) {
            gboolean _tmp2_ = FALSE;
            const gchar* _tmp3_ = NULL;
            _tmp3_ = vala_symbol_get_name ((ValaSymbol*) self);
            if (_tmp3_ == NULL) {
                  _tmp2_ = TRUE;
            } else {
                  const gchar* _tmp4_ = NULL;
                  _tmp4_ = vala_symbol_get_name ((ValaSymbol*) self);
                  _tmp2_ = g_strcmp0 (_tmp4_, "main") != 0;
            }
            if (_tmp2_) {
                  result = FALSE;
                  return result;
            }
      } else {
            gchar* _tmp5_ = NULL;
            gchar* _tmp6_;
            const gchar* _tmp7_ = NULL;
            gboolean _tmp8_;
            _tmp5_ = vala_symbol_get_full_name ((ValaSymbol*) self);
            _tmp6_ = _tmp5_;
            _tmp7_ = vala_code_context_get_entry_point_name (context);
            _tmp8_ = g_strcmp0 (_tmp6_, _tmp7_) != 0;
            _g_free0 (_tmp6_);
            if (_tmp8_) {
                  result = FALSE;
                  return result;
            }
      }
      if (self->priv->_binding == VALA_MEMBER_BINDING_INSTANCE) {
            result = FALSE;
            return result;
      }
      _tmp9_ = vala_method_get_return_type (self);
      if (VALA_IS_VOID_TYPE (_tmp9_)) {
      } else {
            ValaDataType* _tmp10_ = NULL;
            ValaTypeSymbol* _tmp11_ = NULL;
            ValaSemanticAnalyzer* _tmp12_ = NULL;
            ValaTypeSymbol* _tmp13_ = NULL;
            _tmp10_ = vala_method_get_return_type (self);
            _tmp11_ = vala_data_type_get_data_type (_tmp10_);
            _tmp12_ = vala_code_context_get_analyzer (context);
            _tmp13_ = vala_data_type_get_data_type (_tmp12_->int_type);
            if (_tmp11_ == _tmp13_) {
            } else {
                  result = FALSE;
                  return result;
            }
      }
      _tmp14_ = vala_method_get_parameters (self);
      params = _tmp14_;
      _tmp15_ = vala_collection_get_size ((ValaCollection*) params);
      if (_tmp15_ == 0) {
            result = TRUE;
            _vala_iterable_unref0 (params);
            return result;
      }
      _tmp16_ = vala_collection_get_size ((ValaCollection*) params);
      if (_tmp16_ > 1) {
            result = FALSE;
            _vala_iterable_unref0 (params);
            return result;
      }
      _tmp17_ = vala_iterable_iterator ((ValaIterable*) params);
      params_it = _tmp17_;
      vala_iterator_next (params_it);
      _tmp18_ = vala_iterator_get (params_it);
      param = (ValaParameter*) _tmp18_;
      _tmp19_ = vala_parameter_get_direction (param);
      if (_tmp19_ == VALA_PARAMETER_DIRECTION_OUT) {
            result = FALSE;
            _vala_code_node_unref0 (param);
            _vala_iterator_unref0 (params_it);
            _vala_iterable_unref0 (params);
            return result;
      }
      _tmp20_ = vala_variable_get_variable_type ((ValaVariable*) param);
      if (!VALA_IS_ARRAY_TYPE (_tmp20_)) {
            result = FALSE;
            _vala_code_node_unref0 (param);
            _vala_iterator_unref0 (params_it);
            _vala_iterable_unref0 (params);
            return result;
      }
      _tmp21_ = vala_variable_get_variable_type ((ValaVariable*) param);
      _tmp22_ = _vala_code_node_ref0 (VALA_ARRAY_TYPE (_tmp21_));
      array_type = _tmp22_;
      _tmp23_ = vala_array_type_get_element_type (array_type);
      _tmp24_ = vala_data_type_get_data_type (_tmp23_);
      _tmp25_ = vala_code_context_get_analyzer (context);
      _tmp26_ = vala_data_type_get_data_type (_tmp25_->string_type);
      if (_tmp24_ != _tmp26_) {
            result = FALSE;
            _vala_code_node_unref0 (array_type);
            _vala_code_node_unref0 (param);
            _vala_iterator_unref0 (params_it);
            _vala_iterable_unref0 (params);
            return result;
      }
      result = TRUE;
      _vala_code_node_unref0 (array_type);
      _vala_code_node_unref0 (param);
      _vala_iterator_unref0 (params_it);
      _vala_iterable_unref0 (params);
      return result;
}


gint vala_method_get_required_arguments (ValaMethod* self) {
      gint result = 0;
      gint n;
      g_return_val_if_fail (self != NULL, 0);
      n = 0;
      {
            ValaList* _tmp0_;
            ValaList* _param_list;
            gint _tmp1_;
            gint _param_size;
            gint _param_index;
            _tmp0_ = _vala_iterable_ref0 (self->priv->parameters);
            _param_list = _tmp0_;
            _tmp1_ = vala_collection_get_size ((ValaCollection*) _param_list);
            _param_size = _tmp1_;
            _param_index = -1;
            while (TRUE) {
                  gpointer _tmp2_ = NULL;
                  ValaParameter* param;
                  gboolean _tmp3_ = FALSE;
                  ValaExpression* _tmp4_ = NULL;
                  _param_index = _param_index + 1;
                  if (!(_param_index < _param_size)) {
                        break;
                  }
                  _tmp2_ = vala_list_get (_param_list, _param_index);
                  param = (ValaParameter*) _tmp2_;
                  _tmp4_ = vala_variable_get_initializer ((ValaVariable*) param);
                  if (_tmp4_ != NULL) {
                        _tmp3_ = TRUE;
                  } else {
                        gboolean _tmp5_;
                        _tmp5_ = vala_parameter_get_ellipsis (param);
                        _tmp3_ = _tmp5_;
                  }
                  if (_tmp3_) {
                        _vala_code_node_unref0 (param);
                        break;
                  }
                  n++;
                  _vala_code_node_unref0 (param);
            }
            _vala_iterable_unref0 (_param_list);
      }
      result = n;
      return result;
}


ValaMethod* vala_method_get_callback_method (ValaMethod* self) {
      ValaMethod* result = NULL;
      ValaMethod* _tmp15_;
      g_return_val_if_fail (self != NULL, NULL);
      g_assert (self->priv->_coroutine);
      if (self->priv->callback_method == NULL) {
            ValaCodeContext* _tmp0_ = NULL;
            ValaCodeContext* _tmp1_;
            ValaNamespace* _tmp2_ = NULL;
            ValaScope* _tmp3_ = NULL;
            ValaSymbol* _tmp4_ = NULL;
            ValaStruct* _tmp5_;
            ValaBooleanType* _tmp6_ = NULL;
            ValaBooleanType* _tmp7_;
            ValaBooleanType* bool_type;
            ValaSourceReference* _tmp8_ = NULL;
            ValaMethod* _tmp9_ = NULL;
            ValaScope* _tmp10_ = NULL;
            gchar* _tmp11_ = NULL;
            gchar* _tmp12_;
            gchar* _tmp13_;
            gchar* _tmp14_;
            _tmp0_ = vala_code_context_get ();
            _tmp1_ = _tmp0_;
            _tmp2_ = vala_code_context_get_root (_tmp1_);
            _tmp3_ = vala_symbol_get_scope ((ValaSymbol*) _tmp2_);
            _tmp4_ = vala_scope_lookup (_tmp3_, "bool");
            _tmp5_ = VALA_STRUCT (_tmp4_);
            _tmp6_ = vala_boolean_type_new (_tmp5_);
            _tmp7_ = _tmp6_;
            _vala_code_node_unref0 (_tmp5_);
            _vala_code_context_unref0 (_tmp1_);
            bool_type = _tmp7_;
            vala_data_type_set_value_owned ((ValaDataType*) bool_type, TRUE);
            _tmp8_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
            _tmp9_ = vala_method_new ("callback", (ValaDataType*) bool_type, _tmp8_, NULL);
            _vala_code_node_unref0 (self->priv->callback_method);
            self->priv->callback_method = _tmp9_;
            vala_symbol_set_access ((ValaSymbol*) self->priv->callback_method, VALA_SYMBOL_ACCESSIBILITY_PUBLIC);
            vala_symbol_set_external ((ValaSymbol*) self->priv->callback_method, TRUE);
            vala_method_set_binding (self->priv->callback_method, VALA_MEMBER_BINDING_INSTANCE);
            _tmp10_ = vala_symbol_get_scope ((ValaSymbol*) self);
            vala_symbol_set_owner ((ValaSymbol*) self->priv->callback_method, _tmp10_);
            vala_method_set_is_async_callback (self->priv->callback_method, TRUE);
            _tmp11_ = vala_method_get_real_cname (self);
            _tmp12_ = _tmp11_;
            _tmp13_ = g_strconcat (_tmp12_, "_co", NULL);
            _tmp14_ = _tmp13_;
            vala_method_set_cname (self->priv->callback_method, _tmp14_);
            _g_free0 (_tmp14_);
            _g_free0 (_tmp12_);
            _vala_code_node_unref0 (bool_type);
      }
      _tmp15_ = _vala_code_node_ref0 (self->priv->callback_method);
      result = _tmp15_;
      return result;
}


ValaList* vala_method_get_async_begin_parameters (ValaMethod* self) {
      ValaList* result = NULL;
      ValaCodeContext* _tmp0_ = NULL;
      ValaCodeContext* _tmp1_;
      ValaNamespace* _tmp2_ = NULL;
      ValaScope* _tmp3_ = NULL;
      ValaSymbol* _tmp4_ = NULL;
      ValaSymbol* _tmp5_;
      ValaSymbol* glib_ns;
      ValaArrayList* _tmp6_ = NULL;
      ValaArrayList* params;
      ValaScope* _tmp11_ = NULL;
      ValaSymbol* _tmp12_ = NULL;
      ValaDelegate* _tmp13_;
      ValaDelegateType* _tmp14_ = NULL;
      ValaDelegateType* _tmp15_;
      ValaDelegateType* callback_type;
      ValaParameter* _tmp16_ = NULL;
      ValaParameter* callback_param;
      ValaSourceReference* _tmp17_ = NULL;
      ValaNullLiteral* _tmp18_ = NULL;
      ValaNullLiteral* _tmp19_;
      ValaExpression* _tmp20_ = NULL;
      ValaDataType* _tmp21_ = NULL;
      ValaDataType* _tmp22_;
      g_return_val_if_fail (self != NULL, NULL);
      g_assert (self->priv->_coroutine);
      _tmp0_ = vala_code_context_get ();
      _tmp1_ = _tmp0_;
      _tmp2_ = vala_code_context_get_root (_tmp1_);
      _tmp3_ = vala_symbol_get_scope ((ValaSymbol*) _tmp2_);
      _tmp4_ = vala_scope_lookup (_tmp3_, "GLib");
      _tmp5_ = _tmp4_;
      _vala_code_context_unref0 (_tmp1_);
      glib_ns = _tmp5_;
      _tmp6_ = vala_array_list_new (VALA_TYPE_PARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
      params = _tmp6_;
      {
            ValaList* _tmp7_;
            ValaList* _param_list;
            gint _tmp8_;
            gint _param_size;
            gint _param_index;
            _tmp7_ = _vala_iterable_ref0 (self->priv->parameters);
            _param_list = _tmp7_;
            _tmp8_ = vala_collection_get_size ((ValaCollection*) _param_list);
            _param_size = _tmp8_;
            _param_index = -1;
            while (TRUE) {
                  gpointer _tmp9_ = NULL;
                  ValaParameter* param;
                  ValaParameterDirection _tmp10_;
                  _param_index = _param_index + 1;
                  if (!(_param_index < _param_size)) {
                        break;
                  }
                  _tmp9_ = vala_list_get (_param_list, _param_index);
                  param = (ValaParameter*) _tmp9_;
                  _tmp10_ = vala_parameter_get_direction (param);
                  if (_tmp10_ == VALA_PARAMETER_DIRECTION_IN) {
                        vala_collection_add ((ValaCollection*) params, param);
                  }
                  _vala_code_node_unref0 (param);
            }
            _vala_iterable_unref0 (_param_list);
      }
      _tmp11_ = vala_symbol_get_scope (glib_ns);
      _tmp12_ = vala_scope_lookup (_tmp11_, "AsyncReadyCallback");
      _tmp13_ = VALA_DELEGATE (_tmp12_);
      _tmp14_ = vala_delegate_type_new (_tmp13_);
      _tmp15_ = _tmp14_;
      _vala_code_node_unref0 (_tmp13_);
      callback_type = _tmp15_;
      vala_data_type_set_nullable ((ValaDataType*) callback_type, TRUE);
      vala_delegate_type_set_is_called_once (callback_type, TRUE);
      _tmp16_ = vala_parameter_new ("_callback_", (ValaDataType*) callback_type, NULL);
      callback_param = _tmp16_;
      _tmp17_ = vala_code_node_get_source_reference ((ValaCodeNode*) self);
      _tmp18_ = vala_null_literal_new (_tmp17_);
      _tmp19_ = _tmp18_;
      vala_variable_set_initializer ((ValaVariable*) callback_param, (ValaExpression*) _tmp19_);
      _vala_code_node_unref0 (_tmp19_);
      _tmp20_ = vala_variable_get_initializer ((ValaVariable*) callback_param);
      _tmp21_ = vala_data_type_copy ((ValaDataType*) callback_type);
      _tmp22_ = _tmp21_;
      vala_expression_set_target_type (_tmp20_, _tmp22_);
      _vala_code_node_unref0 (_tmp22_);
      vala_parameter_set_cparameter_position (callback_param, (gdouble) (-1));
      vala_parameter_set_cdelegate_target_parameter_position (callback_param, -0.9);
      vala_collection_add ((ValaCollection*) params, callback_param);
      result = (ValaList*) params;
      _vala_code_node_unref0 (callback_param);
      _vala_code_node_unref0 (callback_type);
      _vala_code_node_unref0 (glib_ns);
      return result;
}


ValaList* vala_method_get_async_end_parameters (ValaMethod* self) {
      ValaList* result = NULL;
      ValaArrayList* _tmp0_ = NULL;
      ValaArrayList* params;
      ValaCodeContext* _tmp1_ = NULL;
      ValaCodeContext* _tmp2_;
      ValaNamespace* _tmp3_ = NULL;
      ValaScope* _tmp4_ = NULL;
      ValaSymbol* _tmp5_ = NULL;
      ValaSymbol* _tmp6_;
      ValaSymbol* glib_ns;
      ValaScope* _tmp7_ = NULL;
      ValaSymbol* _tmp8_ = NULL;
      ValaObjectTypeSymbol* _tmp9_;
      ValaObjectType* _tmp10_ = NULL;
      ValaObjectType* _tmp11_;
      ValaObjectType* result_type;
      ValaParameter* _tmp12_ = NULL;
      ValaParameter* result_param;
      g_return_val_if_fail (self != NULL, NULL);
      g_assert (self->priv->_coroutine);
      _tmp0_ = vala_array_list_new (VALA_TYPE_PARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
      params = _tmp0_;
      _tmp1_ = vala_code_context_get ();
      _tmp2_ = _tmp1_;
      _tmp3_ = vala_code_context_get_root (_tmp2_);
      _tmp4_ = vala_symbol_get_scope ((ValaSymbol*) _tmp3_);
      _tmp5_ = vala_scope_lookup (_tmp4_, "GLib");
      _tmp6_ = _tmp5_;
      _vala_code_context_unref0 (_tmp2_);
      glib_ns = _tmp6_;
      _tmp7_ = vala_symbol_get_scope (glib_ns);
      _tmp8_ = vala_scope_lookup (_tmp7_, "AsyncResult");
      _tmp9_ = VALA_OBJECT_TYPE_SYMBOL (_tmp8_);
      _tmp10_ = vala_object_type_new (_tmp9_);
      _tmp11_ = _tmp10_;
      _vala_code_node_unref0 (_tmp9_);
      result_type = _tmp11_;
      _tmp12_ = vala_parameter_new ("_res_", (ValaDataType*) result_type, NULL);
      result_param = _tmp12_;
      vala_parameter_set_cparameter_position (result_param, 0.1);
      vala_collection_add ((ValaCollection*) params, result_param);
      {
            ValaList* _tmp13_;
            ValaList* _param_list;
            gint _tmp14_;
            gint _param_size;
            gint _param_index;
            _tmp13_ = _vala_iterable_ref0 (self->priv->parameters);
            _param_list = _tmp13_;
            _tmp14_ = vala_collection_get_size ((ValaCollection*) _param_list);
            _param_size = _tmp14_;
            _param_index = -1;
            while (TRUE) {
                  gpointer _tmp15_ = NULL;
                  ValaParameter* param;
                  ValaParameterDirection _tmp16_;
                  _param_index = _param_index + 1;
                  if (!(_param_index < _param_size)) {
                        break;
                  }
                  _tmp15_ = vala_list_get (_param_list, _param_index);
                  param = (ValaParameter*) _tmp15_;
                  _tmp16_ = vala_parameter_get_direction (param);
                  if (_tmp16_ == VALA_PARAMETER_DIRECTION_OUT) {
                        vala_collection_add ((ValaCollection*) params, param);
                  }
                  _vala_code_node_unref0 (param);
            }
            _vala_iterable_unref0 (_param_list);
      }
      result = (ValaList*) params;
      _vala_code_node_unref0 (result_param);
      _vala_code_node_unref0 (result_type);
      _vala_code_node_unref0 (glib_ns);
      return result;
}


void vala_method_add_captured_variable (ValaMethod* self, ValaLocalVariable* local) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (local != NULL);
      g_assert (self->priv->_closure);
      if (self->priv->captured_variables == NULL) {
            ValaArrayList* _tmp0_ = NULL;
            _tmp0_ = vala_array_list_new (VALA_TYPE_LOCAL_VARIABLE, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
            _vala_iterable_unref0 (self->priv->captured_variables);
            self->priv->captured_variables = (ValaList*) _tmp0_;
      }
      vala_collection_add ((ValaCollection*) self->priv->captured_variables, local);
}


void vala_method_get_captured_variables (ValaMethod* self, ValaCollection* variables) {
      g_return_if_fail (self != NULL);
      g_return_if_fail (variables != NULL);
      if (self->priv->captured_variables != NULL) {
            {
                  ValaList* _tmp0_;
                  ValaList* _local_list;
                  gint _tmp1_;
                  gint _local_size;
                  gint _local_index;
                  _tmp0_ = _vala_iterable_ref0 (self->priv->captured_variables);
                  _local_list = _tmp0_;
                  _tmp1_ = vala_collection_get_size ((ValaCollection*) _local_list);
                  _local_size = _tmp1_;
                  _local_index = -1;
                  while (TRUE) {
                        gpointer _tmp2_ = NULL;
                        ValaLocalVariable* local;
                        _local_index = _local_index + 1;
                        if (!(_local_index < _local_size)) {
                              break;
                        }
                        _tmp2_ = vala_list_get (_local_list, _local_index);
                        local = (ValaLocalVariable*) _tmp2_;
                        vala_collection_add (variables, local);
                        _vala_code_node_unref0 (local);
                  }
                  _vala_iterable_unref0 (_local_list);
            }
      }
}


static void vala_method_real_get_defined_variables (ValaCodeNode* base, ValaCollection* collection) {
      ValaMethod * self;
      self = (ValaMethod*) base;
      g_return_if_fail (collection != NULL);
      if (self->priv->_closure) {
            vala_method_get_captured_variables (self, collection);
      }
}


ValaDataType* vala_method_get_return_type (ValaMethod* self) {
      ValaDataType* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->priv->_return_type;
      return result;
}


void vala_method_set_return_type (ValaMethod* self, ValaDataType* value) {
      ValaDataType* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = _vala_code_node_ref0 (value);
      _vala_code_node_unref0 (self->priv->_return_type);
      self->priv->_return_type = _tmp0_;
      vala_code_node_set_parent_node ((ValaCodeNode*) self->priv->_return_type, (ValaCodeNode*) self);
}


static gboolean vala_method_real_get_has_result (ValaSubroutine* base) {
      gboolean result;
      ValaMethod* self;
      ValaDataType* _tmp0_ = NULL;
      self = (ValaMethod*) base;
      _tmp0_ = vala_method_get_return_type (self);
      result = !VALA_IS_VOID_TYPE (_tmp0_);
      return result;
}


ValaMemberBinding vala_method_get_binding (ValaMethod* self) {
      ValaMemberBinding result;
      g_return_val_if_fail (self != NULL, 0);
      result = self->priv->_binding;
      return result;
}


void vala_method_set_binding (ValaMethod* self, ValaMemberBinding value) {
      g_return_if_fail (self != NULL);
      self->priv->_binding = value;
}


const gchar* vala_method_get_vfunc_name (ValaMethod* self) {
      const gchar* result;
      g_return_val_if_fail (self != NULL, NULL);
      if (self->priv->_vfunc_name == NULL) {
            const gchar* _tmp0_ = NULL;
            gchar* _tmp1_;
            _tmp0_ = vala_symbol_get_name ((ValaSymbol*) self);
            _tmp1_ = g_strdup (_tmp0_);
            _g_free0 (self->priv->_vfunc_name);
            self->priv->_vfunc_name = _tmp1_;
      }
      result = self->priv->_vfunc_name;
      return result;
}


void vala_method_set_vfunc_name (ValaMethod* self, const gchar* value) {
      gchar* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = g_strdup (value);
      _g_free0 (self->priv->_vfunc_name);
      self->priv->_vfunc_name = _tmp0_;
}


const gchar* vala_method_get_sentinel (ValaMethod* self) {
      const gchar* result;
      g_return_val_if_fail (self != NULL, NULL);
      if (self->priv->_sentinel == NULL) {
            result = VALA_METHOD_DEFAULT_SENTINEL;
            return result;
      }
      result = self->priv->_sentinel;
      return result;
}


void vala_method_set_sentinel (ValaMethod* self, const gchar* value) {
      gchar* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = g_strdup (value);
      _g_free0 (self->priv->_sentinel);
      self->priv->_sentinel = _tmp0_;
}


gboolean vala_method_get_is_abstract (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_is_abstract;
      return result;
}


void vala_method_set_is_abstract (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_is_abstract = value;
}


gboolean vala_method_get_is_virtual (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_is_virtual;
      return result;
}


void vala_method_set_is_virtual (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_is_virtual = value;
}


gboolean vala_method_get_overrides (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_overrides;
      return result;
}


void vala_method_set_overrides (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_overrides = value;
}


gboolean vala_method_get_is_inline (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_is_inline;
      return result;
}


void vala_method_set_is_inline (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_is_inline = value;
}


gboolean vala_method_get_returns_floating_reference (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_returns_floating_reference;
      return result;
}


void vala_method_set_returns_floating_reference (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_returns_floating_reference = value;
}


gboolean vala_method_get_returns_modified_pointer (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_returns_modified_pointer;
      return result;
}


void vala_method_set_returns_modified_pointer (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_returns_modified_pointer = value;
}


ValaMethod* vala_method_get_base_method (ValaMethod* self) {
      ValaMethod* result;
      g_return_val_if_fail (self != NULL, NULL);
      vala_method_find_base_methods (self);
      result = self->priv->_base_method;
      return result;
}


ValaMethod* vala_method_get_base_interface_method (ValaMethod* self) {
      ValaMethod* result;
      g_return_val_if_fail (self != NULL, NULL);
      vala_method_find_base_methods (self);
      result = self->priv->_base_interface_method;
      return result;
}


gboolean vala_method_get_entry_point (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_entry_point;
      return result;
}


static void vala_method_set_entry_point (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_entry_point = value;
}


ValaParameter* vala_method_get_this_parameter (ValaMethod* self) {
      ValaParameter* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->priv->_this_parameter;
      return result;
}


void vala_method_set_this_parameter (ValaMethod* self, ValaParameter* value) {
      ValaParameter* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = _vala_code_node_ref0 (value);
      _vala_code_node_unref0 (self->priv->_this_parameter);
      self->priv->_this_parameter = _tmp0_;
}


gdouble vala_method_get_cinstance_parameter_position (ValaMethod* self) {
      gdouble result;
      g_return_val_if_fail (self != NULL, 0.0);
      result = self->priv->_cinstance_parameter_position;
      return result;
}


void vala_method_set_cinstance_parameter_position (ValaMethod* self, gdouble value) {
      g_return_if_fail (self != NULL);
      self->priv->_cinstance_parameter_position = value;
}


gdouble vala_method_get_carray_length_parameter_position (ValaMethod* self) {
      gdouble result;
      g_return_val_if_fail (self != NULL, 0.0);
      result = self->priv->_carray_length_parameter_position;
      return result;
}


void vala_method_set_carray_length_parameter_position (ValaMethod* self, gdouble value) {
      g_return_if_fail (self != NULL);
      self->priv->_carray_length_parameter_position = value;
}


gdouble vala_method_get_cdelegate_target_parameter_position (ValaMethod* self) {
      gdouble result;
      g_return_val_if_fail (self != NULL, 0.0);
      result = self->priv->_cdelegate_target_parameter_position;
      return result;
}


void vala_method_set_cdelegate_target_parameter_position (ValaMethod* self, gdouble value) {
      g_return_if_fail (self != NULL);
      self->priv->_cdelegate_target_parameter_position = value;
}


gboolean vala_method_get_no_array_length (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_no_array_length;
      return result;
}


void vala_method_set_no_array_length (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_no_array_length = value;
}


gboolean vala_method_get_array_null_terminated (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_array_null_terminated;
      return result;
}


void vala_method_set_array_null_terminated (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_array_null_terminated = value;
}


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


void vala_method_set_array_length_type (ValaMethod* self, const gchar* value) {
      gchar* _tmp0_;
      g_return_if_fail (self != NULL);
      _tmp0_ = g_strdup (value);
      _g_free0 (self->priv->_array_length_type);
      self->priv->_array_length_type = _tmp0_;
}


gboolean vala_method_get_printf_format (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_printf_format;
      return result;
}


void vala_method_set_printf_format (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_printf_format = value;
}


gboolean vala_method_get_scanf_format (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_scanf_format;
      return result;
}


void vala_method_set_scanf_format (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_scanf_format = value;
}


gboolean vala_method_get_has_new_function (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_has_new_function;
      return result;
}


void vala_method_set_has_new_function (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_has_new_function = value;
}


gboolean vala_method_get_has_construct_function (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_has_construct_function;
      return result;
}


void vala_method_set_has_construct_function (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_has_construct_function = value;
}


gboolean vala_method_get_has_generic_type_parameter (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_has_generic_type_parameter;
      return result;
}


void vala_method_set_has_generic_type_parameter (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_has_generic_type_parameter = value;
}


gdouble vala_method_get_generic_type_parameter_position (ValaMethod* self) {
      gdouble result;
      g_return_val_if_fail (self != NULL, 0.0);
      result = self->priv->_generic_type_parameter_position;
      return result;
}


void vala_method_set_generic_type_parameter_position (ValaMethod* self, gdouble value) {
      g_return_if_fail (self != NULL);
      self->priv->_generic_type_parameter_position = value;
}


gboolean vala_method_get_simple_generics (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_simple_generics;
      return result;
}


void vala_method_set_simple_generics (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_simple_generics = value;
}


ValaSignal* vala_method_get_signal_reference (ValaMethod* self) {
      ValaSignal* result;
      g_return_val_if_fail (self != NULL, NULL);
      result = self->priv->_signal_reference;
      return result;
}


void vala_method_set_signal_reference (ValaMethod* self, ValaSignal* value) {
      g_return_if_fail (self != NULL);
      self->priv->_signal_reference = value;
}


gboolean vala_method_get_closure (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_closure;
      return result;
}


void vala_method_set_closure (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_closure = value;
}


gboolean vala_method_get_coroutine (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_coroutine;
      return result;
}


void vala_method_set_coroutine (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_coroutine = value;
}


gboolean vala_method_get_is_async_callback (ValaMethod* self) {
      gboolean result;
      g_return_val_if_fail (self != NULL, FALSE);
      result = self->priv->_is_async_callback;
      return result;
}


void vala_method_set_is_async_callback (ValaMethod* self, gboolean value) {
      g_return_if_fail (self != NULL);
      self->priv->_is_async_callback = value;
}


gint vala_method_get_yield_count (ValaMethod* self) {
      gint result;
      g_return_val_if_fail (self != NULL, 0);
      result = self->priv->_yield_count;
      return result;
}


void vala_method_set_yield_count (ValaMethod* self, gint value) {
      g_return_if_fail (self != NULL);
      self->priv->_yield_count = value;
}


static void vala_method_class_init (ValaMethodClass * klass) {
      vala_method_parent_class = g_type_class_peek_parent (klass);
      VALA_CODE_NODE_CLASS (klass)->finalize = vala_method_finalize;
      g_type_class_add_private (klass, sizeof (ValaMethodPrivate));
      VALA_CODE_NODE_CLASS (klass)->accept = vala_method_real_accept;
      VALA_CODE_NODE_CLASS (klass)->accept_children = vala_method_real_accept_children;
      VALA_METHOD_CLASS (klass)->get_default_cname = vala_method_real_get_default_cname;
      VALA_METHOD_CLASS (klass)->get_real_cname = vala_method_real_get_real_cname;
      VALA_CODE_NODE_CLASS (klass)->replace_type = vala_method_real_replace_type;
      VALA_CODE_NODE_CLASS (klass)->check = vala_method_real_check;
      VALA_CODE_NODE_CLASS (klass)->get_defined_variables = vala_method_real_get_defined_variables;
      VALA_SUBROUTINE_CLASS (klass)->get_has_result = vala_method_real_get_has_result;
}


static void vala_method_instance_init (ValaMethod * self) {
      ValaArrayList* _tmp0_ = NULL;
      self->priv = VALA_METHOD_GET_PRIVATE (self);
      self->priv->_binding = VALA_MEMBER_BINDING_INSTANCE;
      self->priv->_array_length_type = NULL;
      self->priv->_has_new_function = TRUE;
      self->priv->_has_construct_function = TRUE;
      _tmp0_ = vala_array_list_new (VALA_TYPE_PARAMETER, (GBoxedCopyFunc) vala_code_node_ref, vala_code_node_unref, g_direct_equal);
      self->priv->parameters = (ValaList*) _tmp0_;
}


static void vala_method_finalize (ValaCodeNode* obj) {
      ValaMethod * self;
      self = VALA_METHOD (obj);
      _vala_iterable_unref0 (self->priv->type_parameters);
      _vala_code_node_unref0 (self->priv->_this_parameter);
      _g_free0 (self->priv->_array_length_type);
      _vala_iterable_unref0 (self->priv->parameters);
      _g_free0 (self->priv->cname);
      _g_free0 (self->priv->finish_name);
      _g_free0 (self->priv->_vfunc_name);
      _g_free0 (self->priv->_sentinel);
      _vala_iterable_unref0 (self->priv->preconditions);
      _vala_iterable_unref0 (self->priv->postconditions);
      _vala_code_node_unref0 (self->priv->_return_type);
      _vala_code_node_unref0 (self->priv->_base_interface_method);
      _vala_code_node_unref0 (self->priv->callback_method);
      _vala_iterable_unref0 (self->priv->captured_variables);
      VALA_CODE_NODE_CLASS (vala_method_parent_class)->finalize (obj);
}


/**
 * Represents a type or namespace method.
 */
GType vala_method_get_type (void) {
      static volatile gsize vala_method_type_id__volatile = 0;
      if (g_once_init_enter (&vala_method_type_id__volatile)) {
            static const GTypeInfo g_define_type_info = { sizeof (ValaMethodClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) vala_method_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ValaMethod), 0, (GInstanceInitFunc) vala_method_instance_init, NULL };
            GType vala_method_type_id;
            vala_method_type_id = g_type_register_static (VALA_TYPE_SUBROUTINE, "ValaMethod", &g_define_type_info, 0);
            g_once_init_leave (&vala_method_type_id__volatile, vala_method_type_id);
      }
      return vala_method_type_id__volatile;
}


static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
      if ((array != NULL) && (destroy_func != NULL)) {
            int i;
            for (i = 0; i < array_length; i = i + 1) {
                  if (((gpointer*) array)[i] != NULL) {
                        destroy_func (((gpointer*) array)[i]);
                  }
            }
      }
}


static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
      _vala_array_destroy (array, array_length, destroy_func);
      g_free (array);
}


static gint _vala_array_length (gpointer array) {
      int length;
      length = 0;
      if (array) {
            while (((gpointer*) array)[length]) {
                  length++;
            }
      }
      return length;
}




Generated by  Doxygen 1.6.0   Back to index