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

/* -*- Mode: vala; indent-tabs-mode: t; c-basic-offset: 2; tab-width: 2 -*- */

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

#define TYPE_SERIALIZABLE_TOMATO (serializable_tomato_get_type ())
#define SERIALIZABLE_TOMATO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SERIALIZABLE_TOMATO, SerializableTomato))
#define SERIALIZABLE_TOMATO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SERIALIZABLE_TOMATO, SerializableTomatoClass))
#define IS_SERIALIZABLE_TOMATO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SERIALIZABLE_TOMATO))
#define IS_SERIALIZABLE_TOMATO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SERIALIZABLE_TOMATO))
#define SERIALIZABLE_TOMATO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SERIALIZABLE_TOMATO, SerializableTomatoClass))

typedef struct _SerializableTomato SerializableTomato;
typedef struct _SerializableTomatoClass SerializableTomatoClass;
typedef struct _SerializableTomatoPrivate SerializableTomatoPrivate;
enum  {
	SERIALIZABLE_TOMATO_0_PROPERTY,
	SERIALIZABLE_TOMATO_HEIGHT_PROPERTY,
	SERIALIZABLE_TOMATO_DESCRIPTION_PROPERTY,
	SERIALIZABLE_TOMATO_NUM_PROPERTIES
};
static GParamSpec* serializable_tomato_properties[SERIALIZABLE_TOMATO_NUM_PROPERTIES];
#define _g_free0(var) (var = (g_free (var), NULL))

#define TYPE_SERIALIZABLE_CAPSICUM (serializable_capsicum_get_type ())
#define SERIALIZABLE_CAPSICUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SERIALIZABLE_CAPSICUM, SerializableCapsicum))
#define SERIALIZABLE_CAPSICUM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SERIALIZABLE_CAPSICUM, SerializableCapsicumClass))
#define IS_SERIALIZABLE_CAPSICUM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SERIALIZABLE_CAPSICUM))
#define IS_SERIALIZABLE_CAPSICUM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SERIALIZABLE_CAPSICUM))
#define SERIALIZABLE_CAPSICUM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SERIALIZABLE_CAPSICUM, SerializableCapsicumClass))

typedef struct _SerializableCapsicum SerializableCapsicum;
typedef struct _SerializableCapsicumClass SerializableCapsicumClass;
typedef struct _SerializableCapsicumPrivate SerializableCapsicumPrivate;
enum  {
	SERIALIZABLE_CAPSICUM_0_PROPERTY,
	SERIALIZABLE_CAPSICUM_HEIGHT_PROPERTY,
	SERIALIZABLE_CAPSICUM_RATINGS_PROPERTY,
	SERIALIZABLE_CAPSICUM_NUM_PROPERTIES
};
static GParamSpec* serializable_capsicum_properties[SERIALIZABLE_CAPSICUM_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))

#define TYPE_SERIALIZABLE_BANANA (serializable_banana_get_type ())
#define SERIALIZABLE_BANANA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SERIALIZABLE_BANANA, SerializableBanana))
#define SERIALIZABLE_BANANA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SERIALIZABLE_BANANA, SerializableBananaClass))
#define IS_SERIALIZABLE_BANANA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SERIALIZABLE_BANANA))
#define IS_SERIALIZABLE_BANANA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SERIALIZABLE_BANANA))
#define SERIALIZABLE_BANANA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SERIALIZABLE_BANANA, SerializableBananaClass))

typedef struct _SerializableBanana SerializableBanana;
typedef struct _SerializableBananaClass SerializableBananaClass;
typedef struct _SerializableBananaPrivate SerializableBananaPrivate;
enum  {
	SERIALIZABLE_BANANA_0_PROPERTY,
	SERIALIZABLE_BANANA_PUBLIC_PROPERTY_PROPERTY,
	SERIALIZABLE_BANANA_NUM_PROPERTIES
};
static GParamSpec* serializable_banana_properties[SERIALIZABLE_BANANA_NUM_PROPERTIES];
#define _g_param_spec_unref0(var) ((var == NULL) ? NULL : (var = (g_param_spec_unref (var), NULL)))

#define TYPE_GXML_TEST (gxml_test_get_type ())
#define GXML_TEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GXML_TEST, GXmlTest))
#define GXML_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GXML_TEST, GXmlTestClass))
#define IS_GXML_TEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GXML_TEST))
#define IS_GXML_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GXML_TEST))
#define GXML_TEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_GXML_TEST, GXmlTestClass))

typedef struct _GXmlTest GXmlTest;
typedef struct _GXmlTestClass GXmlTestClass;
typedef struct _GXmlTestPrivate GXmlTestPrivate;

#define TYPE_SERIALIZABLE_TEST (serializable_test_get_type ())
#define SERIALIZABLE_TEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_SERIALIZABLE_TEST, SerializableTest))
#define SERIALIZABLE_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_SERIALIZABLE_TEST, SerializableTestClass))
#define IS_SERIALIZABLE_TEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_SERIALIZABLE_TEST))
#define IS_SERIALIZABLE_TEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_SERIALIZABLE_TEST))
#define SERIALIZABLE_TEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_SERIALIZABLE_TEST, SerializableTestClass))

typedef struct _SerializableTest SerializableTest;
typedef struct _SerializableTestClass SerializableTestClass;
typedef struct _SerializableTestPrivate SerializableTestPrivate;
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
#define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);
#define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; }
#define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; }
#define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg);

struct _SerializableTomato {
	GXmlSerializableObjectModel parent_instance;
	SerializableTomatoPrivate * priv;
	gint weight;
};

struct _SerializableTomatoClass {
	GXmlSerializableObjectModelClass parent_class;
};

struct _SerializableTomatoPrivate {
	gint _age;
	gint _height;
	gchar* _description;
};

struct _SerializableCapsicum {
	GXmlSerializableObjectModel parent_instance;
	SerializableCapsicumPrivate * priv;
	gint weight;
};

struct _SerializableCapsicumClass {
	GXmlSerializableObjectModelClass parent_class;
};

struct _SerializableCapsicumPrivate {
	gint _age;
	gint _height;
	GList* _ratings;
};

struct _SerializableBanana {
	GXmlSerializableObjectModel parent_instance;
	SerializableBananaPrivate * priv;
	gint public_field;
};

struct _SerializableBananaClass {
	GXmlSerializableObjectModelClass parent_class;
};

struct _SerializableBananaPrivate {
	gint private_field;
	gint _private_property;
	gint _public_property;
};

struct _GXmlTest {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GXmlTestPrivate * priv;
};

struct _GXmlTestClass {
	GTypeClass parent_class;
	void (*finalize) (GXmlTest *self);
};

struct _SerializableTest {
	GXmlTest parent_instance;
	SerializableTestPrivate * priv;
};

struct _SerializableTestClass {
	GXmlTestClass parent_class;
};

static gint SerializableTomato_private_offset;
static gpointer serializable_tomato_parent_class = NULL;
static gint SerializableCapsicum_private_offset;
static gpointer serializable_capsicum_parent_class = NULL;
static gint SerializableBanana_private_offset;
static gpointer serializable_banana_parent_class = NULL;
static gpointer serializable_test_parent_class = NULL;

GType serializable_tomato_get_type (void) G_GNUC_CONST;
SerializableTomato* serializable_tomato_new (gint weight,
                                             gint age,
                                             gint height,
                                             const gchar* description);
SerializableTomato* serializable_tomato_construct (GType object_type,
                                                   gint weight,
                                                   gint age,
                                                   gint height,
                                                   const gchar* description);
static void serializable_tomato_set_age (SerializableTomato* self,
                                  gint value);
void serializable_tomato_set_height (SerializableTomato* self,
                                     gint value);
void serializable_tomato_set_description (SerializableTomato* self,
                                          const gchar* value);
static gchar* serializable_tomato_real_node_name (GXmlSerializableObjectModel* base);
static gchar* serializable_tomato_real_to_string (GXmlSerializableObjectModel* base);
static gint serializable_tomato_get_age (SerializableTomato* self);
gint serializable_tomato_get_height (SerializableTomato* self);
const gchar* serializable_tomato_get_description (SerializableTomato* self);
gboolean serializable_tomato_equals (SerializableTomato* a,
                                     SerializableTomato* b);
static void serializable_tomato_finalize (GObject * obj);
static void _vala_serializable_tomato_get_property (GObject * object,
                                             guint property_id,
                                             GValue * value,
                                             GParamSpec * pspec);
static void _vala_serializable_tomato_set_property (GObject * object,
                                             guint property_id,
                                             const GValue * value,
                                             GParamSpec * pspec);
GType serializable_capsicum_get_type (void) G_GNUC_CONST;
static gchar* serializable_capsicum_real_node_name (GXmlSerializableObjectModel* base);
static gchar* serializable_capsicum_real_to_string (GXmlSerializableObjectModel* base);
static gint serializable_capsicum_get_age (SerializableCapsicum* self);
gint serializable_capsicum_get_height (SerializableCapsicum* self);
GList* serializable_capsicum_get_ratings (SerializableCapsicum* self);
SerializableCapsicum* serializable_capsicum_new (gint weight,
                                                 gint age,
                                                 gint height,
                                                 GList* ratings);
SerializableCapsicum* serializable_capsicum_construct (GType object_type,
                                                       gint weight,
                                                       gint age,
                                                       gint height,
                                                       GList* ratings);
static void serializable_capsicum_set_age (SerializableCapsicum* self,
                                    gint value);
void serializable_capsicum_set_height (SerializableCapsicum* self,
                                       gint value);
void serializable_capsicum_set_ratings (SerializableCapsicum* self,
                                        GList* value);
static void serializable_capsicum_serialize_unknown_property_type (SerializableCapsicum* self,
                                                            GXmlNode* elem,
                                                            GParamSpec* prop,
                                                            GXmlNode* * node);
static void _serializable_capsicum_serialize_unknown_property_type_gxml_serializable_serialize_unknown_property_type (GXmlSerializable* _sender,
                                                                                                               GXmlNode* element,
                                                                                                               GParamSpec* prop,
                                                                                                               GXmlNode* * node,
                                                                                                               gpointer self);
void serializable_capsicum_deserialize_unknown_property_type (SerializableCapsicum* self,
                                                              GXmlNode* elem,
                                                              GParamSpec* prop);
static void _serializable_capsicum_deserialize_unknown_property_type_gxml_serializable_deserialize_unknown_property_type (GXmlSerializable* _sender,
                                                                                                                   GXmlNode* node,
                                                                                                                   GParamSpec* prop,
                                                                                                                   gpointer self);
static void serializable_capsicum_finalize (GObject * obj);
static void _vala_serializable_capsicum_get_property (GObject * object,
                                               guint property_id,
                                               GValue * value,
                                               GParamSpec * pspec);
static void _vala_serializable_capsicum_set_property (GObject * object,
                                               guint property_id,
                                               const GValue * value,
                                               GParamSpec * pspec);
GType serializable_banana_get_type (void) G_GNUC_CONST;
SerializableBanana* serializable_banana_new (gint private_field,
                                             gint public_field,
                                             gint private_property,
                                             gint public_property);
SerializableBanana* serializable_banana_construct (GType object_type,
                                                   gint private_field,
                                                   gint public_field,
                                                   gint private_property,
                                                   gint public_property);
static void serializable_banana_set_private_property (SerializableBanana* self,
                                               gint value);
void serializable_banana_set_public_property (SerializableBanana* self,
                                              gint value);
static gboolean serializable_banana_real_property_use_nick (GXmlSerializableObjectModel* base);
static gchar* serializable_banana_real_node_name (GXmlSerializableObjectModel* base);
static gchar* serializable_banana_real_to_string (GXmlSerializableObjectModel* base);
static gint serializable_banana_get_private_property (SerializableBanana* self);
gint serializable_banana_get_public_property (SerializableBanana* self);
gboolean serializable_banana_equals (SerializableBanana* a,
                                     SerializableBanana* b);
static GParamSpec** serializable_banana_real_list_serializable_properties (GXmlSerializableObjectModel* base,
                                                                    gint* result_length1);
void serializable_banana_get_property_value (SerializableBanana* self,
                                             GParamSpec* spec,
                                             GValue* val);
void serializable_banana_set_property_value (SerializableBanana* self,
                                             GParamSpec* spec,
                                             GValue* val);
static void serializable_banana_finalize (GObject * obj);
static void _vala_serializable_banana_get_property (GObject * object,
                                             guint property_id,
                                             GValue * value,
                                             GParamSpec * pspec);
static void _vala_serializable_banana_set_property (GObject * object,
                                             guint property_id,
                                             const GValue * value,
                                             GParamSpec * pspec);
gpointer gxml_test_ref (gpointer instance);
void gxml_test_unref (gpointer instance);
GParamSpec* param_spec_gxml_test (const gchar* name,
                                  const gchar* nick,
                                  const gchar* blurb,
                                  GType object_type,
                                  GParamFlags flags);
void value_set_gxml_test (GValue* value,
                          gpointer v_object);
void value_take_gxml_test (GValue* value,
                           gpointer v_object);
gpointer value_get_gxml_test (const GValue* value);
GType gxml_test_get_type (void) G_GNUC_CONST;
GType serializable_test_get_type (void) G_GNUC_CONST;
void serializable_test_add_tests (void);
static void __lambda231_ (void);
static void ___lambda231__gtest_func (void);
static void __lambda232_ (void);
static void ___lambda232__gtest_func (void);
static void __lambda233_ (void);
static void ___lambda233__gtest_func (void);
SerializableTest* serializable_test_new (void);
SerializableTest* serializable_test_construct (GType object_type);
GXmlTest* gxml_test_new (void);
GXmlTest* gxml_test_construct (GType object_type);
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 inline gpointer
serializable_tomato_get_instance_private (SerializableTomato* self)
{
	return G_STRUCT_MEMBER_P (self, SerializableTomato_private_offset);
}

