/* libxml-ChildNodeList.c generated by valac 0.28.1, the Vala compiler
 * generated from libxml-ChildNodeList.vala, do not modify */

/* .vala
 *
 * Copyright (C) 2015  Daniel Espinosa <esodan@gmail.com>
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.

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

 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 * Authors:
 *      Richard Schwarting <aquarichy@gmail.com>
 *      Daniel Espinosa <esodan@gmail.com>
 */

#include <glib.h>
#include <glib-object.h>
#include <gee.h>
#include <stdlib.h>
#include <string.h>
#include <libxml/tree.h>
#include <gio/gio.h>
#include <glib/gi18n-lib.h>


#define GXML_TYPE_XNODE_LIST (gxml_xnode_list_get_type ())
#define GXML_XNODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_XNODE_LIST, GXmlxNodeList))
#define GXML_IS_XNODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_XNODE_LIST))
#define GXML_XNODE_LIST_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GXML_TYPE_XNODE_LIST, GXmlxNodeListIface))

typedef struct _GXmlxNodeList GXmlxNodeList;
typedef struct _GXmlxNodeListIface GXmlxNodeListIface;

#define GXML_TYPE_XNODE (gxml_xnode_get_type ())
#define GXML_XNODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_XNODE, GXmlxNode))
#define GXML_XNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_XNODE, GXmlxNodeClass))
#define GXML_IS_XNODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_XNODE))
#define GXML_IS_XNODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_XNODE))
#define GXML_XNODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_XNODE, GXmlxNodeClass))

typedef struct _GXmlxNode GXmlxNode;
typedef struct _GXmlxNodeClass GXmlxNodeClass;

#define GXML_TYPE_CHILD_NODE_LIST (gxml_child_node_list_get_type ())
#define GXML_CHILD_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_CHILD_NODE_LIST, GXmlChildNodeList))
#define GXML_CHILD_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_CHILD_NODE_LIST, GXmlChildNodeListClass))
#define GXML_IS_CHILD_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_CHILD_NODE_LIST))
#define GXML_IS_CHILD_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_CHILD_NODE_LIST))
#define GXML_CHILD_NODE_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_CHILD_NODE_LIST, GXmlChildNodeListClass))

typedef struct _GXmlChildNodeList GXmlChildNodeList;
typedef struct _GXmlChildNodeListClass GXmlChildNodeListClass;
typedef struct _GXmlChildNodeListPrivate GXmlChildNodeListPrivate;

#define GXML_TYPE_XDOCUMENT (gxml_xdocument_get_type ())
#define GXML_XDOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_XDOCUMENT, GXmlxDocument))
#define GXML_XDOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_XDOCUMENT, GXmlxDocumentClass))
#define GXML_IS_XDOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_XDOCUMENT))
#define GXML_IS_XDOCUMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_XDOCUMENT))
#define GXML_XDOCUMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_XDOCUMENT, GXmlxDocumentClass))

typedef struct _GXmlxDocument GXmlxDocument;
typedef struct _GXmlxDocumentClass GXmlxDocumentClass;

#define GXML_CHILD_NODE_LIST_TYPE_ITERATOR (gxml_child_node_list_iterator_get_type ())
#define GXML_CHILD_NODE_LIST_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_CHILD_NODE_LIST_TYPE_ITERATOR, GXmlChildNodeListIterator))
#define GXML_CHILD_NODE_LIST_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_CHILD_NODE_LIST_TYPE_ITERATOR, GXmlChildNodeListIteratorClass))
#define GXML_CHILD_NODE_LIST_IS_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_CHILD_NODE_LIST_TYPE_ITERATOR))
#define GXML_CHILD_NODE_LIST_IS_ITERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_CHILD_NODE_LIST_TYPE_ITERATOR))
#define GXML_CHILD_NODE_LIST_ITERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_CHILD_NODE_LIST_TYPE_ITERATOR, GXmlChildNodeListIteratorClass))

typedef struct _GXmlChildNodeListIterator GXmlChildNodeListIterator;
typedef struct _GXmlChildNodeListIteratorClass GXmlChildNodeListIteratorClass;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

#define GXML_TYPE_BACKED_NODE (gxml_backed_node_get_type ())
#define GXML_BACKED_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_BACKED_NODE, GXmlBackedNode))
#define GXML_BACKED_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_BACKED_NODE, GXmlBackedNodeClass))
#define GXML_IS_BACKED_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_BACKED_NODE))
#define GXML_IS_BACKED_NODE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_BACKED_NODE))
#define GXML_BACKED_NODE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_BACKED_NODE, GXmlBackedNodeClass))

typedef struct _GXmlBackedNode GXmlBackedNode;
typedef struct _GXmlBackedNodeClass GXmlBackedNodeClass;

#define GXML_TYPE_NODE (gxml_node_get_type ())
#define GXML_NODE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_NODE, GXmlNode))
#define GXML_IS_NODE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_NODE))
#define GXML_NODE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GXML_TYPE_NODE, GXmlNodeIface))

typedef struct _GXmlNode GXmlNode;
typedef struct _GXmlNodeIface GXmlNodeIface;

#define GXML_TYPE_ELEMENT_LIST (gxml_element_list_get_type ())
#define GXML_ELEMENT_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_ELEMENT_LIST, GXmlElementList))
#define GXML_ELEMENT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_ELEMENT_LIST, GXmlElementListClass))
#define GXML_IS_ELEMENT_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_ELEMENT_LIST))
#define GXML_IS_ELEMENT_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_ELEMENT_LIST))
#define GXML_ELEMENT_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_ELEMENT_LIST, GXmlElementListClass))

typedef struct _GXmlElementList GXmlElementList;
typedef struct _GXmlElementListClass GXmlElementListClass;

#define GXML_TYPE_NAMESPACE (gxml_namespace_get_type ())
#define GXML_NAMESPACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_NAMESPACE, GXmlNamespace))
#define GXML_IS_NAMESPACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_NAMESPACE))
#define GXML_NAMESPACE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GXML_TYPE_NAMESPACE, GXmlNamespaceIface))

typedef struct _GXmlNamespace GXmlNamespace;
typedef struct _GXmlNamespaceIface GXmlNamespaceIface;

#define GXML_TYPE_NODE_TYPE (gxml_node_type_get_type ())

#define GXML_TYPE_DOCUMENT (gxml_document_get_type ())
#define GXML_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_DOCUMENT, GXmlDocument))
#define GXML_IS_DOCUMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_DOCUMENT))
#define GXML_DOCUMENT_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GXML_TYPE_DOCUMENT, GXmlDocumentIface))

typedef struct _GXmlDocument GXmlDocument;
typedef struct _GXmlDocumentIface GXmlDocumentIface;
typedef struct _GXmlxNodePrivate GXmlxNodePrivate;

#define GXML_TYPE_NAMESPACE_ATTR (gxml_namespace_attr_get_type ())
#define GXML_NAMESPACE_ATTR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_NAMESPACE_ATTR, GXmlNamespaceAttr))
#define GXML_NAMESPACE_ATTR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_NAMESPACE_ATTR, GXmlNamespaceAttrClass))
#define GXML_IS_NAMESPACE_ATTR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_NAMESPACE_ATTR))
#define GXML_IS_NAMESPACE_ATTR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_NAMESPACE_ATTR))
#define GXML_NAMESPACE_ATTR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_NAMESPACE_ATTR, GXmlNamespaceAttrClass))

typedef struct _GXmlNamespaceAttr GXmlNamespaceAttr;
typedef struct _GXmlNamespaceAttrClass GXmlNamespaceAttrClass;

#define GXML_TYPE_ABSTRACT_NAMED_ATTR_MAP (gxml_abstract_named_attr_map_get_type ())
#define GXML_ABSTRACT_NAMED_ATTR_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_ABSTRACT_NAMED_ATTR_MAP, GXmlAbstractNamedAttrMap))
#define GXML_ABSTRACT_NAMED_ATTR_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_ABSTRACT_NAMED_ATTR_MAP, GXmlAbstractNamedAttrMapClass))
#define GXML_IS_ABSTRACT_NAMED_ATTR_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_ABSTRACT_NAMED_ATTR_MAP))
#define GXML_IS_ABSTRACT_NAMED_ATTR_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_ABSTRACT_NAMED_ATTR_MAP))
#define GXML_ABSTRACT_NAMED_ATTR_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_ABSTRACT_NAMED_ATTR_MAP, GXmlAbstractNamedAttrMapClass))

typedef struct _GXmlAbstractNamedAttrMap GXmlAbstractNamedAttrMap;
typedef struct _GXmlAbstractNamedAttrMapClass GXmlAbstractNamedAttrMapClass;

#define GXML_TYPE_NAMED_ATTR_MAP (gxml_named_attr_map_get_type ())
#define GXML_NAMED_ATTR_MAP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_NAMED_ATTR_MAP, GXmlNamedAttrMap))
#define GXML_NAMED_ATTR_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_NAMED_ATTR_MAP, GXmlNamedAttrMapClass))
#define GXML_IS_NAMED_ATTR_MAP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_NAMED_ATTR_MAP))
#define GXML_IS_NAMED_ATTR_MAP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_NAMED_ATTR_MAP))
#define GXML_NAMED_ATTR_MAP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_NAMED_ATTR_MAP, GXmlNamedAttrMapClass))

typedef struct _GXmlNamedAttrMap GXmlNamedAttrMap;
typedef struct _GXmlNamedAttrMapClass GXmlNamedAttrMapClass;

#define GXML_TYPE_ABSTRACT_NAMESPACE_ATTR_NODE_LIST (gxml_abstract_namespace_attr_node_list_get_type ())
#define GXML_ABSTRACT_NAMESPACE_ATTR_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_ABSTRACT_NAMESPACE_ATTR_NODE_LIST, GXmlAbstractNamespaceAttrNodeList))
#define GXML_ABSTRACT_NAMESPACE_ATTR_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_ABSTRACT_NAMESPACE_ATTR_NODE_LIST, GXmlAbstractNamespaceAttrNodeListClass))
#define GXML_IS_ABSTRACT_NAMESPACE_ATTR_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_ABSTRACT_NAMESPACE_ATTR_NODE_LIST))
#define GXML_IS_ABSTRACT_NAMESPACE_ATTR_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_ABSTRACT_NAMESPACE_ATTR_NODE_LIST))
#define GXML_ABSTRACT_NAMESPACE_ATTR_NODE_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_ABSTRACT_NAMESPACE_ATTR_NODE_LIST, GXmlAbstractNamespaceAttrNodeListClass))

typedef struct _GXmlAbstractNamespaceAttrNodeList GXmlAbstractNamespaceAttrNodeList;
typedef struct _GXmlAbstractNamespaceAttrNodeListClass GXmlAbstractNamespaceAttrNodeListClass;

#define GXML_TYPE_NAMESPACE_ATTR_NODE_LIST (gxml_namespace_attr_node_list_get_type ())
#define GXML_NAMESPACE_ATTR_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GXML_TYPE_NAMESPACE_ATTR_NODE_LIST, GXmlNamespaceAttrNodeList))
#define GXML_NAMESPACE_ATTR_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXML_TYPE_NAMESPACE_ATTR_NODE_LIST, GXmlNamespaceAttrNodeListClass))
#define GXML_IS_NAMESPACE_ATTR_NODE_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GXML_TYPE_NAMESPACE_ATTR_NODE_LIST))
#define GXML_IS_NAMESPACE_ATTR_NODE_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXML_TYPE_NAMESPACE_ATTR_NODE_LIST))
#define GXML_NAMESPACE_ATTR_NODE_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GXML_TYPE_NAMESPACE_ATTR_NODE_LIST, GXmlNamespaceAttrNodeListClass))

