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

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <gee.h>

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif
#if !defined(VALA_EXTERN)
#if defined(_MSC_VER)
#define VALA_EXTERN __declspec(dllexport) extern
#elif __GNUC__ >= 4
#define VALA_EXTERN __attribute__((visibility("default"))) extern
#else
#define VALA_EXTERN extern
#endif
#endif

#define TYPE_PHP_TO_VALA_ERROR (php_to_vala_error_get_type ())

#define TYPE_FUNCTION_BINDING (function_binding_get_type ())
#define FUNCTION_BINDING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FUNCTION_BINDING, FunctionBinding))
#define FUNCTION_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FUNCTION_BINDING, FunctionBindingClass))
#define IS_FUNCTION_BINDING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FUNCTION_BINDING))
#define IS_FUNCTION_BINDING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FUNCTION_BINDING))
#define FUNCTION_BINDING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FUNCTION_BINDING, FunctionBindingClass))

typedef struct _FunctionBinding FunctionBinding;
typedef struct _FunctionBindingClass FunctionBindingClass;
typedef struct _FunctionBindingPrivate FunctionBindingPrivate;
enum  {
	FUNCTION_BINDING_0_PROPERTY,
	FUNCTION_BINDING_NUM_PROPERTIES
};
static GParamSpec* function_binding_properties[FUNCTION_BINDING_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))

#define TYPE_LOCAL_PARAMETER (local_parameter_get_type ())
#define LOCAL_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_PARAMETER, LocalParameter))
#define LOCAL_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_PARAMETER, LocalParameterClass))
#define IS_LOCAL_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_PARAMETER))
#define IS_LOCAL_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_PARAMETER))
#define LOCAL_PARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_PARAMETER, LocalParameterClass))

typedef struct _LocalParameter LocalParameter;
typedef struct _LocalParameterClass LocalParameterClass;
typedef struct _LocalParameterPrivate LocalParameterPrivate;
enum  {
	LOCAL_PARAMETER_0_PROPERTY,
	LOCAL_PARAMETER_NUM_PROPERTIES
};
static GParamSpec* local_parameter_properties[LOCAL_PARAMETER_NUM_PROPERTIES];

#define TYPE_LOCAL_FUNCTION (local_function_get_type ())
#define LOCAL_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_LOCAL_FUNCTION, LocalFunction))
#define LOCAL_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_LOCAL_FUNCTION, LocalFunctionClass))
#define IS_LOCAL_FUNCTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_LOCAL_FUNCTION))
#define IS_LOCAL_FUNCTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_LOCAL_FUNCTION))
#define LOCAL_FUNCTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_LOCAL_FUNCTION, LocalFunctionClass))