SerializableTomato*
serializable_tomato_construct (GType object_type,
                               gint weight,
                               gint age,
                               gint height,
                               const gchar* description)
{
	SerializableTomato * self = NULL;
#line 36 "SerializableTest.vala"
	g_return_val_if_fail (description != NULL, NULL);
#line 36 "SerializableTest.vala"
	self = (SerializableTomato*) gxml_serializable_object_model_construct (object_type);
#line 37 "SerializableTest.vala"
	self->weight = weight;
#line 38 "SerializableTest.vala"
	serializable_tomato_set_age (self, age);
#line 39 "SerializableTest.vala"
	serializable_tomato_set_height (self, height);
#line 40 "SerializableTest.vala"
	serializable_tomato_set_description (self, description);
#line 36 "SerializableTest.vala"
	return self;
#line 350 "SerializableTest.c"
}

SerializableTomato*
serializable_tomato_new (gint weight,
                         gint age,
                         gint height,
                         const gchar* description)
{
#line 36 "SerializableTest.vala"
	return serializable_tomato_construct (TYPE_SERIALIZABLE_TOMATO, weight, age, height, description);
#line 361 "SerializableTest.c"
}

static gchar*
serializable_tomato_real_node_name (GXmlSerializableObjectModel* base)
{
	SerializableTomato * self;
	gchar* result = NULL;
	gchar* _tmp0_;
#line 42 "SerializableTest.vala"
	self = (SerializableTomato*) base;
#line 42 "SerializableTest.vala"
	_tmp0_ = g_strdup ("Tomato");
#line 42 "SerializableTest.vala"
	result = _tmp0_;
#line 42 "SerializableTest.vala"
	return result;
#line 378 "SerializableTest.c"
}

static gchar*
serializable_tomato_real_to_string (GXmlSerializableObjectModel* base)
{
	SerializableTomato * self;
	gchar* result = NULL;
	gint _tmp0_;
	gint _tmp1_;
	const gchar* _tmp2_;
	gchar* _tmp3_;
#line 43 "SerializableTest.vala"
	self = (SerializableTomato*) base;
#line 44 "SerializableTest.vala"
	_tmp0_ = self->priv->_age;
#line 44 "SerializableTest.vala"
	_tmp1_ = self->priv->_height;
#line 44 "SerializableTest.vala"
	_tmp2_ = self->priv->_description;
#line 44 "SerializableTest.vala"
	_tmp3_ = g_strdup_printf ("SerializableTomato {weight:%d, age:%d, height:%d, description:%s}", self->weight, _tmp0_, _tmp1_, _tmp2_);
#line 44 "SerializableTest.vala"
	result = _tmp3_;
#line 44 "SerializableTest.vala"
	return result;
#line 404 "SerializableTest.c"
}

gboolean
serializable_tomato_equals (SerializableTomato* a,
                            SerializableTomato* b)
{
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean same = FALSE;
#line 47 "SerializableTest.vala"
	g_return_val_if_fail (a != NULL, FALSE);
#line 47 "SerializableTest.vala"
	g_return_val_if_fail (b != NULL, FALSE);
#line 48 "SerializableTest.vala"
	if (a->weight == b->weight) {
#line 422 "SerializableTest.c"
		gint _tmp3_;
		gint _tmp4_;
#line 49 "SerializableTest.vala"
		_tmp3_ = a->priv->_age;
#line 49 "SerializableTest.vala"
		_tmp4_ = b->priv->_age;
#line 49 "SerializableTest.vala"
		_tmp2_ = _tmp3_ == _tmp4_;
#line 431 "SerializableTest.c"
	} else {
#line 48 "SerializableTest.vala"
		_tmp2_ = FALSE;
#line 435 "SerializableTest.c"
	}
#line 48 "SerializableTest.vala"
	if (_tmp2_) {
#line 439 "SerializableTest.c"
		gint _tmp5_;
		gint _tmp6_;
#line 50 "SerializableTest.vala"
		_tmp5_ = a->priv->_height;
#line 50 "SerializableTest.vala"
		_tmp6_ = b->priv->_height;
#line 50 "SerializableTest.vala"
		_tmp1_ = _tmp5_ == _tmp6_;
#line 448 "SerializableTest.c"
	} else {
#line 48 "SerializableTest.vala"
		_tmp1_ = FALSE;
#line 452 "SerializableTest.c"
	}
#line 48 "SerializableTest.vala"
	if (_tmp1_) {
#line 456 "SerializableTest.c"
		const gchar* _tmp7_;
		const gchar* _tmp8_;
#line 51 "SerializableTest.vala"
		_tmp7_ = a->priv->_description;
#line 51 "SerializableTest.vala"
		_tmp8_ = b->priv->_description;
#line 51 "SerializableTest.vala"
		_tmp0_ = g_strcmp0 (_tmp7_, _tmp8_) == 0;
#line 465 "SerializableTest.c"
	} else {
#line 48 "SerializableTest.vala"
		_tmp0_ = FALSE;
#line 469 "SerializableTest.c"
	}
#line 48 "SerializableTest.vala"
	same = _tmp0_;
#line 52 "SerializableTest.vala"
	result = same;
#line 52 "SerializableTest.vala"
	return result;
#line 477 "SerializableTest.c"
}

static gint
serializable_tomato_get_age (SerializableTomato* self)
{
	gint result;
#line 32 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, 0);
#line 32 "SerializableTest.vala"
	result = self->priv->_age;
#line 32 "SerializableTest.vala"
	return result;
#line 490 "SerializableTest.c"
}

static void
serializable_tomato_set_age (SerializableTomato* self,
                             gint value)
{
#line 32 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 32 "SerializableTest.vala"
	self->priv->_age = value;
#line 501 "SerializableTest.c"
}

gint
serializable_tomato_get_height (SerializableTomato* self)
{
	gint result;
#line 33 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, 0);
#line 33 "SerializableTest.vala"
	result = self->priv->_height;
#line 33 "SerializableTest.vala"
	return result;
#line 514 "SerializableTest.c"
}

void
serializable_tomato_set_height (SerializableTomato* self,
                                gint value)
{
#line 33 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 33 "SerializableTest.vala"
	if (serializable_tomato_get_height (self) != value) {
#line 33 "SerializableTest.vala"
		self->priv->_height = value;
#line 33 "SerializableTest.vala"
		g_object_notify_by_pspec ((GObject *) self, serializable_tomato_properties[SERIALIZABLE_TOMATO_HEIGHT_PROPERTY]);
#line 529 "SerializableTest.c"
	}
}

const gchar*
serializable_tomato_get_description (SerializableTomato* self)
{
	const gchar* result;
	const gchar* _tmp0_;
#line 34 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 34 "SerializableTest.vala"
	_tmp0_ = self->priv->_description;
#line 34 "SerializableTest.vala"
	result = _tmp0_;
#line 34 "SerializableTest.vala"
	return result;
#line 546 "SerializableTest.c"
}

void
serializable_tomato_set_description (SerializableTomato* self,
                                     const gchar* value)
{
#line 34 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 34 "SerializableTest.vala"
	if (g_strcmp0 (value, serializable_tomato_get_description (self)) != 0) {
#line 557 "SerializableTest.c"
		gchar* _tmp0_;
#line 34 "SerializableTest.vala"
		_tmp0_ = g_strdup (value);
#line 34 "SerializableTest.vala"
		_g_free0 (self->priv->_description);
#line 34 "SerializableTest.vala"
		self->priv->_description = _tmp0_;
#line 34 "SerializableTest.vala"
		g_object_notify_by_pspec ((GObject *) self, serializable_tomato_properties[SERIALIZABLE_TOMATO_DESCRIPTION_PROPERTY]);
#line 567 "SerializableTest.c"
	}
}

static void
serializable_tomato_class_init (SerializableTomatoClass * klass,
                                gpointer klass_data)
{
#line 30 "SerializableTest.vala"
	serializable_tomato_parent_class = g_type_class_peek_parent (klass);
#line 30 "SerializableTest.vala"
	g_type_class_adjust_private_offset (klass, &SerializableTomato_private_offset);
#line 30 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->node_name = (gchar* (*) (GXmlSerializableObjectModel*)) serializable_tomato_real_node_name;
#line 30 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->to_string = (gchar* (*) (GXmlSerializableObjectModel*)) serializable_tomato_real_to_string;
#line 30 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_serializable_tomato_get_property;
#line 30 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_serializable_tomato_set_property;
#line 30 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->finalize = serializable_tomato_finalize;
#line 30 "SerializableTest.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SERIALIZABLE_TOMATO_HEIGHT_PROPERTY, serializable_tomato_properties[SERIALIZABLE_TOMATO_HEIGHT_PROPERTY] = g_param_spec_int ("height", "height", "height", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 30 "SerializableTest.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SERIALIZABLE_TOMATO_DESCRIPTION_PROPERTY, serializable_tomato_properties[SERIALIZABLE_TOMATO_DESCRIPTION_PROPERTY] = g_param_spec_string ("description", "description", "description", NULL, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 593 "SerializableTest.c"
}

static void
serializable_tomato_instance_init (SerializableTomato * self,
                                   gpointer klass)
{
#line 30 "SerializableTest.vala"
	self->priv = serializable_tomato_get_instance_private (self);
#line 602 "SerializableTest.c"
}

static void
serializable_tomato_finalize (GObject * obj)
{
	SerializableTomato * self;
#line 30 "SerializableTest.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SERIALIZABLE_TOMATO, SerializableTomato);
#line 34 "SerializableTest.vala"
	_g_free0 (self->priv->_description);
#line 30 "SerializableTest.vala"
	G_OBJECT_CLASS (serializable_tomato_parent_class)->finalize (obj);
#line 615 "SerializableTest.c"
}

/**
 *
 *  GXml.Serializable.SerializableTest
 *
 *  Authors:
 *
 *       Richard Schwarting <aquarichy@gmail.com>
 *       Daniel Espinosa <esodan@gmail.com>
 *
 *  Copyright (C) 2011-2013  Richard Schwarting <aquarichy@gmail.com>
 *  Copyright (c) 2013-2016 Daniel Espinosa <esodan@gmail.com>
 *
 *  This program 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 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program 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 program.  If not, see <http://www.gnu.org/licenses/>.
 */
GType
serializable_tomato_get_type (void)
{
	static volatile gsize serializable_tomato_type_id__volatile = 0;
	if (g_once_init_enter (&serializable_tomato_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SerializableTomatoClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) serializable_tomato_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SerializableTomato), 0, (GInstanceInitFunc) serializable_tomato_instance_init, NULL };
		GType serializable_tomato_type_id;
		serializable_tomato_type_id = g_type_register_static (GXML_TYPE_SERIALIZABLE_OBJECT_MODEL, "SerializableTomato", &g_define_type_info, 0);
		SerializableTomato_private_offset = g_type_add_instance_private (serializable_tomato_type_id, sizeof (SerializableTomatoPrivate));
		g_once_init_leave (&serializable_tomato_type_id__volatile, serializable_tomato_type_id);
	}
	return serializable_tomato_type_id__volatile;
}

static void
_vala_serializable_tomato_get_property (GObject * object,
                                        guint property_id,
                                        GValue * value,
                                        GParamSpec * pspec)
{
	SerializableTomato * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SERIALIZABLE_TOMATO, SerializableTomato);
#line 30 "SerializableTest.vala"
	switch (property_id) {
#line 30 "SerializableTest.vala"
		case SERIALIZABLE_TOMATO_HEIGHT_PROPERTY:
#line 30 "SerializableTest.vala"
		g_value_set_int (value, serializable_tomato_get_height (self));
#line 30 "SerializableTest.vala"
		break;
#line 30 "SerializableTest.vala"
		case SERIALIZABLE_TOMATO_DESCRIPTION_PROPERTY:
#line 30 "SerializableTest.vala"
		g_value_set_string (value, serializable_tomato_get_description (self));
#line 30 "SerializableTest.vala"
		break;
#line 679 "SerializableTest.c"
		default:
#line 30 "SerializableTest.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 30 "SerializableTest.vala"
		break;
#line 685 "SerializableTest.c"
	}
}

static void
_vala_serializable_tomato_set_property (GObject * object,
                                        guint property_id,
                                        const GValue * value,
                                        GParamSpec * pspec)
{
	SerializableTomato * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SERIALIZABLE_TOMATO, SerializableTomato);
#line 30 "SerializableTest.vala"
	switch (property_id) {
#line 30 "SerializableTest.vala"
		case SERIALIZABLE_TOMATO_HEIGHT_PROPERTY:
#line 30 "SerializableTest.vala"
		serializable_tomato_set_height (self, g_value_get_int (value));
#line 30 "SerializableTest.vala"
		break;
#line 30 "SerializableTest.vala"
		case SERIALIZABLE_TOMATO_DESCRIPTION_PROPERTY:
#line 30 "SerializableTest.vala"
		serializable_tomato_set_description (self, g_value_get_string (value));
#line 30 "SerializableTest.vala"
		break;
#line 711 "SerializableTest.c"
		default:
#line 30 "SerializableTest.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 30 "SerializableTest.vala"
		break;
#line 717 "SerializableTest.c"
	}
}

static inline gpointer
serializable_capsicum_get_instance_private (SerializableCapsicum* self)
{
	return G_STRUCT_MEMBER_P (self, SerializableCapsicum_private_offset);
}