typedef struct _GXmlNamespaceAttrNodeList GXmlNamespaceAttrNodeList;
typedef struct _GXmlNamespaceAttrNodeListClass GXmlNamespaceAttrNodeListClass;
typedef struct _GXmlBackedNodePrivate GXmlBackedNodePrivate;

#define GXML_TYPE_DOM_EXCEPTION (gxml_dom_exception_get_type ())
#define _g_free0(var) (var = (g_free (var), NULL))
typedef struct _GXmlChildNodeListIteratorPrivate GXmlChildNodeListIteratorPrivate;
#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 _GXmlxNodeListIface {
	GTypeInterface parent_iface;
	GXmlxNode* (*item) (GXmlxNodeList* self, gulong idx);
	GXmlxNode* (*insert_before) (GXmlxNodeList* self, GXmlxNode* new_child, GXmlxNode* ref_child);
	GXmlxNode* (*replace_child) (GXmlxNodeList* self, GXmlxNode* new_child, GXmlxNode* old_child);
	GXmlxNode* (*remove_child) (GXmlxNodeList* self, GXmlxNode* old_child);
	GXmlxNode* (*append_child) (GXmlxNodeList* self, GXmlxNode* new_child);
	gchar* (*to_string) (GXmlxNodeList* self, gboolean in_line);
	GXmlxNode* (*first) (GXmlxNodeList* self);
	GXmlxNode* (*last) (GXmlxNodeList* self);
	GXmlxNode* (*get) (GXmlxNodeList* self, gint n);
	gulong (*get_length) (GXmlxNodeList* self);
	void (*set_length) (GXmlxNodeList* self, gulong value);
};

struct _GXmlChildNodeList {
	GeeAbstractBidirList parent_instance;
	GXmlChildNodeListPrivate * priv;
	GXmlxDocument* owner;
};

struct _GXmlChildNodeListClass {
	GeeAbstractBidirListClass parent_class;
	GXmlxNode* (*append_child) (GXmlChildNodeList* self, GXmlxNode* new_child);
	xmlNode* (*get_head) (GXmlChildNodeList* self);
	void (*set_head) (GXmlChildNodeList* self, xmlNode* value);
	xmlNode* (*get_parent_as_xmlnode) (GXmlChildNodeList* self);
};

struct _GXmlNamespaceIface {
	GTypeInterface parent_iface;
	gchar* (*get_uri) (GXmlNamespace* self);
	gchar* (*get_prefix) (GXmlNamespace* self);
};

typedef enum  {
	GXML_NODE_TYPE_X_UNKNOWN = 0,
	GXML_NODE_TYPE_ELEMENT = 1,
	GXML_NODE_TYPE_ATTRIBUTE,
	GXML_NODE_TYPE_TEXT,
	GXML_NODE_TYPE_CDATA_SECTION,
	GXML_NODE_TYPE_ENTITY_REFERENCE,
	GXML_NODE_TYPE_ENTITY,
	GXML_NODE_TYPE_PROCESSING_INSTRUCTION,
	GXML_NODE_TYPE_COMMENT,
	GXML_NODE_TYPE_DOCUMENT,
	GXML_NODE_TYPE_DOCUMENT_TYPE,
	GXML_NODE_TYPE_DOCUMENT_FRAGMENT,
	GXML_NODE_TYPE_NOTATION
} GXmlNodeType;

struct _GXmlDocumentIface {
	GTypeInterface parent_iface;
	GXmlNode* (*create_element) (GXmlDocument* self, const gchar* name, GError** error);
	GXmlNode* (*create_text) (GXmlDocument* self, const gchar* text);
	GXmlNode* (*create_comment) (GXmlDocument* self, const gchar* text);
	GXmlNode* (*create_cdata) (GXmlDocument* self, const gchar* text);
	GXmlNode* (*create_pi) (GXmlDocument* self, const gchar* target, const gchar* data);
	gboolean (*save) (GXmlDocument* self, GCancellable* cancellable, GError** error);
	gboolean (*save_as) (GXmlDocument* self, GFile* f, GCancellable* cancellable, GError** error);
	gboolean (*get_indent) (GXmlDocument* self);
	void (*set_indent) (GXmlDocument* self, gboolean value);
	gboolean (*get_ns_top) (GXmlDocument* self);
	void (*set_ns_top) (GXmlDocument* self, gboolean value);
	gboolean (*get_prefix_default_ns) (GXmlDocument* self);
	void (*set_prefix_default_ns) (GXmlDocument* self, gboolean value);
	gboolean (*get_backup) (GXmlDocument* self);
	void (*set_backup) (GXmlDocument* self, gboolean value);
	GXmlNode* (*get_root) (GXmlDocument* self);
	GFile* (*get_file) (GXmlDocument* self);
	void (*set_file) (GXmlDocument* self, GFile* value);
};

struct _GXmlNodeIface {
	GTypeInterface parent_iface;
	GXmlNode* (*get) (GXmlNode* self, const gchar* key);
	GXmlElementList* (*get_elements_by_property_value) (GXmlNode* self, const gchar* property, const gchar* value);
	gchar* (*to_string) (GXmlNode* self);
	gboolean (*set_namespace) (GXmlNode* self, const gchar* uri, const gchar* prefix);
	gchar* (*ns_prefix) (GXmlNode* self);
	gchar* (*ns_uri) (GXmlNode* self);
	GeeList* (*get_namespaces) (GXmlNode* self);
	GeeBidirList* (*get_childs) (GXmlNode* self);
	GeeBidirList* (*get_children) (GXmlNode* self);
	GeeMap* (*get_attrs) (GXmlNode* self);
	gchar* (*get_name) (GXmlNode* self);
	gchar* (*get_value) (GXmlNode* self);
	void (*set_value) (GXmlNode* self, const gchar* value);
	GXmlNodeType (*get_type_node) (GXmlNode* self);
	GXmlDocument* (*get_document) (GXmlNode* self);
	GXmlNode* (*get_parent) (GXmlNode* self);
};

struct _GXmlxNode {
	GObject parent_instance;
	GXmlxNodePrivate * priv;
	GXmlxNodeList* _child_nodes;
	GXmlNamedAttrMap* _attributes;
	GXmlNamespaceAttrNodeList* _namespace_definitions;
};

struct _GXmlxNodeClass {
	GObjectClass parent_class;
	GXmlNamespaceAttr* (*add_namespace_attr) (GXmlxNode* self, const gchar* uri, const gchar* namespace_prefix);
	gboolean (*set_namespace) (GXmlxNode* self, const gchar* uri, const gchar* namespace_prefix);
	GXmlxNode* (*insert_before) (GXmlxNode* self, GXmlxNode* new_child, GXmlxNode* ref_child);
	GXmlxNode* (*replace_child) (GXmlxNode* self, GXmlxNode* new_child, GXmlxNode* old_child);
	GXmlxNode* (*remove_child) (GXmlxNode* self, GXmlxNode* old_child);
	GXmlxNode* (*append_child) (GXmlxNode* self, GXmlxNode* new_child);
	gboolean (*has_child_nodes) (GXmlxNode* self);
	GXmlxNode* (*clone_node) (GXmlxNode* self, gboolean deep);
	gchar* (*stringify) (GXmlxNode* self, gboolean format, gint level);
	gchar* (*to_string) (GXmlxNode* self);
	GeeList* (*get_namespace_definitions) (GXmlxNode* self);
	void (*set_namespace_definitions) (GXmlxNode* self, GeeList* value);
	const gchar* (*get_namespace_uri) (GXmlxNode* self);
	void (*set_namespace_uri) (GXmlxNode* self, const gchar* value);
	const gchar* (*get_namespace_prefix) (GXmlxNode* self);
	void (*set_namespace_prefix) (GXmlxNode* self, const gchar* value);
	const gchar* (*get_local_name) (GXmlxNode* self);
	void (*set_local_name) (GXmlxNode* self, const gchar* value);
	const gchar* (*get_node_name) (GXmlxNode* self);
	void (*set_node_name) (GXmlxNode* self, const gchar* value);
	const gchar* (*get_node_value) (GXmlxNode* self);
	void (*set_node_value) (GXmlxNode* self, const gchar* value);
	GXmlNodeType (*get_node_type) (GXmlxNode* self);
	void (*set_node_type) (GXmlxNode* self, GXmlNodeType value);
	GXmlxNode* (*get_parent_node) (GXmlxNode* self);
	void (*set_parent_node) (GXmlxNode* self, GXmlxNode* value);
	GXmlxNodeList* (*get_child_nodes) (GXmlxNode* self);
	void (*set_child_nodes) (GXmlxNode* self, GXmlxNodeList* value);
	GXmlxNode* (*get_first_child) (GXmlxNode* self);
	void (*set_first_child) (GXmlxNode* self, GXmlxNode* value);
	GXmlxNode* (*get_last_child) (GXmlxNode* self);
	void (*set_last_child) (GXmlxNode* self, GXmlxNode* value);
	GXmlxNode* (*get_previous_sibling) (GXmlxNode* self);
	void (*set_previous_sibling) (GXmlxNode* self, GXmlxNode* value);
	GXmlxNode* (*get_next_sibling) (GXmlxNode* self);
	void (*set_next_sibling) (GXmlxNode* self, GXmlxNode* value);
	GXmlNamedAttrMap* (*get_attributes) (GXmlxNode* self);
	void (*set_attributes) (GXmlxNode* self, GXmlNamedAttrMap* value);
	GeeList* (*get_namespaces) (GXmlxNode* self);
	GeeBidirList* (*get_children) (GXmlxNode* self);
	GeeMap* (*get_attrs) (GXmlxNode* self);
	gchar* (*get_name) (GXmlxNode* self);
	gchar* (*get_value) (GXmlxNode* self);
	void (*set_value) (GXmlxNode* self, const gchar* value);
	GXmlNode* (*get_parent) (GXmlxNode* self);
};

struct _GXmlBackedNode {
	GXmlxNode parent_instance;
	GXmlBackedNodePrivate * priv;
	xmlNode* node;
};

struct _GXmlBackedNodeClass {
	GXmlxNodeClass parent_class;
};

typedef enum  {
	GXML_DOM_EXCEPTION_NONE,
	GXML_DOM_EXCEPTION_INDEX_SIZE,
	GXML_DOM_EXCEPTION_DOMSTRING_SIZE,
	GXML_DOM_EXCEPTION_HIERARCHY_REQUEST,
	GXML_DOM_EXCEPTION_WRONG_DOCUMENT,
	GXML_DOM_EXCEPTION_INVALID_CHARACTER,
	GXML_DOM_EXCEPTION_NO_DATA_ALLOWED,
	GXML_DOM_EXCEPTION_NO_MODIFICATION_ALLOWED,
	GXML_DOM_EXCEPTION_NOT_FOUND,
	GXML_DOM_EXCEPTION_NOT_SUPPORTED,
	GXML_DOM_EXCEPTION_INUSE_ATTRIBUTE,
	GXML_DOM_EXCEPTION_DOM,
	GXML_DOM_EXCEPTION_INVALID_DOC,
	GXML_DOM_EXCEPTION_INVALID_ROOT,
	GXML_DOM_EXCEPTION_NAMESPACE,
	GXML_DOM_EXCEPTION_X_OTHER
} GXmlDomException;

struct _GXmlChildNodeListIterator {
	GObject parent_instance;
	GXmlChildNodeListIteratorPrivate * priv;
};

struct _GXmlChildNodeListIteratorClass {
	GObjectClass parent_class;
};

struct _GXmlChildNodeListIteratorPrivate {
	GXmlChildNodeList* list;
	GXmlxDocument* doc;
	xmlNode* cur;
	xmlNode* head;
	gint i;
};