typedef struct _LocalFunction LocalFunction;
typedef struct _LocalFunctionClass LocalFunctionClass;
typedef struct _LocalFunctionPrivate LocalFunctionPrivate;
enum  {
	LOCAL_FUNCTION_0_PROPERTY,
	LOCAL_FUNCTION_NUM_PROPERTIES
};
static GParamSpec* local_function_properties[LOCAL_FUNCTION_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define TYPE_PHPCLASS (phpclass_get_type ())
#define PHPCLASS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_PHPCLASS, PhpClass))
#define PHPCLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_PHPCLASS, PhpClassClass))
#define IS_PHPCLASS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_PHPCLASS))
#define IS_PHPCLASS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_PHPCLASS))
#define PHPCLASS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_PHPCLASS, PhpClassClass))

typedef struct _PhpClass PhpClass;
typedef struct _PhpClassClass PhpClassClass;
typedef struct _PhpClassPrivate PhpClassPrivate;
enum  {
	PHPCLASS_0_PROPERTY,
	PHPCLASS_NUM_PROPERTIES
};
static GParamSpec* phpclass_properties[PHPCLASS_NUM_PROPERTIES];

#define TYPE_SOURCE_PARTS (source_parts_get_type ())
#define SOURCE_PARTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SOURCE_PARTS, SourceParts))
#define SOURCE_PARTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SOURCE_PARTS, SourcePartsClass))
#define IS_SOURCE_PARTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SOURCE_PARTS))
#define IS_SOURCE_PARTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SOURCE_PARTS))
#define SOURCE_PARTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SOURCE_PARTS, SourcePartsClass))

typedef struct _SourceParts SourceParts;
typedef struct _SourcePartsClass SourcePartsClass;
typedef struct _SourcePartsPrivate SourcePartsPrivate;
enum  {
	SOURCE_PARTS_0_PROPERTY,
	SOURCE_PARTS_NUM_PROPERTIES
};
static GParamSpec* source_parts_properties[SOURCE_PARTS_NUM_PROPERTIES];

#define TYPE_RESOLVED_SOURCE (resolved_source_get_type ())
#define RESOLVED_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_RESOLVED_SOURCE, ResolvedSource))
#define RESOLVED_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_RESOLVED_SOURCE, ResolvedSourceClass))
#define IS_RESOLVED_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_RESOLVED_SOURCE))
#define IS_RESOLVED_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_RESOLVED_SOURCE))
#define RESOLVED_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_RESOLVED_SOURCE, ResolvedSourceClass))

typedef struct _ResolvedSource ResolvedSource;
typedef struct _ResolvedSourceClass ResolvedSourceClass;
typedef struct _ResolvedSourcePrivate ResolvedSourcePrivate;
enum  {
	RESOLVED_SOURCE_0_PROPERTY,
	RESOLVED_SOURCE_NUM_PROPERTIES
};
static GParamSpec* resolved_source_properties[RESOLVED_SOURCE_NUM_PROPERTIES];

#define TYPE_STATEMENTS (statements_get_type ())
#define STATEMENTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_STATEMENTS, Statements))
#define STATEMENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_STATEMENTS, StatementsClass))
#define IS_STATEMENTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_STATEMENTS))
#define IS_STATEMENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_STATEMENTS))
#define STATEMENTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_STATEMENTS, StatementsClass))

typedef struct _Statements Statements;
typedef struct _StatementsClass StatementsClass;
typedef struct _StatementsPrivate StatementsPrivate;
enum  {
	STATEMENTS_0_PROPERTY,
	STATEMENTS_NUM_PROPERTIES
};
static GParamSpec* statements_properties[STATEMENTS_NUM_PROPERTIES];

typedef enum  {
	PHP_TO_VALA_ERROR_UNSUPPORTED
} PhpToValaError;
#define PHP_TO_VALA_ERROR php_to_vala_error_quark ()

struct _FunctionBinding {
	GObject parent_instance;
	FunctionBindingPrivate * priv;
	gchar* namespace_name;
	gchar* package_name;
	gchar* return_type;
	gboolean source_location_args;
	gchar* mapped_function_name;
};

struct _FunctionBindingClass {
	GObjectClass parent_class;
};

struct _LocalParameter {
	GObject parent_instance;
	LocalParameterPrivate * priv;
	gchar* name;
	gchar* type_name;
	gchar* default_value;
};

struct _LocalParameterClass {
	GObjectClass parent_class;
};

struct _LocalFunction {
	GObject parent_instance;
	LocalFunctionPrivate * priv;
	gchar* name;
	GeeArrayList* parameters;
	gchar* return_type;
	gchar* body;
	gint line;
	gboolean is_static;
	gchar* doc_comment;
};

struct _LocalFunctionClass {
	GObjectClass parent_class;
};

struct _PhpClass {
	GObject parent_instance;
	PhpClassPrivate * priv;
	gchar* name;
	gint line;
	gchar* doc_comment;
	gchar* extends_name;
	GeeArrayList* methods;
};

struct _PhpClassClass {
	GObjectClass parent_class;
};

struct _SourceParts {
	GObject parent_instance;
	SourcePartsPrivate * priv;
	gchar* main_source;
	GeeArrayList* functions;
	GeeArrayList* classes;
};

struct _SourcePartsClass {
	GObjectClass parent_class;
};

struct _ResolvedSource {
	GObject parent_instance;
	ResolvedSourcePrivate * priv;
	gchar* source;
	GeeArrayList* files;
	GeeArrayList* lines;
};

struct _ResolvedSourceClass {
	GObjectClass parent_class;
};

struct _Statements {
	GObject parent_instance;
	StatementsPrivate * priv;
	GeeArrayList* texts;
	GeeArrayList* lines;
	GeeArrayList* columns;
};

struct _StatementsClass {
	GObjectClass parent_class;
};

static gpointer function_binding_parent_class = NULL;
static gpointer local_parameter_parent_class = NULL;
static gpointer local_function_parent_class = NULL;
static gpointer phpclass_parent_class = NULL;
static gpointer source_parts_parent_class = NULL;
static gpointer resolved_source_parent_class = NULL;
static gpointer statements_parent_class = NULL;

VALA_EXTERN GQuark php_to_vala_error_quark (void);
VALA_EXTERN GType php_to_vala_error_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType function_binding_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (FunctionBinding, g_object_unref)
VALA_EXTERN FunctionBinding* function_binding_new (const gchar* namespace_name,
                                       const gchar* package_name,
                                       const gchar* return_type,
                                       gboolean source_location_args,
                                       const gchar* mapped_function_name);
VALA_EXTERN FunctionBinding* function_binding_construct (GType object_type,
                                             const gchar* namespace_name,
                                             const gchar* package_name,
                                             const gchar* return_type,
                                             gboolean source_location_args,
                                             const gchar* mapped_function_name);
VALA_EXTERN gchar* function_binding_call_name (FunctionBinding* self,
                                   const gchar* function_name);
static void function_binding_finalize (GObject * obj);
static GType function_binding_get_type_once (void);
VALA_EXTERN GType local_parameter_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (LocalParameter, g_object_unref)
VALA_EXTERN LocalParameter* local_parameter_new (const gchar* name,
                                     const gchar* type_name,
                                     const gchar* default_value);
VALA_EXTERN LocalParameter* local_parameter_construct (GType object_type,
                                           const gchar* name,
                                           const gchar* type_name,
                                           const gchar* default_value);
static void local_parameter_finalize (GObject * obj);
static GType local_parameter_get_type_once (void);
VALA_EXTERN GType local_function_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (LocalFunction, g_object_unref)
VALA_EXTERN LocalFunction* local_function_new (const gchar* name,
                                   GeeArrayList* parameters,
                                   const gchar* return_type,
                                   const gchar* body,
                                   gint line,
                                   gboolean is_static,
                                   const gchar* doc_comment);
VALA_EXTERN LocalFunction* local_function_construct (GType object_type,
                                         const gchar* name,
                                         GeeArrayList* parameters,
                                         const gchar* return_type,
                                         const gchar* body,
                                         gint line,
                                         gboolean is_static,
                                         const gchar* doc_comment);
static void local_function_finalize (GObject * obj);
static GType local_function_get_type_once (void);
VALA_EXTERN GType phpclass_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (PhpClass, g_object_unref)
VALA_EXTERN PhpClass* phpclass_new (const gchar* name,
                        gint line,
                        const gchar* doc_comment,
                        const gchar* extends_name);
VALA_EXTERN PhpClass* phpclass_construct (GType object_type,
                              const gchar* name,
                              gint line,
                              const gchar* doc_comment,
                              const gchar* extends_name);
static void phpclass_finalize (GObject * obj);
static GType phpclass_get_type_once (void);
VALA_EXTERN GType source_parts_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (SourceParts, g_object_unref)
VALA_EXTERN SourceParts* source_parts_new (void);
VALA_EXTERN SourceParts* source_parts_construct (GType object_type);
static void source_parts_finalize (GObject * obj);
static GType source_parts_get_type_once (void);
VALA_EXTERN GType resolved_source_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (ResolvedSource, g_object_unref)
VALA_EXTERN ResolvedSource* resolved_source_new (void);
VALA_EXTERN ResolvedSource* resolved_source_construct (GType object_type);
static void resolved_source_finalize (GObject * obj);
static GType resolved_source_get_type_once (void);
VALA_EXTERN GType statements_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Statements, g_object_unref)
VALA_EXTERN Statements* statements_new (void);
VALA_EXTERN Statements* statements_construct (GType object_type);
static void statements_finalize (GObject * obj);
static GType statements_get_type_once (void);