static gchar*
serializable_capsicum_real_node_name (GXmlSerializableObjectModel* base)
{
	SerializableCapsicum * self;
	gchar* result = NULL;
	gchar* _tmp0_;
#line 62 "SerializableTest.vala"
	self = (SerializableCapsicum*) base;
#line 62 "SerializableTest.vala"
	_tmp0_ = g_strdup ("Capsicum");
#line 62 "SerializableTest.vala"
	result = _tmp0_;
#line 62 "SerializableTest.vala"
	return result;
#line 741 "SerializableTest.c"
}

static gchar*
serializable_capsicum_real_to_string (GXmlSerializableObjectModel* base)
{
	SerializableCapsicum * self;
	gchar* result = NULL;
	gchar* str = NULL;
	gint _tmp0_;
	gint _tmp1_;
	gchar* _tmp2_;
	GList* _tmp3_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
#line 63 "SerializableTest.vala"
	self = (SerializableCapsicum*) base;
#line 64 "SerializableTest.vala"
	_tmp0_ = self->priv->_age;
#line 64 "SerializableTest.vala"
	_tmp1_ = self->priv->_height;
#line 64 "SerializableTest.vala"
	_tmp2_ = g_strdup_printf ("SerializableCapsicum {weight:%d, age:%d, height:%d, ratings:", self->weight, _tmp0_, _tmp1_);
#line 64 "SerializableTest.vala"
	str = _tmp2_;
#line 65 "SerializableTest.vala"
	_tmp3_ = self->priv->_ratings;
#line 768 "SerializableTest.c"
	{
		GList* rating_collection = NULL;
		GList* rating_it = NULL;
#line 65 "SerializableTest.vala"
		rating_collection = _tmp3_;
#line 65 "SerializableTest.vala"
		for (rating_it = rating_collection; rating_it != NULL; rating_it = rating_it->next) {
#line 776 "SerializableTest.c"
			gint rating = 0;
#line 65 "SerializableTest.vala"
			rating = (gint) ((gintptr) rating_it->data);
#line 780 "SerializableTest.c"
			{
				const gchar* _tmp4_;
				gchar* _tmp5_;
				gchar* _tmp6_;
				gchar* _tmp7_;
#line 66 "SerializableTest.vala"
				_tmp4_ = str;
#line 66 "SerializableTest.vala"
				_tmp5_ = g_strdup_printf ("%d ", rating);
#line 66 "SerializableTest.vala"
				_tmp6_ = _tmp5_;
#line 66 "SerializableTest.vala"
				_tmp7_ = g_strconcat (_tmp4_, _tmp6_, NULL);
#line 66 "SerializableTest.vala"
				_g_free0 (str);
#line 66 "SerializableTest.vala"
				str = _tmp7_;
#line 66 "SerializableTest.vala"
				_g_free0 (_tmp6_);
#line 800 "SerializableTest.c"
			}
		}
	}
#line 68 "SerializableTest.vala"
	_tmp8_ = str;
#line 68 "SerializableTest.vala"
	_tmp9_ = g_strconcat (_tmp8_, "}", NULL);
#line 68 "SerializableTest.vala"
	_g_free0 (str);
#line 68 "SerializableTest.vala"
	str = _tmp9_;
#line 69 "SerializableTest.vala"
	result = str;
#line 69 "SerializableTest.vala"
	return result;
#line 816 "SerializableTest.c"
}

static void
_serializable_capsicum_serialize_unknown_property_type_gxml_serializable_serialize_unknown_property_type (GXmlSerializable* _sender,
                                                                                                          GXmlNode* element,
                                                                                                          GParamSpec* prop,
                                                                                                          GXmlNode* * node,
                                                                                                          gpointer self)
{
#line 77 "SerializableTest.vala"
	serializable_capsicum_serialize_unknown_property_type ((SerializableCapsicum*) self, element, prop, node);
#line 828 "SerializableTest.c"
}

static void
_serializable_capsicum_deserialize_unknown_property_type_gxml_serializable_deserialize_unknown_property_type (GXmlSerializable* _sender,
                                                                                                              GXmlNode* node,
                                                                                                              GParamSpec* prop,
                                                                                                              gpointer self)
{
#line 78 "SerializableTest.vala"
	serializable_capsicum_deserialize_unknown_property_type ((SerializableCapsicum*) self, node, prop);
#line 839 "SerializableTest.c"
}

SerializableCapsicum*
serializable_capsicum_construct (GType object_type,
                                 gint weight,
                                 gint age,
                                 gint height,
                                 GList* ratings)
{
	SerializableCapsicum * self = NULL;
#line 72 "SerializableTest.vala"
	self = (SerializableCapsicum*) gxml_serializable_object_model_construct (object_type);
#line 73 "SerializableTest.vala"
	self->weight = weight;
#line 74 "SerializableTest.vala"
	serializable_capsicum_set_age (self, age);
#line 75 "SerializableTest.vala"
	serializable_capsicum_set_height (self, height);
#line 76 "SerializableTest.vala"
	serializable_capsicum_set_ratings (self, ratings);
#line 77 "SerializableTest.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (self, GXML_TYPE_SERIALIZABLE, GXmlSerializable), "serialize-unknown-property-type", (GCallback) _serializable_capsicum_serialize_unknown_property_type_gxml_serializable_serialize_unknown_property_type, self, 0);
#line 78 "SerializableTest.vala"
	g_signal_connect_object (G_TYPE_CHECK_INSTANCE_CAST (self, GXML_TYPE_SERIALIZABLE, GXmlSerializable), "deserialize-unknown-property-type", (GCallback) _serializable_capsicum_deserialize_unknown_property_type_gxml_serializable_deserialize_unknown_property_type, self, 0);
#line 72 "SerializableTest.vala"
	return self;
#line 866 "SerializableTest.c"
}

SerializableCapsicum*
serializable_capsicum_new (gint weight,
                           gint age,
                           gint height,
                           GList* ratings)
{
#line 72 "SerializableTest.vala"
	return serializable_capsicum_construct (TYPE_SERIALIZABLE_CAPSICUM, weight, age, height, ratings);
#line 877 "SerializableTest.c"
}

static gpointer
_g_object_ref0 (gpointer self)
{
#line 87 "SerializableTest.vala"
	return self ? g_object_ref (self) : NULL;
#line 885 "SerializableTest.c"
}

static gboolean
int64_try_parse (const gchar* str,
                 gint64* _result_,
                 const gchar* * unparsed)
{
	gint64 _vala__result_ = 0LL;
	const gchar* _vala_unparsed = NULL;
	gboolean result = FALSE;
	gchar* endptr = NULL;
	gchar* _tmp0_ = NULL;
	gint64 _tmp1_;
	gchar* _tmp2_;
	gint _tmp3_;
	gint _tmp4_;
#line 727 "glib-2.0.vapi"
	g_return_val_if_fail (str != NULL, FALSE);
#line 729 "glib-2.0.vapi"
	_tmp1_ = g_ascii_strtoll (str, &_tmp0_, (guint) 0);
#line 729 "glib-2.0.vapi"
	endptr = _tmp0_;
#line 729 "glib-2.0.vapi"
	_vala__result_ = _tmp1_;
#line 730 "glib-2.0.vapi"
	_tmp2_ = endptr;
#line 730 "glib-2.0.vapi"
	_tmp3_ = strlen (str);
#line 730 "glib-2.0.vapi"
	_tmp4_ = _tmp3_;
#line 730 "glib-2.0.vapi"
	if (_tmp2_ == (((gchar*) str) + _tmp4_)) {
#line 731 "glib-2.0.vapi"
		_vala_unparsed = "";
#line 732 "glib-2.0.vapi"
		result = TRUE;
#line 732 "glib-2.0.vapi"
		if (_result_) {
#line 732 "glib-2.0.vapi"
			*_result_ = _vala__result_;
#line 926 "SerializableTest.c"
		}
#line 732 "glib-2.0.vapi"
		if (unparsed) {
#line 732 "glib-2.0.vapi"
			*unparsed = _vala_unparsed;
#line 932 "SerializableTest.c"
		}
#line 732 "glib-2.0.vapi"
		return result;
#line 936 "SerializableTest.c"
	} else {
		gchar* _tmp5_;
#line 734 "glib-2.0.vapi"
		_tmp5_ = endptr;
#line 734 "glib-2.0.vapi"
		_vala_unparsed = (const gchar*) _tmp5_;
#line 735 "glib-2.0.vapi"
		result = FALSE;
#line 735 "glib-2.0.vapi"
		if (_result_) {
#line 735 "glib-2.0.vapi"
			*_result_ = _vala__result_;
#line 949 "SerializableTest.c"
		}
#line 735 "glib-2.0.vapi"
		if (unparsed) {
#line 735 "glib-2.0.vapi"
			*unparsed = _vala_unparsed;
#line 955 "SerializableTest.c"
		}
#line 735 "glib-2.0.vapi"
		return result;
#line 959 "SerializableTest.c"
	}
#line 727 "glib-2.0.vapi"
	if (_result_) {
#line 727 "glib-2.0.vapi"
		*_result_ = _vala__result_;
#line 965 "SerializableTest.c"
	}
#line 727 "glib-2.0.vapi"
	if (unparsed) {
#line 727 "glib-2.0.vapi"
		*unparsed = _vala_unparsed;
#line 971 "SerializableTest.c"
	}
}

void
serializable_capsicum_deserialize_unknown_property_type (SerializableCapsicum* self,
                                                         GXmlNode* elem,
                                                         GParamSpec* prop)
{
	GXmlNode* element = NULL;
	GXmlNode* _tmp0_;
	GValue outvalue = {0};
	GValue _tmp1_ = {0};
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	GQuark _tmp5_ = 0U;
#line 89 "SerializableTest.vala"
	static GQuark _tmp4_label0 = 0;
#line 85 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 85 "SerializableTest.vala"
	g_return_if_fail (elem != NULL);
#line 85 "SerializableTest.vala"
	g_return_if_fail (prop != NULL);
#line 87 "SerializableTest.vala"
	_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (elem, GXML_TYPE_NODE, GXmlNode));
#line 87 "SerializableTest.vala"
	element = _tmp0_;
#line 88 "SerializableTest.vala"
	g_value_init (&_tmp1_, G_TYPE_INT);
#line 88 "SerializableTest.vala"
	outvalue = _tmp1_;
#line 89 "SerializableTest.vala"
	_tmp2_ = prop->name;
#line 89 "SerializableTest.vala"
	_tmp3_ = _tmp2_;
#line 89 "SerializableTest.vala"
	_tmp5_ = (NULL == _tmp3_) ? 0 : g_quark_from_string (_tmp3_);
#line 89 "SerializableTest.vala"
	if (_tmp5_ == ((0 != _tmp4_label0) ? _tmp4_label0 : (_tmp4_label0 = g_quark_from_static_string ("ratings")))) {
#line 89 "SerializableTest.vala"
		switch (0) {
#line 1013 "SerializableTest.c"
			default:
			{
				GList* _tmp6_;
#line 91 "SerializableTest.vala"
				_tmp6_ = NULL;
#line 91 "SerializableTest.vala"
				serializable_capsicum_set_ratings (self, _tmp6_);
#line 91 "SerializableTest.vala"
				(_tmp6_ == NULL) ? NULL : (_tmp6_ = (g_list_free (_tmp6_), NULL));
#line 1023 "SerializableTest.c"
				{
					GeeBidirList* _rating_list = NULL;
					GeeBidirList* _tmp7_;
					GeeBidirList* _tmp8_;
					gint _rating_size = 0;
					GeeBidirList* _tmp9_;
					gint _tmp10_;
					gint _tmp11_;
					gint _rating_index = 0;
#line 92 "SerializableTest.vala"
					_tmp7_ = gxml_node_get_children_nodes (element);
#line 92 "SerializableTest.vala"
					_tmp8_ = _tmp7_;
#line 92 "SerializableTest.vala"
					_rating_list = _tmp8_;
#line 92 "SerializableTest.vala"
					_tmp9_ = _rating_list;
#line 92 "SerializableTest.vala"
					_tmp10_ = gee_collection_get_size ((GeeCollection*) _tmp9_);
#line 92 "SerializableTest.vala"
					_tmp11_ = _tmp10_;
#line 92 "SerializableTest.vala"
					_rating_size = _tmp11_;
#line 92 "SerializableTest.vala"
					_rating_index = -1;
#line 92 "SerializableTest.vala"
					while (TRUE) {
#line 1051 "SerializableTest.c"
						GXmlNode* rating = NULL;
						GeeBidirList* _tmp12_;
						gpointer _tmp13_;
						GXmlNode* _tmp14_;
						gchar* _tmp15_;
						gchar* _tmp16_;
						gchar* _tmp17_;
						gint64 _tmp18_ = 0LL;
						GValue _tmp19_ = {0};
						GList* _tmp20_;
#line 92 "SerializableTest.vala"
						_rating_index = _rating_index + 1;
#line 92 "SerializableTest.vala"
						if (!(_rating_index < _rating_size)) {
#line 92 "SerializableTest.vala"
							break;
#line 1068 "SerializableTest.c"
						}
#line 92 "SerializableTest.vala"
						_tmp12_ = _rating_list;
#line 92 "SerializableTest.vala"
						_tmp13_ = gee_list_get ((GeeList*) _tmp12_, _rating_index);
#line 92 "SerializableTest.vala"
						rating = (GXmlNode*) _tmp13_;
#line 93 "SerializableTest.vala"
						_tmp14_ = rating;
#line 93 "SerializableTest.vala"
						_tmp15_ = gxml_element_get_content ((GXmlElement*) G_TYPE_CHECK_INSTANCE_CAST (_tmp14_, GXML_TYPE_GELEMENT, GXmlGElement));
#line 93 "SerializableTest.vala"
						_tmp16_ = _tmp15_;
#line 93 "SerializableTest.vala"
						_tmp17_ = _tmp16_;
#line 93 "SerializableTest.vala"
						int64_try_parse (_tmp17_, &_tmp18_, NULL);
#line 93 "SerializableTest.vala"
						G_IS_VALUE (&outvalue) ? (g_value_unset (&outvalue), NULL) : NULL;
#line 93 "SerializableTest.vala"
						g_value_init (&_tmp19_, G_TYPE_INT64);
#line 93 "SerializableTest.vala"
						g_value_set_int64 (&_tmp19_, _tmp18_);
#line 93 "SerializableTest.vala"
						outvalue = _tmp19_;
#line 93 "SerializableTest.vala"
						_g_free0 (_tmp17_);
#line 94 "SerializableTest.vala"
						_tmp20_ = self->priv->_ratings;
#line 94 "SerializableTest.vala"
						serializable_capsicum_set_ratings (self, g_list_append (_tmp20_, (gpointer) ((gintptr) ((gint) g_value_get_int64 (&outvalue)))));
#line 92 "SerializableTest.vala"
						_g_object_unref0 (rating);
#line 1102 "SerializableTest.c"
					}
#line 92 "SerializableTest.vala"
					_g_object_unref0 (_rating_list);
#line 1106 "SerializableTest.c"
				}
#line 96 "SerializableTest.vala"
				break;
#line 1110 "SerializableTest.c"
			}
		}
	} else {
#line 89 "SerializableTest.vala"
		switch (0) {
#line 1116 "SerializableTest.c"
			default:
			{
				const gchar* _tmp21_;
#line 98 "SerializableTest.vala"
				_tmp21_ = prop->name;
#line 98 "SerializableTest.vala"
				g_test_message ("Wasn't expecting the SerializableCapsicum property '%s'", _tmp21_);
#line 99 "SerializableTest.vala"
				g_assert_not_reached ();
#line 1126 "SerializableTest.c"
			}
		}
	}