static gpointer gxml_child_node_list_parent_class = NULL;
static gpointer gxml_child_node_list_iterator_parent_class = NULL;
static GeeTraversableIface* gxml_child_node_list_iterator_gee_traversable_parent_iface = NULL;
static GeeIteratorIface* gxml_child_node_list_iterator_gee_iterator_parent_iface = NULL;
static GeeListIteratorIface* gxml_child_node_list_iterator_gee_list_iterator_parent_iface = NULL;
static GeeBidirIteratorIface* gxml_child_node_list_iterator_gee_bidir_iterator_parent_iface = NULL;
static GeeBidirListIteratorIface* gxml_child_node_list_iterator_gee_bidir_list_iterator_parent_iface = NULL;
static GXmlxNodeListIface* gxml_child_node_list_gxml_xnode_list_parent_iface = NULL;

GType gxml_xnode_get_type (void) G_GNUC_CONST;
GType gxml_xnode_list_get_type (void) G_GNUC_CONST;
GType gxml_child_node_list_get_type (void) G_GNUC_CONST;
GType gxml_xdocument_get_type (void) G_GNUC_CONST;
enum  {
	GXML_CHILD_NODE_LIST_DUMMY_PROPERTY,
	GXML_CHILD_NODE_LIST_HEAD,
	GXML_CHILD_NODE_LIST_PARENT_AS_XMLNODE,
	GXML_CHILD_NODE_LIST_LENGTH,
	GXML_CHILD_NODE_LIST_READ_ONLY,
	GXML_CHILD_NODE_LIST_SIZE
};
static gboolean gxml_child_node_list_real_add (GeeAbstractCollection* base, GXmlxNode* item);
GXmlxNode* gxml_child_node_list_append_child (GXmlChildNodeList* self, GXmlxNode* new_child);
static void gxml_child_node_list_real_clear (GeeAbstractCollection* base);
static gboolean gxml_child_node_list_real_contains (GeeAbstractCollection* base, GXmlxNode* item);
static gboolean gxml_child_node_list_real_remove (GeeAbstractCollection* base, GXmlxNode* item);
static GeeIterator* gxml_child_node_list_real_iterator (GeeAbstractCollection* base);
static GXmlChildNodeListIterator* gxml_child_node_list_iterator_new (GXmlChildNodeList* list);
static GXmlChildNodeListIterator* gxml_child_node_list_iterator_construct (GType object_type, GXmlChildNodeList* list);
static GType gxml_child_node_list_iterator_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static gboolean gxml_child_node_list_real_foreach (GeeAbstractCollection* base, GeeForallFunc func, void* func_target);
static GXmlxNode* gxml_child_node_list_real_get (GXmlxNodeList* base, gint n);
xmlNode* gxml_child_node_list_get_head (GXmlChildNodeList* self);
GXmlxNode* gxml_xdocument_lookup_node (GXmlxDocument* self, xmlNode* xmlnode);
static gint gxml_child_node_list_real_index_of (GeeAbstractList* base, GXmlxNode* item);
GType gxml_backed_node_get_type (void) G_GNUC_CONST;
GType gxml_element_list_get_type (void) G_GNUC_CONST;
GType gxml_namespace_get_type (void) G_GNUC_CONST;
GType gxml_node_type_get_type (void) G_GNUC_CONST;
GType gxml_document_get_type (void) G_GNUC_CONST;
GType gxml_node_get_type (void) G_GNUC_CONST;
GType gxml_namespace_attr_get_type (void) G_GNUC_CONST;
GType gxml_abstract_named_attr_map_get_type (void) G_GNUC_CONST;
GType gxml_named_attr_map_get_type (void) G_GNUC_CONST;
GType gxml_abstract_namespace_attr_node_list_get_type (void) G_GNUC_CONST;
GType gxml_namespace_attr_node_list_get_type (void) G_GNUC_CONST;
static void gxml_child_node_list_real_insert (GeeAbstractList* base, gint index, GXmlxNode* item);
GXmlxNode* gxml_xnode_list_insert_before (GXmlxNodeList* self, GXmlxNode* new_child, GXmlxNode* ref_child);
static GeeListIterator* gxml_child_node_list_real_list_iterator (GeeAbstractList* base);
static GXmlxNode* gxml_child_node_list_real_remove_at (GeeAbstractList* base, gint index);
GXmlxNode* gxml_xnode_list_remove_child (GXmlxNodeList* self, GXmlxNode* old_child);
static void gxml_child_node_list_real_set (GeeAbstractList* base, gint index, GXmlxNode* item);
GXmlxNode* gxml_xnode_list_replace_child (GXmlxNodeList* self, GXmlxNode* new_child, GXmlxNode* old_child);
static GeeList* gxml_child_node_list_real_slice (GeeAbstractList* base, gint start, gint stop);
static GeeBidirListIterator* gxml_child_node_list_real_bidir_list_iterator (GeeAbstractBidirList* base);
static GXmlxNode* gxml_child_node_list_real_first (GXmlxNodeList* base);
static GXmlxNode* gxml_child_node_list_real_last (GXmlxNodeList* base);
static GXmlxNode* gxml_child_node_list_real_item (GXmlxNodeList* base, gulong idx);
static GXmlxNode* gxml_child_node_list_real_insert_before (GXmlxNodeList* base, GXmlxNode* new_child, GXmlxNode* ref_child);
GType gxml_dom_exception_get_type (void) G_GNUC_CONST;
void gxml_warning (GXmlDomException ex, const gchar* message) G_GNUC_DEPRECATED;
const gchar* gxml_xnode_get_node_name (GXmlxNode* self);
GXmlNodeType gxml_xnode_get_node_type (GXmlxNode* self);
GXmlxNodeList* gxml_xnode_get_child_nodes (GXmlxNode* self);
GXmlxNode* gxml_xnode_list_get (GXmlxNodeList* self, gint n);
static GXmlxNode* gxml_child_node_list_real_replace_child (GXmlxNodeList* base, GXmlxNode* new_child, GXmlxNode* old_child);
static GXmlxNode* gxml_child_node_list_real_remove_child (GXmlxNodeList* base, GXmlxNode* old_child);
static GXmlxNode* gxml_child_node_list_real_append_child (GXmlChildNodeList* self, GXmlxNode* new_child);
xmlNode* gxml_child_node_list_get_parent_as_xmlnode (GXmlChildNodeList* self);
static gchar* gxml_child_node_list_real_to_string (GXmlxNodeList* base, gboolean in_line);
gchar* gxml_xnode_stringify (GXmlxNode* self, gboolean format, gint level);
GXmlChildNodeList* gxml_child_node_list_construct (GType object_type);
void gxml_child_node_list_set_head (GXmlChildNodeList* self, xmlNode* value);
static GObject * gxml_child_node_list_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
void gxml_init_init (void);
#define GXML_CHILD_NODE_LIST_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GXML_CHILD_NODE_LIST_TYPE_ITERATOR, GXmlChildNodeListIteratorPrivate))
enum  {
	GXML_CHILD_NODE_LIST_ITERATOR_DUMMY_PROPERTY,
	GXML_CHILD_NODE_LIST_ITERATOR_READ_ONLY,
	GXML_CHILD_NODE_LIST_ITERATOR_VALID
};
static GXmlxNode* gxml_child_node_list_iterator_real_get (GeeIterator* base);
static gboolean gxml_child_node_list_iterator_real_has_next (GeeIterator* base);
static gboolean gxml_child_node_list_iterator_real_next (GeeIterator* base);
static void gxml_child_node_list_iterator_real_remove (GeeIterator* base);
static gboolean gxml_child_node_list_iterator_real_foreach (GeeTraversable* base, GeeForallFunc f, void* f_target);
static void gxml_child_node_list_iterator_real_add (GeeListIterator* base, GXmlxNode* item);
static gint gxml_child_node_list_iterator_real_index (GeeListIterator* base);
static void gxml_child_node_list_iterator_real_set (GeeListIterator* base, GXmlxNode* item);
static gboolean gxml_child_node_list_iterator_real_first (GeeBidirIterator* base);
GXmlxNode* gxml_xnode_list_first (GXmlxNodeList* self);
static gboolean gxml_child_node_list_iterator_real_has_previous (GeeBidirIterator* base);
static gboolean gxml_child_node_list_iterator_real_last (GeeBidirIterator* base);
static gboolean gxml_child_node_list_iterator_real_previous (GeeBidirIterator* base);
static void gxml_child_node_list_iterator_real_insert (GeeBidirListIterator* base, GXmlxNode* item);
static void gxml_child_node_list_iterator_finalize (GObject* obj);
static void _vala_gxml_child_node_list_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void gxml_child_node_list_finalize (GObject* obj);
gulong gxml_xnode_list_get_length (GXmlxNodeList* self);
static void _vala_gxml_child_node_list_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
void gxml_xnode_list_set_length (GXmlxNodeList* self, gulong value);
static void _vala_gxml_child_node_list_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);


static gboolean gxml_child_node_list_real_add (GeeAbstractCollection* base, GXmlxNode* item) {
	GXmlChildNodeList * self;
	gboolean result = FALSE;
	GXmlxNode* _tmp0_ = NULL;
	self = (GXmlChildNodeList*) base;
	g_return_val_if_fail (item != NULL, FALSE);
	_tmp0_ = item;
	gxml_child_node_list_append_child (self, _tmp0_);
	result = TRUE;
	return result;
}


static void gxml_child_node_list_real_clear (GeeAbstractCollection* base) {
	GXmlChildNodeList * self;
	self = (GXmlChildNodeList*) base;
}


static gboolean gxml_child_node_list_real_contains (GeeAbstractCollection* base, GXmlxNode* item) {
	GXmlChildNodeList * self;
	gboolean result = FALSE;
	self = (GXmlChildNodeList*) base;
	g_return_val_if_fail (item != NULL, FALSE);
	result = FALSE;
	return result;
}


static gboolean gxml_child_node_list_real_remove (GeeAbstractCollection* base, GXmlxNode* item) {
	GXmlChildNodeList * self;
	gboolean result = FALSE;
	self = (GXmlChildNodeList*) base;
	g_return_val_if_fail (item != NULL, FALSE);
	result = FALSE;
	return result;
}


static GeeIterator* gxml_child_node_list_real_iterator (GeeAbstractCollection* base) {
	GXmlChildNodeList * self;
	GeeIterator* result = NULL;
	GXmlChildNodeListIterator* _tmp0_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gxml_child_node_list_iterator_new (self);
	result = (GeeIterator*) _tmp0_;
	return result;
}


static gboolean gxml_child_node_list_real_foreach (GeeAbstractCollection* base, GeeForallFunc func, void* func_target) {
	GXmlChildNodeList * self;
	gboolean result = FALSE;
	GeeIterator* _tmp0_ = NULL;
	GeeIterator* _tmp1_ = NULL;
	GeeForallFunc _tmp2_ = NULL;
	void* _tmp2__target = NULL;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) self);
	_tmp1_ = _tmp0_;
	_tmp2_ = func;
	_tmp2__target = func_target;
	_tmp3_ = gee_traversable_foreach ((GeeTraversable*) _tmp1_, _tmp2_, _tmp2__target);
	_tmp4_ = _tmp3_;
	_g_object_unref0 (_tmp1_);
	result = _tmp4_;
	return result;
}


static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