GQuark
php_to_vala_error_quark (void)
{
	return g_quark_from_static_string ("php-to-vala-error-quark");
}

static GType
php_to_vala_error_get_type_once (void)
{
	static const GEnumValue values[] = {{PHP_TO_VALA_ERROR_UNSUPPORTED, "PHP_TO_VALA_ERROR_UNSUPPORTED", "unsupported"}, {0, NULL, NULL}};
	GType php_to_vala_error_type_id;
	php_to_vala_error_type_id = g_enum_register_static ("PhpToValaError", values);
	return php_to_vala_error_type_id;
}

GType
php_to_vala_error_get_type (void)
{
	static volatile gsize php_to_vala_error_type_id__once = 0;
	if (g_once_init_enter (&php_to_vala_error_type_id__once)) {
		GType php_to_vala_error_type_id;
		php_to_vala_error_type_id = php_to_vala_error_get_type_once ();
		g_once_init_leave (&php_to_vala_error_type_id__once, php_to_vala_error_type_id);
	}
	return php_to_vala_error_type_id__once;
}

FunctionBinding*
function_binding_construct (GType object_type,
                            const gchar* namespace_name,
                            const gchar* package_name,
                            const gchar* return_type,
                            gboolean source_location_args,
                            const gchar* mapped_function_name)
{
	FunctionBinding * self = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
#line 14 "../src/model.vala"
	g_return_val_if_fail (namespace_name != NULL, NULL);
#line 14 "../src/model.vala"
	g_return_val_if_fail (package_name != NULL, NULL);
#line 14 "../src/model.vala"
	g_return_val_if_fail (return_type != NULL, NULL);
#line 14 "../src/model.vala"
	self = (FunctionBinding*) g_object_new (object_type, NULL);
#line 15 "../src/model.vala"
	_tmp0_ = g_strdup (namespace_name);
#line 15 "../src/model.vala"
	_g_free0 (self->namespace_name);
#line 15 "../src/model.vala"
	self->namespace_name = _tmp0_;
#line 16 "../src/model.vala"
	_tmp1_ = g_strdup (package_name);
#line 16 "../src/model.vala"
	_g_free0 (self->package_name);
#line 16 "../src/model.vala"
	self->package_name = _tmp1_;
#line 17 "../src/model.vala"
	_tmp2_ = g_strdup (return_type);
#line 17 "../src/model.vala"
	_g_free0 (self->return_type);
#line 17 "../src/model.vala"
	self->return_type = _tmp2_;
#line 18 "../src/model.vala"
	self->source_location_args = source_location_args;
#line 19 "../src/model.vala"
	_tmp3_ = g_strdup (mapped_function_name);
#line 19 "../src/model.vala"
	_g_free0 (self->mapped_function_name);
#line 19 "../src/model.vala"
	self->mapped_function_name = _tmp3_;
#line 14 "../src/model.vala"
	return self;
#line 407 "model.c"
}