#line 85 "SerializableTest.vala"
	G_IS_VALUE (&outvalue) ? (g_value_unset (&outvalue), NULL) : NULL;
#line 85 "SerializableTest.vala"
	_g_object_unref0 (element);
#line 1134 "SerializableTest.c"
}

static void
serializable_capsicum_serialize_unknown_property_type (SerializableCapsicum* self,
                                                       GXmlNode* elem,
                                                       GParamSpec* prop,
                                                       GXmlNode* * node)
{
	GXmlNode* _vala_node = NULL;
	GError* _inner_error0_ = NULL;
#line 102 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 102 "SerializableTest.vala"
	g_return_if_fail (elem != NULL);
#line 102 "SerializableTest.vala"
	g_return_if_fail (prop != NULL);
#line 104 "SerializableTest.vala"
	_g_object_unref0 (_vala_node);
#line 104 "SerializableTest.vala"
	_vala_node = NULL;
#line 1155 "SerializableTest.c"
	{
		GXmlGElement* element = NULL;
		GXmlGElement* _tmp0_;
		GXmlDocument* doc = NULL;
		GXmlDocument* _tmp1_;
		GXmlDocument* _tmp2_;
		GXmlDocument* _tmp3_;
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		GQuark _tmp7_ = 0U;
#line 108 "SerializableTest.vala"
		static GQuark _tmp6_label0 = 0;
#line 106 "SerializableTest.vala"
		_tmp0_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (elem, GXML_TYPE_GELEMENT, GXmlGElement));
#line 106 "SerializableTest.vala"
		element = _tmp0_;
#line 107 "SerializableTest.vala"
		_tmp1_ = gxml_gnode_get_document ((GXmlGNode*) element);
#line 107 "SerializableTest.vala"
		_tmp2_ = _tmp1_;
#line 107 "SerializableTest.vala"
		_tmp3_ = _g_object_ref0 (_tmp2_);
#line 107 "SerializableTest.vala"
		doc = _tmp3_;
#line 108 "SerializableTest.vala"
		_tmp4_ = prop->name;
#line 108 "SerializableTest.vala"
		_tmp5_ = _tmp4_;
#line 108 "SerializableTest.vala"
		_tmp7_ = (NULL == _tmp5_) ? 0 : g_quark_from_string (_tmp5_);
#line 108 "SerializableTest.vala"
		if (_tmp7_ == ((0 != _tmp6_label0) ? _tmp6_label0 : (_tmp6_label0 = g_quark_from_static_string ("ratings")))) {
#line 108 "SerializableTest.vala"
			switch (0) {
#line 1190 "SerializableTest.c"
				default:
				{
					GList* _tmp8_;
#line 110 "SerializableTest.vala"
					_tmp8_ = self->priv->_ratings;
#line 1196 "SerializableTest.c"
					{
						GList* rating_int_collection = NULL;
						GList* rating_int_it = NULL;
#line 110 "SerializableTest.vala"
						rating_int_collection = _tmp8_;
#line 110 "SerializableTest.vala"
						for (rating_int_it = rating_int_collection; rating_int_it != NULL; rating_int_it = rating_int_it->next) {
#line 1204 "SerializableTest.c"
							gint rating_int = 0;
#line 110 "SerializableTest.vala"
							rating_int = (gint) ((gintptr) rating_int_it->data);
#line 1208 "SerializableTest.c"
							{
								GXmlNode* _tmp9_ = NULL;
								GXmlNode* _tmp10_;
								GXmlGElement* n = NULL;
								GXmlGElement* _tmp11_;
								GXmlGElement* _tmp12_;
								gchar* _tmp13_;
								gchar* _tmp14_;
								GXmlDomHTMLCollection* _tmp15_;
								GXmlDomHTMLCollection* _tmp16_;
								GXmlDomHTMLCollection* _tmp17_;
								GXmlGElement* _tmp18_;
#line 111 "SerializableTest.vala"
								_tmp10_ = gxml_document_create_element (doc, "rating", &_inner_error0_);
#line 111 "SerializableTest.vala"
								_tmp9_ = _tmp10_;
#line 111 "SerializableTest.vala"
								if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 111 "SerializableTest.vala"
									_g_object_unref0 (doc);
#line 111 "SerializableTest.vala"
									_g_object_unref0 (element);
#line 1231 "SerializableTest.c"
									goto __catch283_g_error;
								}
#line 111 "SerializableTest.vala"
								_tmp11_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_CAST (_tmp9_, GXML_TYPE_GELEMENT, GXmlGElement));
#line 111 "SerializableTest.vala"
								n = _tmp11_;
#line 112 "SerializableTest.vala"
								_tmp12_ = n;
#line 112 "SerializableTest.vala"
								_tmp13_ = g_strdup_printf ("%d", rating_int);
#line 112 "SerializableTest.vala"
								_tmp14_ = _tmp13_;
#line 112 "SerializableTest.vala"
								gxml_element_set_content ((GXmlElement*) _tmp12_, _tmp14_);
#line 112 "SerializableTest.vala"
								_g_free0 (_tmp14_);
#line 113 "SerializableTest.vala"
								_tmp15_ = gxml_dom_parent_node_get_children ((GXmlDomParentNode*) element);
#line 113 "SerializableTest.vala"
								_tmp16_ = _tmp15_;
#line 113 "SerializableTest.vala"
								_tmp17_ = _tmp16_;
#line 113 "SerializableTest.vala"
								_tmp18_ = n;
#line 113 "SerializableTest.vala"
								gee_collection_add ((GeeCollection*) _tmp17_, (GXmlDomElement*) _tmp18_);
#line 113 "SerializableTest.vala"
								_g_object_unref0 (_tmp17_);
#line 110 "SerializableTest.vala"
								_g_object_unref0 (n);
#line 110 "SerializableTest.vala"
								_g_object_unref0 (_tmp9_);
#line 1264 "SerializableTest.c"
							}
						}
					}
#line 115 "SerializableTest.vala"
					break;
#line 1270 "SerializableTest.c"
				}
			}
		} else {
#line 108 "SerializableTest.vala"
			switch (0) {
#line 1276 "SerializableTest.c"
				default:
				{
					const gchar* _tmp19_;
#line 117 "SerializableTest.vala"
					_tmp19_ = prop->name;
#line 117 "SerializableTest.vala"
					g_test_message ("Wasn't expecting the SerializableCapsicum property '%s'", _tmp19_);
#line 118 "SerializableTest.vala"
					g_assert_not_reached ();
#line 1286 "SerializableTest.c"
				}
			}
		}
#line 105 "SerializableTest.vala"
		_g_object_unref0 (doc);
#line 105 "SerializableTest.vala"
		_g_object_unref0 (element);
#line 1294 "SerializableTest.c"
	}
	goto __finally283;
	__catch283_g_error:
	{
		GError* e = NULL;
		const gchar* _tmp20_;
		gchar* _tmp21_;
		gchar* _tmp22_;
#line 105 "SerializableTest.vala"
		e = _inner_error0_;
#line 105 "SerializableTest.vala"
		_inner_error0_ = NULL;
#line 121 "SerializableTest.vala"
		_tmp20_ = e->message;
#line 121 "SerializableTest.vala"
		_tmp21_ = g_strconcat ("Error: ", _tmp20_, NULL);
#line 121 "SerializableTest.vala"
		_tmp22_ = _tmp21_;
#line 121 "SerializableTest.vala"
		g_message ("SerializableTest.vala:121: %s", _tmp22_);
#line 121 "SerializableTest.vala"
		_g_free0 (_tmp22_);
#line 122 "SerializableTest.vala"
		g_assert_not_reached ();
#line 105 "SerializableTest.vala"
		_g_error_free0 (e);
#line 1321 "SerializableTest.c"
	}
	__finally283:
#line 105 "SerializableTest.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 105 "SerializableTest.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
#line 105 "SerializableTest.vala"
		g_clear_error (&_inner_error0_);
#line 105 "SerializableTest.vala"
		return;
#line 1332 "SerializableTest.c"
	}
#line 102 "SerializableTest.vala"
	if (node) {
#line 102 "SerializableTest.vala"
		*node = _vala_node;
#line 1338 "SerializableTest.c"
	} else {
#line 102 "SerializableTest.vala"
		_g_object_unref0 (_vala_node);
#line 1342 "SerializableTest.c"
	}
}

static gint
serializable_capsicum_get_age (SerializableCapsicum* self)
{
	gint result;
#line 58 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, 0);
#line 58 "SerializableTest.vala"
	result = self->priv->_age;
#line 58 "SerializableTest.vala"
	return result;
#line 1356 "SerializableTest.c"
}

static void
serializable_capsicum_set_age (SerializableCapsicum* self,
                               gint value)
{
#line 58 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 58 "SerializableTest.vala"
	self->priv->_age = value;
#line 1367 "SerializableTest.c"
}

gint
serializable_capsicum_get_height (SerializableCapsicum* self)
{
	gint result;
#line 59 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, 0);
#line 59 "SerializableTest.vala"
	result = self->priv->_height;
#line 59 "SerializableTest.vala"
	return result;
#line 1380 "SerializableTest.c"
}

void
serializable_capsicum_set_height (SerializableCapsicum* self,
                                  gint value)
{
#line 59 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 59 "SerializableTest.vala"
	if (serializable_capsicum_get_height (self) != value) {
#line 59 "SerializableTest.vala"
		self->priv->_height = value;
#line 59 "SerializableTest.vala"
		g_object_notify_by_pspec ((GObject *) self, serializable_capsicum_properties[SERIALIZABLE_CAPSICUM_HEIGHT_PROPERTY]);
#line 1395 "SerializableTest.c"
	}
}

GList*
serializable_capsicum_get_ratings (SerializableCapsicum* self)
{
	GList* result;
	GList* _tmp0_;
#line 60 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, NULL);
#line 60 "SerializableTest.vala"
	_tmp0_ = self->priv->_ratings;
#line 60 "SerializableTest.vala"
	result = _tmp0_;
#line 60 "SerializableTest.vala"
	return result;
#line 1412 "SerializableTest.c"
}

void
serializable_capsicum_set_ratings (SerializableCapsicum* self,
                                   GList* value)
{
#line 60 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 60 "SerializableTest.vala"
	if (serializable_capsicum_get_ratings (self) != value) {
#line 60 "SerializableTest.vala"
		self->priv->_ratings = value;
#line 60 "SerializableTest.vala"
		g_object_notify_by_pspec ((GObject *) self, serializable_capsicum_properties[SERIALIZABLE_CAPSICUM_RATINGS_PROPERTY]);
#line 1427 "SerializableTest.c"
	}
}

static void
serializable_capsicum_class_init (SerializableCapsicumClass * klass,
                                  gpointer klass_data)
{
#line 56 "SerializableTest.vala"
	serializable_capsicum_parent_class = g_type_class_peek_parent (klass);
#line 56 "SerializableTest.vala"
	g_type_class_adjust_private_offset (klass, &SerializableCapsicum_private_offset);
#line 56 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->node_name = (gchar* (*) (GXmlSerializableObjectModel*)) serializable_capsicum_real_node_name;
#line 56 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->to_string = (gchar* (*) (GXmlSerializableObjectModel*)) serializable_capsicum_real_to_string;
#line 56 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_serializable_capsicum_get_property;
#line 56 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_serializable_capsicum_set_property;
#line 56 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->finalize = serializable_capsicum_finalize;
#line 56 "SerializableTest.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SERIALIZABLE_CAPSICUM_HEIGHT_PROPERTY, serializable_capsicum_properties[SERIALIZABLE_CAPSICUM_HEIGHT_PROPERTY] = g_param_spec_int ("height", "height", "height", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 56 "SerializableTest.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SERIALIZABLE_CAPSICUM_RATINGS_PROPERTY, serializable_capsicum_properties[SERIALIZABLE_CAPSICUM_RATINGS_PROPERTY] = g_param_spec_pointer ("ratings", "ratings", "ratings", G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 1453 "SerializableTest.c"
}