static GXmlxNode* gxml_child_node_list_real_get (GXmlxNodeList* base, gint n) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	xmlNode* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	xmlNode* cur = NULL;
	xmlNode* _tmp2_ = NULL;
	xmlNode* _tmp3_ = NULL;
	gint i = 0;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gxml_child_node_list_get_head (self);
	_tmp1_ = _tmp0_;
	_vala_return_val_if_fail (_tmp1_ != NULL, "head != null", NULL);
	_tmp2_ = gxml_child_node_list_get_head (self);
	_tmp3_ = _tmp2_;
	cur = _tmp3_;
	i = 0;
	while (TRUE) {
		xmlNode* _tmp4_ = NULL;
		gint _tmp5_ = 0;
		gint _tmp6_ = 0;
		xmlNode* _tmp11_ = NULL;
		xmlNode* _tmp12_ = NULL;
		gint _tmp13_ = 0;
		_tmp4_ = cur;
		if (!(_tmp4_ != NULL)) {
			break;
		}
		_tmp5_ = i;
		_tmp6_ = n;
		if (_tmp5_ == _tmp6_) {
			GXmlxDocument* _tmp7_ = NULL;
			xmlNode* _tmp8_ = NULL;
			GXmlxNode* _tmp9_ = NULL;
			GXmlxNode* _tmp10_ = NULL;
			_tmp7_ = self->owner;
			_tmp8_ = cur;
			_tmp9_ = gxml_xdocument_lookup_node (_tmp7_, _tmp8_);
			_tmp10_ = _g_object_ref0 (_tmp9_);
			result = _tmp10_;
			return result;
		}
		_tmp11_ = cur;
		_tmp12_ = _tmp11_->next;
		cur = _tmp12_;
		_tmp13_ = i;
		i = _tmp13_ + 1;
	}
	result = NULL;
	return result;
}


static gint gxml_child_node_list_real_index_of (GeeAbstractList* base, GXmlxNode* item) {
	GXmlChildNodeList * self;
	gint result = 0;
	GXmlxNode* _tmp0_ = NULL;
	xmlNode* l = NULL;
	xmlNode* _tmp1_ = NULL;
	xmlNode* _tmp2_ = NULL;
	gint i = 0;
	self = (GXmlChildNodeList*) base;
	g_return_val_if_fail (item != NULL, 0);
	_tmp0_ = item;
	_vala_return_val_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (_tmp0_, GXML_TYPE_BACKED_NODE), "item is BackedNode", 0);
	_tmp1_ = gxml_child_node_list_get_head (self);
	_tmp2_ = _tmp1_;
	l = _tmp2_;
	i = 0;
	while (TRUE) {
		xmlNode* _tmp3_ = NULL;
		xmlNode* _tmp4_ = NULL;
		GXmlxNode* _tmp5_ = NULL;
		xmlNode* _tmp6_ = NULL;
		xmlNode* _tmp7_ = NULL;
		xmlNode* _tmp8_ = NULL;
		xmlNode* _tmp9_ = NULL;
		_tmp3_ = l;
		_tmp4_ = _tmp3_->next;
		if (!(_tmp4_ != NULL)) {
			break;
		}
		_tmp5_ = item;
		_tmp6_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp5_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
		_tmp7_ = l;
		if (_tmp6_ == _tmp7_) {
			result = i;
			return result;
		}
		_tmp8_ = l;
		_tmp9_ = _tmp8_->next;
		l = _tmp9_;
	}
	result = -1;
	return result;
}


static void gxml_child_node_list_real_insert (GeeAbstractList* base, gint index, GXmlxNode* item) {
	GXmlChildNodeList * self;
	GXmlxNode* n = NULL;
	gint _tmp0_ = 0;
	gpointer _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	self = (GXmlChildNodeList*) base;
	g_return_if_fail (item != NULL);
	_tmp0_ = index;
	_tmp1_ = gee_abstract_list_get ((GeeAbstractList*) self, _tmp0_);
	n = (GXmlxNode*) _tmp1_;
	_tmp2_ = n;
	if (_tmp2_ != NULL) {
		GXmlxNode* _tmp3_ = NULL;
		GXmlxNode* _tmp4_ = NULL;
		_tmp3_ = item;
		_tmp4_ = n;
		gxml_xnode_list_insert_before ((GXmlxNodeList*) self, _tmp3_, _tmp4_);
	}
	_g_object_unref0 (n);
}


static GeeListIterator* gxml_child_node_list_real_list_iterator (GeeAbstractList* base) {
	GXmlChildNodeList * self;
	GeeListIterator* result = NULL;
	GXmlChildNodeListIterator* _tmp0_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gxml_child_node_list_iterator_new (self);
	result = (GeeListIterator*) _tmp0_;
	return result;
}


static GXmlxNode* gxml_child_node_list_real_remove_at (GeeAbstractList* base, gint index) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	GXmlxNode* n = NULL;
	gint _tmp0_ = 0;
	gpointer _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	GXmlxNode* _tmp3_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = index;
	_tmp1_ = gee_abstract_list_get ((GeeAbstractList*) self, _tmp0_);
	n = (GXmlxNode*) _tmp1_;
	_tmp2_ = gxml_xnode_list_remove_child ((GXmlxNodeList*) self, n);
	_tmp3_ = _g_object_ref0 (_tmp2_);
	result = _tmp3_;
	_g_object_unref0 (n);
	return result;
}


static void gxml_child_node_list_real_set (GeeAbstractList* base, gint index, GXmlxNode* item) {
	GXmlChildNodeList * self;
	GXmlxNode* n = NULL;
	gint _tmp0_ = 0;
	gpointer _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	self = (GXmlChildNodeList*) base;
	g_return_if_fail (item != NULL);
	_tmp0_ = index;
	_tmp1_ = gee_abstract_list_get ((GeeAbstractList*) self, _tmp0_);
	n = (GXmlxNode*) _tmp1_;
	_tmp2_ = item;
	gxml_xnode_list_replace_child ((GXmlxNodeList*) self, _tmp2_, n);
	_g_object_unref0 (n);
}


static GeeList* gxml_child_node_list_real_slice (GeeAbstractList* base, gint start, gint stop) {
	GXmlChildNodeList * self;
	GeeList* result = NULL;
	self = (GXmlChildNodeList*) base;
	result = NULL;
	return result;
}


static GeeBidirListIterator* gxml_child_node_list_real_bidir_list_iterator (GeeAbstractBidirList* base) {
	GXmlChildNodeList * self;
	GeeBidirListIterator* result = NULL;
	GXmlChildNodeListIterator* _tmp0_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gxml_child_node_list_iterator_new (self);
	result = (GeeBidirListIterator*) _tmp0_;
	return result;
}


/** GNOME List conventions */
static GXmlxNode* gxml_child_node_list_real_first (GXmlxNodeList* base) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	GXmlxDocument* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	xmlNode* _tmp2_ = NULL;
	GXmlxNode* _tmp3_ = NULL;
	GXmlxNode* _tmp4_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = self->owner;
	_tmp1_ = gxml_child_node_list_get_head (self);
	_tmp2_ = _tmp1_;
	_tmp3_ = gxml_xdocument_lookup_node (_tmp0_, _tmp2_);
	_tmp4_ = _g_object_ref0 (_tmp3_);
	result = _tmp4_;
	return result;
}


static GXmlxNode* gxml_child_node_list_real_last (GXmlxNodeList* base) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	xmlNode* cur = NULL;
	xmlNode* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	GXmlxDocument* _tmp8_ = NULL;
	xmlNode* _tmp9_ = NULL;
	GXmlxNode* _tmp10_ = NULL;
	GXmlxNode* _tmp11_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gxml_child_node_list_get_head (self);
	_tmp1_ = _tmp0_;
	cur = _tmp1_;
	while (TRUE) {
		gboolean _tmp2_ = FALSE;
		xmlNode* _tmp3_ = NULL;
		xmlNode* _tmp6_ = NULL;
		xmlNode* _tmp7_ = NULL;
		_tmp3_ = cur;
		if (_tmp3_ != NULL) {
			xmlNode* _tmp4_ = NULL;
			xmlNode* _tmp5_ = NULL;
			_tmp4_ = cur;
			_tmp5_ = _tmp4_->next;
			_tmp2_ = _tmp5_ != NULL;
		} else {
			_tmp2_ = FALSE;
		}
		if (!_tmp2_) {
			break;
		}
		_tmp6_ = cur;
		_tmp7_ = _tmp6_->next;
		cur = _tmp7_;
	}
	_tmp8_ = self->owner;
	_tmp9_ = cur;
	_tmp10_ = gxml_xdocument_lookup_node (_tmp8_, _tmp9_);
	_tmp11_ = _g_object_ref0 (_tmp10_);
	result = _tmp11_;
	return result;
}


static GXmlxNode* gxml_child_node_list_real_item (GXmlxNodeList* base, gulong idx) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	gulong _tmp0_ = 0UL;
	gpointer _tmp1_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = idx;
	_tmp1_ = gee_abstract_list_get ((GeeAbstractList*) self, (gint) _tmp0_);
	result = (GXmlxNode*) _tmp1_;
	return result;
}