FunctionBinding*
function_binding_new (const gchar* namespace_name,
                      const gchar* package_name,
                      const gchar* return_type,
                      gboolean source_location_args,
                      const gchar* mapped_function_name)
{
#line 14 "../src/model.vala"
	return function_binding_construct (TYPE_FUNCTION_BINDING, namespace_name, package_name, return_type, source_location_args, mapped_function_name);
#line 419 "model.c"
}

gchar*
function_binding_call_name (FunctionBinding* self,
                            const gchar* function_name)
{
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* result;
#line 22 "../src/model.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 22 "../src/model.vala"
	g_return_val_if_fail (function_name != NULL, NULL);
#line 23 "../src/model.vala"
	_tmp1_ = self->mapped_function_name;
#line 23 "../src/model.vala"
	_tmp0_ = _tmp1_;
#line 23 "../src/model.vala"
	if (_tmp0_ == NULL) {
#line 23 "../src/model.vala"
		_tmp0_ = function_name;
#line 446 "model.c"
	}
#line 23 "../src/model.vala"
	_tmp2_ = self->namespace_name;
#line 23 "../src/model.vala"
	_tmp3_ = g_strconcat (_tmp2_, ".", NULL);
#line 23 "../src/model.vala"
	_tmp4_ = _tmp3_;
#line 23 "../src/model.vala"
	_tmp5_ = g_strconcat (_tmp4_, _tmp0_, NULL);
#line 23 "../src/model.vala"
	_tmp6_ = _tmp5_;
#line 23 "../src/model.vala"
	_g_free0 (_tmp4_);
#line 23 "../src/model.vala"
	result = _tmp6_;
#line 23 "../src/model.vala"
	return result;
#line 464 "model.c"
}

static void
function_binding_class_init (FunctionBindingClass * klass,
                             gpointer klass_data)
{
#line 7 "../src/model.vala"
	function_binding_parent_class = g_type_class_peek_parent (klass);
#line 7 "../src/model.vala"
	G_OBJECT_CLASS (klass)->finalize = function_binding_finalize;
#line 475 "model.c"
}

static void
function_binding_instance_init (FunctionBinding * self,
                                gpointer klass)
{
}

static void
function_binding_finalize (GObject * obj)
{
	FunctionBinding * self;
#line 7 "../src/model.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_FUNCTION_BINDING, FunctionBinding);
#line 8 "../src/model.vala"
	_g_free0 (self->namespace_name);
#line 9 "../src/model.vala"
	_g_free0 (self->package_name);
#line 10 "../src/model.vala"
	_g_free0 (self->return_type);
#line 12 "../src/model.vala"
	_g_free0 (self->mapped_function_name);
#line 7 "../src/model.vala"
	G_OBJECT_CLASS (function_binding_parent_class)->finalize (obj);
#line 500 "model.c"
}

static GType
function_binding_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (FunctionBindingClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) function_binding_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (FunctionBinding), 0, (GInstanceInitFunc) function_binding_instance_init, NULL };
	GType function_binding_type_id;
	function_binding_type_id = g_type_register_static (G_TYPE_OBJECT, "FunctionBinding", &g_define_type_info, 0);
	return function_binding_type_id;
}

GType
function_binding_get_type (void)
{
	static volatile gsize function_binding_type_id__once = 0;
	if (g_once_init_enter (&function_binding_type_id__once)) {
		GType function_binding_type_id;
		function_binding_type_id = function_binding_get_type_once ();
		g_once_init_leave (&function_binding_type_id__once, function_binding_type_id);
	}
	return function_binding_type_id__once;
}

LocalParameter*
local_parameter_construct (GType object_type,
                           const gchar* name,
                           const gchar* type_name,
                           const gchar* default_value)
{
	LocalParameter * self = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
#line 32 "../src/model.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 32 "../src/model.vala"
	self = (LocalParameter*) g_object_new (object_type, NULL);
#line 33 "../src/model.vala"
	_tmp0_ = g_strdup (name);
#line 33 "../src/model.vala"
	_g_free0 (self->name);
#line 33 "../src/model.vala"
	self->name = _tmp0_;
#line 34 "../src/model.vala"
	_tmp1_ = g_strdup (type_name);
#line 34 "../src/model.vala"
	_g_free0 (self->type_name);
#line 34 "../src/model.vala"
	self->type_name = _tmp1_;
#line 35 "../src/model.vala"
	_tmp2_ = g_strdup (default_value);
#line 35 "../src/model.vala"
	_g_free0 (self->default_value);
#line 35 "../src/model.vala"
	self->default_value = _tmp2_;
#line 32 "../src/model.vala"
	return self;
#line 558 "model.c"
}