static void
serializable_capsicum_instance_init (SerializableCapsicum * self,
                                     gpointer klass)
{
#line 56 "SerializableTest.vala"
	self->priv = serializable_capsicum_get_instance_private (self);
#line 1462 "SerializableTest.c"
}

static void
serializable_capsicum_finalize (GObject * obj)
{
	SerializableCapsicum * self;
#line 56 "SerializableTest.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SERIALIZABLE_CAPSICUM, SerializableCapsicum);
#line 56 "SerializableTest.vala"
	G_OBJECT_CLASS (serializable_capsicum_parent_class)->finalize (obj);
#line 1473 "SerializableTest.c"
}

GType
serializable_capsicum_get_type (void)
{
	static volatile gsize serializable_capsicum_type_id__volatile = 0;
	if (g_once_init_enter (&serializable_capsicum_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SerializableCapsicumClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) serializable_capsicum_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SerializableCapsicum), 0, (GInstanceInitFunc) serializable_capsicum_instance_init, NULL };
		GType serializable_capsicum_type_id;
		serializable_capsicum_type_id = g_type_register_static (GXML_TYPE_SERIALIZABLE_OBJECT_MODEL, "SerializableCapsicum", &g_define_type_info, 0);
		SerializableCapsicum_private_offset = g_type_add_instance_private (serializable_capsicum_type_id, sizeof (SerializableCapsicumPrivate));
		g_once_init_leave (&serializable_capsicum_type_id__volatile, serializable_capsicum_type_id);
	}
	return serializable_capsicum_type_id__volatile;
}

static void
_vala_serializable_capsicum_get_property (GObject * object,
                                          guint property_id,
                                          GValue * value,
                                          GParamSpec * pspec)
{
	SerializableCapsicum * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SERIALIZABLE_CAPSICUM, SerializableCapsicum);
#line 56 "SerializableTest.vala"
	switch (property_id) {
#line 56 "SerializableTest.vala"
		case SERIALIZABLE_CAPSICUM_HEIGHT_PROPERTY:
#line 56 "SerializableTest.vala"
		g_value_set_int (value, serializable_capsicum_get_height (self));
#line 56 "SerializableTest.vala"
		break;
#line 56 "SerializableTest.vala"
		case SERIALIZABLE_CAPSICUM_RATINGS_PROPERTY:
#line 56 "SerializableTest.vala"
		g_value_set_pointer (value, serializable_capsicum_get_ratings (self));
#line 56 "SerializableTest.vala"
		break;
#line 1512 "SerializableTest.c"
		default:
#line 56 "SerializableTest.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 56 "SerializableTest.vala"
		break;
#line 1518 "SerializableTest.c"
	}
}

static void
_vala_serializable_capsicum_set_property (GObject * object,
                                          guint property_id,
                                          const GValue * value,
                                          GParamSpec * pspec)
{
	SerializableCapsicum * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SERIALIZABLE_CAPSICUM, SerializableCapsicum);
#line 56 "SerializableTest.vala"
	switch (property_id) {
#line 56 "SerializableTest.vala"
		case SERIALIZABLE_CAPSICUM_HEIGHT_PROPERTY:
#line 56 "SerializableTest.vala"
		serializable_capsicum_set_height (self, g_value_get_int (value));
#line 56 "SerializableTest.vala"
		break;
#line 56 "SerializableTest.vala"
		case SERIALIZABLE_CAPSICUM_RATINGS_PROPERTY:
#line 56 "SerializableTest.vala"
		serializable_capsicum_set_ratings (self, g_value_get_pointer (value));
#line 56 "SerializableTest.vala"
		break;
#line 1544 "SerializableTest.c"
		default:
#line 56 "SerializableTest.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 56 "SerializableTest.vala"
		break;
#line 1550 "SerializableTest.c"
	}
}

static inline gpointer
serializable_banana_get_instance_private (SerializableBanana* self)
{
	return G_STRUCT_MEMBER_P (self, SerializableBanana_private_offset);
}

SerializableBanana*
serializable_banana_construct (GType object_type,
                               gint private_field,
                               gint public_field,
                               gint private_property,
                               gint public_property)
{
	SerializableBanana * self = NULL;
#line 136 "SerializableTest.vala"
	self = (SerializableBanana*) gxml_serializable_object_model_construct (object_type);
#line 137 "SerializableTest.vala"
	self->priv->private_field = private_field;
#line 138 "SerializableTest.vala"
	self->public_field = public_field;
#line 139 "SerializableTest.vala"
	serializable_banana_set_private_property (self, private_property);
#line 140 "SerializableTest.vala"
	serializable_banana_set_public_property (self, public_property);
#line 136 "SerializableTest.vala"
	return self;
#line 1580 "SerializableTest.c"
}

SerializableBanana*
serializable_banana_new (gint private_field,
                         gint public_field,
                         gint private_property,
                         gint public_property)
{
#line 136 "SerializableTest.vala"
	return serializable_banana_construct (TYPE_SERIALIZABLE_BANANA, private_field, public_field, private_property, public_property);
#line 1591 "SerializableTest.c"
}

static gboolean
serializable_banana_real_property_use_nick (GXmlSerializableObjectModel* base)
{
	SerializableBanana * self;
	gboolean result = FALSE;
#line 143 "SerializableTest.vala"
	self = (SerializableBanana*) base;
#line 143 "SerializableTest.vala"
	result = TRUE;
#line 143 "SerializableTest.vala"
	return result;
#line 1605 "SerializableTest.c"
}

static gchar*
serializable_banana_real_node_name (GXmlSerializableObjectModel* base)
{
	SerializableBanana * self;
	gchar* result = NULL;
	gchar* _tmp0_;
#line 144 "SerializableTest.vala"
	self = (SerializableBanana*) base;
#line 144 "SerializableTest.vala"
	_tmp0_ = g_strdup ("Banana");
#line 144 "SerializableTest.vala"
	result = _tmp0_;
#line 144 "SerializableTest.vala"
	return result;
#line 1622 "SerializableTest.c"
}

static gchar*
serializable_banana_real_to_string (GXmlSerializableObjectModel* base)
{
	SerializableBanana * self;
	gchar* result = NULL;
	gint _tmp0_;
	gint _tmp1_;
	gchar* _tmp2_;
#line 145 "SerializableTest.vala"
	self = (SerializableBanana*) base;
#line 146 "SerializableTest.vala"
	_tmp0_ = self->priv->_private_property;
#line 146 "SerializableTest.vala"
	_tmp1_ = self->priv->_public_property;
#line 146 "SerializableTest.vala"
	_tmp2_ = g_strdup_printf ("SerializableBanana {private_field:%d, public_field:%d, private_propert" \
"y:%d, public_property:%d}", self->priv->private_field, self->public_field, _tmp0_, _tmp1_);
#line 146 "SerializableTest.vala"
	result = _tmp2_;
#line 146 "SerializableTest.vala"
	return result;
#line 1645 "SerializableTest.c"
}

gboolean
serializable_banana_equals (SerializableBanana* a,
                            SerializableBanana* b)
{
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
#line 149 "SerializableTest.vala"
	g_return_val_if_fail (a != NULL, FALSE);
#line 149 "SerializableTest.vala"
	g_return_val_if_fail (b != NULL, FALSE);
#line 150 "SerializableTest.vala"
	if (a->priv->private_field == b->priv->private_field) {
#line 151 "SerializableTest.vala"
		_tmp2_ = a->public_field == b->public_field;
#line 1664 "SerializableTest.c"
	} else {
#line 150 "SerializableTest.vala"
		_tmp2_ = FALSE;
#line 1668 "SerializableTest.c"
	}
#line 150 "SerializableTest.vala"
	if (_tmp2_) {
#line 1672 "SerializableTest.c"
		gint _tmp3_;
		gint _tmp4_;
#line 152 "SerializableTest.vala"
		_tmp3_ = a->priv->_private_property;
#line 152 "SerializableTest.vala"
		_tmp4_ = b->priv->_private_property;
#line 152 "SerializableTest.vala"
		_tmp1_ = _tmp3_ == _tmp4_;
#line 1681 "SerializableTest.c"
	} else {
#line 150 "SerializableTest.vala"
		_tmp1_ = FALSE;
#line 1685 "SerializableTest.c"
	}
#line 150 "SerializableTest.vala"
	if (_tmp1_) {
#line 1689 "SerializableTest.c"
		gint _tmp5_;
		gint _tmp6_;
#line 153 "SerializableTest.vala"
		_tmp5_ = a->priv->_public_property;
#line 153 "SerializableTest.vala"
		_tmp6_ = b->priv->_public_property;
#line 153 "SerializableTest.vala"
		_tmp0_ = _tmp5_ == _tmp6_;
#line 1698 "SerializableTest.c"
	} else {
#line 150 "SerializableTest.vala"
		_tmp0_ = FALSE;
#line 1702 "SerializableTest.c"
	}
#line 150 "SerializableTest.vala"
	result = _tmp0_;
#line 150 "SerializableTest.vala"
	return result;
#line 1708 "SerializableTest.c"
}

static GParamSpec**
serializable_banana_real_list_serializable_properties (GXmlSerializableObjectModel* base,
                                                       gint* result_length1)
{
	SerializableBanana * self;
	GParamSpec** result = NULL;
	GParamSpec** properties = NULL;
	GParamSpec** _tmp0_;
	gint properties_length1;
	gint _properties_size_;
	gint i = 0;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
	gchar** _tmp5_;
	GParamSpec** _tmp13_;
	gint _tmp13__length1;
#line 158 "SerializableTest.vala"
	self = (SerializableBanana*) base;
#line 160 "SerializableTest.vala"
	_tmp0_ = g_new0 (GParamSpec*, 4 + 1);
#line 160 "SerializableTest.vala"
	properties = _tmp0_;
#line 160 "SerializableTest.vala"
	properties_length1 = 4;
#line 160 "SerializableTest.vala"
	_properties_size_ = properties_length1;
#line 161 "SerializableTest.vala"
	i = 0;
#line 162 "SerializableTest.vala"
	_tmp1_ = g_strdup ("private-field");
#line 162 "SerializableTest.vala"
	_tmp2_ = g_strdup ("public-field");
#line 162 "SerializableTest.vala"
	_tmp3_ = g_strdup ("private-property");
#line 162 "SerializableTest.vala"
	_tmp4_ = g_strdup ("public-property");
#line 162 "SerializableTest.vala"
	_tmp5_ = g_new0 (gchar*, 4 + 1);
#line 162 "SerializableTest.vala"
	_tmp5_[0] = _tmp1_;
#line 162 "SerializableTest.vala"
	_tmp5_[1] = _tmp2_;
#line 162 "SerializableTest.vala"
	_tmp5_[2] = _tmp3_;
#line 162 "SerializableTest.vala"
	_tmp5_[3] = _tmp4_;
#line 1759 "SerializableTest.c"
	{
		gchar** name_collection = NULL;
		gint name_collection_length1 = 0;
		gint _name_collection_size_ = 0;
		gint name_it = 0;
#line 162 "SerializableTest.vala"
		name_collection = _tmp5_;
#line 162 "SerializableTest.vala"
		name_collection_length1 = 4;
#line 162 "SerializableTest.vala"
		for (name_it = 0; name_it < 4; name_it = name_it + 1) {
#line 1771 "SerializableTest.c"
			gchar* _tmp6_;
			gchar* name = NULL;
#line 162 "SerializableTest.vala"
			_tmp6_ = g_strdup (name_collection[name_it]);
#line 162 "SerializableTest.vala"
			name = _tmp6_;
#line 1778 "SerializableTest.c"
			{
				GParamSpec** _tmp7_;
				gint _tmp7__length1;
				const gchar* _tmp8_;
				const gchar* _tmp9_;
				const gchar* _tmp10_;
				GParamSpecInt* _tmp11_;
				gint _tmp12_;
#line 164 "SerializableTest.vala"
				_tmp7_ = properties;
#line 164 "SerializableTest.vala"
				_tmp7__length1 = properties_length1;
#line 164 "SerializableTest.vala"
				_tmp8_ = name;
#line 164 "SerializableTest.vala"
				_tmp9_ = name;
#line 164 "SerializableTest.vala"
				_tmp10_ = name;
#line 164 "SerializableTest.vala"
				_tmp11_ = g_param_spec_int (_tmp8_, _tmp9_, _tmp10_, G_MININT, G_MAXINT, 0, G_PARAM_READABLE);
#line 164 "SerializableTest.vala"
				_g_param_spec_unref0 (_tmp7_[i]);
#line 164 "SerializableTest.vala"
				_tmp7_[i] = G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, G_TYPE_PARAM, GParamSpec);
#line 165 "SerializableTest.vala"
				_tmp12_ = i;
#line 165 "SerializableTest.vala"
				i = _tmp12_ + 1;
#line 162 "SerializableTest.vala"
				_g_free0 (name);
#line 1809 "SerializableTest.c"
			}
		}
#line 162 "SerializableTest.vala"
		name_collection = (_vala_array_free (name_collection, name_collection_length1, (GDestroyNotify) g_free), NULL);
#line 1814 "SerializableTest.c"
	}
#line 167 "SerializableTest.vala"
	_tmp13_ = properties;