/** Node's child methods, implemented here **/
static GXmlxNode* gxml_child_node_list_real_insert_before (GXmlxNodeList* base, GXmlxNode* new_child, GXmlxNode* ref_child) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	xmlNode* child = NULL;
	xmlNode* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	xmlNode* _tmp11_ = NULL;
	GXmlxNode* _tmp43_ = NULL;
	self = (GXmlChildNodeList*) base;
	g_return_val_if_fail (new_child != NULL, NULL);
	_tmp0_ = gxml_child_node_list_get_head (self);
	_tmp1_ = _tmp0_;
	child = _tmp1_;
	_tmp2_ = ref_child;
	if (_tmp2_ == NULL) {
		GXmlxNode* _tmp3_ = NULL;
		_tmp3_ = ref_child;
		gxml_child_node_list_append_child (self, _tmp3_);
	}
	while (TRUE) {
		gboolean _tmp4_ = FALSE;
		xmlNode* _tmp5_ = NULL;
		GXmlxNode* _tmp6_ = NULL;
		xmlNode* _tmp7_ = NULL;
		xmlNode* _tmp9_ = NULL;
		xmlNode* _tmp10_ = NULL;
		_tmp5_ = child;
		_tmp6_ = ref_child;
		_tmp7_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp6_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
		if (_tmp5_ != _tmp7_) {
			xmlNode* _tmp8_ = NULL;
			_tmp8_ = child;
			_tmp4_ = _tmp8_ != NULL;
		} else {
			_tmp4_ = FALSE;
		}
		if (!_tmp4_) {
			break;
		}
		_tmp9_ = child;
		_tmp10_ = _tmp9_->next;
		child = _tmp10_;
	}
	_tmp11_ = child;
	if (_tmp11_ == NULL) {
		const gchar* _tmp12_ = NULL;
		GXmlxNode* _tmp13_ = NULL;
		const gchar* _tmp14_ = NULL;
		const gchar* _tmp15_ = NULL;
		GXmlxNode* _tmp16_ = NULL;
		const gchar* _tmp17_ = NULL;
		const gchar* _tmp18_ = NULL;
		gchar* _tmp19_ = NULL;
		gchar* _tmp20_ = NULL;
		_tmp12_ = _ ("ref_child '%s' not found, was supposed to have '%s' inserted before it" \
".");
		_tmp13_ = ref_child;
		_tmp14_ = gxml_xnode_get_node_name (_tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = new_child;
		_tmp17_ = gxml_xnode_get_node_name (_tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = g_strdup_printf (_tmp12_, _tmp15_, _tmp18_);
		_tmp20_ = _tmp19_;
		gxml_warning (GXML_DOM_EXCEPTION_NOT_FOUND, _tmp20_);
		_g_free0 (_tmp20_);
		result = NULL;
		return result;
	} else {
		GXmlxNode* _tmp21_ = NULL;
		GXmlNodeType _tmp22_ = 0;
		GXmlNodeType _tmp23_ = 0;
		_tmp21_ = new_child;
		_tmp22_ = gxml_xnode_get_node_type (_tmp21_);
		_tmp23_ = _tmp22_;
		if (_tmp23_ == GXML_NODE_TYPE_DOCUMENT_FRAGMENT) {
			{
				GXmlxNodeList* _new_grand_child_list = NULL;
				GXmlxNode* _tmp24_ = NULL;
				GXmlxNodeList* _tmp25_ = NULL;
				GXmlxNodeList* _tmp26_ = NULL;
				GXmlxNodeList* _tmp27_ = NULL;
				gint _new_grand_child_size = 0;
				GXmlxNodeList* _tmp28_ = NULL;
				gint _tmp29_ = 0;
				gint _tmp30_ = 0;
				gint _new_grand_child_index = 0;
				_tmp24_ = new_child;
				_tmp25_ = gxml_xnode_get_child_nodes (_tmp24_);
				_tmp26_ = _tmp25_;
				_tmp27_ = _g_object_ref0 (_tmp26_);
				_new_grand_child_list = _tmp27_;
				_tmp28_ = _new_grand_child_list;
				_tmp29_ = gee_collection_get_size ((GeeCollection*) _tmp28_);
				_tmp30_ = _tmp29_;
				_new_grand_child_size = _tmp30_;
				_new_grand_child_index = -1;
				while (TRUE) {
					gint _tmp31_ = 0;
					gint _tmp32_ = 0;
					gint _tmp33_ = 0;
					GXmlxNode* new_grand_child = NULL;
					GXmlxNodeList* _tmp34_ = NULL;
					gint _tmp35_ = 0;
					GXmlxNode* _tmp36_ = NULL;
					xmlNode* _tmp37_ = NULL;
					GXmlxNode* _tmp38_ = NULL;
					xmlNode* _tmp39_ = NULL;
					_tmp31_ = _new_grand_child_index;
					_new_grand_child_index = _tmp31_ + 1;
					_tmp32_ = _new_grand_child_index;
					_tmp33_ = _new_grand_child_size;
					if (!(_tmp32_ < _tmp33_)) {
						break;
					}
					_tmp34_ = _new_grand_child_list;
					_tmp35_ = _new_grand_child_index;
					_tmp36_ = gxml_xnode_list_get (_tmp34_, _tmp35_);
					new_grand_child = _tmp36_;
					_tmp37_ = child;
					_tmp38_ = new_grand_child;
					_tmp39_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp38_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
					xmlAddPrevSibling (_tmp37_, _tmp39_);
					_g_object_unref0 (new_grand_child);
				}
				_g_object_unref0 (_new_grand_child_list);
			}
		} else {
			xmlNode* _tmp40_ = NULL;
			GXmlxNode* _tmp41_ = NULL;
			xmlNode* _tmp42_ = NULL;
			_tmp40_ = child;
			_tmp41_ = new_child;
			_tmp42_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
			xmlAddPrevSibling (_tmp40_, _tmp42_);
		}
	}
	_tmp43_ = new_child;
	result = _tmp43_;
	return result;
}


static GXmlxNode* gxml_child_node_list_real_replace_child (GXmlxNodeList* base, GXmlxNode* new_child, GXmlxNode* old_child) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	GXmlxNode* _tmp0_ = NULL;
	GXmlNodeType _tmp1_ = 0;
	GXmlNodeType _tmp2_ = 0;
	GXmlxNode* _tmp27_ = NULL;
	self = (GXmlChildNodeList*) base;
	g_return_val_if_fail (new_child != NULL, NULL);
	g_return_val_if_fail (old_child != NULL, NULL);
	_tmp0_ = new_child;
	_tmp1_ = gxml_xnode_get_node_type (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ == GXML_NODE_TYPE_DOCUMENT_FRAGMENT) {
		GXmlxNode* _tmp3_ = NULL;
		GXmlxNode* _tmp4_ = NULL;
		GXmlxNode* _tmp5_ = NULL;
		_tmp3_ = new_child;
		_tmp4_ = old_child;
		gxml_xnode_list_insert_before ((GXmlxNodeList*) self, _tmp3_, _tmp4_);
		_tmp5_ = old_child;
		gxml_xnode_list_remove_child ((GXmlxNodeList*) self, _tmp5_);
	} else {
		xmlNode* child = NULL;
		xmlNode* _tmp6_ = NULL;
		xmlNode* _tmp7_ = NULL;
		xmlNode* _tmp15_ = NULL;
		_tmp6_ = gxml_child_node_list_get_head (self);
		_tmp7_ = _tmp6_;
		child = _tmp7_;
		while (TRUE) {
			gboolean _tmp8_ = FALSE;
			xmlNode* _tmp9_ = NULL;
			xmlNode* _tmp13_ = NULL;
			xmlNode* _tmp14_ = NULL;
			_tmp9_ = child;
			if (_tmp9_ != NULL) {
				xmlNode* _tmp10_ = NULL;
				GXmlxNode* _tmp11_ = NULL;
				xmlNode* _tmp12_ = NULL;
				_tmp10_ = child;
				_tmp11_ = old_child;
				_tmp12_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp11_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
				_tmp8_ = _tmp10_ != _tmp12_;
			} else {
				_tmp8_ = FALSE;
			}
			if (!_tmp8_) {
				break;
			}
			_tmp13_ = child;
			_tmp14_ = _tmp13_->next;
			child = _tmp14_;
		}
		_tmp15_ = child;
		if (_tmp15_ != NULL) {
			xmlNode* _tmp16_ = NULL;
			GXmlxNode* _tmp17_ = NULL;
			xmlNode* _tmp18_ = NULL;
			_tmp16_ = child;
			_tmp17_ = new_child;
			_tmp18_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp17_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
			xmlReplaceNode (_tmp16_, _tmp18_);
		} else {
			GXmlxNode* _tmp19_ = NULL;
			const gchar* _tmp20_ = NULL;
			const gchar* _tmp21_ = NULL;
			GXmlxNode* _tmp22_ = NULL;
			const gchar* _tmp23_ = NULL;
			const gchar* _tmp24_ = NULL;
			gchar* _tmp25_ = NULL;
			gchar* _tmp26_ = NULL;
			_tmp19_ = old_child;
			_tmp20_ = gxml_xnode_get_node_name (_tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = new_child;
			_tmp23_ = gxml_xnode_get_node_name (_tmp22_);
			_tmp24_ = _tmp23_;
			_tmp25_ = g_strdup_printf ("old_child '%s' not found, tried to replace with '%s'", _tmp21_, _tmp24_);
			_tmp26_ = _tmp25_;
			gxml_warning (GXML_DOM_EXCEPTION_NOT_FOUND, _tmp26_);
			_g_free0 (_tmp26_);
		}
	}
	_tmp27_ = old_child;
	result = _tmp27_;
	return result;
}


static GXmlxNode* gxml_child_node_list_real_remove_child (GXmlxNodeList* base, GXmlxNode* old_child) {
	GXmlChildNodeList * self;
	GXmlxNode* result = NULL;
	GXmlxNode* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	self = (GXmlChildNodeList*) base;
	g_return_val_if_fail (old_child != NULL, NULL);
	_tmp0_ = old_child;
	_tmp1_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp0_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
	xmlUnlinkNode (_tmp1_);
	_tmp2_ = old_child;
	result = _tmp2_;
	return result;
}


static GXmlxNode* gxml_child_node_list_real_append_child (GXmlChildNodeList* self, GXmlxNode* new_child) {
	GXmlxNode* result = NULL;
	GXmlxNode* _tmp0_ = NULL;
	GXmlNodeType _tmp1_ = 0;
	GXmlNodeType _tmp2_ = 0;
	GXmlxNode* _tmp27_ = NULL;
	g_return_val_if_fail (new_child != NULL, NULL);
	_tmp0_ = new_child;
	_tmp1_ = gxml_xnode_get_node_type (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ == GXML_NODE_TYPE_DOCUMENT_FRAGMENT) {
		{
			GXmlxNodeList* _grand_child_list = NULL;
			GXmlxNode* _tmp3_ = NULL;
			GXmlxNodeList* _tmp4_ = NULL;
			GXmlxNodeList* _tmp5_ = NULL;
			GXmlxNodeList* _tmp6_ = NULL;
			gint _grand_child_size = 0;
			GXmlxNodeList* _tmp7_ = NULL;
			gint _tmp8_ = 0;
			gint _tmp9_ = 0;
			gint _grand_child_index = 0;
			_tmp3_ = new_child;
			_tmp4_ = gxml_xnode_get_child_nodes (_tmp3_);
			_tmp5_ = _tmp4_;
			_tmp6_ = _g_object_ref0 (_tmp5_);
			_grand_child_list = _tmp6_;
			_tmp7_ = _grand_child_list;
			_tmp8_ = gee_collection_get_size ((GeeCollection*) _tmp7_);
			_tmp9_ = _tmp8_;
			_grand_child_size = _tmp9_;
			_grand_child_index = -1;
			while (TRUE) {
				gint _tmp10_ = 0;
				gint _tmp11_ = 0;
				gint _tmp12_ = 0;
				GXmlxNode* grand_child = NULL;
				GXmlxNodeList* _tmp13_ = NULL;
				gint _tmp14_ = 0;
				GXmlxNode* _tmp15_ = NULL;
				xmlNode* _tmp16_ = NULL;
				xmlNode* _tmp17_ = NULL;
				GXmlxNode* _tmp18_ = NULL;
				xmlNode* _tmp19_ = NULL;
				_tmp10_ = _grand_child_index;
				_grand_child_index = _tmp10_ + 1;
				_tmp11_ = _grand_child_index;
				_tmp12_ = _grand_child_size;
				if (!(_tmp11_ < _tmp12_)) {
					break;
				}
				_tmp13_ = _grand_child_list;
				_tmp14_ = _grand_child_index;
				_tmp15_ = gxml_xnode_list_get (_tmp13_, _tmp14_);
				grand_child = _tmp15_;
				_tmp16_ = gxml_child_node_list_get_parent_as_xmlnode (self);
				_tmp17_ = _tmp16_;
				_tmp18_ = grand_child;
				_tmp19_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp18_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
				xmlAddChild (_tmp17_, _tmp19_);
				_g_object_unref0 (grand_child);
			}
			_g_object_unref0 (_grand_child_list);
		}
	} else {
		GXmlxNode* _tmp20_ = NULL;
		GXmlNodeType _tmp21_ = 0;
		GXmlNodeType _tmp22_ = 0;
		_tmp20_ = new_child;
		_tmp21_ = gxml_xnode_get_node_type (_tmp20_);
		_tmp22_ = _tmp21_;
		if (_tmp22_ == GXML_NODE_TYPE_ENTITY_REFERENCE) {
			g_warning ("libxml-ChildNodeList.vala:211: Appending EntityReferences to Nodes is " \
"not yet supported");
		} else {
			xmlNode* _tmp23_ = NULL;
			xmlNode* _tmp24_ = NULL;
			GXmlxNode* _tmp25_ = NULL;
			xmlNode* _tmp26_ = NULL;
			_tmp23_ = gxml_child_node_list_get_parent_as_xmlnode (self);
			_tmp24_ = _tmp23_;
			_tmp25_ = new_child;
			_tmp26_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp25_, GXML_TYPE_BACKED_NODE, GXmlBackedNode)->node;
			xmlAddChild (_tmp24_, _tmp26_);
		}
	}
	_tmp27_ = new_child;
	result = _tmp27_;
	return result;
}


GXmlxNode* gxml_child_node_list_append_child (GXmlChildNodeList* self, GXmlxNode* new_child) {
	g_return_val_if_fail (self != NULL, NULL);
	return GXML_CHILD_NODE_LIST_GET_CLASS (self)->append_child (self, new_child);
}