LocalParameter*
local_parameter_new (const gchar* name,
                     const gchar* type_name,
                     const gchar* default_value)
{
#line 32 "../src/model.vala"
	return local_parameter_construct (TYPE_LOCAL_PARAMETER, name, type_name, default_value);
#line 568 "model.c"
}

static void
local_parameter_class_init (LocalParameterClass * klass,
                            gpointer klass_data)
{
#line 27 "../src/model.vala"
	local_parameter_parent_class = g_type_class_peek_parent (klass);
#line 27 "../src/model.vala"
	G_OBJECT_CLASS (klass)->finalize = local_parameter_finalize;
#line 579 "model.c"
}

static void
local_parameter_instance_init (LocalParameter * self,
                               gpointer klass)
{
}

static void
local_parameter_finalize (GObject * obj)
{
	LocalParameter * self;
#line 27 "../src/model.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_LOCAL_PARAMETER, LocalParameter);
#line 28 "../src/model.vala"
	_g_free0 (self->name);
#line 29 "../src/model.vala"
	_g_free0 (self->type_name);
#line 30 "../src/model.vala"
	_g_free0 (self->default_value);
#line 27 "../src/model.vala"
	G_OBJECT_CLASS (local_parameter_parent_class)->finalize (obj);
#line 602 "model.c"
}

static GType
local_parameter_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (LocalParameterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) local_parameter_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (LocalParameter), 0, (GInstanceInitFunc) local_parameter_instance_init, NULL };
	GType local_parameter_type_id;
	local_parameter_type_id = g_type_register_static (G_TYPE_OBJECT, "LocalParameter", &g_define_type_info, 0);
	return local_parameter_type_id;
}

GType
local_parameter_get_type (void)
{
	static volatile gsize local_parameter_type_id__once = 0;
	if (g_once_init_enter (&local_parameter_type_id__once)) {
		GType local_parameter_type_id;
		local_parameter_type_id = local_parameter_get_type_once ();
		g_once_init_leave (&local_parameter_type_id__once, local_parameter_type_id);
	}
	return local_parameter_type_id__once;
}

static gpointer
_g_object_ref0 (gpointer self)
{
#line 50 "../src/model.vala"
	return self ? g_object_ref (self) : NULL;
#line 631 "model.c"
}

LocalFunction*
local_function_construct (GType object_type,
                          const gchar* name,
                          GeeArrayList* parameters,
                          const gchar* return_type,
                          const gchar* body,
                          gint line,
                          gboolean is_static,
                          const gchar* doc_comment)
{
	LocalFunction * self = NULL;
	gchar* _tmp0_;
	GeeArrayList* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
#line 48 "../src/model.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 48 "../src/model.vala"
	g_return_val_if_fail (parameters != NULL, NULL);
#line 48 "../src/model.vala"
	g_return_val_if_fail (body != NULL, NULL);
#line 48 "../src/model.vala"
	g_return_val_if_fail (doc_comment != NULL, NULL);
#line 48 "../src/model.vala"
	self = (LocalFunction*) g_object_new (object_type, NULL);
#line 49 "../src/model.vala"
	_tmp0_ = g_strdup (name);
#line 49 "../src/model.vala"
	_g_free0 (self->name);
#line 49 "../src/model.vala"
	self->name = _tmp0_;
#line 50 "../src/model.vala"
	_tmp1_ = _g_object_ref0 (parameters);
#line 50 "../src/model.vala"
	_g_object_unref0 (self->parameters);
#line 50 "../src/model.vala"
	self->parameters = _tmp1_;
#line 51 "../src/model.vala"
	_tmp2_ = g_strdup (return_type);
#line 51 "../src/model.vala"
	_g_free0 (self->return_type);
#line 51 "../src/model.vala"
	self->return_type = _tmp2_;
#line 52 "../src/model.vala"
	_tmp3_ = g_strdup (body);
#line 52 "../src/model.vala"
	_g_free0 (self->body);
#line 52 "../src/model.vala"
	self->body = _tmp3_;
#line 53 "../src/model.vala"
	self->line = line;
#line 54 "../src/model.vala"
	self->is_static = is_static;
#line 55 "../src/model.vala"
	_tmp4_ = g_strdup (doc_comment);
#line 55 "../src/model.vala"
	_g_free0 (self->doc_comment);
#line 55 "../src/model.vala"
	self->doc_comment = _tmp4_;
#line 48 "../src/model.vala"
	return self;
#line 696 "model.c"
}

LocalFunction*
local_function_new (const gchar* name,
                    GeeArrayList* parameters,
                    const gchar* return_type,
                    const gchar* body,
                    gint line,
                    gboolean is_static,
                    const gchar* doc_comment)
{
#line 48 "../src/model.vala"
	return local_function_construct (TYPE_LOCAL_FUNCTION, name, parameters, return_type, body, line, is_static, doc_comment);
#line 710 "model.c"
}