#line 167 "SerializableTest.vala"
	_tmp13__length1 = properties_length1;
#line 167 "SerializableTest.vala"
	if (result_length1) {
#line 167 "SerializableTest.vala"
		*result_length1 = _tmp13__length1;
#line 1824 "SerializableTest.c"
	}
#line 167 "SerializableTest.vala"
	result = _tmp13_;
#line 167 "SerializableTest.vala"
	return result;
#line 1830 "SerializableTest.c"
}

void
serializable_banana_get_property_value (SerializableBanana* self,
                                        GParamSpec* spec,
                                        GValue* val)
{
	GValue _tmp0_ = {0};
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	GQuark _tmp4_ = 0U;
#line 174 "SerializableTest.vala"
	static GQuark _tmp3_label0 = 0;
#line 174 "SerializableTest.vala"
	static GQuark _tmp3_label1 = 0;
#line 174 "SerializableTest.vala"
	static GQuark _tmp3_label2 = 0;
#line 174 "SerializableTest.vala"
	static GQuark _tmp3_label3 = 0;
#line 171 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 171 "SerializableTest.vala"
	g_return_if_fail (spec != NULL);
#line 171 "SerializableTest.vala"
	g_return_if_fail (val != NULL);
#line 173 "SerializableTest.vala"
	g_value_init (&_tmp0_, G_TYPE_INT);
#line 173 "SerializableTest.vala"
	G_IS_VALUE (val) ? (g_value_unset (val), NULL) : NULL;
#line 173 "SerializableTest.vala"
	*val = _tmp0_;
#line 174 "SerializableTest.vala"
	_tmp1_ = spec->name;
#line 174 "SerializableTest.vala"
	_tmp2_ = _tmp1_;
#line 174 "SerializableTest.vala"
	_tmp4_ = (NULL == _tmp2_) ? 0 : g_quark_from_string (_tmp2_);
#line 174 "SerializableTest.vala"
	if (_tmp4_ == ((0 != _tmp3_label0) ? _tmp3_label0 : (_tmp3_label0 = g_quark_from_static_string ("private-field")))) {
#line 174 "SerializableTest.vala"
		switch (0) {
#line 1872 "SerializableTest.c"
			default:
			{
#line 176 "SerializableTest.vala"
				g_value_set_int (val, self->priv->private_field);
#line 177 "SerializableTest.vala"
				break;
#line 1879 "SerializableTest.c"
			}
		}
	} else if (_tmp4_ == ((0 != _tmp3_label1) ? _tmp3_label1 : (_tmp3_label1 = g_quark_from_static_string ("public-field")))) {
#line 174 "SerializableTest.vala"
		switch (0) {
#line 1885 "SerializableTest.c"
			default:
			{
#line 179 "SerializableTest.vala"
				g_value_set_int (val, self->public_field);
#line 180 "SerializableTest.vala"
				break;
#line 1892 "SerializableTest.c"
			}
		}
	} else if (_tmp4_ == ((0 != _tmp3_label2) ? _tmp3_label2 : (_tmp3_label2 = g_quark_from_static_string ("private-property")))) {
#line 174 "SerializableTest.vala"
		switch (0) {
#line 1898 "SerializableTest.c"
			default:
			{
				gint _tmp5_;
#line 182 "SerializableTest.vala"
				_tmp5_ = self->priv->_private_property;
#line 182 "SerializableTest.vala"
				g_value_set_int (val, _tmp5_);
#line 183 "SerializableTest.vala"
				break;
#line 1908 "SerializableTest.c"
			}
		}
	} else if (_tmp4_ == ((0 != _tmp3_label3) ? _tmp3_label3 : (_tmp3_label3 = g_quark_from_static_string ("public-property")))) {
#line 174 "SerializableTest.vala"
		switch (0) {
#line 1914 "SerializableTest.c"
			default:
			{
				gint _tmp6_;
#line 185 "SerializableTest.vala"
				_tmp6_ = self->priv->_public_property;
#line 185 "SerializableTest.vala"
				g_value_set_int (val, _tmp6_);
#line 186 "SerializableTest.vala"
				break;
#line 1924 "SerializableTest.c"
			}
		}
	} else {
#line 174 "SerializableTest.vala"
		switch (0) {
#line 1930 "SerializableTest.c"
			default:
			{
				const gchar* _tmp7_;
#line 188 "SerializableTest.vala"
				_tmp7_ = spec->name;
#line 188 "SerializableTest.vala"
				g_object_get_property (G_TYPE_CHECK_INSTANCE_CAST (self, G_TYPE_OBJECT, GObject), _tmp7_, val);
#line 189 "SerializableTest.vala"
				return;
#line 1940 "SerializableTest.c"
			}
		}
	}
}

void
serializable_banana_set_property_value (SerializableBanana* self,
                                        GParamSpec* spec,
                                        GValue* val)
{
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	GQuark _tmp3_ = 0U;
#line 196 "SerializableTest.vala"
	static GQuark _tmp2_label0 = 0;
#line 196 "SerializableTest.vala"
	static GQuark _tmp2_label1 = 0;
#line 196 "SerializableTest.vala"
	static GQuark _tmp2_label2 = 0;
#line 196 "SerializableTest.vala"
	static GQuark _tmp2_label3 = 0;
#line 194 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 194 "SerializableTest.vala"
	g_return_if_fail (spec != NULL);
#line 194 "SerializableTest.vala"
	g_return_if_fail (val != NULL);
#line 196 "SerializableTest.vala"
	_tmp0_ = spec->name;
#line 196 "SerializableTest.vala"
	_tmp1_ = _tmp0_;
#line 196 "SerializableTest.vala"
	_tmp3_ = (NULL == _tmp1_) ? 0 : g_quark_from_string (_tmp1_);
#line 196 "SerializableTest.vala"
	if (_tmp3_ == ((0 != _tmp2_label0) ? _tmp2_label0 : (_tmp2_label0 = g_quark_from_static_string ("private-field")))) {
#line 196 "SerializableTest.vala"
		switch (0) {
#line 1978 "SerializableTest.c"
			default:
			{
#line 198 "SerializableTest.vala"
				self->priv->private_field = g_value_get_int (val);
#line 199 "SerializableTest.vala"
				break;
#line 1985 "SerializableTest.c"
			}
		}
	} else if (_tmp3_ == ((0 != _tmp2_label1) ? _tmp2_label1 : (_tmp2_label1 = g_quark_from_static_string ("public-field")))) {
#line 196 "SerializableTest.vala"
		switch (0) {
#line 1991 "SerializableTest.c"
			default:
			{
#line 201 "SerializableTest.vala"
				self->public_field = g_value_get_int (val);
#line 202 "SerializableTest.vala"
				break;
#line 1998 "SerializableTest.c"
			}
		}
	} else if (_tmp3_ == ((0 != _tmp2_label2) ? _tmp2_label2 : (_tmp2_label2 = g_quark_from_static_string ("private-property")))) {
#line 196 "SerializableTest.vala"
		switch (0) {
#line 2004 "SerializableTest.c"
			default:
			{
#line 204 "SerializableTest.vala"
				serializable_banana_set_private_property (self, g_value_get_int (val));
#line 205 "SerializableTest.vala"
				break;
#line 2011 "SerializableTest.c"
			}
		}
	} else if (_tmp3_ == ((0 != _tmp2_label3) ? _tmp2_label3 : (_tmp2_label3 = g_quark_from_static_string ("public-property")))) {
#line 196 "SerializableTest.vala"
		switch (0) {
#line 2017 "SerializableTest.c"
			default:
			{
#line 207 "SerializableTest.vala"
				serializable_banana_set_public_property (self, g_value_get_int (val));
#line 208 "SerializableTest.vala"
				break;
#line 2024 "SerializableTest.c"
			}
		}
	} else {
#line 196 "SerializableTest.vala"
		switch (0) {
#line 2030 "SerializableTest.c"
			default:
			{
				const gchar* _tmp4_;
				GValue _tmp5_;
#line 210 "SerializableTest.vala"
				_tmp4_ = spec->name;
#line 210 "SerializableTest.vala"
				_tmp5_ = *val;
#line 210 "SerializableTest.vala"
				g_object_set_property (G_TYPE_CHECK_INSTANCE_CAST (self, G_TYPE_OBJECT, GObject), _tmp4_, &_tmp5_);
#line 211 "SerializableTest.vala"
				return;
#line 2043 "SerializableTest.c"
			}
		}
	}
}

static gint
serializable_banana_get_private_property (SerializableBanana* self)
{
	gint result;
#line 132 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, 0);
#line 132 "SerializableTest.vala"
	result = self->priv->_private_property;
#line 132 "SerializableTest.vala"
	return result;
#line 2059 "SerializableTest.c"
}

static void
serializable_banana_set_private_property (SerializableBanana* self,
                                          gint value)
{
#line 132 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 132 "SerializableTest.vala"
	self->priv->_private_property = value;
#line 2070 "SerializableTest.c"
}

gint
serializable_banana_get_public_property (SerializableBanana* self)
{
	gint result;
#line 134 "SerializableTest.vala"
	g_return_val_if_fail (self != NULL, 0);
#line 134 "SerializableTest.vala"
	result = self->priv->_public_property;
#line 134 "SerializableTest.vala"
	return result;
#line 2083 "SerializableTest.c"
}

void
serializable_banana_set_public_property (SerializableBanana* self,
                                         gint value)
{
#line 134 "SerializableTest.vala"
	g_return_if_fail (self != NULL);
#line 134 "SerializableTest.vala"
	if (serializable_banana_get_public_property (self) != value) {
#line 134 "SerializableTest.vala"
		self->priv->_public_property = value;
#line 134 "SerializableTest.vala"
		g_object_notify_by_pspec ((GObject *) self, serializable_banana_properties[SERIALIZABLE_BANANA_PUBLIC_PROPERTY_PROPERTY]);
#line 2098 "SerializableTest.c"
	}
}

static void
serializable_banana_class_init (SerializableBananaClass * klass,
                                gpointer klass_data)
{
#line 128 "SerializableTest.vala"
	serializable_banana_parent_class = g_type_class_peek_parent (klass);
#line 128 "SerializableTest.vala"
	g_type_class_adjust_private_offset (klass, &SerializableBanana_private_offset);
#line 128 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->property_use_nick = (gboolean (*) (GXmlSerializableObjectModel*)) serializable_banana_real_property_use_nick;
#line 128 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->node_name = (gchar* (*) (GXmlSerializableObjectModel*)) serializable_banana_real_node_name;
#line 128 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->to_string = (gchar* (*) (GXmlSerializableObjectModel*)) serializable_banana_real_to_string;
#line 128 "SerializableTest.vala"
	((GXmlSerializableObjectModelClass *) klass)->list_serializable_properties = (GParamSpec** (*) (GXmlSerializableObjectModel*, gint*)) serializable_banana_real_list_serializable_properties;
#line 128 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->get_property = _vala_serializable_banana_get_property;
#line 128 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->set_property = _vala_serializable_banana_set_property;
#line 128 "SerializableTest.vala"
	G_OBJECT_CLASS (klass)->finalize = serializable_banana_finalize;
#line 128 "SerializableTest.vala"
	g_object_class_install_property (G_OBJECT_CLASS (klass), SERIALIZABLE_BANANA_PUBLIC_PROPERTY_PROPERTY, serializable_banana_properties[SERIALIZABLE_BANANA_PUBLIC_PROPERTY_PROPERTY] = g_param_spec_int ("public-property", "PublicProperty", "public-property", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_STRINGS | G_PARAM_READABLE | G_PARAM_WRITABLE));
#line 2126 "SerializableTest.c"
}

static void
serializable_banana_instance_init (SerializableBanana * self,
                                   gpointer klass)
{
#line 128 "SerializableTest.vala"
	self->priv = serializable_banana_get_instance_private (self);
#line 2135 "SerializableTest.c"
}

static void
serializable_banana_finalize (GObject * obj)
{
	SerializableBanana * self;
#line 128 "SerializableTest.vala"
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, TYPE_SERIALIZABLE_BANANA, SerializableBanana);
#line 128 "SerializableTest.vala"
	G_OBJECT_CLASS (serializable_banana_parent_class)->finalize (obj);
#line 2146 "SerializableTest.c"
}

GType
serializable_banana_get_type (void)
{
	static volatile gsize serializable_banana_type_id__volatile = 0;
	if (g_once_init_enter (&serializable_banana_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SerializableBananaClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) serializable_banana_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SerializableBanana), 0, (GInstanceInitFunc) serializable_banana_instance_init, NULL };
		GType serializable_banana_type_id;
		serializable_banana_type_id = g_type_register_static (GXML_TYPE_SERIALIZABLE_OBJECT_MODEL, "SerializableBanana", &g_define_type_info, 0);
		SerializableBanana_private_offset = g_type_add_instance_private (serializable_banana_type_id, sizeof (SerializableBananaPrivate));
		g_once_init_leave (&serializable_banana_type_id__volatile, serializable_banana_type_id);
	}
	return serializable_banana_type_id__volatile;
}

static void
_vala_serializable_banana_get_property (GObject * object,
                                        guint property_id,
                                        GValue * value,
                                        GParamSpec * pspec)
{
	SerializableBanana * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SERIALIZABLE_BANANA, SerializableBanana);
#line 128 "SerializableTest.vala"
	switch (property_id) {
#line 128 "SerializableTest.vala"
		case SERIALIZABLE_BANANA_PUBLIC_PROPERTY_PROPERTY:
#line 128 "SerializableTest.vala"
		g_value_set_int (value, serializable_banana_get_public_property (self));
#line 128 "SerializableTest.vala"
		break;
#line 2179 "SerializableTest.c"
		default:
#line 128 "SerializableTest.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 128 "SerializableTest.vala"
		break;
#line 2185 "SerializableTest.c"
	}
}