static gchar* gxml_child_node_list_real_to_string (GXmlxNodeList* base, gboolean in_line) {
	GXmlChildNodeList * self;
	gchar* result = NULL;
	gchar* str = NULL;
	gchar* _tmp0_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = g_strdup ("");
	str = _tmp0_;
	{
		GXmlChildNodeList* _node_list = NULL;
		GXmlChildNodeList* _tmp1_ = NULL;
		gint _node_size = 0;
		GXmlChildNodeList* _tmp2_ = NULL;
		gint _tmp3_ = 0;
		gint _tmp4_ = 0;
		gint _node_index = 0;
		_tmp1_ = _g_object_ref0 (self);
		_node_list = _tmp1_;
		_tmp2_ = _node_list;
		_tmp3_ = gee_abstract_collection_get_size ((GeeCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_node_size = _tmp4_;
		_node_index = -1;
		while (TRUE) {
			gint _tmp5_ = 0;
			gint _tmp6_ = 0;
			gint _tmp7_ = 0;
			GXmlxNode* node = NULL;
			GXmlChildNodeList* _tmp8_ = NULL;
			gint _tmp9_ = 0;
			gpointer _tmp10_ = NULL;
			const gchar* _tmp11_ = NULL;
			GXmlxNode* _tmp12_ = NULL;
			gchar* _tmp13_ = NULL;
			gchar* _tmp14_ = NULL;
			gchar* _tmp15_ = NULL;
			_tmp5_ = _node_index;
			_node_index = _tmp5_ + 1;
			_tmp6_ = _node_index;
			_tmp7_ = _node_size;
			if (!(_tmp6_ < _tmp7_)) {
				break;
			}
			_tmp8_ = _node_list;
			_tmp9_ = _node_index;
			_tmp10_ = gee_abstract_list_get ((GeeAbstractList*) _tmp8_, _tmp9_);
			node = (GXmlxNode*) _tmp10_;
			_tmp11_ = str;
			_tmp12_ = node;
			_tmp13_ = gxml_xnode_stringify (_tmp12_, FALSE, 0);
			_tmp14_ = _tmp13_;
			_tmp15_ = g_strconcat (_tmp11_, _tmp14_, NULL);
			_g_free0 (str);
			str = _tmp15_;
			_g_free0 (_tmp14_);
			_g_object_unref0 (node);
		}
		_g_object_unref0 (_node_list);
	}
	result = str;
	return result;
}


GXmlChildNodeList* gxml_child_node_list_construct (GType object_type) {
	GXmlChildNodeList * self = NULL;
	self = (GXmlChildNodeList*) gee_abstract_bidir_list_construct (object_type, GXML_TYPE_XNODE, (GBoxedCopyFunc) g_object_ref, g_object_unref);
	return self;
}


xmlNode* gxml_child_node_list_get_head (GXmlChildNodeList* self) {
	g_return_val_if_fail (self != NULL, NULL);
	return GXML_CHILD_NODE_LIST_GET_CLASS (self)->get_head (self);
}


void gxml_child_node_list_set_head (GXmlChildNodeList* self, xmlNode* value) {
	g_return_if_fail (self != NULL);
	GXML_CHILD_NODE_LIST_GET_CLASS (self)->set_head (self, value);
}


xmlNode* gxml_child_node_list_get_parent_as_xmlnode (GXmlChildNodeList* self) {
	g_return_val_if_fail (self != NULL, NULL);
	return GXML_CHILD_NODE_LIST_GET_CLASS (self)->get_parent_as_xmlnode (self);
}


static gulong gxml_child_node_list_real_get_length (GXmlxNodeList* base) {
	gulong result;
	GXmlChildNodeList* self;
	gint _tmp0_ = 0;
	gint _tmp1_ = 0;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gee_abstract_collection_get_size ((GeeCollection*) self);
	_tmp1_ = _tmp0_;
	result = (gulong) _tmp1_;
	return result;
}


static void gxml_child_node_list_real_set_length (GXmlxNodeList* base, gulong value) {
	GXmlChildNodeList* self;
	self = (GXmlChildNodeList*) base;
	g_object_notify ((GObject *) self, "length");
}


static gboolean gxml_child_node_list_real_get_read_only (GeeAbstractCollection* base) {
	gboolean result;
	GXmlChildNodeList* self;
	self = (GXmlChildNodeList*) base;
	result = TRUE;
	return result;
}


static gint gxml_child_node_list_real_get_size (GeeAbstractCollection* base) {
	gint result;
	GXmlChildNodeList* self;
	xmlNode* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	self = (GXmlChildNodeList*) base;
	_tmp0_ = gxml_child_node_list_get_head (self);
	_tmp1_ = _tmp0_;
	if (_tmp1_ != NULL) {
		gint len = 0;
		xmlNode* cur = NULL;
		xmlNode* _tmp2_ = NULL;
		xmlNode* _tmp3_ = NULL;
		gint _tmp9_ = 0;
		len = 1;
		_tmp2_ = gxml_child_node_list_get_head (self);
		_tmp3_ = _tmp2_;
		cur = _tmp3_;
		while (TRUE) {
			xmlNode* _tmp4_ = NULL;
			xmlNode* _tmp5_ = NULL;
			xmlNode* _tmp6_ = NULL;
			xmlNode* _tmp7_ = NULL;
			gint _tmp8_ = 0;
			_tmp4_ = cur;
			_tmp5_ = _tmp4_->next;
			if (!(_tmp5_ != NULL)) {
				break;
			}
			_tmp6_ = cur;
			_tmp7_ = _tmp6_->next;
			cur = _tmp7_;
			_tmp8_ = len;
			len = _tmp8_ + 1;
		}
		_tmp9_ = len;
		result = _tmp9_;
		return result;
	}
	result = 0;
	return result;
}


static GObject * gxml_child_node_list_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
	GObject * obj;
	GObjectClass * parent_class;
	GXmlChildNodeList * self;
	parent_class = G_OBJECT_CLASS (gxml_child_node_list_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GXML_TYPE_CHILD_NODE_LIST, GXmlChildNodeList);
	gxml_init_init ();
	return obj;
}


static GXmlChildNodeListIterator* gxml_child_node_list_iterator_construct (GType object_type, GXmlChildNodeList* list) {
	GXmlChildNodeListIterator * self = NULL;
	GXmlChildNodeList* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	xmlNode* _tmp2_ = NULL;
	GXmlChildNodeList* _tmp3_ = NULL;
	GXmlxDocument* _tmp4_ = NULL;
	GXmlChildNodeList* _tmp5_ = NULL;
	GXmlChildNodeList* _tmp6_ = NULL;
	g_return_val_if_fail (list != NULL, NULL);
	self = (GXmlChildNodeListIterator*) g_object_new (object_type, NULL);
	_tmp0_ = list;
	_tmp1_ = gxml_child_node_list_get_head (_tmp0_);
	_tmp2_ = _tmp1_;
	self->priv->head = _tmp2_;
	self->priv->cur = NULL;
	_tmp3_ = list;
	_tmp4_ = _tmp3_->owner;
	self->priv->doc = _tmp4_;
	_tmp5_ = list;
	_tmp6_ = _g_object_ref0 (_tmp5_);
	_g_object_unref0 (self->priv->list);
	self->priv->list = _tmp6_;
	return self;
}


static GXmlChildNodeListIterator* gxml_child_node_list_iterator_new (GXmlChildNodeList* list) {
	return gxml_child_node_list_iterator_construct (GXML_CHILD_NODE_LIST_TYPE_ITERATOR, list);
}


static GXmlxNode* gxml_child_node_list_iterator_real_get (GeeIterator* base) {
	GXmlChildNodeListIterator * self;
	GXmlxNode* result = NULL;
	GXmlxDocument* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	GXmlxNode* _tmp3_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->doc;
	_tmp1_ = self->priv->cur;
	_tmp2_ = gxml_xdocument_lookup_node (_tmp0_, _tmp1_);
	_tmp3_ = _g_object_ref0 (_tmp2_);
	result = _tmp3_;
	return result;
}


static gboolean gxml_child_node_list_iterator_real_has_next (GeeIterator* base) {
	GXmlChildNodeListIterator * self;
	gboolean result = FALSE;
	xmlNode* _tmp0_ = NULL;
	gboolean _tmp2_ = FALSE;
	xmlNode* _tmp3_ = NULL;
	xmlNode* _tmp4_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->cur;
	if (_tmp0_ == NULL) {
		xmlNode* _tmp1_ = NULL;
		_tmp1_ = self->priv->head;
		if (_tmp1_ == NULL) {
			result = FALSE;
			return result;
		}
		result = TRUE;
		return result;
	}
	_tmp3_ = self->priv->cur;
	_tmp4_ = _tmp3_->next;
	if (_tmp4_ == NULL) {
		_tmp2_ = FALSE;
	} else {
		_tmp2_ = TRUE;
	}
	result = _tmp2_;
	return result;
}


static gboolean gxml_child_node_list_iterator_real_next (GeeIterator* base) {
	GXmlChildNodeListIterator * self;
	gboolean result = FALSE;
	xmlNode* _tmp0_ = NULL;
	xmlNode* _tmp3_ = NULL;
	xmlNode* _tmp4_ = NULL;
	gint _tmp5_ = 0;
	xmlNode* _tmp6_ = NULL;
	xmlNode* _tmp7_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->cur;
	if (_tmp0_ == NULL) {
		xmlNode* _tmp1_ = NULL;
		gint _tmp2_ = 0;
		_tmp1_ = self->priv->head;
		self->priv->cur = _tmp1_;
		_tmp2_ = self->priv->i;
		self->priv->i = _tmp2_ + 1;
		result = TRUE;
		return result;
	}
	_tmp3_ = self->priv->cur;
	_tmp4_ = _tmp3_->next;
	if (_tmp4_ == NULL) {
		result = FALSE;
		return result;
	}
	_tmp5_ = self->priv->i;
	self->priv->i = _tmp5_ + 1;
	_tmp6_ = self->priv->cur;
	_tmp7_ = _tmp6_->next;
	self->priv->cur = _tmp7_;
	result = TRUE;
	return result;
}


static void gxml_child_node_list_iterator_real_remove (GeeIterator* base) {
	GXmlChildNodeListIterator * self;
	GXmlxNode* n = NULL;
	gpointer _tmp0_ = NULL;
	GXmlChildNodeList* _tmp1_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = gee_iterator_get ((GeeIterator*) self);
	n = (GXmlxNode*) _tmp0_;
	_tmp1_ = self->priv->list;
	gxml_xnode_list_remove_child ((GXmlxNodeList*) _tmp1_, n);
	_g_object_unref0 (n);
}


static gboolean gxml_child_node_list_iterator_real_foreach (GeeTraversable* base, GeeForallFunc f, void* f_target) {
	GXmlChildNodeListIterator * self;
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = gee_iterator_next ((GeeIterator*) self);
	if (_tmp0_) {
		GeeForallFunc _tmp1_ = NULL;
		void* _tmp1__target = NULL;
		gpointer _tmp2_ = NULL;
		gboolean _tmp3_ = FALSE;
		_tmp1_ = f;
		_tmp1__target = f_target;
		_tmp2_ = gee_iterator_get ((GeeIterator*) self);
		_tmp3_ = _tmp1_ ((GXmlxNode*) _tmp2_, _tmp1__target);
		result = _tmp3_;
		return result;
	}
	result = FALSE;
	return result;
}


static void gxml_child_node_list_iterator_real_add (GeeListIterator* base, GXmlxNode* item) {
	GXmlChildNodeListIterator * self;
	GXmlxNode* n = NULL;
	gpointer _tmp0_ = NULL;
	GXmlChildNodeList* _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	g_return_if_fail (item != NULL);
	_tmp0_ = gee_iterator_get ((GeeIterator*) self);
	n = (GXmlxNode*) _tmp0_;
	_tmp1_ = self->priv->list;
	_tmp2_ = item;
	gxml_xnode_list_insert_before ((GXmlxNodeList*) _tmp1_, _tmp2_, n);
	_g_object_unref0 (n);
}


static gint gxml_child_node_list_iterator_real_index (GeeListIterator* base) {
	GXmlChildNodeListIterator * self;
	gint result = 0;
	gint _tmp0_ = 0;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->i;
	result = _tmp0_;
	return result;
}


static void gxml_child_node_list_iterator_real_set (GeeListIterator* base, GXmlxNode* item) {
	GXmlChildNodeListIterator * self;
	GXmlxNode* n = NULL;
	gpointer _tmp0_ = NULL;
	GXmlChildNodeList* _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	g_return_if_fail (item != NULL);
	_tmp0_ = gee_iterator_get ((GeeIterator*) self);
	n = (GXmlxNode*) _tmp0_;
	_tmp1_ = self->priv->list;
	_tmp2_ = item;
	gxml_xnode_list_replace_child ((GXmlxNodeList*) _tmp1_, _tmp2_, n);
	_g_object_unref0 (n);
}


static gboolean gxml_child_node_list_iterator_real_first (GeeBidirIterator* base) {
	GXmlChildNodeListIterator * self;
	gboolean result = FALSE;
	xmlNode* n = NULL;
	GXmlChildNodeList* _tmp0_ = NULL;
	GXmlxNode* _tmp1_ = NULL;
	GXmlBackedNode* _tmp2_ = NULL;
	xmlNode* _tmp3_ = NULL;
	xmlNode* _tmp4_ = NULL;
	xmlNode* _tmp5_ = NULL;
	xmlNode* _tmp6_ = NULL;
	xmlNode* _tmp7_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->list;
	_tmp1_ = gxml_xnode_list_first ((GXmlxNodeList*) _tmp0_);
	_tmp2_ = G_TYPE_CHECK_INSTANCE_CAST (_tmp1_, GXML_TYPE_BACKED_NODE, GXmlBackedNode);
	_tmp3_ = _tmp2_->node;
	_tmp4_ = _tmp3_;
	_g_object_unref0 (_tmp2_);
	n = _tmp4_;
	_tmp5_ = n;
	if (_tmp5_ == NULL) {
		result = FALSE;
		return result;
	}
	_tmp6_ = n;
	self->priv->head = _tmp6_;
	_tmp7_ = self->priv->head;
	self->priv->cur = _tmp7_;
	self->priv->i = 0;
	result = TRUE;
	return result;
}


static gboolean gxml_child_node_list_iterator_real_has_previous (GeeBidirIterator* base) {
	GXmlChildNodeListIterator * self;
	gboolean result = FALSE;
	xmlNode* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->cur;
	_tmp1_ = _tmp0_->prev;
	if (_tmp1_ != NULL) {
		result = TRUE;
		return result;
	}
	result = FALSE;
	return result;
}


static gboolean gxml_child_node_list_iterator_real_last (GeeBidirIterator* base) {
	GXmlChildNodeListIterator * self;
	gboolean result = FALSE;
	xmlNode* _tmp0_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->cur;
	if (_tmp0_ == NULL) {
		result = FALSE;
		return result;
	}
	while (TRUE) {
		xmlNode* _tmp1_ = NULL;
		xmlNode* _tmp2_ = NULL;
		xmlNode* _tmp3_ = NULL;
		xmlNode* _tmp4_ = NULL;
		gint _tmp5_ = 0;
		_tmp1_ = self->priv->cur;
		_tmp2_ = _tmp1_->next;
		if (!(_tmp2_ != NULL)) {
			break;
		}
		_tmp3_ = self->priv->cur;
		_tmp4_ = _tmp3_->next;
		self->priv->cur = _tmp4_;
		_tmp5_ = self->priv->i;
		self->priv->i = _tmp5_ + 1;
	}
	result = TRUE;
	return result;
}


static gboolean gxml_child_node_list_iterator_real_previous (GeeBidirIterator* base) {
	GXmlChildNodeListIterator * self;
	gboolean result = FALSE;
	xmlNode* _tmp0_ = NULL;
	xmlNode* _tmp1_ = NULL;
	xmlNode* _tmp2_ = NULL;
	xmlNode* _tmp3_ = NULL;
	gint _tmp4_ = 0;
	self = (GXmlChildNodeListIterator*) base;
	_tmp0_ = self->priv->cur;
	_tmp1_ = _tmp0_->prev;
	if (_tmp1_ == NULL) {
		result = FALSE;
		return result;
	}
	_tmp2_ = self->priv->cur;
	_tmp3_ = _tmp2_->prev;
	self->priv->cur = _tmp3_;
	_tmp4_ = self->priv->i;
	self->priv->i = _tmp4_ - 1;
	result = TRUE;
	return result;
}


static void gxml_child_node_list_iterator_real_insert (GeeBidirListIterator* base, GXmlxNode* item) {
	GXmlChildNodeListIterator * self;
	GXmlxNode* n = NULL;
	gpointer _tmp0_ = NULL;
	GXmlChildNodeList* _tmp1_ = NULL;
	GXmlxNode* _tmp2_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	g_return_if_fail (item != NULL);
	_tmp0_ = gee_iterator_get ((GeeIterator*) self);
	n = (GXmlxNode*) _tmp0_;
	_tmp1_ = self->priv->list;
	_tmp2_ = item;
	gxml_xnode_list_insert_before ((GXmlxNodeList*) _tmp1_, _tmp2_, n);
	_g_object_unref0 (n);
}


static gboolean gxml_child_node_list_iterator_real_get_read_only (GeeIterator* base) {
	gboolean result;
	GXmlChildNodeListIterator* self;
	self = (GXmlChildNodeListIterator*) base;
	result = FALSE;
	return result;
}


static gboolean gxml_child_node_list_iterator_real_get_valid (GeeIterator* base) {
	gboolean result;
	GXmlChildNodeListIterator* self;
	gboolean _tmp0_ = FALSE;
	xmlNode* _tmp1_ = NULL;
	self = (GXmlChildNodeListIterator*) base;
	_tmp1_ = self->priv->cur;
	if (_tmp1_ != NULL) {
		_tmp0_ = TRUE;
	} else {
		_tmp0_ = FALSE;
	}
	result = _tmp0_;
	return result;
}


static void gxml_child_node_list_iterator_class_init (GXmlChildNodeListIteratorClass * klass) {
	gxml_child_node_list_iterator_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (GXmlChildNodeListIteratorPrivate));
	G_OBJECT_CLASS (klass)->get_property = _vala_gxml_child_node_list_iterator_get_property;
	G_OBJECT_CLASS (klass)->finalize = gxml_child_node_list_iterator_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_CHILD_NODE_LIST_ITERATOR_READ_ONLY, g_param_spec_boolean ("read-only", "read-only", "read-only", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_CHILD_NODE_LIST_ITERATOR_VALID, g_param_spec_boolean ("valid", "valid", "valid", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
}


static GType gxml_child_node_list_iterator_gee_traversable_get_g_type (GXmlChildNodeListIterator* self) {
	return GXML_TYPE_XNODE;
}


static GBoxedCopyFunc gxml_child_node_list_iterator_gee_traversable_get_g_dup_func (GXmlChildNodeListIterator* self) {
	return g_object_ref;
}


static GDestroyNotify gxml_child_node_list_iterator_gee_traversable_get_g_destroy_func (GXmlChildNodeListIterator* self) {
	return g_object_unref;
}


static void gxml_child_node_list_iterator_gee_traversable_interface_init (GeeTraversableIface * iface) {
	gxml_child_node_list_iterator_gee_traversable_parent_iface = g_type_interface_peek_parent (iface);
	iface->foreach = (gboolean (*)(GeeTraversable*, GeeForallFunc, void*)) gxml_child_node_list_iterator_real_foreach;
	iface->get_g_type = (GType(*)(GeeTraversable*)) gxml_child_node_list_iterator_gee_traversable_get_g_type;
	iface->get_g_dup_func = (GBoxedCopyFunc(*)(GeeTraversable*)) gxml_child_node_list_iterator_gee_traversable_get_g_dup_func;
	iface->get_g_destroy_func = (GDestroyNotify(*)(GeeTraversable*)) gxml_child_node_list_iterator_gee_traversable_get_g_destroy_func;
}


static void gxml_child_node_list_iterator_gee_iterator_interface_init (GeeIteratorIface * iface) {
	gxml_child_node_list_iterator_gee_iterator_parent_iface = g_type_interface_peek_parent (iface);
	iface->get = (gpointer (*)(GeeIterator*)) gxml_child_node_list_iterator_real_get;
	iface->has_next = (gboolean (*)(GeeIterator*)) gxml_child_node_list_iterator_real_has_next;
	iface->next = (gboolean (*)(GeeIterator*)) gxml_child_node_list_iterator_real_next;
	iface->remove = (void (*)(GeeIterator*)) gxml_child_node_list_iterator_real_remove;
	iface->get_read_only = gxml_child_node_list_iterator_real_get_read_only;
	iface->get_valid = gxml_child_node_list_iterator_real_get_valid;
}


static void gxml_child_node_list_iterator_gee_list_iterator_interface_init (GeeListIteratorIface * iface) {
	gxml_child_node_list_iterator_gee_list_iterator_parent_iface = g_type_interface_peek_parent (iface);
	iface->add = (void (*)(GeeListIterator*, gconstpointer)) gxml_child_node_list_iterator_real_add;
	iface->index = (gint (*)(GeeListIterator*)) gxml_child_node_list_iterator_real_index;
	iface->set = (void (*)(GeeListIterator*, gconstpointer)) gxml_child_node_list_iterator_real_set;
}


static GType gxml_child_node_list_iterator_gee_bidir_iterator_get_g_type (GXmlChildNodeListIterator* self) {
	return GXML_TYPE_XNODE;
}


static GBoxedCopyFunc gxml_child_node_list_iterator_gee_bidir_iterator_get_g_dup_func (GXmlChildNodeListIterator* self) {
	return g_object_ref;
}


static GDestroyNotify gxml_child_node_list_iterator_gee_bidir_iterator_get_g_destroy_func (GXmlChildNodeListIterator* self) {
	return g_object_unref;
}


static void gxml_child_node_list_iterator_gee_bidir_iterator_interface_init (GeeBidirIteratorIface * iface) {
	gxml_child_node_list_iterator_gee_bidir_iterator_parent_iface = g_type_interface_peek_parent (iface);
	iface->first = (gboolean (*)(GeeBidirIterator*)) gxml_child_node_list_iterator_real_first;
	iface->has_previous = (gboolean (*)(GeeBidirIterator*)) gxml_child_node_list_iterator_real_has_previous;
	iface->last = (gboolean (*)(GeeBidirIterator*)) gxml_child_node_list_iterator_real_last;
	iface->previous = (gboolean (*)(GeeBidirIterator*)) gxml_child_node_list_iterator_real_previous;
	iface->get_g_type = (GType(*)(GeeBidirIterator*)) gxml_child_node_list_iterator_gee_bidir_iterator_get_g_type;
	iface->get_g_dup_func = (GBoxedCopyFunc(*)(GeeBidirIterator*)) gxml_child_node_list_iterator_gee_bidir_iterator_get_g_dup_func;
	iface->get_g_destroy_func = (GDestroyNotify(*)(GeeBidirIterator*)) gxml_child_node_list_iterator_gee_bidir_iterator_get_g_destroy_func;
}


static GType gxml_child_node_list_iterator_gee_bidir_list_iterator_get_g_type (GXmlChildNodeListIterator* self) {
	return GXML_TYPE_XNODE;
}


static GBoxedCopyFunc gxml_child_node_list_iterator_gee_bidir_list_iterator_get_g_dup_func (GXmlChildNodeListIterator* self) {
	return g_object_ref;
}


static GDestroyNotify gxml_child_node_list_iterator_gee_bidir_list_iterator_get_g_destroy_func (GXmlChildNodeListIterator* self) {
	return g_object_unref;
}


static void gxml_child_node_list_iterator_gee_bidir_list_iterator_interface_init (GeeBidirListIteratorIface * iface) {
	gxml_child_node_list_iterator_gee_bidir_list_iterator_parent_iface = g_type_interface_peek_parent (iface);
	iface->insert = (void (*)(GeeBidirListIterator*, gconstpointer)) gxml_child_node_list_iterator_real_insert;
	iface->get_g_type = (GType(*)(GeeBidirListIterator*)) gxml_child_node_list_iterator_gee_bidir_list_iterator_get_g_type;
	iface->get_g_dup_func = (GBoxedCopyFunc(*)(GeeBidirListIterator*)) gxml_child_node_list_iterator_gee_bidir_list_iterator_get_g_dup_func;
	iface->get_g_destroy_func = (GDestroyNotify(*)(GeeBidirListIterator*)) gxml_child_node_list_iterator_gee_bidir_list_iterator_get_g_destroy_func;
}


static void gxml_child_node_list_iterator_instance_init (GXmlChildNodeListIterator * self) {
	self->priv = GXML_CHILD_NODE_LIST_ITERATOR_GET_PRIVATE (self);
	self->priv->i = -1;
}


static void gxml_child_node_list_iterator_finalize (GObject* obj) {
	GXmlChildNodeListIterator * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GXML_CHILD_NODE_LIST_TYPE_ITERATOR, GXmlChildNodeListIterator);
	_g_object_unref0 (self->priv->list);
	G_OBJECT_CLASS (gxml_child_node_list_iterator_parent_class)->finalize (obj);
}


static GType gxml_child_node_list_iterator_get_type (void) {
	static volatile gsize gxml_child_node_list_iterator_type_id__volatile = 0;
	if (g_once_init_enter (&gxml_child_node_list_iterator_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (GXmlChildNodeListIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gxml_child_node_list_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GXmlChildNodeListIterator), 0, (GInstanceInitFunc) gxml_child_node_list_iterator_instance_init, NULL };
		static const GInterfaceInfo gee_traversable_info = { (GInterfaceInitFunc) gxml_child_node_list_iterator_gee_traversable_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo gee_iterator_info = { (GInterfaceInitFunc) gxml_child_node_list_iterator_gee_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo gee_list_iterator_info = { (GInterfaceInitFunc) gxml_child_node_list_iterator_gee_list_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo gee_bidir_iterator_info = { (GInterfaceInitFunc) gxml_child_node_list_iterator_gee_bidir_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		static const GInterfaceInfo gee_bidir_list_iterator_info = { (GInterfaceInitFunc) gxml_child_node_list_iterator_gee_bidir_list_iterator_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType gxml_child_node_list_iterator_type_id;
		gxml_child_node_list_iterator_type_id = g_type_register_static (G_TYPE_OBJECT, "GXmlChildNodeListIterator", &g_define_type_info, 0);
		g_type_add_interface_static (gxml_child_node_list_iterator_type_id, GEE_TYPE_TRAVERSABLE, &gee_traversable_info);
		g_type_add_interface_static (gxml_child_node_list_iterator_type_id, GEE_TYPE_ITERATOR, &gee_iterator_info);
		g_type_add_interface_static (gxml_child_node_list_iterator_type_id, GEE_TYPE_LIST_ITERATOR, &gee_list_iterator_info);
		g_type_add_interface_static (gxml_child_node_list_iterator_type_id, GEE_TYPE_BIDIR_ITERATOR, &gee_bidir_iterator_info);
		g_type_add_interface_static (gxml_child_node_list_iterator_type_id, GEE_TYPE_BIDIR_LIST_ITERATOR, &gee_bidir_list_iterator_info);
		g_once_init_leave (&gxml_child_node_list_iterator_type_id__volatile, gxml_child_node_list_iterator_type_id);
	}
	return gxml_child_node_list_iterator_type_id__volatile;
}


static void _vala_gxml_child_node_list_iterator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	GXmlChildNodeListIterator * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GXML_CHILD_NODE_LIST_TYPE_ITERATOR, GXmlChildNodeListIterator);
	switch (property_id) {
		case GXML_CHILD_NODE_LIST_ITERATOR_READ_ONLY:
		g_value_set_boolean (value, gee_iterator_get_read_only ((GeeIterator*) self));
		break;
		case GXML_CHILD_NODE_LIST_ITERATOR_VALID:
		g_value_set_boolean (value, gee_iterator_get_valid ((GeeIterator*) self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void gxml_child_node_list_class_init (GXmlChildNodeListClass * klass) {
	gxml_child_node_list_parent_class = g_type_class_peek_parent (klass);
	((GeeAbstractCollectionClass *) klass)->add = gxml_child_node_list_real_add;
	((GeeAbstractCollectionClass *) klass)->clear = gxml_child_node_list_real_clear;
	((GeeAbstractCollectionClass *) klass)->contains = gxml_child_node_list_real_contains;
	((GeeAbstractCollectionClass *) klass)->remove = gxml_child_node_list_real_remove;
	((GeeAbstractCollectionClass *) klass)->iterator = gxml_child_node_list_real_iterator;
	((GeeAbstractCollectionClass *) klass)->foreach = gxml_child_node_list_real_foreach;
	((GeeAbstractListClass *) klass)->get = gxml_child_node_list_real_get;
	((GeeAbstractListClass *) klass)->index_of = gxml_child_node_list_real_index_of;
	((GeeAbstractListClass *) klass)->insert = gxml_child_node_list_real_insert;
	((GeeAbstractListClass *) klass)->list_iterator = gxml_child_node_list_real_list_iterator;
	((GeeAbstractListClass *) klass)->remove_at = gxml_child_node_list_real_remove_at;
	((GeeAbstractListClass *) klass)->set = gxml_child_node_list_real_set;
	((GeeAbstractListClass *) klass)->slice = gxml_child_node_list_real_slice;
	((GeeAbstractBidirListClass *) klass)->bidir_list_iterator = gxml_child_node_list_real_bidir_list_iterator;
	((GXmlChildNodeListClass *) klass)->append_child = gxml_child_node_list_real_append_child;
	GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_read_only = gxml_child_node_list_real_get_read_only;
	GEE_ABSTRACT_COLLECTION_CLASS (klass)->get_size = gxml_child_node_list_real_get_size;
	G_OBJECT_CLASS (klass)->get_property = _vala_gxml_child_node_list_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_gxml_child_node_list_set_property;
	G_OBJECT_CLASS (klass)->constructor = gxml_child_node_list_constructor;
	G_OBJECT_CLASS (klass)->finalize = gxml_child_node_list_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_CHILD_NODE_LIST_HEAD, g_param_spec_pointer ("head", "head", "head", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_CHILD_NODE_LIST_PARENT_AS_XMLNODE, g_param_spec_pointer ("parent-as-xmlnode", "parent-as-xmlnode", "parent-as-xmlnode", G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	/**
	 * {@inheritDoc}
	 */
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_CHILD_NODE_LIST_LENGTH, g_param_spec_ulong ("length", "length", "length", 0, G_MAXULONG, 0UL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_CHILD_NODE_LIST_READ_ONLY, g_param_spec_boolean ("read-only", "read-only", "read-only", FALSE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
	g_object_class_install_property (G_OBJECT_CLASS (klass), GXML_CHILD_NODE_LIST_SIZE, g_param_spec_int ("size", "size", "size", G_MININT, G_MAXINT, 0, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE));
}


static void gxml_child_node_list_gxml_xnode_list_interface_init (GXmlxNodeListIface * iface) {
	gxml_child_node_list_gxml_xnode_list_parent_iface = g_type_interface_peek_parent (iface);
	iface->get = (GXmlxNode* (*)(GXmlxNodeList*, gint)) gxml_child_node_list_real_get;
	iface->first = (GXmlxNode* (*)(GXmlxNodeList*)) gxml_child_node_list_real_first;
	iface->last = (GXmlxNode* (*)(GXmlxNodeList*)) gxml_child_node_list_real_last;
	iface->item = (GXmlxNode* (*)(GXmlxNodeList*, gulong)) gxml_child_node_list_real_item;
	iface->insert_before = (GXmlxNode* (*)(GXmlxNodeList*, GXmlxNode*, GXmlxNode*)) gxml_child_node_list_real_insert_before;
	iface->replace_child = (GXmlxNode* (*)(GXmlxNodeList*, GXmlxNode*, GXmlxNode*)) gxml_child_node_list_real_replace_child;
	iface->remove_child = (GXmlxNode* (*)(GXmlxNodeList*, GXmlxNode*)) gxml_child_node_list_real_remove_child;
	iface->append_child = (GXmlxNode* (*)(GXmlxNodeList*, GXmlxNode*)) gxml_child_node_list_append_child;
	iface->to_string = (gchar* (*)(GXmlxNodeList*, gboolean)) gxml_child_node_list_real_to_string;
	iface->get_length = gxml_child_node_list_real_get_length;
	iface->set_length = gxml_child_node_list_real_set_length;
}


static void gxml_child_node_list_instance_init (GXmlChildNodeList * self) {
}


static void gxml_child_node_list_finalize (GObject* obj) {
	GXmlChildNodeList * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GXML_TYPE_CHILD_NODE_LIST, GXmlChildNodeList);
	G_OBJECT_CLASS (gxml_child_node_list_parent_class)->finalize (obj);
}


GType gxml_child_node_list_get_type (void) {
	static volatile gsize gxml_child_node_list_type_id__volatile = 0;
	if (g_once_init_enter (&gxml_child_node_list_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (GXmlChildNodeListClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gxml_child_node_list_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GXmlChildNodeList), 0, (GInstanceInitFunc) gxml_child_node_list_instance_init, NULL };
		static const GInterfaceInfo gxml_xnode_list_info = { (GInterfaceInitFunc) gxml_child_node_list_gxml_xnode_list_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType gxml_child_node_list_type_id;
		gxml_child_node_list_type_id = g_type_register_static (GEE_TYPE_ABSTRACT_BIDIR_LIST, "GXmlChildNodeList", &g_define_type_info, G_TYPE_FLAG_ABSTRACT);
		g_type_add_interface_static (gxml_child_node_list_type_id, GXML_TYPE_XNODE_LIST, &gxml_xnode_list_info);
		g_once_init_leave (&gxml_child_node_list_type_id__volatile, gxml_child_node_list_type_id);
	}
	return gxml_child_node_list_type_id__volatile;
}


static void _vala_gxml_child_node_list_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	GXmlChildNodeList * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GXML_TYPE_CHILD_NODE_LIST, GXmlChildNodeList);
	switch (property_id) {
		case GXML_CHILD_NODE_LIST_LENGTH:
		g_value_set_ulong (value, gxml_xnode_list_get_length ((GXmlxNodeList*) self));
		break;
		case GXML_CHILD_NODE_LIST_READ_ONLY:
		g_value_set_boolean (value, gee_abstract_collection_get_read_only ((GeeAbstractCollection*) self));
		break;
		case GXML_CHILD_NODE_LIST_SIZE:
		g_value_set_int (value, gee_abstract_collection_get_size ((GeeAbstractCollection*) self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_gxml_child_node_list_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	GXmlChildNodeList * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GXML_TYPE_CHILD_NODE_LIST, GXmlChildNodeList);
	switch (property_id) {
		case GXML_CHILD_NODE_LIST_LENGTH:
		gxml_xnode_list_set_length ((GXmlxNodeList*) self, g_value_get_ulong (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}