static void
local_function_class_init (LocalFunctionClass * klass,
                           gpointer klass_data)
{
#line 39 "../src/model.vala"
	local_function_parent_class = g_type_class_peek_parent (klass);
#line 39 "../src/model.vala"
	G_OBJECT_CLASS (klass)->finalize = local_function_finalize;
#line 721 "model.c"
}

static void
local_function_instance_init (LocalFunction * self,
                              gpointer klass)
{
	GeeArrayList* _tmp0_;
#line 41 "../src/model.vala"
	_tmp0_ = gee_array_list_new (TYPE_LOCAL_PARAMETER, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 41 "../src/model.vala"
	self->parameters = _tmp0_;
#line 733 "model.c"
}

static void
local_function_finalize (GObject * obj)
{
	LocalFunction * self;
#line 39 "../src/model.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_LOCAL_FUNCTION, LocalFunction);
#line 40 "../src/model.vala"
	_g_free0 (self->name);
#line 41 "../src/model.vala"
	_g_object_unref0 (self->parameters);
#line 42 "../src/model.vala"
	_g_free0 (self->return_type);
#line 43 "../src/model.vala"
	_g_free0 (self->body);
#line 46 "../src/model.vala"
	_g_free0 (self->doc_comment);
#line 39 "../src/model.vala"
	G_OBJECT_CLASS (local_function_parent_class)->finalize (obj);
#line 754 "model.c"
}

static GType
local_function_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (LocalFunctionClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) local_function_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (LocalFunction), 0, (GInstanceInitFunc) local_function_instance_init, NULL };
	GType local_function_type_id;
	local_function_type_id = g_type_register_static (G_TYPE_OBJECT, "LocalFunction", &g_define_type_info, 0);
	return local_function_type_id;
}

GType
local_function_get_type (void)
{
	static volatile gsize local_function_type_id__once = 0;
	if (g_once_init_enter (&local_function_type_id__once)) {
		GType local_function_type_id;
		local_function_type_id = local_function_get_type_once ();
		g_once_init_leave (&local_function_type_id__once, local_function_type_id);
	}
	return local_function_type_id__once;
}

PhpClass*
phpclass_construct (GType object_type,
                    const gchar* name,
                    gint line,
                    const gchar* doc_comment,
                    const gchar* extends_name)
{
	PhpClass * self = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
#line 66 "../src/model.vala"
	g_return_val_if_fail (name != NULL, NULL);
#line 66 "../src/model.vala"
	g_return_val_if_fail (doc_comment != NULL, NULL);
#line 66 "../src/model.vala"
	g_return_val_if_fail (extends_name != NULL, NULL);
#line 66 "../src/model.vala"
	self = (PhpClass*) g_object_new (object_type, NULL);
#line 67 "../src/model.vala"
	_tmp0_ = g_strdup (name);
#line 67 "../src/model.vala"
	_g_free0 (self->name);
#line 67 "../src/model.vala"
	self->name = _tmp0_;
#line 68 "../src/model.vala"
	self->line = line;
#line 69 "../src/model.vala"
	_tmp1_ = g_strdup (doc_comment);
#line 69 "../src/model.vala"
	_g_free0 (self->doc_comment);
#line 69 "../src/model.vala"
	self->doc_comment = _tmp1_;
#line 70 "../src/model.vala"
	_tmp2_ = g_strdup (extends_name);
#line 70 "../src/model.vala"
	_g_free0 (self->extends_name);
#line 70 "../src/model.vala"
	self->extends_name = _tmp2_;
#line 66 "../src/model.vala"
	return self;
#line 819 "model.c"
}

PhpClass*
phpclass_new (const gchar* name,
              gint line,
              const gchar* doc_comment,
              const gchar* extends_name)
{
#line 66 "../src/model.vala"
	return phpclass_construct (TYPE_PHPCLASS, name, line, doc_comment, extends_name);
#line 830 "model.c"
}

static void
phpclass_class_init (PhpClassClass * klass,
                     gpointer klass_data)
{
#line 59 "../src/model.vala"
	phpclass_parent_class = g_type_class_peek_parent (klass);
#line 59 "../src/model.vala"
	G_OBJECT_CLASS (klass)->finalize = phpclass_finalize;
#line 841 "model.c"
}