static void
_vala_serializable_banana_set_property (GObject * object,
                                        guint property_id,
                                        const GValue * value,
                                        GParamSpec * pspec)
{
	SerializableBanana * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, TYPE_SERIALIZABLE_BANANA, SerializableBanana);
#line 128 "SerializableTest.vala"
	switch (property_id) {
#line 128 "SerializableTest.vala"
		case SERIALIZABLE_BANANA_PUBLIC_PROPERTY_PROPERTY:
#line 128 "SerializableTest.vala"
		serializable_banana_set_public_property (self, g_value_get_int (value));
#line 128 "SerializableTest.vala"
		break;
#line 2205 "SerializableTest.c"
		default:
#line 128 "SerializableTest.vala"
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
#line 128 "SerializableTest.vala"
		break;
#line 2211 "SerializableTest.c"
	}
}

static void
__lambda231_ (void)
{
	GError* _inner_error0_ = NULL;
	{
		SerializableTomato* tomato = NULL;
		SerializableTomato* _tmp0_;
		GXmlGDocument* doc = NULL;
		GXmlGDocument* _tmp1_;
		SerializableTomato* _tmp2_;
		GXmlGDocument* _tmp3_;
		GXmlNode* _tmp4_;
		GXmlNode* _tmp5_;
		SerializableTomato* tomato2 = NULL;
		SerializableTomato* _tmp6_;
		SerializableTomato* _tmp7_;
		GXmlGDocument* _tmp8_;
		SerializableTomato* _tmp9_;
		SerializableTomato* _tmp10_;
		SerializableTomato* _tmp11_;
		SerializableTomato* _tmp12_;
		gint _tmp13_;
		gint _tmp14_;
		SerializableTomato* _tmp15_;
		gint _tmp16_;
		gint _tmp17_;
		SerializableTomato* _tmp18_;
		const gchar* _tmp19_;
		const gchar* _tmp20_;
		SerializableTomato* _tmp21_;
		const gchar* _tmp22_;
		const gchar* _tmp23_;
#line 220 "SerializableTest.vala"
		_tmp0_ = serializable_tomato_new (0, 0, 12, "cats");
#line 220 "SerializableTest.vala"
		tomato = _tmp0_;
#line 221 "SerializableTest.vala"
		_tmp1_ = gxml_gdocument_new ();
#line 221 "SerializableTest.vala"
		doc = _tmp1_;
#line 222 "SerializableTest.vala"
		_tmp2_ = tomato;
#line 222 "SerializableTest.vala"
		_tmp3_ = doc;
#line 222 "SerializableTest.vala"
		_tmp4_ = gxml_serializable_object_model_serialize ((GXmlSerializableObjectModel*) _tmp2_, (GXmlNode*) _tmp3_, &_inner_error0_);
#line 222 "SerializableTest.vala"
		_tmp5_ = _tmp4_;
#line 222 "SerializableTest.vala"
		_g_object_unref0 (_tmp5_);
#line 222 "SerializableTest.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 222 "SerializableTest.vala"
			_g_object_unref0 (doc);
#line 222 "SerializableTest.vala"
			_g_object_unref0 (tomato);
#line 2271 "SerializableTest.c"
			goto __catch284_g_error;
		}
#line 223 "SerializableTest.vala"
		_tmp6_ = serializable_tomato_new (1, 1, 4, "dogs");
#line 223 "SerializableTest.vala"
		tomato2 = _tmp6_;
#line 224 "SerializableTest.vala"
		_tmp7_ = tomato2;
#line 224 "SerializableTest.vala"
		_tmp8_ = doc;
#line 224 "SerializableTest.vala"
		gxml_serializable_object_model_deserialize ((GXmlSerializableObjectModel*) _tmp7_, (GXmlNode*) _tmp8_, &_inner_error0_);
#line 224 "SerializableTest.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 224 "SerializableTest.vala"
			_g_object_unref0 (tomato2);
#line 224 "SerializableTest.vala"
			_g_object_unref0 (doc);
#line 224 "SerializableTest.vala"
			_g_object_unref0 (tomato);
#line 2292 "SerializableTest.c"
			goto __catch284_g_error;
		}
#line 225 "SerializableTest.vala"
		_tmp9_ = tomato;
#line 225 "SerializableTest.vala"
		_tmp10_ = tomato2;
#line 225 "SerializableTest.vala"
		_vala_assert (_tmp9_->weight != _tmp10_->weight, "tomato.weight != tomato2.weight");
#line 226 "SerializableTest.vala"
		_tmp11_ = tomato2;
#line 226 "SerializableTest.vala"
		_vala_assert (_tmp11_->weight == 1, "tomato2.weight == 1");
#line 227 "SerializableTest.vala"
		_tmp12_ = tomato;
#line 227 "SerializableTest.vala"
		_tmp13_ = serializable_tomato_get_height (_tmp12_);
#line 227 "SerializableTest.vala"
		_tmp14_ = _tmp13_;
#line 227 "SerializableTest.vala"
		_tmp15_ = tomato2;
#line 227 "SerializableTest.vala"
		_tmp16_ = serializable_tomato_get_height (_tmp15_);
#line 227 "SerializableTest.vala"
		_tmp17_ = _tmp16_;
#line 227 "SerializableTest.vala"
		_vala_assert (_tmp14_ == _tmp17_, "tomato.height == tomato2.height");
#line 228 "SerializableTest.vala"
		_tmp18_ = tomato;
#line 228 "SerializableTest.vala"
		_tmp19_ = serializable_tomato_get_description (_tmp18_);
#line 228 "SerializableTest.vala"
		_tmp20_ = _tmp19_;
#line 228 "SerializableTest.vala"
		_tmp21_ = tomato2;
#line 228 "SerializableTest.vala"
		_tmp22_ = serializable_tomato_get_description (_tmp21_);
#line 228 "SerializableTest.vala"
		_tmp23_ = _tmp22_;
#line 228 "SerializableTest.vala"
		_vala_assert (g_strcmp0 (_tmp20_, _tmp23_) == 0, "tomato.description == tomato2.description");
#line 219 "SerializableTest.vala"
		_g_object_unref0 (tomato2);
#line 219 "SerializableTest.vala"
		_g_object_unref0 (doc);
#line 219 "SerializableTest.vala"
		_g_object_unref0 (tomato);
#line 2339 "SerializableTest.c"
	}
	goto __finally284;
	__catch284_g_error:
	{
		GError* e = NULL;
#line 219 "SerializableTest.vala"
		e = _inner_error0_;
#line 219 "SerializableTest.vala"
		_inner_error0_ = NULL;
#line 233 "SerializableTest.vala"
		g_assert_not_reached ();
#line 219 "SerializableTest.vala"
		_g_error_free0 (e);
#line 2353 "SerializableTest.c"
	}
	__finally284:
#line 219 "SerializableTest.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 219 "SerializableTest.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
#line 219 "SerializableTest.vala"
		g_clear_error (&_inner_error0_);
#line 219 "SerializableTest.vala"
		return;
#line 2364 "SerializableTest.c"
	}
}

static void
___lambda231__gtest_func (void)
{
#line 218 "SerializableTest.vala"
	__lambda231_ ();
#line 2373 "SerializableTest.c"
}

static void
__lambda232_ (void)
{
	GXmlDocument* doc = NULL;
	SerializableCapsicum* capsicum = NULL;
	SerializableCapsicum* capsicum_new = NULL;
	gchar* expectation = NULL;
	GRegex* regex = NULL;
	GList* ratings = NULL;
	SerializableCapsicum* _tmp0_;
	gchar* _tmp5_;
	GError* _inner_error0_ = NULL;
#line 244 "SerializableTest.vala"
	(ratings == NULL) ? NULL : (ratings = (g_list_free (ratings), NULL));
#line 244 "SerializableTest.vala"
	ratings = NULL;
#line 245 "SerializableTest.vala"
	ratings = g_list_append (ratings, (gpointer) ((gintptr) 8));
#line 246 "SerializableTest.vala"
	ratings = g_list_append (ratings, (gpointer) ((gintptr) 13));
#line 247 "SerializableTest.vala"
	ratings = g_list_append (ratings, (gpointer) ((gintptr) 21));
#line 249 "SerializableTest.vala"
	_tmp0_ = serializable_capsicum_new (2, 3, 6, ratings);
#line 249 "SerializableTest.vala"
	_g_object_unref0 (capsicum);
#line 249 "SerializableTest.vala"
	capsicum = _tmp0_;
#line 2404 "SerializableTest.c"
	{
		GXmlGDocument* _tmp1_;
		GXmlNode* _tmp2_;
		GXmlNode* _tmp3_;
#line 251 "SerializableTest.vala"
		_tmp1_ = gxml_gdocument_new ();
#line 251 "SerializableTest.vala"
		_g_object_unref0 (doc);
#line 251 "SerializableTest.vala"
		doc = (GXmlDocument*) _tmp1_;
#line 252 "SerializableTest.vala"
		_tmp2_ = gxml_serializable_object_model_serialize ((GXmlSerializableObjectModel*) capsicum, (GXmlNode*) doc, &_inner_error0_);
#line 252 "SerializableTest.vala"
		_tmp3_ = _tmp2_;
#line 252 "SerializableTest.vala"
		_g_object_unref0 (_tmp3_);
#line 252 "SerializableTest.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 2423 "SerializableTest.c"
			goto __catch285_g_error;
		}
	}
	goto __finally285;
	__catch285_g_error:
	{
		GError* e = NULL;
		const gchar* _tmp4_;
#line 250 "SerializableTest.vala"
		e = _inner_error0_;
#line 250 "SerializableTest.vala"
		_inner_error0_ = NULL;
#line 254 "SerializableTest.vala"
		_tmp4_ = e->message;
#line 254 "SerializableTest.vala"
		g_message ("SerializableTest.vala:254: %s", _tmp4_);
#line 255 "SerializableTest.vala"
		g_assert_not_reached ();
#line 250 "SerializableTest.vala"
		_g_error_free0 (e);
#line 2444 "SerializableTest.c"
	}
	__finally285:
#line 250 "SerializableTest.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 250 "SerializableTest.vala"
		(ratings == NULL) ? NULL : (ratings = (g_list_free (ratings), NULL));
#line 250 "SerializableTest.vala"
		_g_regex_unref0 (regex);
#line 250 "SerializableTest.vala"
		_g_free0 (expectation);
#line 250 "SerializableTest.vala"
		_g_object_unref0 (capsicum_new);
#line 250 "SerializableTest.vala"
		_g_object_unref0 (capsicum);
#line 250 "SerializableTest.vala"
		_g_object_unref0 (doc);
#line 250 "SerializableTest.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
#line 250 "SerializableTest.vala"
		g_clear_error (&_inner_error0_);
#line 250 "SerializableTest.vala"
		return;
#line 2467 "SerializableTest.c"
	}
#line 258 "SerializableTest.vala"
	_tmp5_ = g_strdup ("<\\?xml version=\"1.0\"\\?>\n<");
#line 258 "SerializableTest.vala"
	_g_free0 (expectation);
#line 258 "SerializableTest.vala"
	expectation = _tmp5_;
#line 2475 "SerializableTest.c"
	{
		GRegex* _tmp6_ = NULL;
		GRegex* _tmp7_;
		GRegex* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		gboolean _tmp11_;
		gboolean _tmp17_ = FALSE;
		gboolean _tmp18_ = FALSE;
		gboolean _tmp19_ = FALSE;
		gint _tmp20_;
		gint _tmp21_;
#line 261 "SerializableTest.vala"
		_tmp7_ = g_regex_new (expectation, 0, 0, &_inner_error0_);
#line 261 "SerializableTest.vala"
		_tmp6_ = _tmp7_;
#line 261 "SerializableTest.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 261 "SerializableTest.vala"
			if (_inner_error0_->domain == G_REGEX_ERROR) {
#line 2496 "SerializableTest.c"
				goto __catch286_g_regex_error;
			}
#line 261 "SerializableTest.vala"
			(ratings == NULL) ? NULL : (ratings = (g_list_free (ratings), NULL));
#line 261 "SerializableTest.vala"
			_g_regex_unref0 (regex);
#line 261 "SerializableTest.vala"
			_g_free0 (expectation);
#line 261 "SerializableTest.vala"
			_g_object_unref0 (capsicum_new);
#line 261 "SerializableTest.vala"
			_g_object_unref0 (capsicum);
#line 261 "SerializableTest.vala"
			_g_object_unref0 (doc);
#line 261 "SerializableTest.vala"
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
#line 261 "SerializableTest.vala"
			g_clear_error (&_inner_error0_);
#line 261 "SerializableTest.vala"
			return;
#line 2517 "SerializableTest.c"
		}
#line 261 "SerializableTest.vala"
		_tmp8_ = _tmp6_;
#line 261 "SerializableTest.vala"
		_tmp6_ = NULL;
#line 261 "SerializableTest.vala"
		_g_regex_unref0 (regex);
#line 261 "SerializableTest.vala"
		regex = _tmp8_;
#line 262 "SerializableTest.vala"
		_tmp9_ = gxml_gnode_to_string ((GXmlGNode*) (G_TYPE_CHECK_INSTANCE_TYPE (doc, GXML_TYPE_GDOCUMENT) ? ((GXmlGDocument*) doc) : NULL));
#line 262 "SerializableTest.vala"
		_tmp10_ = _tmp9_;