static void
phpclass_instance_init (PhpClass * self,
                        gpointer klass)
{
	GeeArrayList* _tmp0_;
#line 64 "../src/model.vala"
	_tmp0_ = gee_array_list_new (TYPE_LOCAL_FUNCTION, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 64 "../src/model.vala"
	self->methods = _tmp0_;
#line 853 "model.c"
}

static void
phpclass_finalize (GObject * obj)
{
	PhpClass * self;
#line 59 "../src/model.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_PHPCLASS, PhpClass);
#line 60 "../src/model.vala"
	_g_free0 (self->name);
#line 62 "../src/model.vala"
	_g_free0 (self->doc_comment);
#line 63 "../src/model.vala"
	_g_free0 (self->extends_name);
#line 64 "../src/model.vala"
	_g_object_unref0 (self->methods);
#line 59 "../src/model.vala"
	G_OBJECT_CLASS (phpclass_parent_class)->finalize (obj);
#line 872 "model.c"
}

static GType
phpclass_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (PhpClassClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) phpclass_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (PhpClass), 0, (GInstanceInitFunc) phpclass_instance_init, NULL };
	GType phpclass_type_id;
	phpclass_type_id = g_type_register_static (G_TYPE_OBJECT, "PhpClass", &g_define_type_info, 0);
	return phpclass_type_id;
}

GType
phpclass_get_type (void)
{
	static volatile gsize phpclass_type_id__once = 0;
	if (g_once_init_enter (&phpclass_type_id__once)) {
		GType phpclass_type_id;
		phpclass_type_id = phpclass_get_type_once ();
		g_once_init_leave (&phpclass_type_id__once, phpclass_type_id);
	}
	return phpclass_type_id__once;
}

SourceParts*
source_parts_construct (GType object_type)
{
	SourceParts * self = NULL;
#line 74 "../src/model.vala"
	self = (SourceParts*) g_object_new (object_type, NULL);
#line 74 "../src/model.vala"
	return self;
#line 904 "model.c"
}

SourceParts*
source_parts_new (void)
{
#line 74 "../src/model.vala"
	return source_parts_construct (TYPE_SOURCE_PARTS);
#line 912 "model.c"
}

static void
source_parts_class_init (SourcePartsClass * klass,
                         gpointer klass_data)
{
#line 74 "../src/model.vala"
	source_parts_parent_class = g_type_class_peek_parent (klass);
#line 74 "../src/model.vala"
	G_OBJECT_CLASS (klass)->finalize = source_parts_finalize;
#line 923 "model.c"
}

static void
source_parts_instance_init (SourceParts * self,
                            gpointer klass)
{
	gchar* _tmp0_;
	GeeArrayList* _tmp1_;
	GeeArrayList* _tmp2_;
#line 75 "../src/model.vala"
	_tmp0_ = g_strdup ("");
#line 75 "../src/model.vala"
	self->main_source = _tmp0_;
#line 76 "../src/model.vala"
	_tmp1_ = gee_array_list_new (TYPE_LOCAL_FUNCTION, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 76 "../src/model.vala"
	self->functions = _tmp1_;
#line 77 "../src/model.vala"
	_tmp2_ = gee_array_list_new (TYPE_PHPCLASS, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, NULL, NULL, NULL);
#line 77 "../src/model.vala"
	self->classes = _tmp2_;
#line 945 "model.c"
}

static void
source_parts_finalize (GObject * obj)
{
	SourceParts * self;
#line 74 "../src/model.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SOURCE_PARTS, SourceParts);
#line 75 "../src/model.vala"
	_g_free0 (self->main_source);
#line 76 "../src/model.vala"
	_g_object_unref0 (self->functions);
#line 77 "../src/model.vala"
	_g_object_unref0 (self->classes);
#line 74 "../src/model.vala"
	G_OBJECT_CLASS (source_parts_parent_class)->finalize (obj);
#line 962 "model.c"
}

static GType
source_parts_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (SourcePartsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) source_parts_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SourceParts), 0, (GInstanceInitFunc) source_parts_instance_init, NULL };
	GType source_parts_type_id;
	source_parts_type_id = g_type_register_static (G_TYPE_OBJECT, "SourceParts", &g_define_type_info, 0);
	return source_parts_type_id;
}

GType
source_parts_get_type (void)
{
	static volatile gsize source_parts_type_id__once = 0;
	if (g_once_init_enter (&source_parts_type_id__once)) {
		GType source_parts_type_id;
		source_parts_type_id = source_parts_get_type_once ();
		g_once_init_leave (&source_parts_type_id__once, source_parts_type_id);
	}
	return source_parts_type_id__once;
}

ResolvedSource*
resolved_source_construct (GType object_type)
{
	ResolvedSource * self = NULL;
#line 80 "../src/model.vala"
	self = (ResolvedSource*) g_object_new (object_type, NULL);
#line 80 "../src/model.vala"
	return self;
#line 994 "model.c"
}

ResolvedSource*
resolved_source_new (void)
{
#line 80 "../src/model.vala"
	return resolved_source_construct (TYPE_RESOLVED_SOURCE);
#line 1002 "model.c"
}

static void
resolved_source_class_init (ResolvedSourceClass * klass,
                            gpointer klass_data)
{
#line 80 "../src/model.vala"
	resolved_source_parent_class = g_type_class_peek_parent (klass);
#line 80 "../src/model.vala"
	G_OBJECT_CLASS (klass)->finalize = resolved_source_finalize;
#line 1013 "model.c"
}

static void
resolved_source_instance_init (ResolvedSource * self,
                               gpointer klass)
{
	gchar* _tmp0_;
	GeeArrayList* _tmp1_;
	GeeArrayList* _tmp2_;
#line 81 "../src/model.vala"
	_tmp0_ = g_strdup ("");
#line 81 "../src/model.vala"
	self->source = _tmp0_;
#line 82 "../src/model.vala"
	_tmp1_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 82 "../src/model.vala"
	self->files = _tmp1_;
#line 83 "../src/model.vala"
	_tmp2_ = gee_array_list_new (G_TYPE_INT, NULL, NULL, NULL, NULL, NULL);
#line 83 "../src/model.vala"
	self->lines = _tmp2_;
#line 1035 "model.c"
}

static void
resolved_source_finalize (GObject * obj)
{
	ResolvedSource * self;
#line 80 "../src/model.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_RESOLVED_SOURCE, ResolvedSource);
#line 81 "../src/model.vala"
	_g_free0 (self->source);
#line 82 "../src/model.vala"
	_g_object_unref0 (self->files);
#line 83 "../src/model.vala"
	_g_object_unref0 (self->lines);
#line 80 "../src/model.vala"
	G_OBJECT_CLASS (resolved_source_parent_class)->finalize (obj);
#line 1052 "model.c"
}

static GType
resolved_source_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (ResolvedSourceClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) resolved_source_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ResolvedSource), 0, (GInstanceInitFunc) resolved_source_instance_init, NULL };
	GType resolved_source_type_id;
	resolved_source_type_id = g_type_register_static (G_TYPE_OBJECT, "ResolvedSource", &g_define_type_info, 0);
	return resolved_source_type_id;
}

GType
resolved_source_get_type (void)
{
	static volatile gsize resolved_source_type_id__once = 0;
	if (g_once_init_enter (&resolved_source_type_id__once)) {
		GType resolved_source_type_id;
		resolved_source_type_id = resolved_source_get_type_once ();
		g_once_init_leave (&resolved_source_type_id__once, resolved_source_type_id);
	}
	return resolved_source_type_id__once;
}

Statements*
statements_construct (GType object_type)
{
	Statements * self = NULL;
#line 86 "../src/model.vala"
	self = (Statements*) g_object_new (object_type, NULL);
#line 86 "../src/model.vala"
	return self;
#line 1084 "model.c"
}

Statements*
statements_new (void)
{
#line 86 "../src/model.vala"
	return statements_construct (TYPE_STATEMENTS);
#line 1092 "model.c"
}

static void
statements_class_init (StatementsClass * klass,
                       gpointer klass_data)
{
#line 86 "../src/model.vala"
	statements_parent_class = g_type_class_peek_parent (klass);
#line 86 "../src/model.vala"
	G_OBJECT_CLASS (klass)->finalize = statements_finalize;
#line 1103 "model.c"
}

static void
statements_instance_init (Statements * self,
                          gpointer klass)
{
	GeeArrayList* _tmp0_;
	GeeArrayList* _tmp1_;
	GeeArrayList* _tmp2_;
#line 87 "../src/model.vala"
	_tmp0_ = gee_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, NULL, NULL, NULL);
#line 87 "../src/model.vala"
	self->texts = _tmp0_;
#line 88 "../src/model.vala"
	_tmp1_ = gee_array_list_new (G_TYPE_INT, NULL, NULL, NULL, NULL, NULL);
#line 88 "../src/model.vala"
	self->lines = _tmp1_;
#line 89 "../src/model.vala"
	_tmp2_ = gee_array_list_new (G_TYPE_INT, NULL, NULL, NULL, NULL, NULL);
#line 89 "../src/model.vala"
	self->columns = _tmp2_;
#line 1125 "model.c"
}

static void
statements_finalize (GObject * obj)
{
	Statements * self;
#line 86 "../src/model.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_STATEMENTS, Statements);
#line 87 "../src/model.vala"
	_g_object_unref0 (self->texts);
#line 88 "../src/model.vala"
	_g_object_unref0 (self->lines);
#line 89 "../src/model.vala"
	_g_object_unref0 (self->columns);
#line 86 "../src/model.vala"
	G_OBJECT_CLASS (statements_parent_class)->finalize (obj);
#line 1142 "model.c"
}

static GType
statements_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (StatementsClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) statements_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Statements), 0, (GInstanceInitFunc) statements_instance_init, NULL };
	GType statements_type_id;
	statements_type_id = g_type_register_static (G_TYPE_OBJECT, "Statements", &g_define_type_info, 0);
	return statements_type_id;
}

GType
statements_get_type (void)
{
	static volatile gsize statements_type_id__once = 0;
	if (g_once_init_enter (&statements_type_id__once)) {
		GType statements_type_id;
		statements_type_id = statements_get_type_once ();
		g_once_init_leave (&statements_type_id__once, statements_type_id);
	}
	return statements_type_id__once;
}