#line 262 "SerializableTest.vala"
		_tmp11_ = !g_regex_match (regex, _tmp10_, 0, NULL);
#line 262 "SerializableTest.vala"
		_g_free0 (_tmp10_);
#line 262 "SerializableTest.vala"
		if (_tmp11_) {
#line 2537 "SerializableTest.c"
			gchar* _tmp12_;
			gchar* _tmp13_;
#line 263 "SerializableTest.vala"
			_tmp12_ = gxml_node_to_string ((GXmlNode*) doc);
#line 263 "SerializableTest.vala"
			_tmp13_ = _tmp12_;
#line 263 "SerializableTest.vala"
			g_test_message ("Did not serialize as expected.  Got [%s] but expected [%s]", _tmp13_, expectation);
#line 263 "SerializableTest.vala"
			_g_free0 (_tmp13_);
#line 264 "SerializableTest.vala"
			g_assert_not_reached ();
#line 2550 "SerializableTest.c"
		}
		{
			GList* _tmp14_;
			SerializableCapsicum* _tmp15_;
#line 268 "SerializableTest.vala"
			_tmp14_ = NULL;
#line 268 "SerializableTest.vala"
			_tmp15_ = serializable_capsicum_new (1, 1, 1, _tmp14_);
#line 268 "SerializableTest.vala"
			_g_object_unref0 (capsicum_new);
#line 268 "SerializableTest.vala"
			capsicum_new = _tmp15_;
#line 268 "SerializableTest.vala"
			(_tmp14_ == NULL) ? NULL : (_tmp14_ = (g_list_free (_tmp14_), NULL));
#line 269 "SerializableTest.vala"
			gxml_serializable_object_model_deserialize ((GXmlSerializableObjectModel*) capsicum_new, (GXmlNode*) doc, &_inner_error0_);
#line 269 "SerializableTest.vala"
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 2569 "SerializableTest.c"
				goto __catch287_g_error;
			}
		}
		goto __finally287;
		__catch287_g_error:
		{
			GError* e = NULL;
			const gchar* _tmp16_;
#line 267 "SerializableTest.vala"
			e = _inner_error0_;
#line 267 "SerializableTest.vala"
			_inner_error0_ = NULL;
#line 271 "SerializableTest.vala"
			_tmp16_ = e->message;
#line 271 "SerializableTest.vala"
			g_test_message ("%s", _tmp16_);
#line 272 "SerializableTest.vala"
			g_assert_not_reached ();
#line 267 "SerializableTest.vala"
			_g_error_free0 (e);
#line 2590 "SerializableTest.c"
		}
		__finally287:
#line 267 "SerializableTest.vala"
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 267 "SerializableTest.vala"
			_g_regex_unref0 (_tmp6_);
#line 267 "SerializableTest.vala"
			if (_inner_error0_->domain == G_REGEX_ERROR) {
#line 2599 "SerializableTest.c"
				goto __catch286_g_regex_error;
			}
#line 267 "SerializableTest.vala"
			_g_regex_unref0 (_tmp6_);
#line 267 "SerializableTest.vala"
			(ratings == NULL) ? NULL : (ratings = (g_list_free (ratings), NULL));
#line 267 "SerializableTest.vala"
			_g_regex_unref0 (regex);
#line 267 "SerializableTest.vala"
			_g_free0 (expectation);
#line 267 "SerializableTest.vala"
			_g_object_unref0 (capsicum_new);
#line 267 "SerializableTest.vala"
			_g_object_unref0 (capsicum);
#line 267 "SerializableTest.vala"
			_g_object_unref0 (doc);
#line 267 "SerializableTest.vala"
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
#line 267 "SerializableTest.vala"
			g_clear_error (&_inner_error0_);
#line 267 "SerializableTest.vala"
			return;
#line 2622 "SerializableTest.c"
		}
#line 274 "SerializableTest.vala"
		_tmp20_ = serializable_capsicum_get_height (capsicum_new);
#line 274 "SerializableTest.vala"
		_tmp21_ = _tmp20_;
#line 274 "SerializableTest.vala"
		if (_tmp21_ != 6) {
#line 274 "SerializableTest.vala"
			_tmp19_ = TRUE;
#line 2632 "SerializableTest.c"
		} else {
#line 274 "SerializableTest.vala"
			_tmp19_ = g_list_length (ratings) != ((guint) 3);
#line 2636 "SerializableTest.c"
		}
#line 274 "SerializableTest.vala"
		if (_tmp19_) {
#line 274 "SerializableTest.vala"
			_tmp18_ = TRUE;
#line 2642 "SerializableTest.c"
		} else {
			gconstpointer _tmp22_;
#line 274 "SerializableTest.vala"
			_tmp22_ = g_list_nth_data (ratings, (guint) 0);
#line 274 "SerializableTest.vala"
			_tmp18_ = ((gint) ((gintptr) _tmp22_)) != 8;
#line 2649 "SerializableTest.c"
		}
#line 274 "SerializableTest.vala"
		if (_tmp18_) {
#line 274 "SerializableTest.vala"
			_tmp17_ = TRUE;
#line 2655 "SerializableTest.c"
		} else {
			gconstpointer _tmp23_;
#line 274 "SerializableTest.vala"
			_tmp23_ = g_list_nth_data (ratings, (guint) 2);
#line 274 "SerializableTest.vala"
			_tmp17_ = ((gint) ((gintptr) _tmp23_)) != 21;
#line 2662 "SerializableTest.c"
		}
#line 274 "SerializableTest.vala"
		if (_tmp17_) {
#line 2666 "SerializableTest.c"
			gchar* _tmp24_;
			gchar* _tmp25_;
			gchar* _tmp26_;
			gchar* _tmp27_;
			gchar* _tmp28_;
			gchar* _tmp29_;
#line 275 "SerializableTest.vala"
			_tmp24_ = gxml_serializable_object_model_to_string ((GXmlSerializableObjectModel*) capsicum_new);
#line 275 "SerializableTest.vala"
			_tmp25_ = _tmp24_;
#line 275 "SerializableTest.vala"
			_tmp26_ = gxml_serializable_object_model_to_string ((GXmlSerializableObjectModel*) capsicum);
#line 275 "SerializableTest.vala"
			_tmp27_ = _tmp26_;
#line 275 "SerializableTest.vala"
			_tmp28_ = g_strdup_printf ("%u", g_list_length (ratings));
#line 275 "SerializableTest.vala"
			_tmp29_ = _tmp28_;
#line 275 "SerializableTest.vala"
			g_test_message ("Did not deserialize as expected.  Got [%s] but expected height and rat" \
"ings from [%s], length: %s", _tmp25_, _tmp27_, _tmp29_);
#line 275 "SerializableTest.vala"
			_g_free0 (_tmp29_);
#line 275 "SerializableTest.vala"
			_g_free0 (_tmp27_);
#line 275 "SerializableTest.vala"
			_g_free0 (_tmp25_);
#line 276 "SerializableTest.vala"
			g_assert_not_reached ();
#line 2695 "SerializableTest.c"
		}
#line 260 "SerializableTest.vala"
		_g_regex_unref0 (_tmp6_);
#line 2699 "SerializableTest.c"
	}
	goto __finally286;
	__catch286_g_regex_error:
	{
		GError* e = NULL;
		const gchar* _tmp30_;
#line 260 "SerializableTest.vala"
		e = _inner_error0_;
#line 260 "SerializableTest.vala"
		_inner_error0_ = NULL;
#line 279 "SerializableTest.vala"
		_tmp30_ = e->message;
#line 279 "SerializableTest.vala"
		g_test_message ("Regular expression [%s] for test failed: %s", expectation, _tmp30_);
#line 281 "SerializableTest.vala"
		g_assert_not_reached ();
#line 260 "SerializableTest.vala"
		_g_error_free0 (e);
#line 2718 "SerializableTest.c"
	}
	__finally286:
#line 260 "SerializableTest.vala"
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
#line 260 "SerializableTest.vala"
		(ratings == NULL) ? NULL : (ratings = (g_list_free (ratings), NULL));
#line 260 "SerializableTest.vala"
		_g_regex_unref0 (regex);
#line 260 "SerializableTest.vala"
		_g_free0 (expectation);
#line 260 "SerializableTest.vala"
		_g_object_unref0 (capsicum_new);
#line 260 "SerializableTest.vala"
		_g_object_unref0 (capsicum);
#line 260 "SerializableTest.vala"
		_g_object_unref0 (doc);
#line 260 "SerializableTest.vala"
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
#line 260 "SerializableTest.vala"
		g_clear_error (&_inner_error0_);
#line 260 "SerializableTest.vala"
		return;
#line 2741 "SerializableTest.c"
	}
#line 236 "SerializableTest.vala"
	(ratings == NULL) ? NULL : (ratings = (g_list_free (ratings), NULL));
#line 236 "SerializableTest.vala"
	_g_regex_unref0 (regex);
#line 236 "SerializableTest.vala"
	_g_free0 (expectation);
#line 236 "SerializableTest.vala"
	_g_object_unref0 (capsicum_new);
#line 236 "SerializableTest.vala"
	_g_object_unref0 (capsicum);
#line 236 "SerializableTest.vala"
	_g_object_unref0 (doc);
#line 2755 "SerializableTest.c"
}

static void
___lambda232__gtest_func (void)
{
#line 236 "SerializableTest.vala"
	__lambda232_ ();
#line 2763 "SerializableTest.c"
}

static void
__lambda233_ (void)
{
	SerializableBanana* banana = NULL;
	SerializableBanana* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gchar* _tmp4_;
#line 285 "SerializableTest.vala"
	_tmp0_ = serializable_banana_new (17, 19, 23, 29);
#line 285 "SerializableTest.vala"
	banana = _tmp0_;
#line 286 "SerializableTest.vala"
	_tmp1_ = gxml_serializable_object_model_to_string ((GXmlSerializableObjectModel*) banana);
#line 286 "SerializableTest.vala"
	_tmp2_ = _tmp1_;
#line 286 "SerializableTest.vala"
	_tmp3_ = g_strconcat ("Banana:", _tmp2_, NULL);
#line 286 "SerializableTest.vala"
	_tmp4_ = _tmp3_;
#line 286 "SerializableTest.vala"
	g_test_message ("%s", _tmp4_);
#line 286 "SerializableTest.vala"
	_g_free0 (_tmp4_);
#line 286 "SerializableTest.vala"
	_g_free0 (_tmp2_);
#line 284 "SerializableTest.vala"
	_g_object_unref0 (banana);
#line 2795 "SerializableTest.c"
}

static void
___lambda233__gtest_func (void)
{
#line 284 "SerializableTest.vala"
	__lambda233_ ();
#line 2803 "SerializableTest.c"
}

void
serializable_test_add_tests (void)
{
#line 218 "SerializableTest.vala"
	g_test_add_func ("/gxml/serializable/interface_defaults", ___lambda231__gtest_func);
#line 236 "SerializableTest.vala"
	g_test_add_func ("/gxml/serializable/interface_override_serialization_on_list", ___lambda232__gtest_func);
#line 284 "SerializableTest.vala"
	g_test_add_func ("/gxml/serializable/interface_override_properties_view", ___lambda233__gtest_func);
#line 2815 "SerializableTest.c"
}

SerializableTest*
serializable_test_construct (GType object_type)
{
	SerializableTest* self = NULL;
#line 216 "SerializableTest.vala"
	self = (SerializableTest*) gxml_test_construct (object_type);
#line 216 "SerializableTest.vala"
	return self;
#line 2826 "SerializableTest.c"
}

SerializableTest*
serializable_test_new (void)
{
#line 216 "SerializableTest.vala"
	return serializable_test_construct (TYPE_SERIALIZABLE_TEST);
#line 2834 "SerializableTest.c"
}

static void
serializable_test_class_init (SerializableTestClass * klass,
                              gpointer klass_data)
{
#line 216 "SerializableTest.vala"
	serializable_test_parent_class = g_type_class_peek_parent (klass);
#line 2843 "SerializableTest.c"
}

static void
serializable_test_instance_init (SerializableTest * self,
                                 gpointer klass)
{
}

GType
serializable_test_get_type (void)
{
	static volatile gsize serializable_test_type_id__volatile = 0;
	if (g_once_init_enter (&serializable_test_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (SerializableTestClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) serializable_test_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (SerializableTest), 0, (GInstanceInitFunc) serializable_test_instance_init, NULL };
		GType serializable_test_type_id;
		serializable_test_type_id = g_type_register_static (TYPE_GXML_TEST, "SerializableTest", &g_define_type_info, 0);
		g_once_init_leave (&serializable_test_type_id__volatile, serializable_test_type_id);
	}
	return serializable_test_type_id__volatile;
}

static void
_vala_array_destroy (gpointer array,
                     gint array_length,
                     GDestroyNotify destroy_func)
{
#line 356 "GomSerializationTest.vala"
	if ((array != NULL) && (destroy_func != NULL)) {
#line 2872 "SerializableTest.c"
		int i;
#line 356 "GomSerializationTest.vala"
		for (i = 0; i < array_length; i = i + 1) {
#line 356 "GomSerializationTest.vala"
			if (((gpointer*) array)[i] != NULL) {
#line 356 "GomSerializationTest.vala"
				destroy_func (((gpointer*) array)[i]);
#line 2880 "SerializableTest.c"
			}
		}
	}
}

static void
_vala_array_free (gpointer array,
                  gint array_length,
                  GDestroyNotify destroy_func)
{
#line 356 "GomSerializationTest.vala"
	_vala_array_destroy (array, array_length, destroy_func);
#line 356 "GomSerializationTest.vala"
	g_free (array);
#line 2895 "SerializableTest.c"
}

