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

/* generator.vala
 *
 * Copyright (C) 2010 Luca Bruno
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
 *
 * Author:
 * 	Luca Bruno <lethalman88@gmail.com>
 */

#include <glib.h>
#include <glib-object.h>
#include <valadoc.h>
#include <valagee.h>
#include <stdlib.h>
#include <string.h>
#include <glib/gstdio.h>
#include <float.h>
#include <math.h>
#include <gobject/gvaluecollector.h>


#define GTKDOC_TYPE_GENERATOR (gtkdoc_generator_get_type ())
#define GTKDOC_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_TYPE_GENERATOR, GtkdocGenerator))
#define GTKDOC_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_TYPE_GENERATOR, GtkdocGeneratorClass))
#define GTKDOC_IS_GENERATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_TYPE_GENERATOR))
#define GTKDOC_IS_GENERATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_TYPE_GENERATOR))
#define GTKDOC_GENERATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_TYPE_GENERATOR, GtkdocGeneratorClass))

typedef struct _GtkdocGenerator GtkdocGenerator;
typedef struct _GtkdocGeneratorClass GtkdocGeneratorClass;
typedef struct _GtkdocGeneratorPrivate GtkdocGeneratorPrivate;

#define GTKDOC_DBUS_TYPE_INTERFACE (gtkdoc_dbus_interface_get_type ())
#define GTKDOC_DBUS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_DBUS_TYPE_INTERFACE, GtkdocDBusInterface))
#define GTKDOC_DBUS_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_DBUS_TYPE_INTERFACE, GtkdocDBusInterfaceClass))
#define GTKDOC_DBUS_IS_INTERFACE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_DBUS_TYPE_INTERFACE))
#define GTKDOC_DBUS_IS_INTERFACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_DBUS_TYPE_INTERFACE))
#define GTKDOC_DBUS_INTERFACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_DBUS_TYPE_INTERFACE, GtkdocDBusInterfaceClass))

typedef struct _GtkdocDBusInterface GtkdocDBusInterface;
typedef struct _GtkdocDBusInterfaceClass GtkdocDBusInterfaceClass;

#define GTKDOC_GENERATOR_TYPE_FILE_DATA (gtkdoc_generator_file_data_get_type ())
#define GTKDOC_GENERATOR_FILE_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_GENERATOR_TYPE_FILE_DATA, GtkdocGeneratorFileData))
#define GTKDOC_GENERATOR_FILE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_GENERATOR_TYPE_FILE_DATA, GtkdocGeneratorFileDataClass))
#define GTKDOC_GENERATOR_IS_FILE_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_GENERATOR_TYPE_FILE_DATA))
#define GTKDOC_GENERATOR_IS_FILE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_GENERATOR_TYPE_FILE_DATA))
#define GTKDOC_GENERATOR_FILE_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_GENERATOR_TYPE_FILE_DATA, GtkdocGeneratorFileDataClass))

typedef struct _GtkdocGeneratorFileData GtkdocGeneratorFileData;
typedef struct _GtkdocGeneratorFileDataClass GtkdocGeneratorFileDataClass;

#define GTKDOC_TYPE_HEADER (gtkdoc_header_get_type ())
#define GTKDOC_HEADER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_TYPE_HEADER, GtkdocHeader))
#define GTKDOC_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_TYPE_HEADER, GtkdocHeaderClass))
#define GTKDOC_IS_HEADER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_TYPE_HEADER))
#define GTKDOC_IS_HEADER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_TYPE_HEADER))
#define GTKDOC_HEADER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_TYPE_HEADER, GtkdocHeaderClass))

typedef struct _GtkdocHeader GtkdocHeader;
typedef struct _GtkdocHeaderClass GtkdocHeaderClass;

#define GTKDOC_DBUS_TYPE_MEMBER (gtkdoc_dbus_member_get_type ())
#define GTKDOC_DBUS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_DBUS_TYPE_MEMBER, GtkdocDBusMember))
#define GTKDOC_DBUS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_DBUS_TYPE_MEMBER, GtkdocDBusMemberClass))
#define GTKDOC_DBUS_IS_MEMBER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_DBUS_TYPE_MEMBER))
#define GTKDOC_DBUS_IS_MEMBER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_DBUS_TYPE_MEMBER))
#define GTKDOC_DBUS_MEMBER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_DBUS_TYPE_MEMBER, GtkdocDBusMemberClass))

typedef struct _GtkdocDBusMember GtkdocDBusMember;
typedef struct _GtkdocDBusMemberClass GtkdocDBusMemberClass;
enum  {
	GTKDOC_GENERATOR_0_PROPERTY,
	GTKDOC_GENERATOR_NUM_PROPERTIES
};
static GParamSpec* gtkdoc_generator_properties[GTKDOC_GENERATOR_NUM_PROPERTIES];
#define _vala_iterable_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterable_unref (var), NULL)))
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _vala_map_unref0(var) ((var == NULL) ? NULL : (var = (vala_map_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _valadoc_api_tree_unref0(var) ((var == NULL) ? NULL : (var = (valadoc_api_tree_unref (var), NULL)))
#define _gtkdoc_dbus_interface_unref0(var) ((var == NULL) ? NULL : (var = (gtkdoc_dbus_interface_unref (var), NULL)))
#define _gtkdoc_dbus_member_unref0(var) ((var == NULL) ? NULL : (var = (gtkdoc_dbus_member_unref (var), NULL)))
#define _g_string_free0(var) ((var == NULL) ? NULL : (var = (g_string_free (var, TRUE), NULL)))

#define GTKDOC_TYPE_TEXT_WRITER (gtkdoc_text_writer_get_type ())
#define GTKDOC_TEXT_WRITER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_TYPE_TEXT_WRITER, GtkdocTextWriter))
#define GTKDOC_TEXT_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_TYPE_TEXT_WRITER, GtkdocTextWriterClass))
#define GTKDOC_IS_TEXT_WRITER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_TYPE_TEXT_WRITER))
#define GTKDOC_IS_TEXT_WRITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_TYPE_TEXT_WRITER))
#define GTKDOC_TEXT_WRITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_TYPE_TEXT_WRITER, GtkdocTextWriterClass))

typedef struct _GtkdocTextWriter GtkdocTextWriter;
typedef struct _GtkdocTextWriterClass GtkdocTextWriterClass;
typedef struct _GtkdocTextWriterPrivate GtkdocTextWriterPrivate;
#define _gtkdoc_text_writer_unref0(var) ((var == NULL) ? NULL : (var = (gtkdoc_text_writer_unref (var), NULL)))
typedef struct _GtkdocGeneratorFileDataPrivate GtkdocGeneratorFileDataPrivate;

#define GTKDOC_TYPE_GCOMMENT (gtkdoc_gcomment_get_type ())
#define GTKDOC_GCOMMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_TYPE_GCOMMENT, GtkdocGComment))
#define GTKDOC_GCOMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_TYPE_GCOMMENT, GtkdocGCommentClass))
#define GTKDOC_IS_GCOMMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_TYPE_GCOMMENT))
#define GTKDOC_IS_GCOMMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_TYPE_GCOMMENT))
#define GTKDOC_GCOMMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_TYPE_GCOMMENT, GtkdocGCommentClass))

typedef struct _GtkdocGComment GtkdocGComment;
typedef struct _GtkdocGCommentClass GtkdocGCommentClass;
#define _gtkdoc_generator_file_data_unref0(var) ((var == NULL) ? NULL : (var = (gtkdoc_generator_file_data_unref (var), NULL)))
#define _vala_iterator_unref0(var) ((var == NULL) ? NULL : (var = (vala_iterator_unref (var), NULL)))
#define _gtkdoc_gcomment_unref0(var) ((var == NULL) ? NULL : (var = (gtkdoc_gcomment_unref (var), NULL)))
typedef struct _GtkdocHeaderPrivate GtkdocHeaderPrivate;
#define _gtkdoc_header_unref0(var) ((var == NULL) ? NULL : (var = (gtkdoc_header_unref (var), NULL)))
typedef struct _GtkdocGCommentPrivate GtkdocGCommentPrivate;

#define GTKDOC_TYPE_COMMENT_CONVERTER (gtkdoc_comment_converter_get_type ())
#define GTKDOC_COMMENT_CONVERTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_TYPE_COMMENT_CONVERTER, GtkdocCommentConverter))
#define GTKDOC_COMMENT_CONVERTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_TYPE_COMMENT_CONVERTER, GtkdocCommentConverterClass))
#define GTKDOC_IS_COMMENT_CONVERTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_TYPE_COMMENT_CONVERTER))
#define GTKDOC_IS_COMMENT_CONVERTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_TYPE_COMMENT_CONVERTER))
#define GTKDOC_COMMENT_CONVERTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_TYPE_COMMENT_CONVERTER, GtkdocCommentConverterClass))

typedef struct _GtkdocCommentConverter GtkdocCommentConverter;
typedef struct _GtkdocCommentConverterClass GtkdocCommentConverterClass;
typedef struct _GtkdocCommentConverterPrivate GtkdocCommentConverterPrivate;
#define _g_regex_unref0(var) ((var == NULL) ? NULL : (var = (g_regex_unref (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
typedef struct _GtkdocDBusMemberPrivate GtkdocDBusMemberPrivate;

#define GTKDOC_DBUS_TYPE_PARAMETER (gtkdoc_dbus_parameter_get_type ())
#define GTKDOC_DBUS_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTKDOC_DBUS_TYPE_PARAMETER, GtkdocDBusParameter))
#define GTKDOC_DBUS_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTKDOC_DBUS_TYPE_PARAMETER, GtkdocDBusParameterClass))
#define GTKDOC_DBUS_IS_PARAMETER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTKDOC_DBUS_TYPE_PARAMETER))
#define GTKDOC_DBUS_IS_PARAMETER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTKDOC_DBUS_TYPE_PARAMETER))
#define GTKDOC_DBUS_PARAMETER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTKDOC_DBUS_TYPE_PARAMETER, GtkdocDBusParameterClass))

typedef struct _GtkdocDBusParameter GtkdocDBusParameter;
typedef struct _GtkdocDBusParameterClass GtkdocDBusParameterClass;

#define GTKDOC_DBUS_PARAMETER_TYPE_DIRECTION (gtkdoc_dbus_parameter_direction_get_type ())
#define _gtkdoc_dbus_parameter_unref0(var) ((var == NULL) ? NULL : (var = (gtkdoc_dbus_parameter_unref (var), NULL)))
typedef struct _GtkdocGeneratorParamSpecFileData GtkdocGeneratorParamSpecFileData;

struct _GtkdocGenerator {
	ValadocApiVisitor parent_instance;
	GtkdocGeneratorPrivate * priv;
	ValaList* dbus_interfaces;
};

struct _GtkdocGeneratorClass {
	ValadocApiVisitorClass parent_class;
};

struct _GtkdocGeneratorPrivate {
	ValadocErrorReporter* reporter;
	ValadocSettings* settings;
	ValaMap* files_data;
	gchar* current_cname;
	ValaList* current_headers;
	ValadocApiTree* current_tree;
	ValadocApiClass* current_class;
	ValadocApiMethod* current_method;
	ValadocApiDelegate* current_delegate;
	ValadocApiSignal* current_signal;
	GtkdocDBusInterface* current_dbus_interface;
	GtkdocDBusMember* current_dbus_member;
};

struct _GtkdocTextWriter {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GtkdocTextWriterPrivate * priv;
	gchar* filename;
	gchar* mode;
};

struct _GtkdocTextWriterClass {
	GTypeClass parent_class;
	void (*finalize) (GtkdocTextWriter *self);
};

struct _GtkdocGeneratorFileData {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GtkdocGeneratorFileDataPrivate * priv;
	gchar* filename;
	gchar* title;
	GtkdocGComment* section_comment;
	ValaList* comments;
	ValaList* section_lines;
	ValaList* standard_section_lines;
	ValaList* private_section_lines;
};

struct _GtkdocGeneratorFileDataClass {
	GTypeClass parent_class;
	void (*finalize) (GtkdocGeneratorFileData *self);
};

struct _GtkdocHeader {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GtkdocHeaderPrivate * priv;
	gchar* name;
	gchar** annotations;
	gint annotations_length1;
	gchar* value;
	gdouble pos;
	gboolean block;
};

struct _GtkdocHeaderClass {
	GTypeClass parent_class;
	void (*finalize) (GtkdocHeader *self);
};

struct _GtkdocGComment {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GtkdocGCommentPrivate * priv;
	gchar* symbol;
	gchar** symbol_annotations;
	gint symbol_annotations_length1;
	ValaList* headers;
	gboolean short_description;
	gchar* brief_comment;
	gchar* long_comment;
	gchar* returns;
	gchar** returns_annotations;
	gint returns_annotations_length1;
	ValaList* versioning;
	gchar** see_also;
	gint see_also_length1;
	gboolean is_section;
};

struct _GtkdocGCommentClass {
	GTypeClass parent_class;
	void (*finalize) (GtkdocGComment *self);
};

struct _GtkdocCommentConverter {
	ValadocContentContentVisitor parent_instance;
	GtkdocCommentConverterPrivate * priv;
	ValadocApiNode* node_reference;
	gboolean is_dbus;
	gchar* brief_comment;
	gchar* long_comment;
	gchar* returns;
	ValaList* parameters;
	ValaList* versioning;
	gchar** see_also;
	gint see_also_length1;
};

struct _GtkdocCommentConverterClass {
	ValadocContentContentVisitorClass parent_class;
};

struct _GtkdocDBusMember {
	GTypeInstance parent_instance;
	volatile int ref_count;
	GtkdocDBusMemberPrivate * priv;
	gchar* name;
	ValaList* parameters;
	GtkdocGComment* comment;
	GtkdocDBusInterface* iface;
};

struct _GtkdocDBusMemberClass {
	GTypeClass parent_class;
	void (*finalize) (GtkdocDBusMember *self);
};

typedef enum  {
	GTKDOC_DBUS_PARAMETER_DIRECTION_NONE,
	GTKDOC_DBUS_PARAMETER_DIRECTION_IN,
	GTKDOC_DBUS_PARAMETER_DIRECTION_OUT
} GtkdocDBusParameterDirection;

struct _GtkdocGeneratorParamSpecFileData {
	GParamSpec parent_instance;
};


static gpointer gtkdoc_generator_parent_class = NULL;
static gpointer gtkdoc_generator_file_data_parent_class = NULL;

GType gtkdoc_generator_get_type (void) G_GNUC_CONST;
gpointer gtkdoc_dbus_interface_ref (gpointer instance);
void gtkdoc_dbus_interface_unref (gpointer instance);
GParamSpec* gtkdoc_dbus_param_spec_interface (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gtkdoc_dbus_value_set_interface (GValue* value, gpointer v_object);
void gtkdoc_dbus_value_take_interface (GValue* value, gpointer v_object);
gpointer gtkdoc_dbus_value_get_interface (const GValue* value);
GType gtkdoc_dbus_interface_get_type (void) G_GNUC_CONST;
static gpointer gtkdoc_generator_file_data_ref (gpointer instance);
static void gtkdoc_generator_file_data_unref (gpointer instance);
static GParamSpec* gtkdoc_generator_param_spec_file_data (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) G_GNUC_UNUSED;
static void gtkdoc_generator_value_set_file_data (GValue* value, gpointer v_object) G_GNUC_UNUSED;
static void gtkdoc_generator_value_take_file_data (GValue* value, gpointer v_object) G_GNUC_UNUSED;
static gpointer gtkdoc_generator_value_get_file_data (const GValue* value) G_GNUC_UNUSED;
static GType gtkdoc_generator_file_data_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
gpointer gtkdoc_header_ref (gpointer instance);
void gtkdoc_header_unref (gpointer instance);
GParamSpec* gtkdoc_param_spec_header (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gtkdoc_value_set_header (GValue* value, gpointer v_object);
void gtkdoc_value_take_header (GValue* value, gpointer v_object);
gpointer gtkdoc_value_get_header (const GValue* value);
GType gtkdoc_header_get_type (void) G_GNUC_CONST;
gpointer gtkdoc_dbus_member_ref (gpointer instance);
void gtkdoc_dbus_member_unref (gpointer instance);
GParamSpec* gtkdoc_dbus_param_spec_member (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gtkdoc_dbus_value_set_member (GValue* value, gpointer v_object);
void gtkdoc_dbus_value_take_member (GValue* value, gpointer v_object);
gpointer gtkdoc_dbus_value_get_member (const GValue* value);
GType gtkdoc_dbus_member_get_type (void) G_GNUC_CONST;
#define GTKDOC_GENERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GTKDOC_TYPE_GENERATOR, GtkdocGeneratorPrivate))
static gchar* gtkdoc_generator_combine_inline_docs (GtkdocGenerator* self, const gchar* str1, const gchar* str2);
gboolean gtkdoc_generator_execute (GtkdocGenerator* self, ValadocSettings* settings, ValadocApiTree* tree, ValadocErrorReporter* reporter);
gpointer gtkdoc_text_writer_ref (gpointer instance);
void gtkdoc_text_writer_unref (gpointer instance);
GParamSpec* gtkdoc_param_spec_text_writer (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gtkdoc_value_set_text_writer (GValue* value, gpointer v_object);
void gtkdoc_value_take_text_writer (GValue* value, gpointer v_object);
gpointer gtkdoc_value_get_text_writer (const GValue* value);
GType gtkdoc_text_writer_get_type (void) G_GNUC_CONST;
GtkdocTextWriter* gtkdoc_text_writer_new (const gchar* filename, const gchar* mode);
GtkdocTextWriter* gtkdoc_text_writer_construct (GType object_type, const gchar* filename, const gchar* mode);
gboolean gtkdoc_text_writer_open (GtkdocTextWriter* self);
gchar* gtkdoc_get_section (const gchar* filename);
gpointer gtkdoc_gcomment_ref (gpointer instance);
void gtkdoc_gcomment_unref (gpointer instance);
GParamSpec* gtkdoc_param_spec_gcomment (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gtkdoc_value_set_gcomment (GValue* value, gpointer v_object);
void gtkdoc_value_take_gcomment (GValue* value, gpointer v_object);
gpointer gtkdoc_value_get_gcomment (const GValue* value);
GType gtkdoc_gcomment_get_type (void) G_GNUC_CONST;
void gtkdoc_text_writer_write_line (GtkdocTextWriter* self, const gchar* line);
gchar* gtkdoc_gcomment_to_string (GtkdocGComment* self);
void gtkdoc_text_writer_close (GtkdocTextWriter* self);
ValaSet* gtkdoc_generator_get_filenames (GtkdocGenerator* self);
static GtkdocGeneratorFileData* gtkdoc_generator_get_file_data (GtkdocGenerator* self, const gchar* filename);
static GtkdocGeneratorFileData* gtkdoc_generator_file_data_new (void);
static GtkdocGeneratorFileData* gtkdoc_generator_file_data_construct (GType object_type);
static ValaList* gtkdoc_generator_merge_headers (GtkdocGenerator* self, ValaList* doc_headers, ValaList* lang_headers);
static gchar** _vala_array_dup4 (gchar** self, int length);
static void gtkdoc_generator_set_section_comment (GtkdocGenerator* self, const gchar* filename, const gchar* section_name, ValadocContentComment* comment, const gchar* symbol_full_name);
static GtkdocGComment* gtkdoc_generator_create_gcomment (GtkdocGenerator* self, const gchar* symbol, ValadocContentComment* comment, gchar** returns_annotations, int returns_annotations_length1, gboolean is_dbus);
GType gtkdoc_comment_converter_get_type (void) G_GNUC_CONST;
static ValadocApiNode* gtkdoc_generator_get_current_method_or_delegate (GtkdocGenerator* self);
GtkdocCommentConverter* gtkdoc_comment_converter_new (ValadocErrorReporter* reporter, ValadocApiNode* node_reference);
GtkdocCommentConverter* gtkdoc_comment_converter_construct (GType object_type, ValadocErrorReporter* reporter, ValadocApiNode* node_reference);
void gtkdoc_comment_converter_convert (GtkdocCommentConverter* self, ValadocContentComment* comment, gboolean is_dbus);
GtkdocGComment* gtkdoc_gcomment_new (void);
GtkdocGComment* gtkdoc_gcomment_construct (GType object_type);
static gchar** _vala_array_dup5 (gchar** self, int length);
static gchar** _vala_array_dup6 (gchar** self, int length);
static GtkdocGComment* gtkdoc_generator_add_comment (GtkdocGenerator* self, const gchar* filename, const gchar* symbol, ValadocContentComment* comment);
static GtkdocGComment* gtkdoc_generator_add_symbol (GtkdocGenerator* self, const gchar* filename, const gchar* cname, ValadocContentComment* comment, const gchar* symbol, gchar** returns_annotations, int returns_annotations_length1);
static void gtkdoc_generator_file_data_register_section_line (GtkdocGeneratorFileData* self, const gchar* line);
static GtkdocHeader* gtkdoc_generator_add_custom_header (GtkdocGenerator* self, const gchar* name, const gchar* comment, gchar** annotations, int annotations_length1, gdouble pos, gboolean block);
GtkdocHeader* gtkdoc_header_new (const gchar* name, const gchar* value, gdouble pos, gboolean block);
GtkdocHeader* gtkdoc_header_construct (GType object_type, const gchar* name, const gchar* value, gdouble pos, gboolean block);
static gchar** _vala_array_dup7 (gchar** self, int length);
static GtkdocHeader* gtkdoc_generator_remove_custom_header (GtkdocGenerator* self, const gchar* name);
static GtkdocHeader* gtkdoc_generator_add_header (GtkdocGenerator* self, const gchar* name, ValadocContentComment* comment, gchar** annotations, int annotations_length1, gdouble pos);
static gchar** _vala_array_dup8 (gchar** self, int length);
static void gtkdoc_generator_real_visit_tree (ValadocApiVisitor* base, ValadocApiTree* tree);
static void gtkdoc_generator_real_visit_package (ValadocApiVisitor* base, ValadocApiPackage* package);
static void gtkdoc_generator_real_visit_namespace (ValadocApiVisitor* base, ValadocApiNamespace* ns);
static void gtkdoc_generator_real_visit_interface (ValadocApiVisitor* base, ValadocApiInterface* iface);
GtkdocDBusInterface* gtkdoc_dbus_interface_new (const gchar* package_name, const gchar* name, const gchar* purpose, const gchar* description);
GtkdocDBusInterface* gtkdoc_dbus_interface_construct (GType object_type, const gchar* package_name, const gchar* name, const gchar* purpose, const gchar* description);
gboolean gtkdoc_dbus_interface_write (GtkdocDBusInterface* self, ValadocSettings* settings, ValadocErrorReporter* reporter);
static void gtkdoc_generator_process_attributes (GtkdocGenerator* self, ValadocApiSymbol* sym, GtkdocGComment* gcomment);
static void gtkdoc_generator_visit_abstract_method (GtkdocGenerator* self, ValadocApiMethod* m);
static void gtkdoc_generator_visit_abstract_property (GtkdocGenerator* self, ValadocApiProperty* prop);
gchar* gtkdoc_get_docbook_link (ValadocApiItem* item, gboolean is_dbus, gboolean is_async_finish);
static void gtkdoc_generator_file_data_register_standard_section_line (GtkdocGeneratorFileData* self, const gchar* line);
static void gtkdoc_generator_real_visit_class (ValadocApiVisitor* base, ValadocApiClass* cl);
gchar* gtkdoc_get_docbook_type_link (ValadocApiClass* cls);
gchar* gtkdoc_to_docbook_id (const gchar* name);
static void gtkdoc_generator_file_data_register_private_section_line (GtkdocGeneratorFileData* self, const gchar* line);
gchar* gtkdoc_to_lower_case (const gchar* camel);
static gchar** gtkdoc_generator_create_see_function_array (GtkdocGenerator* self, gchar** functions, int functions_length1, int* result_length1);
static void _vala_array_add19 (gchar** * array, int* length, int* size, gchar* value);
static gchar** _vala_array_dup9 (gchar** self, int length);
static void gtkdoc_generator_real_visit_struct (ValadocApiVisitor* base, ValadocApiStruct* st);
static void gtkdoc_generator_visit_thrown_error_domain (GtkdocGenerator* self, ValadocApiNode* _error_);
static void gtkdoc_generator_real_visit_error_domain (ValadocApiVisitor* base, ValadocApiErrorDomain* edomain);
static void gtkdoc_generator_real_visit_error_code (ValadocApiVisitor* base, ValadocApiErrorCode* ecode);
static void gtkdoc_generator_real_visit_enum (ValadocApiVisitor* base, ValadocApiEnum* en);
static void gtkdoc_generator_real_visit_enum_value (ValadocApiVisitor* base, ValadocApiEnumValue* eval);
static gchar* gtkdoc_generator_combine_comments (GtkdocGenerator* self, const gchar* brief, const gchar* _long_);
static void gtkdoc_generator_real_visit_property (ValadocApiVisitor* base, ValadocApiProperty* prop);
gchar* gtkdoc_get_cname (ValadocApiItem* item);
static void gtkdoc_generator_real_visit_field (ValadocApiVisitor* base, ValadocApiField* f);
static void gtkdoc_generator_real_visit_constant (ValadocApiVisitor* base, ValadocApiConstant* c);
static void gtkdoc_generator_real_visit_delegate (ValadocApiVisitor* base, ValadocApiDelegate* d);
static void gtkdoc_generator_real_visit_signal (ValadocApiVisitor* base, ValadocApiSignal* sig);
GtkdocDBusMember* gtkdoc_dbus_member_new (const gchar* name);
GtkdocDBusMember* gtkdoc_dbus_member_construct (GType object_type, const gchar* name);
gpointer gtkdoc_dbus_parameter_ref (gpointer instance);
void gtkdoc_dbus_parameter_unref (gpointer instance);
GParamSpec* gtkdoc_dbus_param_spec_parameter (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void gtkdoc_dbus_value_set_parameter (GValue* value, gpointer v_object);
void gtkdoc_dbus_value_take_parameter (GValue* value, gpointer v_object);
gpointer gtkdoc_dbus_value_get_parameter (const GValue* value);
GType gtkdoc_dbus_parameter_get_type (void) G_GNUC_CONST;
void gtkdoc_dbus_interface_add_signal (GtkdocDBusInterface* self, GtkdocDBusMember* member);
static void gtkdoc_generator_real_visit_method (ValadocApiVisitor* base, ValadocApiMethod* m);
static void _vala_array_add20 (gchar** * array, int* length, int* size, gchar* value);
static void _vala_array_add21 (gchar** * array, int* length, int* size, gchar* value);
static gchar** _vala_array_dup10 (gchar** self, int length);
static void _vala_array_add22 (gchar** * array, int* length, int* size, gchar* value);
static gchar** _vala_array_dup11 (gchar** self, int length);
GType gtkdoc_dbus_parameter_direction_get_type (void) G_GNUC_CONST;
GtkdocDBusParameter* gtkdoc_dbus_parameter_new (const gchar* name, const gchar* signature, GtkdocDBusParameterDirection direction);
GtkdocDBusParameter* gtkdoc_dbus_parameter_construct (GType object_type, const gchar* name, const gchar* signature, GtkdocDBusParameterDirection direction);
void gtkdoc_dbus_member_add_parameter (GtkdocDBusMember* self, GtkdocDBusParameter* parameter);
void gtkdoc_dbus_interface_add_method (GtkdocDBusInterface* self, GtkdocDBusMember* member);
static gchar** _vala_array_dup12 (gchar** self, int length);
static void _vala_array_add23 (gchar** * array, int* length, int* size, gchar* value);
static gchar** _vala_array_dup13 (gchar** self, int length);
static void gtkdoc_generator_real_visit_formal_parameter (ValadocApiVisitor* base, ValadocApiFormalParameter* param);
static void _vala_array_add24 (gchar** * array, int* length, int* size, gchar* value);
static void _vala_array_add25 (gchar** * array, int* length, int* size, gchar* value);
static void _vala_array_add26 (gchar** * array, int* length, int* size, gchar* value);
static void _vala_array_add27 (gchar** * array, int* length, int* size, gchar* value);
gdouble gtkdoc_get_parameter_pos (ValadocApiNode* node, const gchar* name);
static void _vala_array_add28 (gchar** * array, int* length, int* size, gchar* value);
gchar* gtkdoc_get_gtkdoc_link (ValadocApiNode* symbol);
GtkdocGenerator* gtkdoc_generator_new (void);
GtkdocGenerator* gtkdoc_generator_construct (GType object_type);
static void gtkdoc_generator_file_data_finalize (GtkdocGeneratorFileData * obj);
static void gtkdoc_generator_finalize (GObject * obj);
static void _vala_gtkdoc_generator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
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 gchar string_get (const gchar* self, glong index) {
	gchar result = '\0';
	glong _tmp0_;
	gchar _tmp1_;
	g_return_val_if_fail (self != NULL, '\0');
	_tmp0_ = index;
	_tmp1_ = ((gchar*) self)[_tmp0_];
	result = _tmp1_;
	return result;
}


static gchar* gtkdoc_generator_combine_inline_docs (GtkdocGenerator* self, const gchar* str1, const gchar* str2) {
	gchar* result = NULL;
	GString* builder = NULL;
	GString* _tmp0_;
	const gchar* _tmp1_;
	gboolean _tmp5_ = FALSE;
	gboolean _tmp6_ = FALSE;
	GString* _tmp7_;
	gssize _tmp8_;
	const gchar* _tmp16_;
	GString* _tmp20_;
	gchar* _tmp21_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_string_new ("");
	builder = _tmp0_;
	_tmp1_ = str1;
	if (_tmp1_ != NULL) {
		GString* _tmp2_;
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		_tmp2_ = builder;
		_tmp3_ = str1;
		_tmp4_ = g_strchomp (_tmp3_);
		g_string_append (_tmp2_, _tmp4_);
	}
	_tmp7_ = builder;
	_tmp8_ = _tmp7_->len;
	if (_tmp8_ > ((gssize) 0)) {
		GString* _tmp9_;
		const gchar* _tmp10_;
		GString* _tmp11_;
		gssize _tmp12_;
		gchar _tmp13_;
		_tmp9_ = builder;
		_tmp10_ = _tmp9_->str;
		_tmp11_ = builder;
		_tmp12_ = _tmp11_->len;
		_tmp13_ = string_get (_tmp10_, (glong) (_tmp12_ - 1));
		_tmp6_ = _tmp13_ != '.';
	} else {
		_tmp6_ = FALSE;
	}
	if (_tmp6_) {
		const gchar* _tmp14_;
		_tmp14_ = str2;
		_tmp5_ = _tmp14_ != NULL;
	} else {
		_tmp5_ = FALSE;
	}
	if (_tmp5_) {
		GString* _tmp15_;
		_tmp15_ = builder;
		g_string_append (_tmp15_, ". ");
	}
	_tmp16_ = str2;
	if (_tmp16_ != NULL) {
		GString* _tmp17_;
		GString* _tmp18_;
		const gchar* _tmp19_;
		_tmp17_ = builder;
		g_string_append_c (_tmp17_, ' ');
		_tmp18_ = builder;
		_tmp19_ = str2;
		g_string_append (_tmp18_, _tmp19_);
	}
	_tmp20_ = builder;
	_tmp21_ = _tmp20_->str;
	_tmp20_->str = NULL;
	result = _tmp21_;
	_g_string_free0 (builder);
	return result;
}


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


static gpointer _valadoc_api_tree_ref0 (gpointer self) {
	return self ? valadoc_api_tree_ref (self) : NULL;
}


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


gboolean gtkdoc_generator_execute (GtkdocGenerator* self, ValadocSettings* settings, ValadocApiTree* tree, ValadocErrorReporter* reporter) {
	gboolean result = FALSE;
	ValadocSettings* _tmp0_;
	ValadocSettings* _tmp1_;
	ValadocErrorReporter* _tmp2_;
	ValadocErrorReporter* _tmp3_;
	ValadocApiTree* _tmp4_;
	ValadocApiTree* _tmp5_;
	ValadocApiTree* _tmp6_;
	gchar* code_dir = NULL;
	ValadocSettings* _tmp7_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* sections = NULL;
	ValadocSettings* _tmp10_;
	const gchar* _tmp11_;
	ValadocSettings* _tmp12_;
	const gchar* _tmp13_;
	gchar* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gchar* _tmp17_;
	const gchar* _tmp18_;
	GtkdocTextWriter* sections_writer = NULL;
	const gchar* _tmp19_;
	GtkdocTextWriter* _tmp20_;
	GtkdocTextWriter* _tmp21_;
	gboolean _tmp22_;
	GtkdocTextWriter* _tmp140_;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (settings != NULL, FALSE);
	g_return_val_if_fail (tree != NULL, FALSE);
	g_return_val_if_fail (reporter != NULL, FALSE);
	_tmp0_ = settings;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	_g_object_unref0 (self->priv->settings);
	self->priv->settings = _tmp1_;
	_tmp2_ = reporter;
	_tmp3_ = _g_object_ref0 (_tmp2_);
	_g_object_unref0 (self->priv->reporter);
	self->priv->reporter = _tmp3_;
	_tmp4_ = tree;
	_tmp5_ = _valadoc_api_tree_ref0 (_tmp4_);
	_valadoc_api_tree_unref0 (self->priv->current_tree);
	self->priv->current_tree = _tmp5_;
	_tmp6_ = tree;
	valadoc_api_tree_accept (_tmp6_, (ValadocApiVisitor*) self);
	_tmp7_ = settings;
	_tmp8_ = _tmp7_->path;
	_tmp9_ = g_build_filename (_tmp8_, "ccomments", NULL);
	code_dir = _tmp9_;
	_tmp10_ = settings;
	_tmp11_ = _tmp10_->path;
	_tmp12_ = settings;
	_tmp13_ = _tmp12_->pkg_name;
	_tmp14_ = g_strdup_printf ("%s-sections.txt", _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = g_build_filename (_tmp11_, _tmp15_, NULL);
	_tmp17_ = _tmp16_;
	_g_free0 (_tmp15_);
	sections = _tmp17_;
	_tmp18_ = code_dir;
	g_mkdir_with_parents (_tmp18_, 0777);
	_tmp19_ = sections;
	_tmp20_ = gtkdoc_text_writer_new (_tmp19_, "a");
	sections_writer = _tmp20_;
	_tmp21_ = sections_writer;
	_tmp22_ = gtkdoc_text_writer_open (_tmp21_);
	if (!_tmp22_) {
		ValadocErrorReporter* _tmp23_;
		GtkdocTextWriter* _tmp24_;
		const gchar* _tmp25_;
		_tmp23_ = reporter;
		_tmp24_ = sections_writer;
		_tmp25_ = _tmp24_->filename;
		valadoc_error_reporter_simple_error (_tmp23_, "GtkDoc", "unable to open '%s' for writing", _tmp25_);
		result = FALSE;
		_gtkdoc_text_writer_unref0 (sections_writer);
		_g_free0 (sections);
		_g_free0 (code_dir);
		return result;
	}
	{
		ValaIterator* _file_data_it = NULL;
		ValaMap* _tmp26_;
		ValaCollection* _tmp27_;
		ValaCollection* _tmp28_;
		ValaIterator* _tmp29_;
		ValaIterator* _tmp30_;
		_tmp26_ = self->priv->files_data;
		_tmp27_ = vala_map_get_values (_tmp26_);
		_tmp28_ = _tmp27_;
		_tmp29_ = vala_iterable_iterator ((ValaIterable*) _tmp28_);
		_tmp30_ = _tmp29_;
		_vala_iterable_unref0 (_tmp28_);
		_file_data_it = _tmp30_;
		while (TRUE) {
			ValaIterator* _tmp31_;
			gboolean _tmp32_;
			GtkdocGeneratorFileData* file_data = NULL;
			ValaIterator* _tmp33_;
			gpointer _tmp34_;
			gchar* basename = NULL;
			GtkdocGeneratorFileData* _tmp35_;
			const gchar* _tmp36_;
			gchar* _tmp37_;
			GtkdocTextWriter* cwriter = NULL;
			const gchar* _tmp38_;
			const gchar* _tmp39_;
			gchar* _tmp40_;
			gchar* _tmp41_;
			gchar* _tmp42_;
			gchar* _tmp43_;
			GtkdocTextWriter* _tmp44_;
			GtkdocTextWriter* _tmp45_;
			GtkdocTextWriter* _tmp46_;
			gboolean _tmp47_;
			GtkdocGeneratorFileData* _tmp51_;
			GtkdocGComment* _tmp52_;
			GtkdocTextWriter* _tmp74_;
			GtkdocTextWriter* _tmp75_;
			GtkdocTextWriter* _tmp76_;
			const gchar* _tmp77_;
			gchar* _tmp78_;
			gchar* _tmp79_;
			GtkdocGeneratorFileData* _tmp80_;
			const gchar* _tmp81_;
			GtkdocGeneratorFileData* _tmp101_;
			ValaList* _tmp102_;
			gint _tmp103_;
			gint _tmp104_;
			GtkdocGeneratorFileData* _tmp120_;
			ValaList* _tmp121_;
			gint _tmp122_;
			gint _tmp123_;
			GtkdocTextWriter* _tmp139_;
			_tmp31_ = _file_data_it;
			_tmp32_ = vala_iterator_next (_tmp31_);
			if (!_tmp32_) {
				break;
			}
			_tmp33_ = _file_data_it;
			_tmp34_ = vala_iterator_get (_tmp33_);
			file_data = (GtkdocGeneratorFileData*) _tmp34_;
			_tmp35_ = file_data;
			_tmp36_ = _tmp35_->filename;
			_tmp37_ = gtkdoc_get_section (_tmp36_);
			basename = _tmp37_;
			_tmp38_ = code_dir;
			_tmp39_ = basename;
			_tmp40_ = g_strdup_printf ("%s.c", _tmp39_);
			_tmp41_ = _tmp40_;
			_tmp42_ = g_build_filename (_tmp38_, _tmp41_, NULL);
			_tmp43_ = _tmp42_;
			_tmp44_ = gtkdoc_text_writer_new (_tmp43_, "w");
			_tmp45_ = _tmp44_;
			_g_free0 (_tmp43_);
			_g_free0 (_tmp41_);
			cwriter = _tmp45_;
			_tmp46_ = cwriter;
			_tmp47_ = gtkdoc_text_writer_open (_tmp46_);
			if (!_tmp47_) {
				ValadocErrorReporter* _tmp48_;
				GtkdocTextWriter* _tmp49_;
				const gchar* _tmp50_;
				_tmp48_ = reporter;
				_tmp49_ = cwriter;
				_tmp50_ = _tmp49_->filename;
				valadoc_error_reporter_simple_error (_tmp48_, "GtkDoc", "unable to open '%s' for writing", _tmp50_);
				result = FALSE;
				_gtkdoc_text_writer_unref0 (cwriter);
				_g_free0 (basename);
				_gtkdoc_generator_file_data_unref0 (file_data);
				_vala_iterator_unref0 (_file_data_it);
				_gtkdoc_text_writer_unref0 (sections_writer);
				_g_free0 (sections);
				_g_free0 (code_dir);
				return result;
			}
			_tmp51_ = file_data;
			_tmp52_ = _tmp51_->section_comment;
			if (_tmp52_ != NULL) {
				GtkdocTextWriter* _tmp53_;
				GtkdocGeneratorFileData* _tmp54_;
				GtkdocGComment* _tmp55_;
				gchar* _tmp56_;
				gchar* _tmp57_;
				_tmp53_ = cwriter;
				_tmp54_ = file_data;
				_tmp55_ = _tmp54_->section_comment;
				_tmp56_ = gtkdoc_gcomment_to_string (_tmp55_);
				_tmp57_ = _tmp56_;
				gtkdoc_text_writer_write_line (_tmp53_, _tmp57_);
				_g_free0 (_tmp57_);
			}
			{
				ValaList* _comment_list = NULL;
				GtkdocGeneratorFileData* _tmp58_;
				ValaList* _tmp59_;
				ValaList* _tmp60_;
				gint _comment_size = 0;
				ValaList* _tmp61_;
				gint _tmp62_;
				gint _tmp63_;
				gint _comment_index = 0;
				_tmp58_ = file_data;
				_tmp59_ = _tmp58_->comments;
				_tmp60_ = _vala_iterable_ref0 (_tmp59_);
				_comment_list = _tmp60_;
				_tmp61_ = _comment_list;
				_tmp62_ = vala_collection_get_size ((ValaCollection*) _tmp61_);
				_tmp63_ = _tmp62_;
				_comment_size = _tmp63_;
				_comment_index = -1;
				while (TRUE) {
					gint _tmp64_;
					gint _tmp65_;
					gint _tmp66_;
					GtkdocGComment* comment = NULL;
					ValaList* _tmp67_;
					gint _tmp68_;
					gpointer _tmp69_;
					GtkdocTextWriter* _tmp70_;
					GtkdocGComment* _tmp71_;
					gchar* _tmp72_;
					gchar* _tmp73_;
					_tmp64_ = _comment_index;
					_comment_index = _tmp64_ + 1;
					_tmp65_ = _comment_index;
					_tmp66_ = _comment_size;
					if (!(_tmp65_ < _tmp66_)) {
						break;
					}
					_tmp67_ = _comment_list;
					_tmp68_ = _comment_index;
					_tmp69_ = vala_list_get (_tmp67_, _tmp68_);
					comment = (GtkdocGComment*) _tmp69_;
					_tmp70_ = cwriter;
					_tmp71_ = comment;
					_tmp72_ = gtkdoc_gcomment_to_string (_tmp71_);
					_tmp73_ = _tmp72_;
					gtkdoc_text_writer_write_line (_tmp70_, _tmp73_);
					_g_free0 (_tmp73_);
					_gtkdoc_gcomment_unref0 (comment);
				}
				_vala_iterable_unref0 (_comment_list);
			}
			_tmp74_ = cwriter;
			gtkdoc_text_writer_close (_tmp74_);
			_tmp75_ = sections_writer;
			gtkdoc_text_writer_write_line (_tmp75_, "<SECTION>");
			_tmp76_ = sections_writer;
			_tmp77_ = basename;
			_tmp78_ = g_strdup_printf ("<FILE>%s</FILE>", _tmp77_);
			_tmp79_ = _tmp78_;
			gtkdoc_text_writer_write_line (_tmp76_, _tmp79_);
			_g_free0 (_tmp79_);
			_tmp80_ = file_data;
			_tmp81_ = _tmp80_->title;
			if (_tmp81_ != NULL) {
				GtkdocTextWriter* _tmp82_;
				GtkdocGeneratorFileData* _tmp83_;
				const gchar* _tmp84_;
				gchar* _tmp85_;
				gchar* _tmp86_;
				_tmp82_ = sections_writer;
				_tmp83_ = file_data;
				_tmp84_ = _tmp83_->title;
				_tmp85_ = g_strdup_printf ("<TITLE>%s</TITLE>", _tmp84_);
				_tmp86_ = _tmp85_;
				gtkdoc_text_writer_write_line (_tmp82_, _tmp86_);
				_g_free0 (_tmp86_);
			}
			{
				ValaList* _section_line_list = NULL;
				GtkdocGeneratorFileData* _tmp87_;
				ValaList* _tmp88_;
				ValaList* _tmp89_;
				gint _section_line_size = 0;
				ValaList* _tmp90_;
				gint _tmp91_;
				gint _tmp92_;
				gint _section_line_index = 0;
				_tmp87_ = file_data;
				_tmp88_ = _tmp87_->section_lines;
				_tmp89_ = _vala_iterable_ref0 (_tmp88_);
				_section_line_list = _tmp89_;
				_tmp90_ = _section_line_list;
				_tmp91_ = vala_collection_get_size ((ValaCollection*) _tmp90_);
				_tmp92_ = _tmp91_;
				_section_line_size = _tmp92_;
				_section_line_index = -1;
				while (TRUE) {
					gint _tmp93_;
					gint _tmp94_;
					gint _tmp95_;
					gchar* section_line = NULL;
					ValaList* _tmp96_;
					gint _tmp97_;
					gpointer _tmp98_;
					GtkdocTextWriter* _tmp99_;
					const gchar* _tmp100_;
					_tmp93_ = _section_line_index;
					_section_line_index = _tmp93_ + 1;
					_tmp94_ = _section_line_index;
					_tmp95_ = _section_line_size;
					if (!(_tmp94_ < _tmp95_)) {
						break;
					}
					_tmp96_ = _section_line_list;
					_tmp97_ = _section_line_index;
					_tmp98_ = vala_list_get (_tmp96_, _tmp97_);
					section_line = (gchar*) _tmp98_;
					_tmp99_ = sections_writer;
					_tmp100_ = section_line;
					gtkdoc_text_writer_write_line (_tmp99_, _tmp100_);
					_g_free0 (section_line);
				}
				_vala_iterable_unref0 (_section_line_list);
			}
			_tmp101_ = file_data;
			_tmp102_ = _tmp101_->standard_section_lines;
			_tmp103_ = vala_collection_get_size ((ValaCollection*) _tmp102_);
			_tmp104_ = _tmp103_;
			if (_tmp104_ > 0) {
				GtkdocTextWriter* _tmp105_;
				_tmp105_ = sections_writer;
				gtkdoc_text_writer_write_line (_tmp105_, "<SUBSECTION Standard>");
				{
					ValaList* _section_line_list = NULL;
					GtkdocGeneratorFileData* _tmp106_;
					ValaList* _tmp107_;
					ValaList* _tmp108_;
					gint _section_line_size = 0;
					ValaList* _tmp109_;
					gint _tmp110_;
					gint _tmp111_;
					gint _section_line_index = 0;
					_tmp106_ = file_data;
					_tmp107_ = _tmp106_->standard_section_lines;
					_tmp108_ = _vala_iterable_ref0 (_tmp107_);
					_section_line_list = _tmp108_;
					_tmp109_ = _section_line_list;
					_tmp110_ = vala_collection_get_size ((ValaCollection*) _tmp109_);
					_tmp111_ = _tmp110_;
					_section_line_size = _tmp111_;
					_section_line_index = -1;
					while (TRUE) {
						gint _tmp112_;
						gint _tmp113_;
						gint _tmp114_;
						gchar* section_line = NULL;
						ValaList* _tmp115_;
						gint _tmp116_;
						gpointer _tmp117_;
						GtkdocTextWriter* _tmp118_;
						const gchar* _tmp119_;
						_tmp112_ = _section_line_index;
						_section_line_index = _tmp112_ + 1;
						_tmp113_ = _section_line_index;
						_tmp114_ = _section_line_size;
						if (!(_tmp113_ < _tmp114_)) {
							break;
						}
						_tmp115_ = _section_line_list;
						_tmp116_ = _section_line_index;
						_tmp117_ = vala_list_get (_tmp115_, _tmp116_);
						section_line = (gchar*) _tmp117_;
						_tmp118_ = sections_writer;
						_tmp119_ = section_line;
						gtkdoc_text_writer_write_line (_tmp118_, _tmp119_);
						_g_free0 (section_line);
					}
					_vala_iterable_unref0 (_section_line_list);
				}
			}
			_tmp120_ = file_data;
			_tmp121_ = _tmp120_->private_section_lines;
			_tmp122_ = vala_collection_get_size ((ValaCollection*) _tmp121_);
			_tmp123_ = _tmp122_;
			if (_tmp123_ > 0) {
				GtkdocTextWriter* _tmp124_;
				_tmp124_ = sections_writer;
				gtkdoc_text_writer_write_line (_tmp124_, "<SUBSECTION Private>");
				{
					ValaList* _section_line_list = NULL;
					GtkdocGeneratorFileData* _tmp125_;
					ValaList* _tmp126_;
					ValaList* _tmp127_;
					gint _section_line_size = 0;
					ValaList* _tmp128_;
					gint _tmp129_;
					gint _tmp130_;
					gint _section_line_index = 0;
					_tmp125_ = file_data;
					_tmp126_ = _tmp125_->private_section_lines;
					_tmp127_ = _vala_iterable_ref0 (_tmp126_);
					_section_line_list = _tmp127_;
					_tmp128_ = _section_line_list;
					_tmp129_ = vala_collection_get_size ((ValaCollection*) _tmp128_);
					_tmp130_ = _tmp129_;
					_section_line_size = _tmp130_;
					_section_line_index = -1;
					while (TRUE) {
						gint _tmp131_;
						gint _tmp132_;
						gint _tmp133_;
						gchar* section_line = NULL;
						ValaList* _tmp134_;
						gint _tmp135_;
						gpointer _tmp136_;
						GtkdocTextWriter* _tmp137_;
						const gchar* _tmp138_;
						_tmp131_ = _section_line_index;
						_section_line_index = _tmp131_ + 1;
						_tmp132_ = _section_line_index;
						_tmp133_ = _section_line_size;
						if (!(_tmp132_ < _tmp133_)) {
							break;
						}
						_tmp134_ = _section_line_list;
						_tmp135_ = _section_line_index;
						_tmp136_ = vala_list_get (_tmp134_, _tmp135_);
						section_line = (gchar*) _tmp136_;
						_tmp137_ = sections_writer;
						_tmp138_ = section_line;
						gtkdoc_text_writer_write_line (_tmp137_, _tmp138_);
						_g_free0 (section_line);
					}
					_vala_iterable_unref0 (_section_line_list);
				}
			}
			_tmp139_ = sections_writer;
			gtkdoc_text_writer_write_line (_tmp139_, "</SECTION>");
			_gtkdoc_text_writer_unref0 (cwriter);
			_g_free0 (basename);
			_gtkdoc_generator_file_data_unref0 (file_data);
		}
		_vala_iterator_unref0 (_file_data_it);
	}
	_tmp140_ = sections_writer;
	gtkdoc_text_writer_close (_tmp140_);
	result = TRUE;
	_gtkdoc_text_writer_unref0 (sections_writer);
	_g_free0 (sections);
	_g_free0 (code_dir);
	return result;
}


ValaSet* gtkdoc_generator_get_filenames (GtkdocGenerator* self) {
	ValaSet* result = NULL;
	ValaMap* _tmp0_;
	ValaSet* _tmp1_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->files_data;
	_tmp1_ = vala_map_get_keys (_tmp0_);
	result = _tmp1_;
	return result;
}


static GtkdocGeneratorFileData* gtkdoc_generator_get_file_data (GtkdocGenerator* self, const gchar* filename) {
	GtkdocGeneratorFileData* result = NULL;
	GtkdocGeneratorFileData* file_data = NULL;
	ValaMap* _tmp0_;
	const gchar* _tmp1_;
	gpointer _tmp2_;
	GtkdocGeneratorFileData* _tmp3_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (filename != NULL, NULL);
	_tmp0_ = self->priv->files_data;
	_tmp1_ = filename;
	_tmp2_ = vala_map_get (_tmp0_, _tmp1_);
	file_data = (GtkdocGeneratorFileData*) _tmp2_;
	_tmp3_ = file_data;
	if (_tmp3_ == NULL) {
		GtkdocGeneratorFileData* _tmp4_;
		GtkdocGeneratorFileData* _tmp5_;
		const gchar* _tmp6_;
		gchar* _tmp7_;
		GtkdocGeneratorFileData* _tmp8_;
		GtkdocGeneratorFileData* _tmp9_;
		GtkdocGeneratorFileData* _tmp10_;
		GEqualFunc _tmp11_;
		ValaArrayList* _tmp12_;
		GtkdocGeneratorFileData* _tmp13_;
		GEqualFunc _tmp14_;
		ValaArrayList* _tmp15_;
		GtkdocGeneratorFileData* _tmp16_;
		GEqualFunc _tmp17_;
		ValaArrayList* _tmp18_;
		GtkdocGeneratorFileData* _tmp19_;
		GEqualFunc _tmp20_;
		ValaArrayList* _tmp21_;
		ValaMap* _tmp22_;
		const gchar* _tmp23_;
		GtkdocGeneratorFileData* _tmp24_;
		_tmp4_ = gtkdoc_generator_file_data_new ();
		_gtkdoc_generator_file_data_unref0 (file_data);
		file_data = _tmp4_;
		_tmp5_ = file_data;
		_tmp6_ = filename;
		_tmp7_ = g_strdup (_tmp6_);
		_g_free0 (_tmp5_->filename);
		_tmp5_->filename = _tmp7_;
		_tmp8_ = file_data;
		_g_free0 (_tmp8_->title);
		_tmp8_->title = NULL;
		_tmp9_ = file_data;
		_gtkdoc_gcomment_unref0 (_tmp9_->section_comment);
		_tmp9_->section_comment = NULL;
		_tmp10_ = file_data;
		_tmp11_ = g_direct_equal;
		_tmp12_ = vala_array_list_new (GTKDOC_TYPE_GCOMMENT, (GBoxedCopyFunc) gtkdoc_gcomment_ref, (GDestroyNotify) gtkdoc_gcomment_unref, _tmp11_);
		_vala_iterable_unref0 (_tmp10_->comments);
		_tmp10_->comments = (ValaList*) _tmp12_;
		_tmp13_ = file_data;
		_tmp14_ = g_str_equal;
		_tmp15_ = vala_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp14_);
		_vala_iterable_unref0 (_tmp13_->section_lines);
		_tmp13_->section_lines = (ValaList*) _tmp15_;
		_tmp16_ = file_data;
		_tmp17_ = g_str_equal;
		_tmp18_ = vala_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp17_);
		_vala_iterable_unref0 (_tmp16_->standard_section_lines);
		_tmp16_->standard_section_lines = (ValaList*) _tmp18_;
		_tmp19_ = file_data;
		_tmp20_ = g_str_equal;
		_tmp21_ = vala_array_list_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, _tmp20_);
		_vala_iterable_unref0 (_tmp19_->private_section_lines);
		_tmp19_->private_section_lines = (ValaList*) _tmp21_;
		_tmp22_ = self->priv->files_data;
		_tmp23_ = filename;
		_tmp24_ = file_data;
		vala_map_set (_tmp22_, _tmp23_, _tmp24_);
	}
	result = file_data;
	return result;
}


static gpointer _gtkdoc_header_ref0 (gpointer self) {
	return self ? gtkdoc_header_ref (self) : NULL;
}


static gchar** _vala_array_dup4 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static ValaList* gtkdoc_generator_merge_headers (GtkdocGenerator* self, ValaList* doc_headers, ValaList* lang_headers) {
	ValaList* result = NULL;
	ValaList* _tmp0_;
	ValaArrayList* headers = NULL;
	GEqualFunc _tmp3_;
	ValaArrayList* _tmp4_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (doc_headers != NULL, NULL);
	_tmp0_ = lang_headers;
	if (_tmp0_ == NULL) {
		ValaList* _tmp1_;
		ValaList* _tmp2_;
		_tmp1_ = doc_headers;
		_tmp2_ = _vala_iterable_ref0 (_tmp1_);
		result = _tmp2_;
		return result;
	}
	_tmp3_ = g_direct_equal;
	_tmp4_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp3_);
	headers = _tmp4_;
	{
		ValaList* _doc_header_list = NULL;
		ValaList* _tmp5_;
		ValaList* _tmp6_;
		gint _doc_header_size = 0;
		ValaList* _tmp7_;
		gint _tmp8_;
		gint _tmp9_;
		gint _doc_header_index = 0;
		_tmp5_ = doc_headers;
		_tmp6_ = _vala_iterable_ref0 (_tmp5_);
		_doc_header_list = _tmp6_;
		_tmp7_ = _doc_header_list;
		_tmp8_ = vala_collection_get_size ((ValaCollection*) _tmp7_);
		_tmp9_ = _tmp8_;
		_doc_header_size = _tmp9_;
		_doc_header_index = -1;
		while (TRUE) {
			gint _tmp10_;
			gint _tmp11_;
			gint _tmp12_;
			GtkdocHeader* doc_header = NULL;
			ValaList* _tmp13_;
			gint _tmp14_;
			gpointer _tmp15_;
			GtkdocHeader* header = NULL;
			GtkdocHeader* _tmp16_;
			GtkdocHeader* _tmp17_;
			ValaArrayList* _tmp55_;
			GtkdocHeader* _tmp56_;
			_tmp10_ = _doc_header_index;
			_doc_header_index = _tmp10_ + 1;
			_tmp11_ = _doc_header_index;
			_tmp12_ = _doc_header_size;
			if (!(_tmp11_ < _tmp12_)) {
				break;
			}
			_tmp13_ = _doc_header_list;
			_tmp14_ = _doc_header_index;
			_tmp15_ = vala_list_get (_tmp13_, _tmp14_);
			doc_header = (GtkdocHeader*) _tmp15_;
			_tmp16_ = doc_header;
			_tmp17_ = _gtkdoc_header_ref0 (_tmp16_);
			header = _tmp17_;
			{
				ValaList* _lang_header_list = NULL;
				ValaList* _tmp18_;
				ValaList* _tmp19_;
				gint _lang_header_size = 0;
				ValaList* _tmp20_;
				gint _tmp21_;
				gint _tmp22_;
				gint _lang_header_index = 0;
				_tmp18_ = lang_headers;
				_tmp19_ = _vala_iterable_ref0 (_tmp18_);
				_lang_header_list = _tmp19_;
				_tmp20_ = _lang_header_list;
				_tmp21_ = vala_collection_get_size ((ValaCollection*) _tmp20_);
				_tmp22_ = _tmp21_;
				_lang_header_size = _tmp22_;
				_lang_header_index = -1;
				while (TRUE) {
					gint _tmp23_;
					gint _tmp24_;
					gint _tmp25_;
					GtkdocHeader* lang_header = NULL;
					ValaList* _tmp26_;
					gint _tmp27_;
					gpointer _tmp28_;
					GtkdocHeader* _tmp29_;
					const gchar* _tmp30_;
					GtkdocHeader* _tmp31_;
					const gchar* _tmp32_;
					_tmp23_ = _lang_header_index;
					_lang_header_index = _tmp23_ + 1;
					_tmp24_ = _lang_header_index;
					_tmp25_ = _lang_header_size;
					if (!(_tmp24_ < _tmp25_)) {
						break;
					}
					_tmp26_ = _lang_header_list;
					_tmp27_ = _lang_header_index;
					_tmp28_ = vala_list_get (_tmp26_, _tmp27_);
					lang_header = (GtkdocHeader*) _tmp28_;
					_tmp29_ = doc_header;
					_tmp30_ = _tmp29_->name;
					_tmp31_ = lang_header;
					_tmp32_ = _tmp31_->name;
					if (g_strcmp0 (_tmp30_, _tmp32_) == 0) {
						GtkdocHeader* _tmp33_;
						GtkdocHeader* _tmp34_;
						gchar** _tmp35_;
						gint _tmp35__length1;
						gchar** _tmp36_;
						gint _tmp36__length1;
						GtkdocHeader* _tmp37_;
						const gchar* _tmp38_;
						GtkdocHeader* _tmp39_;
						gboolean _tmp40_;
						_tmp33_ = header;
						_tmp34_ = lang_header;
						_tmp35_ = _tmp34_->annotations;
						_tmp35__length1 = _tmp34_->annotations_length1;
						_tmp36_ = (_tmp35_ != NULL) ? _vala_array_dup4 (_tmp35_, _tmp35__length1) : ((gpointer) _tmp35_);
						_tmp36__length1 = _tmp35__length1;
						_tmp33_->annotations = (_vala_array_free (_tmp33_->annotations, _tmp33_->annotations_length1, (GDestroyNotify) g_free), NULL);
						_tmp33_->annotations = _tmp36_;
						_tmp33_->annotations_length1 = _tmp36__length1;
						_tmp37_ = lang_header;
						_tmp38_ = _tmp37_->value;
						if (_tmp38_ == NULL) {
							_gtkdoc_header_unref0 (lang_header);
							continue;
						}
						_tmp39_ = lang_header;
						_tmp40_ = _tmp39_->block;
						if (_tmp40_) {
							GtkdocHeader* _tmp41_;
							GtkdocHeader* _tmp42_;
							const gchar* _tmp43_;
							GtkdocHeader* _tmp44_;
							const gchar* _tmp45_;
							gchar* _tmp46_;
							gchar* _tmp47_;
							gchar* _tmp48_;
							_tmp41_ = header;
							_tmp42_ = header;
							_tmp43_ = _tmp42_->value;
							_tmp44_ = lang_header;
							_tmp45_ = _tmp44_->value;
							_tmp46_ = g_strdup_printf ("<para>%s</para>", _tmp45_);
							_tmp47_ = _tmp46_;
							_tmp48_ = g_strconcat (_tmp43_, _tmp47_, NULL);
							_g_free0 (_tmp42_->value);
							_tmp42_->value = _tmp48_;
							_g_free0 (_tmp47_);
						} else {
							GtkdocHeader* _tmp49_;
							GtkdocHeader* _tmp50_;
							const gchar* _tmp51_;
							GtkdocHeader* _tmp52_;
							const gchar* _tmp53_;
							gchar* _tmp54_;
							_tmp49_ = header;
							_tmp50_ = lang_header;
							_tmp51_ = _tmp50_->value;
							_tmp52_ = header;
							_tmp53_ = _tmp52_->value;
							_tmp54_ = gtkdoc_generator_combine_inline_docs (self, _tmp51_, _tmp53_);
							_g_free0 (_tmp49_->value);
							_tmp49_->value = _tmp54_;
						}
					}
					_gtkdoc_header_unref0 (lang_header);
				}
				_vala_iterable_unref0 (_lang_header_list);
			}
			_tmp55_ = headers;
			_tmp56_ = header;
			vala_collection_add ((ValaCollection*) _tmp55_, _tmp56_);
			_gtkdoc_header_unref0 (header);
			_gtkdoc_header_unref0 (doc_header);
		}
		_vala_iterable_unref0 (_doc_header_list);
	}
	{
		ValaList* _lang_header_list = NULL;
		ValaList* _tmp57_;
		ValaList* _tmp58_;
		gint _lang_header_size = 0;
		ValaList* _tmp59_;
		gint _tmp60_;
		gint _tmp61_;
		gint _lang_header_index = 0;
		_tmp57_ = lang_headers;
		_tmp58_ = _vala_iterable_ref0 (_tmp57_);
		_lang_header_list = _tmp58_;
		_tmp59_ = _lang_header_list;
		_tmp60_ = vala_collection_get_size ((ValaCollection*) _tmp59_);
		_tmp61_ = _tmp60_;
		_lang_header_size = _tmp61_;
		_lang_header_index = -1;
		while (TRUE) {
			gint _tmp62_;
			gint _tmp63_;
			gint _tmp64_;
			GtkdocHeader* lang_header = NULL;
			ValaList* _tmp65_;
			gint _tmp66_;
			gpointer _tmp67_;
			gboolean found = FALSE;
			gboolean _tmp83_ = FALSE;
			gboolean _tmp84_;
			_tmp62_ = _lang_header_index;
			_lang_header_index = _tmp62_ + 1;
			_tmp63_ = _lang_header_index;
			_tmp64_ = _lang_header_size;
			if (!(_tmp63_ < _tmp64_)) {
				break;
			}
			_tmp65_ = _lang_header_list;
			_tmp66_ = _lang_header_index;
			_tmp67_ = vala_list_get (_tmp65_, _tmp66_);
			lang_header = (GtkdocHeader*) _tmp67_;
			found = FALSE;
			{
				ValaArrayList* _header_list = NULL;
				ValaArrayList* _tmp68_;
				ValaArrayList* _tmp69_;
				gint _header_size = 0;
				ValaArrayList* _tmp70_;
				gint _tmp71_;
				gint _tmp72_;
				gint _header_index = 0;
				_tmp68_ = headers;
				_tmp69_ = _vala_iterable_ref0 (_tmp68_);
				_header_list = _tmp69_;
				_tmp70_ = _header_list;
				_tmp71_ = vala_collection_get_size ((ValaCollection*) _tmp70_);
				_tmp72_ = _tmp71_;
				_header_size = _tmp72_;
				_header_index = -1;
				while (TRUE) {
					gint _tmp73_;
					gint _tmp74_;
					gint _tmp75_;
					GtkdocHeader* header = NULL;
					ValaArrayList* _tmp76_;
					gint _tmp77_;
					gpointer _tmp78_;
					GtkdocHeader* _tmp79_;
					const gchar* _tmp80_;
					GtkdocHeader* _tmp81_;
					const gchar* _tmp82_;
					_tmp73_ = _header_index;
					_header_index = _tmp73_ + 1;
					_tmp74_ = _header_index;
					_tmp75_ = _header_size;
					if (!(_tmp74_ < _tmp75_)) {
						break;
					}
					_tmp76_ = _header_list;
					_tmp77_ = _header_index;
					_tmp78_ = vala_list_get ((ValaList*) _tmp76_, _tmp77_);
					header = (GtkdocHeader*) _tmp78_;
					_tmp79_ = header;
					_tmp80_ = _tmp79_->name;
					_tmp81_ = lang_header;
					_tmp82_ = _tmp81_->name;
					if (g_strcmp0 (_tmp80_, _tmp82_) == 0) {
						found = TRUE;
						_gtkdoc_header_unref0 (header);
						break;
					}
					_gtkdoc_header_unref0 (header);
				}
				_vala_iterable_unref0 (_header_list);
			}
			_tmp84_ = found;
			if (!_tmp84_) {
				GtkdocHeader* _tmp85_;
				const gchar* _tmp86_;
				_tmp85_ = lang_header;
				_tmp86_ = _tmp85_->value;
				_tmp83_ = _tmp86_ != NULL;
			} else {
				_tmp83_ = FALSE;
			}
			if (_tmp83_) {
				ValaArrayList* _tmp87_;
				GtkdocHeader* _tmp88_;
				_tmp87_ = headers;
				_tmp88_ = lang_header;
				vala_collection_add ((ValaCollection*) _tmp87_, _tmp88_);
			}
			_gtkdoc_header_unref0 (lang_header);
		}
		_vala_iterable_unref0 (_lang_header_list);
	}
	result = (ValaList*) headers;
	return result;
}


static gpointer _gtkdoc_gcomment_ref0 (gpointer self) {
	return self ? gtkdoc_gcomment_ref (self) : NULL;
}


static void gtkdoc_generator_set_section_comment (GtkdocGenerator* self, const gchar* filename, const gchar* section_name, ValadocContentComment* comment, const gchar* symbol_full_name) {
	GtkdocGeneratorFileData* file_data = NULL;
	const gchar* _tmp0_;
	GtkdocGeneratorFileData* _tmp1_;
	GtkdocGeneratorFileData* _tmp2_;
	const gchar* _tmp3_;
	ValadocContentComment* _tmp7_;
	GtkdocGeneratorFileData* _tmp8_;
	GtkdocGComment* _tmp9_;
	GtkdocGComment* gcomment = NULL;
	const gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	ValadocContentComment* _tmp13_;
	GtkdocGComment* _tmp14_;
	GtkdocGComment* _tmp15_;
	GtkdocGComment* _tmp16_;
	GtkdocGComment* _tmp17_;
	GtkdocGeneratorFileData* _tmp18_;
	GtkdocGComment* _tmp19_;
	GtkdocGComment* _tmp20_;
	gboolean _tmp21_ = FALSE;
	GtkdocGComment* _tmp22_;
	const gchar* _tmp23_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (filename != NULL);
	g_return_if_fail (section_name != NULL);
	g_return_if_fail (symbol_full_name != NULL);
	_tmp0_ = filename;
	_tmp1_ = gtkdoc_generator_get_file_data (self, _tmp0_);
	file_data = _tmp1_;
	_tmp2_ = file_data;
	_tmp3_ = _tmp2_->title;
	if (_tmp3_ == NULL) {
		GtkdocGeneratorFileData* _tmp4_;
		const gchar* _tmp5_;
		gchar* _tmp6_;
		_tmp4_ = file_data;
		_tmp5_ = section_name;
		_tmp6_ = g_strdup (_tmp5_);
		_g_free0 (_tmp4_->title);
		_tmp4_->title = _tmp6_;
	}
	_tmp7_ = comment;
	if (_tmp7_ == NULL) {
		_gtkdoc_generator_file_data_unref0 (file_data);
		return;
	}
	_tmp8_ = file_data;
	_tmp9_ = _tmp8_->section_comment;
	if (_tmp9_ != NULL) {
		_gtkdoc_generator_file_data_unref0 (file_data);
		return;
	}
	_tmp10_ = filename;
	_tmp11_ = gtkdoc_get_section (_tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = comment;
	_tmp14_ = gtkdoc_generator_create_gcomment (self, _tmp12_, _tmp13_, NULL, 0, FALSE);
	_tmp15_ = _tmp14_;
	_g_free0 (_tmp12_);
	gcomment = _tmp15_;
	_tmp16_ = gcomment;
	_tmp16_->is_section = TRUE;
	_tmp17_ = gcomment;
	_tmp17_->short_description = TRUE;
	_tmp18_ = file_data;
	_tmp19_ = gcomment;
	_tmp20_ = _gtkdoc_gcomment_ref0 (_tmp19_);
	_gtkdoc_gcomment_unref0 (_tmp18_->section_comment);
	_tmp18_->section_comment = _tmp20_;
	_tmp22_ = gcomment;
	_tmp23_ = _tmp22_->long_comment;
	if (_tmp23_ == NULL) {
		_tmp21_ = TRUE;
	} else {
		GtkdocGComment* _tmp24_;
		const gchar* _tmp25_;
		_tmp24_ = gcomment;
		_tmp25_ = _tmp24_->long_comment;
		_tmp21_ = g_strcmp0 (_tmp25_, "") == 0;
	}
	if (_tmp21_) {
		ValadocErrorReporter* _tmp26_;
		const gchar* _tmp27_;
		const gchar* _tmp28_;
		_tmp26_ = self->priv->reporter;
		_tmp27_ = symbol_full_name;
		_tmp28_ = section_name;
		valadoc_error_reporter_simple_warning (_tmp26_, "GtkDoc", "Missing long description in the documentation for ‘%s’ which forms gtk" \
"-doc section ‘%s’.", _tmp27_, _tmp28_);
	}
	_gtkdoc_gcomment_unref0 (gcomment);
	_gtkdoc_generator_file_data_unref0 (file_data);
}


static gchar** _vala_array_dup5 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static gchar** _vala_array_dup6 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static GtkdocGComment* gtkdoc_generator_create_gcomment (GtkdocGenerator* self, const gchar* symbol, ValadocContentComment* comment, gchar** returns_annotations, int returns_annotations_length1, gboolean is_dbus) {
	GtkdocGComment* result = NULL;
	GtkdocCommentConverter* converter = NULL;
	ValadocErrorReporter* _tmp0_;
	ValadocApiNode* _tmp1_;
	ValadocApiNode* _tmp2_;
	GtkdocCommentConverter* _tmp3_;
	ValadocContentComment* _tmp4_;
	GtkdocGComment* gcomment = NULL;
	GtkdocGComment* _tmp8_;
	const gchar* _tmp9_;
	gchar* _tmp10_;
	GtkdocCommentConverter* _tmp11_;
	const gchar* _tmp12_;
	gchar* _tmp13_;
	gchar** _tmp14_;
	gint _tmp14__length1;
	gchar** _tmp15_;
	gint _tmp15__length1;
	GtkdocCommentConverter* _tmp16_;
	gchar** _tmp17_;
	gint _tmp17__length1;
	gchar** _tmp18_;
	gint _tmp18__length1;
	GtkdocCommentConverter* _tmp19_;
	const gchar* _tmp20_;
	gchar* _tmp21_;
	GtkdocCommentConverter* _tmp22_;
	const gchar* _tmp23_;
	gchar* _tmp24_;
	ValaList* _tmp25_;
	GtkdocCommentConverter* _tmp26_;
	ValaList* _tmp27_;
	ValaList* _tmp28_;
	ValaList* _tmp29_;
	ValaList* _tmp30_;
	ValaList* _tmp31_;
	GtkdocCommentConverter* _tmp32_;
	ValaList* _tmp33_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (symbol != NULL, NULL);
	_tmp0_ = self->priv->reporter;
	_tmp1_ = gtkdoc_generator_get_current_method_or_delegate (self);
	_tmp2_ = _tmp1_;
	_tmp3_ = gtkdoc_comment_converter_new (_tmp0_, _tmp2_);
	converter = _tmp3_;
	_tmp4_ = comment;
	if (_tmp4_ != NULL) {
		GtkdocCommentConverter* _tmp5_;
		ValadocContentComment* _tmp6_;
		gboolean _tmp7_;
		_tmp5_ = converter;
		_tmp6_ = comment;
		_tmp7_ = is_dbus;
		gtkdoc_comment_converter_convert (_tmp5_, _tmp6_, _tmp7_);
	}
	_tmp8_ = gtkdoc_gcomment_new ();
	gcomment = _tmp8_;
	_tmp9_ = symbol;
	_tmp10_ = g_strdup (_tmp9_);
	_g_free0 (gcomment->symbol);
	gcomment->symbol = _tmp10_;
	_tmp11_ = converter;
	_tmp12_ = _tmp11_->returns;
	_tmp13_ = g_strdup (_tmp12_);
	_g_free0 (gcomment->returns);
	gcomment->returns = _tmp13_;
	_tmp14_ = returns_annotations;
	_tmp14__length1 = returns_annotations_length1;
	_tmp15_ = (_tmp14_ != NULL) ? _vala_array_dup5 (_tmp14_, _tmp14__length1) : ((gpointer) _tmp14_);
	_tmp15__length1 = _tmp14__length1;
	gcomment->returns_annotations = (_vala_array_free (gcomment->returns_annotations, gcomment->returns_annotations_length1, (GDestroyNotify) g_free), NULL);
	gcomment->returns_annotations = _tmp15_;
	gcomment->returns_annotations_length1 = _tmp15__length1;
	_tmp16_ = converter;
	_tmp17_ = _tmp16_->see_also;
	_tmp17__length1 = _tmp16_->see_also_length1;
	_tmp18_ = (_tmp17_ != NULL) ? _vala_array_dup6 (_tmp17_, _tmp17__length1) : ((gpointer) _tmp17_);
	_tmp18__length1 = _tmp17__length1;
	gcomment->see_also = (_vala_array_free (gcomment->see_also, gcomment->see_also_length1, (GDestroyNotify) g_free), NULL);
	gcomment->see_also = _tmp18_;
	gcomment->see_also_length1 = _tmp18__length1;
	_tmp19_ = converter;
	_tmp20_ = _tmp19_->brief_comment;
	_tmp21_ = g_strdup (_tmp20_);
	_g_free0 (gcomment->brief_comment);
	gcomment->brief_comment = _tmp21_;
	_tmp22_ = converter;
	_tmp23_ = _tmp22_->long_comment;
	_tmp24_ = g_strdup (_tmp23_);
	_g_free0 (gcomment->long_comment);
	gcomment->long_comment = _tmp24_;
	_tmp25_ = gcomment->headers;
	_tmp26_ = converter;
	_tmp27_ = _tmp26_->parameters;
	_tmp28_ = self->priv->current_headers;
	_tmp29_ = gtkdoc_generator_merge_headers (self, _tmp27_, _tmp28_);
	_tmp30_ = _tmp29_;
	vala_collection_add_all ((ValaCollection*) _tmp25_, (ValaCollection*) _tmp30_);
	_vala_iterable_unref0 (_tmp30_);
	_tmp31_ = gcomment->versioning;
	_tmp32_ = converter;
	_tmp33_ = _tmp32_->versioning;
	vala_collection_add_all ((ValaCollection*) _tmp31_, (ValaCollection*) _tmp33_);
	result = gcomment;
	_g_object_unref0 (converter);
	return result;
}


static GtkdocGComment* gtkdoc_generator_add_comment (GtkdocGenerator* self, const gchar* filename, const gchar* symbol, ValadocContentComment* comment) {
	GtkdocGComment* result = NULL;
	GtkdocGeneratorFileData* file_data = NULL;
	const gchar* _tmp0_;
	GtkdocGeneratorFileData* _tmp1_;
	GtkdocGComment* gcomment = NULL;
	const gchar* _tmp2_;
	ValadocContentComment* _tmp3_;
	GtkdocGComment* _tmp4_;
	ValaList* _tmp5_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (filename != NULL, NULL);
	g_return_val_if_fail (symbol != NULL, NULL);
	_tmp0_ = filename;
	_tmp1_ = gtkdoc_generator_get_file_data (self, _tmp0_);
	file_data = _tmp1_;
	_tmp2_ = symbol;
	_tmp3_ = comment;
	_tmp4_ = gtkdoc_generator_create_gcomment (self, _tmp2_, _tmp3_, NULL, 0, FALSE);
	gcomment = _tmp4_;
	_tmp5_ = file_data->comments;
	vala_collection_add ((ValaCollection*) _tmp5_, gcomment);
	result = gcomment;
	_gtkdoc_generator_file_data_unref0 (file_data);
	return result;
}


static GtkdocGComment* gtkdoc_generator_add_symbol (GtkdocGenerator* self, const gchar* filename, const gchar* cname, ValadocContentComment* comment, const gchar* symbol, gchar** returns_annotations, int returns_annotations_length1) {
	GtkdocGComment* result = NULL;
	GtkdocGeneratorFileData* file_data = NULL;
	const gchar* _tmp0_;
	GtkdocGeneratorFileData* _tmp1_;
	GtkdocGeneratorFileData* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_;
	GtkdocGComment* gcomment = NULL;
	ValadocContentComment* _tmp7_;
	gchar** _tmp8_;
	gint _tmp8__length1;
	GtkdocGComment* _tmp9_;
	GtkdocGeneratorFileData* _tmp10_;
	ValaList* _tmp11_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (filename != NULL, NULL);
	g_return_val_if_fail (cname != NULL, NULL);
	_tmp0_ = filename;
	_tmp1_ = gtkdoc_generator_get_file_data (self, _tmp0_);
	file_data = _tmp1_;
	_tmp2_ = file_data;
	_tmp3_ = cname;
	gtkdoc_generator_file_data_register_section_line (_tmp2_, _tmp3_);
	_tmp5_ = symbol;
	_tmp4_ = _tmp5_;
	if (_tmp4_ == NULL) {
		const gchar* _tmp6_;
		_tmp6_ = cname;
		_tmp4_ = _tmp6_;
	}
	_tmp7_ = comment;
	_tmp8_ = returns_annotations;
	_tmp8__length1 = returns_annotations_length1;
	_tmp9_ = gtkdoc_generator_create_gcomment (self, _tmp4_, _tmp7_, _tmp8_, _tmp8__length1, FALSE);
	gcomment = _tmp9_;
	_tmp10_ = file_data;
	_tmp11_ = _tmp10_->comments;
	vala_collection_add ((ValaCollection*) _tmp11_, gcomment);
	result = gcomment;
	_gtkdoc_generator_file_data_unref0 (file_data);
	return result;
}


static gchar** _vala_array_dup7 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static GtkdocHeader* gtkdoc_generator_add_custom_header (GtkdocGenerator* self, const gchar* name, const gchar* comment, gchar** annotations, int annotations_length1, gdouble pos, gboolean block) {
	GtkdocHeader* result = NULL;
	gboolean _tmp0_ = FALSE;
	const gchar* _tmp1_;
	GtkdocHeader* header = NULL;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	gdouble _tmp5_;
	gboolean _tmp6_;
	GtkdocHeader* _tmp7_;
	GtkdocHeader* _tmp8_;
	gchar** _tmp9_;
	gint _tmp9__length1;
	gchar** _tmp10_;
	gint _tmp10__length1;
	ValaList* _tmp11_;
	GtkdocHeader* _tmp12_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	_tmp1_ = comment;
	if (_tmp1_ == NULL) {
		gchar** _tmp2_;
		gint _tmp2__length1;
		_tmp2_ = annotations;
		_tmp2__length1 = annotations_length1;
		_tmp0_ = _tmp2_ == NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		result = NULL;
		return result;
	}
	_tmp3_ = name;
	_tmp4_ = comment;
	_tmp5_ = pos;
	_tmp6_ = block;
	_tmp7_ = gtkdoc_header_new (_tmp3_, _tmp4_, _tmp5_, _tmp6_);
	header = _tmp7_;
	_tmp8_ = header;
	_tmp9_ = annotations;
	_tmp9__length1 = annotations_length1;
	_tmp10_ = (_tmp9_ != NULL) ? _vala_array_dup7 (_tmp9_, _tmp9__length1) : ((gpointer) _tmp9_);
	_tmp10__length1 = _tmp9__length1;
	_tmp8_->annotations = (_vala_array_free (_tmp8_->annotations, _tmp8_->annotations_length1, (GDestroyNotify) g_free), NULL);
	_tmp8_->annotations = _tmp10_;
	_tmp8_->annotations_length1 = _tmp10__length1;
	_tmp11_ = self->priv->current_headers;
	_tmp12_ = header;
	vala_collection_add ((ValaCollection*) _tmp11_, _tmp12_);
	result = header;
	return result;
}


static GtkdocHeader* gtkdoc_generator_remove_custom_header (GtkdocGenerator* self, const gchar* name) {
	GtkdocHeader* result = NULL;
	ValaIterator* it = NULL;
	ValaList* _tmp0_;
	ValaIterator* _tmp1_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	_tmp0_ = self->priv->current_headers;
	_tmp1_ = vala_iterable_iterator ((ValaIterable*) _tmp0_);
	it = _tmp1_;
	while (TRUE) {
		ValaIterator* _tmp2_;
		gboolean _tmp3_;
		GtkdocHeader* header = NULL;
		ValaIterator* _tmp4_;
		gpointer _tmp5_;
		GtkdocHeader* _tmp6_;
		const gchar* _tmp7_;
		const gchar* _tmp8_;
		_tmp2_ = it;
		_tmp3_ = vala_iterator_next (_tmp2_);
		if (!_tmp3_) {
			break;
		}
		_tmp4_ = it;
		_tmp5_ = vala_iterator_get (_tmp4_);
		header = (GtkdocHeader*) _tmp5_;
		_tmp6_ = header;
		_tmp7_ = _tmp6_->name;
		_tmp8_ = name;
		if (g_strcmp0 (_tmp7_, _tmp8_) == 0) {
			ValaIterator* _tmp9_;
			_tmp9_ = it;
			vala_iterator_remove (_tmp9_);
			result = header;
			_vala_iterator_unref0 (it);
			return result;
		}
		_gtkdoc_header_unref0 (header);
	}
	result = NULL;
	_vala_iterator_unref0 (it);
	return result;
}


static gchar** _vala_array_dup8 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static GtkdocHeader* gtkdoc_generator_add_header (GtkdocGenerator* self, const gchar* name, ValadocContentComment* comment, gchar** annotations, int annotations_length1, gdouble pos) {
	GtkdocHeader* result = NULL;
	gboolean _tmp0_ = FALSE;
	ValadocContentComment* _tmp1_;
	GtkdocCommentConverter* converter = NULL;
	ValadocErrorReporter* _tmp3_;
	ValadocApiNode* _tmp4_;
	ValadocApiNode* _tmp5_;
	GtkdocCommentConverter* _tmp6_;
	GtkdocHeader* header = NULL;
	const gchar* _tmp7_;
	GtkdocHeader* _tmp8_;
	GtkdocHeader* _tmp9_;
	gdouble _tmp10_;
	ValadocContentComment* _tmp11_;
	GtkdocHeader* _tmp28_;
	gchar** _tmp29_;
	gint _tmp29__length1;
	gchar** _tmp30_;
	gint _tmp30__length1;
	ValaList* _tmp31_;
	GtkdocHeader* _tmp32_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	_tmp1_ = comment;
	if (_tmp1_ == NULL) {
		gchar** _tmp2_;
		gint _tmp2__length1;
		_tmp2_ = annotations;
		_tmp2__length1 = annotations_length1;
		_tmp0_ = _tmp2_ == NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		result = NULL;
		return result;
	}
	_tmp3_ = self->priv->reporter;
	_tmp4_ = gtkdoc_generator_get_current_method_or_delegate (self);
	_tmp5_ = _tmp4_;
	_tmp6_ = gtkdoc_comment_converter_new (_tmp3_, _tmp5_);
	converter = _tmp6_;
	_tmp7_ = name;
	_tmp8_ = gtkdoc_header_new (_tmp7_, NULL, DBL_MAX, TRUE);
	header = _tmp8_;
	_tmp9_ = header;
	_tmp10_ = pos;
	_tmp9_->pos = _tmp10_;
	_tmp11_ = comment;
	if (_tmp11_ != NULL) {
		GtkdocCommentConverter* _tmp12_;
		ValadocContentComment* _tmp13_;
		GtkdocCommentConverter* _tmp14_;
		const gchar* _tmp15_;
		_tmp12_ = converter;
		_tmp13_ = comment;
		gtkdoc_comment_converter_convert (_tmp12_, _tmp13_, FALSE);
		_tmp14_ = converter;
		_tmp15_ = _tmp14_->brief_comment;
		if (_tmp15_ != NULL) {
			GtkdocHeader* _tmp16_;
			GtkdocCommentConverter* _tmp17_;
			const gchar* _tmp18_;
			gchar* _tmp19_;
			GtkdocCommentConverter* _tmp20_;
			const gchar* _tmp21_;
			_tmp16_ = header;
			_tmp17_ = converter;
			_tmp18_ = _tmp17_->brief_comment;
			_tmp19_ = g_strdup (_tmp18_);
			_g_free0 (_tmp16_->value);
			_tmp16_->value = _tmp19_;
			_tmp20_ = converter;
			_tmp21_ = _tmp20_->long_comment;
			if (_tmp21_ != NULL) {
				GtkdocHeader* _tmp22_;
				GtkdocHeader* _tmp23_;
				const gchar* _tmp24_;
				GtkdocCommentConverter* _tmp25_;
				const gchar* _tmp26_;
				gchar* _tmp27_;
				_tmp22_ = header;
				_tmp23_ = header;
				_tmp24_ = _tmp23_->value;
				_tmp25_ = converter;
				_tmp26_ = _tmp25_->long_comment;
				_tmp27_ = g_strconcat (_tmp24_, _tmp26_, NULL);
				_g_free0 (_tmp23_->value);
				_tmp23_->value = _tmp27_;
			}
		}
	}
	_tmp28_ = header;
	_tmp29_ = annotations;
	_tmp29__length1 = annotations_length1;
	_tmp30_ = (_tmp29_ != NULL) ? _vala_array_dup8 (_tmp29_, _tmp29__length1) : ((gpointer) _tmp29_);
	_tmp30__length1 = _tmp29__length1;
	_tmp28_->annotations = (_vala_array_free (_tmp28_->annotations, _tmp28_->annotations_length1, (GDestroyNotify) g_free), NULL);
	_tmp28_->annotations = _tmp30_;
	_tmp28_->annotations_length1 = _tmp30__length1;
	_tmp31_ = self->priv->current_headers;
	_tmp32_ = header;
	vala_collection_add ((ValaCollection*) _tmp31_, _tmp32_);
	result = header;
	_g_object_unref0 (converter);
	return result;
}


static void gtkdoc_generator_real_visit_tree (ValadocApiVisitor* base, ValadocApiTree* tree) {
	GtkdocGenerator * self;
	ValadocApiTree* _tmp0_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (tree != NULL);
	_tmp0_ = tree;
	valadoc_api_tree_accept_children (_tmp0_, (ValadocApiVisitor*) self);
}


static void gtkdoc_generator_real_visit_package (ValadocApiVisitor* base, ValadocApiPackage* package) {
	GtkdocGenerator * self;
	ValadocApiPackage* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	ValadocApiPackage* _tmp3_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (package != NULL);
	_tmp0_ = package;
	_tmp1_ = valadoc_api_package_get_is_package (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_) {
		return;
	}
	_tmp3_ = package;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp3_, (ValadocApiVisitor*) self, TRUE);
}


static void gtkdoc_generator_real_visit_namespace (ValadocApiVisitor* base, ValadocApiNamespace* ns) {
	GtkdocGenerator * self;
	gboolean _tmp0_ = FALSE;
	ValadocApiNamespace* _tmp1_;
	gchar* _tmp2_;
	gchar* _tmp3_;
	gboolean _tmp4_;
	ValadocApiNamespace* _tmp22_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (ns != NULL);
	_tmp1_ = ns;
	_tmp2_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = _tmp3_ != NULL;
	_g_free0 (_tmp3_);
	if (_tmp4_) {
		ValadocApiNamespace* _tmp5_;
		ValadocContentComment* _tmp6_;
		ValadocContentComment* _tmp7_;
		_tmp5_ = ns;
		_tmp6_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp5_);
		_tmp7_ = _tmp6_;
		_tmp0_ = _tmp7_ != NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		ValadocApiNamespace* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		ValadocApiNamespace* _tmp11_;
		gchar* _tmp12_;
		gchar* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		ValadocApiNamespace* _tmp16_;
		ValadocContentComment* _tmp17_;
		ValadocContentComment* _tmp18_;
		ValadocApiNamespace* _tmp19_;
		gchar* _tmp20_;
		gchar* _tmp21_;
		_tmp8_ = ns;
		_tmp9_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = ns;
		_tmp12_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp11_);
		_tmp13_ = _tmp12_;
		_tmp14_ = gtkdoc_get_section (_tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = ns;
		_tmp17_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = ns;
		_tmp20_ = valadoc_api_node_get_full_name ((ValadocApiNode*) _tmp19_);
		_tmp21_ = _tmp20_;
		gtkdoc_generator_set_section_comment (self, _tmp10_, _tmp15_, _tmp18_, _tmp21_);
		_g_free0 (_tmp21_);
		_g_free0 (_tmp15_);
		_g_free0 (_tmp13_);
		_g_free0 (_tmp10_);
	}
	_tmp22_ = ns;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp22_, (ValadocApiVisitor*) self, TRUE);
}


static gpointer _gtkdoc_dbus_interface_ref0 (gpointer self) {
	return self ? gtkdoc_dbus_interface_ref (self) : NULL;
}


static void gtkdoc_generator_real_visit_interface (ValadocApiVisitor* base, ValadocApiInterface* iface) {
	GtkdocGenerator * self;
	gchar* old_cname = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	ValaList* old_headers = NULL;
	ValaList* _tmp2_;
	ValaList* _tmp3_;
	GtkdocDBusInterface* old_dbus_interface = NULL;
	GtkdocDBusInterface* _tmp4_;
	GtkdocDBusInterface* _tmp5_;
	ValadocApiInterface* _tmp6_;
	gchar* _tmp7_;
	GEqualFunc _tmp8_;
	ValaArrayList* _tmp9_;
	ValadocApiInterface* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	gboolean _tmp13_;
	ValadocApiInterface* _tmp20_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiInterface* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	ValadocApiInterface* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	ValadocApiInterface* _tmp27_;
	ValadocContentComment* _tmp28_;
	ValadocContentComment* _tmp29_;
	GtkdocGComment* _tmp30_;
	GtkdocGComment* _tmp31_;
	ValadocApiInterface* _tmp32_;
	gchar* _tmp33_;
	gchar* _tmp34_;
	ValadocApiInterface* _tmp35_;
	gchar* _tmp36_;
	gchar* _tmp37_;
	ValadocApiInterface* _tmp38_;
	ValadocContentComment* _tmp39_;
	ValadocContentComment* _tmp40_;
	ValadocApiInterface* _tmp41_;
	gchar* _tmp42_;
	gchar* _tmp43_;
	GtkdocDBusInterface* _tmp44_;
	ValadocApiInterface* _tmp50_;
	GtkdocGComment* _tmp51_;
	ValaList* _tmp52_;
	ValaList* abstract_methods = NULL;
	ValadocApiInterface* _tmp53_;
	ValadocApiNodeType* _tmp54_;
	ValadocApiNodeType* _tmp55_;
	gint _tmp55__length1;
	ValaList* _tmp56_;
	ValaList* _tmp57_;
	ValaList* abstract_properties = NULL;
	ValadocApiInterface* _tmp77_;
	ValadocApiNodeType* _tmp78_;
	ValadocApiNodeType* _tmp79_;
	gint _tmp79__length1;
	ValaList* _tmp80_;
	ValaList* _tmp81_;
	GtkdocHeader* _tmp101_;
	GtkdocHeader* _tmp102_;
	ValadocApiInterface* _tmp103_;
	ValadocApiAttribute* _tmp104_;
	ValadocApiAttribute* _tmp105_;
	gboolean _tmp106_;
	ValadocApiInterface* _tmp156_;
	gchar* _tmp157_;
	gchar* _tmp158_;
	ValadocApiInterface* _tmp159_;
	gchar* _tmp160_;
	gchar* _tmp161_;
	gchar* _tmp162_;
	gchar* _tmp163_;
	GtkdocGComment* _tmp164_;
	GtkdocGComment* _tmp165_;
	ValadocApiInterface* _tmp166_;
	gchar* _tmp167_;
	gchar* _tmp168_;
	gchar* _tmp169_;
	GtkdocGeneratorFileData* file_data = NULL;
	ValadocApiInterface* _tmp170_;
	gchar* _tmp171_;
	gchar* _tmp172_;
	GtkdocGeneratorFileData* _tmp173_;
	GtkdocGeneratorFileData* _tmp174_;
	ValadocApiInterface* _tmp175_;
	gchar* _tmp176_;
	gchar* _tmp177_;
	ValadocApiInterface* _tmp178_;
	gchar* _tmp179_;
	gchar* _tmp180_;
	ValadocApiInterface* _tmp181_;
	gchar* _tmp182_;
	gchar* _tmp183_;
	ValadocApiInterface* _tmp184_;
	gchar* _tmp185_;
	gchar* _tmp186_;
	ValadocApiInterface* _tmp187_;
	gchar* _tmp188_;
	gchar* _tmp189_;
	const gchar* _tmp190_;
	gchar* _tmp191_;
	ValaList* _tmp192_;
	ValaList* _tmp193_;
	GtkdocDBusInterface* _tmp194_;
	GtkdocDBusInterface* _tmp195_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (iface != NULL);
	_tmp0_ = self->priv->current_cname;
	_tmp1_ = g_strdup (_tmp0_);
	old_cname = _tmp1_;
	_tmp2_ = self->priv->current_headers;
	_tmp3_ = _vala_iterable_ref0 (_tmp2_);
	old_headers = _tmp3_;
	_tmp4_ = self->priv->current_dbus_interface;
	_tmp5_ = _gtkdoc_dbus_interface_ref0 (_tmp4_);
	old_dbus_interface = _tmp5_;
	_tmp6_ = iface;
	_tmp7_ = valadoc_api_interface_get_cname (_tmp6_);
	_g_free0 (self->priv->current_cname);
	self->priv->current_cname = _tmp7_;
	_tmp8_ = g_direct_equal;
	_tmp9_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp8_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp9_;
	_gtkdoc_dbus_interface_unref0 (self->priv->current_dbus_interface);
	self->priv->current_dbus_interface = NULL;
	_tmp10_ = iface;
	_tmp11_ = valadoc_api_interface_get_dbus_name (_tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = _tmp12_ != NULL;
	_g_free0 (_tmp12_);
	if (_tmp13_) {
		ValadocSettings* _tmp14_;
		const gchar* _tmp15_;
		ValadocApiInterface* _tmp16_;
		gchar* _tmp17_;
		gchar* _tmp18_;
		GtkdocDBusInterface* _tmp19_;
		_tmp14_ = self->priv->settings;
		_tmp15_ = _tmp14_->pkg_name;
		_tmp16_ = iface;
		_tmp17_ = valadoc_api_interface_get_dbus_name (_tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = gtkdoc_dbus_interface_new (_tmp15_, _tmp18_, "", "");
		_gtkdoc_dbus_interface_unref0 (self->priv->current_dbus_interface);
		self->priv->current_dbus_interface = _tmp19_;
		_g_free0 (_tmp18_);
	}
	_tmp20_ = iface;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp20_, (ValadocApiVisitor*) self, TRUE);
	_tmp21_ = iface;
	_tmp22_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = iface;
	_tmp25_ = valadoc_api_interface_get_cname (_tmp24_);
	_tmp26_ = _tmp25_;
	_tmp27_ = iface;
	_tmp28_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = gtkdoc_generator_add_symbol (self, _tmp23_, _tmp26_, _tmp29_, NULL, NULL, 0);
	_tmp31_ = _tmp30_;
	_g_free0 (_tmp26_);
	_g_free0 (_tmp23_);
	gcomment = _tmp31_;
	_tmp32_ = iface;
	_tmp33_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = iface;
	_tmp36_ = valadoc_api_interface_get_cname (_tmp35_);
	_tmp37_ = _tmp36_;
	_tmp38_ = iface;
	_tmp39_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp38_);
	_tmp40_ = _tmp39_;
	_tmp41_ = iface;
	_tmp42_ = valadoc_api_node_get_full_name ((ValadocApiNode*) _tmp41_);
	_tmp43_ = _tmp42_;
	gtkdoc_generator_set_section_comment (self, _tmp34_, _tmp37_, _tmp40_, _tmp43_);
	_g_free0 (_tmp43_);
	_g_free0 (_tmp37_);
	_g_free0 (_tmp34_);
	_tmp44_ = self->priv->current_dbus_interface;
	if (_tmp44_ != NULL) {
		GtkdocDBusInterface* _tmp45_;
		ValadocSettings* _tmp46_;
		ValadocErrorReporter* _tmp47_;
		ValaList* _tmp48_;
		GtkdocDBusInterface* _tmp49_;
		_tmp45_ = self->priv->current_dbus_interface;
		_tmp46_ = self->priv->settings;
		_tmp47_ = self->priv->reporter;
		gtkdoc_dbus_interface_write (_tmp45_, _tmp46_, _tmp47_);
		_tmp48_ = self->dbus_interfaces;
		_tmp49_ = self->priv->current_dbus_interface;
		vala_collection_add ((ValaCollection*) _tmp48_, _tmp49_);
	}
	_tmp50_ = iface;
	_tmp51_ = gcomment;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp50_, _tmp51_);
	_tmp52_ = self->priv->current_headers;
	vala_collection_clear ((ValaCollection*) _tmp52_);
	_tmp53_ = iface;
	_tmp54_ = g_new0 (ValadocApiNodeType, 1);
	_tmp54_[0] = VALADOC_API_NODE_TYPE_METHOD;
	_tmp55_ = _tmp54_;
	_tmp55__length1 = 1;
	_tmp56_ = valadoc_api_node_get_children_by_types ((ValadocApiNode*) _tmp53_, _tmp55_, 1, FALSE);
	_tmp57_ = _tmp56_;
	_tmp55_ = (g_free (_tmp55_), NULL);
	abstract_methods = _tmp57_;
	{
		ValaList* _m_list = NULL;
		ValaList* _tmp58_;
		ValaList* _tmp59_;
		gint _m_size = 0;
		ValaList* _tmp60_;
		gint _tmp61_;
		gint _tmp62_;
		gint _m_index = 0;
		_tmp58_ = abstract_methods;
		_tmp59_ = _vala_iterable_ref0 (_tmp58_);
		_m_list = _tmp59_;
		_tmp60_ = _m_list;
		_tmp61_ = vala_collection_get_size ((ValaCollection*) _tmp60_);
		_tmp62_ = _tmp61_;
		_m_size = _tmp62_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp63_;
			gint _tmp64_;
			gint _tmp65_;
			ValadocApiNode* m = NULL;
			ValaList* _tmp66_;
			gint _tmp67_;
			gpointer _tmp68_;
			gboolean _tmp69_ = FALSE;
			ValadocApiNode* _tmp70_;
			ValadocSettings* _tmp71_;
			gboolean _tmp72_;
			_tmp63_ = _m_index;
			_m_index = _tmp63_ + 1;
			_tmp64_ = _m_index;
			_tmp65_ = _m_size;
			if (!(_tmp64_ < _tmp65_)) {
				break;
			}
			_tmp66_ = _m_list;
			_tmp67_ = _m_index;
			_tmp68_ = vala_list_get (_tmp66_, _tmp67_);
			m = (ValadocApiNode*) _tmp68_;
			_tmp70_ = m;
			_tmp71_ = self->priv->settings;
			_tmp72_ = valadoc_api_node_is_browsable (_tmp70_, _tmp71_);
			if (_tmp72_) {
				_tmp69_ = TRUE;
			} else {
				ValadocApiNode* _tmp73_;
				gboolean _tmp74_;
				gboolean _tmp75_;
				_tmp73_ = m;
				_tmp74_ = valadoc_api_symbol_get_is_protected (G_TYPE_CHECK_INSTANCE_CAST (_tmp73_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
				_tmp75_ = _tmp74_;
				_tmp69_ = _tmp75_;
			}
			if (_tmp69_) {
				ValadocApiNode* _tmp76_;
				_tmp76_ = m;
				gtkdoc_generator_visit_abstract_method (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp76_, VALADOC_API_TYPE_METHOD, ValadocApiMethod));
			}
			_g_object_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	_tmp77_ = iface;
	_tmp78_ = g_new0 (ValadocApiNodeType, 1);
	_tmp78_[0] = VALADOC_API_NODE_TYPE_PROPERTY;
	_tmp79_ = _tmp78_;
	_tmp79__length1 = 1;
	_tmp80_ = valadoc_api_node_get_children_by_types ((ValadocApiNode*) _tmp77_, _tmp79_, 1, FALSE);
	_tmp81_ = _tmp80_;
	_tmp79_ = (g_free (_tmp79_), NULL);
	abstract_properties = _tmp81_;
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp82_;
		ValaList* _tmp83_;
		gint _prop_size = 0;
		ValaList* _tmp84_;
		gint _tmp85_;
		gint _tmp86_;
		gint _prop_index = 0;
		_tmp82_ = abstract_properties;
		_tmp83_ = _vala_iterable_ref0 (_tmp82_);
		_prop_list = _tmp83_;
		_tmp84_ = _prop_list;
		_tmp85_ = vala_collection_get_size ((ValaCollection*) _tmp84_);
		_tmp86_ = _tmp85_;
		_prop_size = _tmp86_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp87_;
			gint _tmp88_;
			gint _tmp89_;
			ValadocApiNode* prop = NULL;
			ValaList* _tmp90_;
			gint _tmp91_;
			gpointer _tmp92_;
			gboolean _tmp93_ = FALSE;
			ValadocApiNode* _tmp94_;
			ValadocSettings* _tmp95_;
			gboolean _tmp96_;
			_tmp87_ = _prop_index;
			_prop_index = _tmp87_ + 1;
			_tmp88_ = _prop_index;
			_tmp89_ = _prop_size;
			if (!(_tmp88_ < _tmp89_)) {
				break;
			}
			_tmp90_ = _prop_list;
			_tmp91_ = _prop_index;
			_tmp92_ = vala_list_get (_tmp90_, _tmp91_);
			prop = (ValadocApiNode*) _tmp92_;
			_tmp94_ = prop;
			_tmp95_ = self->priv->settings;
			_tmp96_ = valadoc_api_node_is_browsable (_tmp94_, _tmp95_);
			if (_tmp96_) {
				_tmp93_ = TRUE;
			} else {
				ValadocApiNode* _tmp97_;
				gboolean _tmp98_;
				gboolean _tmp99_;
				_tmp97_ = prop;
				_tmp98_ = valadoc_api_symbol_get_is_protected (G_TYPE_CHECK_INSTANCE_CAST (_tmp97_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
				_tmp99_ = _tmp98_;
				_tmp93_ = _tmp99_;
			}
			if (_tmp93_) {
				ValadocApiNode* _tmp100_;
				_tmp100_ = prop;
				gtkdoc_generator_visit_abstract_property (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp100_, VALADOC_API_TYPE_PROPERTY, ValadocApiProperty));
			}
			_g_object_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp101_ = gtkdoc_generator_add_custom_header (self, "parent_iface", "the parent interface structure", NULL, 0, DBL_MAX, TRUE);
	_tmp102_ = _tmp101_;
	_gtkdoc_header_unref0 (_tmp102_);
	_tmp103_ = iface;
	_tmp104_ = valadoc_api_symbol_get_attribute ((ValadocApiSymbol*) _tmp103_, "GenericAccessors");
	_tmp105_ = _tmp104_;
	_tmp106_ = _tmp105_ != NULL;
	_g_object_unref0 (_tmp105_);
	if (_tmp106_) {
		ValaList* type_parameters = NULL;
		ValadocApiInterface* _tmp107_;
		ValaList* _tmp108_;
		_tmp107_ = iface;
		_tmp108_ = valadoc_api_node_get_children_by_type ((ValadocApiNode*) _tmp107_, VALADOC_API_NODE_TYPE_TYPE_PARAMETER, FALSE);
		type_parameters = _tmp108_;
		{
			ValaList* __type_list = NULL;
			ValaList* _tmp109_;
			ValaList* _tmp110_;
			gint __type_size = 0;
			ValaList* _tmp111_;
			gint _tmp112_;
			gint _tmp113_;
			gint __type_index = 0;
			_tmp109_ = type_parameters;
			_tmp110_ = _vala_iterable_ref0 (_tmp109_);
			__type_list = _tmp110_;
			_tmp111_ = __type_list;
			_tmp112_ = vala_collection_get_size ((ValaCollection*) _tmp111_);
			_tmp113_ = _tmp112_;
			__type_size = _tmp113_;
			__type_index = -1;
			while (TRUE) {
				gint _tmp114_;
				gint _tmp115_;
				gint _tmp116_;
				ValadocApiNode* _type = NULL;
				ValaList* _tmp117_;
				gint _tmp118_;
				gpointer _tmp119_;
				ValadocApiTypeParameter* type = NULL;
				ValadocApiNode* _tmp120_;
				ValadocApiTypeParameter* _tmp121_;
				gchar* type_name_down = NULL;
				ValadocApiTypeParameter* _tmp122_;
				const gchar* _tmp123_;
				const gchar* _tmp124_;
				gchar* _tmp125_;
				const gchar* _tmp126_;
				gchar* _tmp127_;
				gchar* _tmp128_;
				const gchar* _tmp129_;
				gchar* _tmp130_;
				gchar* _tmp131_;
				GtkdocHeader* _tmp132_;
				GtkdocHeader* _tmp133_;
				const gchar* _tmp134_;
				gchar* _tmp135_;
				gchar* _tmp136_;
				ValadocApiInterface* _tmp137_;
				gchar* _tmp138_;
				gchar* _tmp139_;
				const gchar* _tmp140_;
				gchar* _tmp141_;
				gchar* _tmp142_;
				GtkdocHeader* _tmp143_;
				GtkdocHeader* _tmp144_;
				const gchar* _tmp145_;
				gchar* _tmp146_;
				gchar* _tmp147_;
				ValadocApiInterface* _tmp148_;
				gchar* _tmp149_;
				gchar* _tmp150_;
				const gchar* _tmp151_;
				gchar* _tmp152_;
				gchar* _tmp153_;
				GtkdocHeader* _tmp154_;
				GtkdocHeader* _tmp155_;
				_tmp114_ = __type_index;
				__type_index = _tmp114_ + 1;
				_tmp115_ = __type_index;
				_tmp116_ = __type_size;
				if (!(_tmp115_ < _tmp116_)) {
					break;
				}
				_tmp117_ = __type_list;
				_tmp118_ = __type_index;
				_tmp119_ = vala_list_get (_tmp117_, _tmp118_);
				_type = (ValadocApiNode*) _tmp119_;
				_tmp120_ = _type;
				_tmp121_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp120_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp120_) : NULL);
				type = _tmp121_;
				_tmp122_ = type;
				_tmp123_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp122_);
				_tmp124_ = _tmp123_;
				_tmp125_ = g_utf8_strdown (_tmp124_, (gssize) -1);
				type_name_down = _tmp125_;
				_tmp126_ = type_name_down;
				_tmp127_ = g_strdup_printf ("get_%s_type", _tmp126_);
				_tmp128_ = _tmp127_;
				_tmp129_ = type_name_down;
				_tmp130_ = g_strdup_printf ("The #GType for %s", _tmp129_);
				_tmp131_ = _tmp130_;
				_tmp132_ = gtkdoc_generator_add_custom_header (self, _tmp128_, _tmp131_, NULL, 0, DBL_MAX, TRUE);
				_tmp133_ = _tmp132_;
				_gtkdoc_header_unref0 (_tmp133_);
				_g_free0 (_tmp131_);
				_g_free0 (_tmp128_);
				_tmp134_ = type_name_down;
				_tmp135_ = g_strdup_printf ("get_%s_dup_func", _tmp134_);
				_tmp136_ = _tmp135_;
				_tmp137_ = iface;
				_tmp138_ = valadoc_api_interface_get_cname (_tmp137_);
				_tmp139_ = _tmp138_;
				_tmp140_ = type_name_down;
				_tmp141_ = g_strdup_printf ("A dup function for #%sIface.get_%s_type()", _tmp139_, _tmp140_);
				_tmp142_ = _tmp141_;
				_tmp143_ = gtkdoc_generator_add_custom_header (self, _tmp136_, _tmp142_, NULL, 0, DBL_MAX, TRUE);
				_tmp144_ = _tmp143_;
				_gtkdoc_header_unref0 (_tmp144_);
				_g_free0 (_tmp142_);
				_g_free0 (_tmp139_);
				_g_free0 (_tmp136_);
				_tmp145_ = type_name_down;
				_tmp146_ = g_strdup_printf ("get_%s_destroy_func", _tmp145_);
				_tmp147_ = _tmp146_;
				_tmp148_ = iface;
				_tmp149_ = valadoc_api_interface_get_cname (_tmp148_);
				_tmp150_ = _tmp149_;
				_tmp151_ = type_name_down;
				_tmp152_ = g_strdup_printf ("A destroy function for #%sIface.get_%s_type()", _tmp150_, _tmp151_);
				_tmp153_ = _tmp152_;
				_tmp154_ = gtkdoc_generator_add_custom_header (self, _tmp147_, _tmp153_, NULL, 0, DBL_MAX, TRUE);
				_tmp155_ = _tmp154_;
				_gtkdoc_header_unref0 (_tmp155_);
				_g_free0 (_tmp153_);
				_g_free0 (_tmp150_);
				_g_free0 (_tmp147_);
				_g_free0 (type_name_down);
				_g_object_unref0 (type);
				_g_object_unref0 (_type);
			}
			_vala_iterable_unref0 (__type_list);
		}
		_vala_iterable_unref0 (type_parameters);
	}
	_tmp156_ = iface;
	_tmp157_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp156_);
	_tmp158_ = _tmp157_;
	_tmp159_ = iface;
	_tmp160_ = valadoc_api_interface_get_cname (_tmp159_);
	_tmp161_ = _tmp160_;
	_tmp162_ = g_strconcat (_tmp161_, "Iface", NULL);
	_tmp163_ = _tmp162_;
	_tmp164_ = gtkdoc_generator_add_symbol (self, _tmp158_, _tmp163_, NULL, NULL, NULL, 0);
	_gtkdoc_gcomment_unref0 (gcomment);
	gcomment = _tmp164_;
	_g_free0 (_tmp163_);
	_g_free0 (_tmp161_);
	_g_free0 (_tmp158_);
	_tmp165_ = gcomment;
	_tmp166_ = iface;
	_tmp167_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp166_, FALSE, FALSE);
	_tmp168_ = _tmp167_;
	_tmp169_ = g_strdup_printf ("Interface for creating %s implementations.", _tmp168_);
	_g_free0 (_tmp165_->brief_comment);
	_tmp165_->brief_comment = _tmp169_;
	_g_free0 (_tmp168_);
	_tmp170_ = iface;
	_tmp171_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp170_);
	_tmp172_ = _tmp171_;
	_tmp173_ = gtkdoc_generator_get_file_data (self, _tmp172_);
	_tmp174_ = _tmp173_;
	_g_free0 (_tmp172_);
	file_data = _tmp174_;
	_tmp175_ = iface;
	_tmp176_ = valadoc_api_typesymbol_get_type_cast_macro_name ((ValadocApiTypeSymbol*) _tmp175_);
	_tmp177_ = _tmp176_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp177_);
	_g_free0 (_tmp177_);
	_tmp178_ = iface;
	_tmp179_ = valadoc_api_interface_get_interface_macro_name (_tmp178_);
	_tmp180_ = _tmp179_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp180_);
	_g_free0 (_tmp180_);
	_tmp181_ = iface;
	_tmp182_ = valadoc_api_typesymbol_get_is_type_macro_name ((ValadocApiTypeSymbol*) _tmp181_);
	_tmp183_ = _tmp182_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp183_);
	_g_free0 (_tmp183_);
	_tmp184_ = iface;
	_tmp185_ = valadoc_api_typesymbol_get_type_macro_name ((ValadocApiTypeSymbol*) _tmp184_);
	_tmp186_ = _tmp185_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp186_);
	_g_free0 (_tmp186_);
	_tmp187_ = iface;
	_tmp188_ = valadoc_api_typesymbol_get_type_function_name ((ValadocApiTypeSymbol*) _tmp187_);
	_tmp189_ = _tmp188_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp189_);
	_g_free0 (_tmp189_);
	_tmp190_ = old_cname;
	_tmp191_ = g_strdup (_tmp190_);
	_g_free0 (self->priv->current_cname);
	self->priv->current_cname = _tmp191_;
	_tmp192_ = old_headers;
	_tmp193_ = _vala_iterable_ref0 (_tmp192_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp193_;
	_tmp194_ = old_dbus_interface;
	_tmp195_ = _gtkdoc_dbus_interface_ref0 (_tmp194_);
	_gtkdoc_dbus_interface_unref0 (self->priv->current_dbus_interface);
	self->priv->current_dbus_interface = _tmp195_;
	_gtkdoc_generator_file_data_unref0 (file_data);
	_vala_iterable_unref0 (abstract_properties);
	_vala_iterable_unref0 (abstract_methods);
	_gtkdoc_gcomment_unref0 (gcomment);
	_gtkdoc_dbus_interface_unref0 (old_dbus_interface);
	_vala_iterable_unref0 (old_headers);
	_g_free0 (old_cname);
}


static void gtkdoc_generator_real_visit_class (ValadocApiVisitor* base, ValadocApiClass* cl) {
	GtkdocGenerator * self;
	gchar* old_cname = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	ValaList* old_headers = NULL;
	ValaList* _tmp2_;
	ValaList* _tmp3_;
	ValadocApiClass* old_class = NULL;
	ValadocApiClass* _tmp4_;
	ValadocApiClass* _tmp5_;
	GtkdocDBusInterface* old_dbus_interface = NULL;
	GtkdocDBusInterface* _tmp6_;
	GtkdocDBusInterface* _tmp7_;
	ValadocApiClass* _tmp8_;
	gchar* _tmp9_;
	GEqualFunc _tmp10_;
	ValaArrayList* _tmp11_;
	ValadocApiClass* _tmp12_;
	ValadocApiClass* _tmp13_;
	ValadocApiClass* _tmp14_;
	gchar* _tmp15_;
	gchar* _tmp16_;
	gboolean _tmp17_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiClass* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	ValadocApiClass* _tmp27_;
	gchar* _tmp28_;
	gchar* _tmp29_;
	GtkdocGComment* _tmp30_;
	GtkdocGComment* _tmp31_;
	GtkdocGComment* _tmp32_;
	ValadocApiClass* _tmp33_;
	gchar* _tmp34_;
	gchar* _tmp35_;
	gchar* _tmp36_;
	ValadocApiClass* _tmp37_;
	ValadocApiClass* _tmp38_;
	gchar* _tmp39_;
	gchar* _tmp40_;
	ValadocApiClass* _tmp41_;
	gchar* _tmp42_;
	gchar* _tmp43_;
	ValadocApiClass* _tmp44_;
	ValadocContentComment* _tmp45_;
	ValadocContentComment* _tmp46_;
	GtkdocGComment* _tmp47_;
	GtkdocGComment* _tmp48_;
	ValadocApiClass* _tmp49_;
	gchar* _tmp50_;
	gchar* _tmp51_;
	ValadocApiClass* _tmp52_;
	gchar* _tmp53_;
	gchar* _tmp54_;
	ValadocApiClass* _tmp55_;
	ValadocContentComment* _tmp56_;
	ValadocContentComment* _tmp57_;
	ValadocApiClass* _tmp58_;
	gchar* _tmp59_;
	gchar* _tmp60_;
	GtkdocDBusInterface* _tmp61_;
	ValadocApiClass* _tmp67_;
	GtkdocGComment* _tmp68_;
	gboolean _tmp69_ = FALSE;
	ValadocApiClass* _tmp70_;
	gboolean _tmp71_;
	gboolean _tmp72_;
	ValaList* _tmp226_;
	ValaList* abstract_methods = NULL;
	ValadocApiClass* _tmp227_;
	ValadocApiNodeType* _tmp228_;
	ValadocApiNodeType* _tmp229_;
	gint _tmp229__length1;
	ValaList* _tmp230_;
	ValaList* _tmp231_;
	ValaList* abstract_properties = NULL;
	ValadocApiClass* _tmp251_;
	ValadocApiNodeType* _tmp252_;
	ValadocApiNodeType* _tmp253_;
	gint _tmp253__length1;
	ValaList* _tmp254_;
	ValaList* _tmp255_;
	GtkdocHeader* _tmp275_;
	GtkdocHeader* _tmp276_;
	ValadocApiClass* _tmp277_;
	gchar* _tmp278_;
	gchar* _tmp279_;
	ValadocApiClass* _tmp280_;
	gchar* _tmp281_;
	gchar* _tmp282_;
	gchar* _tmp283_;
	gchar* _tmp284_;
	GtkdocGComment* _tmp285_;
	GtkdocGComment* _tmp286_;
	ValadocApiClass* _tmp287_;
	gchar* _tmp288_;
	gchar* _tmp289_;
	gchar* _tmp290_;
	GtkdocGeneratorFileData* file_data = NULL;
	ValadocApiClass* _tmp291_;
	gchar* _tmp292_;
	gchar* _tmp293_;
	GtkdocGeneratorFileData* _tmp294_;
	GtkdocGeneratorFileData* _tmp295_;
	GtkdocGeneratorFileData* _tmp296_;
	ValadocApiClass* _tmp297_;
	gchar* _tmp298_;
	gchar* _tmp299_;
	GtkdocGeneratorFileData* _tmp300_;
	ValadocApiClass* _tmp301_;
	gchar* _tmp302_;
	gchar* _tmp303_;
	GtkdocGeneratorFileData* _tmp304_;
	ValadocApiClass* _tmp305_;
	gchar* _tmp306_;
	gchar* _tmp307_;
	GtkdocGeneratorFileData* _tmp308_;
	ValadocApiClass* _tmp309_;
	gchar* _tmp310_;
	gchar* _tmp311_;
	GtkdocGeneratorFileData* _tmp312_;
	ValadocApiClass* _tmp313_;
	gchar* _tmp314_;
	gchar* _tmp315_;
	GtkdocGeneratorFileData* _tmp316_;
	ValadocApiClass* _tmp317_;
	gchar* _tmp318_;
	gchar* _tmp319_;
	GtkdocGeneratorFileData* _tmp320_;
	ValadocApiClass* _tmp321_;
	gchar* _tmp322_;
	gchar* _tmp323_;
	gchar* _tmp324_ = NULL;
	ValadocApiClass* _tmp325_;
	ValadocApiNamespace* _tmp326_;
	ValadocApiNamespace* _tmp327_;
	const gchar* _tmp328_;
	const gchar* _tmp329_;
	GtkdocGeneratorFileData* _tmp339_;
	ValadocApiClass* _tmp340_;
	const gchar* _tmp341_;
	const gchar* _tmp342_;
	gchar* _tmp343_;
	gchar* _tmp344_;
	gchar* _tmp345_;
	gchar* _tmp346_;
	gchar* _tmp347_;
	gchar* _tmp348_;
	const gchar* _tmp349_;
	gchar* _tmp350_;
	ValaList* _tmp351_;
	ValaList* _tmp352_;
	ValadocApiClass* _tmp353_;
	ValadocApiClass* _tmp354_;
	GtkdocDBusInterface* _tmp355_;
	GtkdocDBusInterface* _tmp356_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (cl != NULL);
	_tmp0_ = self->priv->current_cname;
	_tmp1_ = g_strdup (_tmp0_);
	old_cname = _tmp1_;
	_tmp2_ = self->priv->current_headers;
	_tmp3_ = _vala_iterable_ref0 (_tmp2_);
	old_headers = _tmp3_;
	_tmp4_ = self->priv->current_class;
	_tmp5_ = _g_object_ref0 (_tmp4_);
	old_class = _tmp5_;
	_tmp6_ = self->priv->current_dbus_interface;
	_tmp7_ = _gtkdoc_dbus_interface_ref0 (_tmp6_);
	old_dbus_interface = _tmp7_;
	_tmp8_ = cl;
	_tmp9_ = valadoc_api_class_get_cname (_tmp8_);
	_g_free0 (self->priv->current_cname);
	self->priv->current_cname = _tmp9_;
	_tmp10_ = g_direct_equal;
	_tmp11_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp10_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp11_;
	_tmp12_ = cl;
	_tmp13_ = _g_object_ref0 (_tmp12_);
	_g_object_unref0 (self->priv->current_class);
	self->priv->current_class = _tmp13_;
	_gtkdoc_dbus_interface_unref0 (self->priv->current_dbus_interface);
	self->priv->current_dbus_interface = NULL;
	_tmp14_ = cl;
	_tmp15_ = valadoc_api_class_get_dbus_name (_tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = _tmp16_ != NULL;
	_g_free0 (_tmp16_);
	if (_tmp17_) {
		ValadocSettings* _tmp18_;
		const gchar* _tmp19_;
		ValadocApiClass* _tmp20_;
		gchar* _tmp21_;
		gchar* _tmp22_;
		GtkdocDBusInterface* _tmp23_;
		_tmp18_ = self->priv->settings;
		_tmp19_ = _tmp18_->pkg_name;
		_tmp20_ = cl;
		_tmp21_ = valadoc_api_class_get_dbus_name (_tmp20_);
		_tmp22_ = _tmp21_;
		_tmp23_ = gtkdoc_dbus_interface_new (_tmp19_, _tmp22_, "", "");
		_gtkdoc_dbus_interface_unref0 (self->priv->current_dbus_interface);
		self->priv->current_dbus_interface = _tmp23_;
		_g_free0 (_tmp22_);
	}
	_tmp24_ = cl;
	_tmp25_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp24_);
	_tmp26_ = _tmp25_;
	_tmp27_ = cl;
	_tmp28_ = valadoc_api_class_get_type_id (_tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = gtkdoc_generator_add_symbol (self, _tmp26_, _tmp29_, NULL, NULL, NULL, 0);
	_tmp31_ = _tmp30_;
	_g_free0 (_tmp29_);
	_g_free0 (_tmp26_);
	gcomment = _tmp31_;
	_tmp32_ = gcomment;
	_tmp33_ = cl;
	_tmp34_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp33_, FALSE, FALSE);
	_tmp35_ = _tmp34_;
	_tmp36_ = g_strdup_printf ("The type for %s.", _tmp35_);
	_g_free0 (_tmp32_->brief_comment);
	_tmp32_->brief_comment = _tmp36_;
	_g_free0 (_tmp35_);
	_tmp37_ = cl;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp37_, (ValadocApiVisitor*) self, TRUE);
	_tmp38_ = cl;
	_tmp39_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp38_);
	_tmp40_ = _tmp39_;
	_tmp41_ = cl;
	_tmp42_ = valadoc_api_class_get_cname (_tmp41_);
	_tmp43_ = _tmp42_;
	_tmp44_ = cl;
	_tmp45_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp44_);
	_tmp46_ = _tmp45_;
	_tmp47_ = gtkdoc_generator_add_symbol (self, _tmp40_, _tmp43_, _tmp46_, NULL, NULL, 0);
	_tmp48_ = _tmp47_;
	_gtkdoc_gcomment_unref0 (_tmp48_);
	_g_free0 (_tmp43_);
	_g_free0 (_tmp40_);
	_tmp49_ = cl;
	_tmp50_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp49_);
	_tmp51_ = _tmp50_;
	_tmp52_ = cl;
	_tmp53_ = valadoc_api_class_get_cname (_tmp52_);
	_tmp54_ = _tmp53_;
	_tmp55_ = cl;
	_tmp56_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp55_);
	_tmp57_ = _tmp56_;
	_tmp58_ = cl;
	_tmp59_ = valadoc_api_node_get_full_name ((ValadocApiNode*) _tmp58_);
	_tmp60_ = _tmp59_;
	gtkdoc_generator_set_section_comment (self, _tmp51_, _tmp54_, _tmp57_, _tmp60_);
	_g_free0 (_tmp60_);
	_g_free0 (_tmp54_);
	_g_free0 (_tmp51_);
	_tmp61_ = self->priv->current_dbus_interface;
	if (_tmp61_ != NULL) {
		GtkdocDBusInterface* _tmp62_;
		ValadocSettings* _tmp63_;
		ValadocErrorReporter* _tmp64_;
		ValaList* _tmp65_;
		GtkdocDBusInterface* _tmp66_;
		_tmp62_ = self->priv->current_dbus_interface;
		_tmp63_ = self->priv->settings;
		_tmp64_ = self->priv->reporter;
		gtkdoc_dbus_interface_write (_tmp62_, _tmp63_, _tmp64_);
		_tmp65_ = self->dbus_interfaces;
		_tmp66_ = self->priv->current_dbus_interface;
		vala_collection_add ((ValaCollection*) _tmp65_, _tmp66_);
	}
	_tmp67_ = cl;
	_tmp68_ = gcomment;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp67_, _tmp68_);
	_tmp70_ = cl;
	_tmp71_ = valadoc_api_class_get_is_fundamental (_tmp70_);
	_tmp72_ = _tmp71_;
	if (_tmp72_) {
		ValadocApiClass* _tmp73_;
		ValadocApiTypeReference* _tmp74_;
		ValadocApiTypeReference* _tmp75_;
		_tmp73_ = cl;
		_tmp74_ = valadoc_api_class_get_base_type (_tmp73_);
		_tmp75_ = _tmp74_;
		_tmp69_ = _tmp75_ == NULL;
	} else {
		_tmp69_ = FALSE;
	}
	if (_tmp69_) {
		gchar* filename = NULL;
		ValadocApiClass* _tmp76_;
		gchar* _tmp77_;
		ValaList* _tmp78_;
		ValadocApiClass* _tmp79_;
		gchar* _tmp80_;
		gchar* _tmp81_;
		gchar* _tmp82_;
		gchar* _tmp83_;
		GtkdocHeader* _tmp84_;
		GtkdocHeader* _tmp85_;
		const gchar* _tmp86_;
		ValadocApiClass* _tmp87_;
		gchar* _tmp88_;
		gchar* _tmp89_;
		GtkdocGComment* _tmp90_;
		GtkdocGComment* _tmp91_;
		gchar* _tmp92_;
		GtkdocGComment* _tmp93_;
		gchar* _tmp94_;
		ValaList* _tmp95_;
		ValadocApiClass* _tmp96_;
		gchar* _tmp97_;
		gchar* _tmp98_;
		gchar* _tmp99_;
		gchar* _tmp100_;
		GtkdocHeader* _tmp101_;
		GtkdocHeader* _tmp102_;
		const gchar* _tmp103_;
		ValadocApiClass* _tmp104_;
		gchar* _tmp105_;
		gchar* _tmp106_;
		GtkdocGComment* _tmp107_;
		GtkdocGComment* _tmp108_;
		gchar* _tmp109_;
		ValaList* _tmp110_;
		GtkdocHeader* _tmp111_;
		GtkdocHeader* _tmp112_;
		GtkdocHeader* _tmp113_;
		GtkdocHeader* _tmp114_;
		GtkdocHeader* _tmp115_;
		GtkdocHeader* _tmp116_;
		ValadocApiClass* _tmp117_;
		gchar* _tmp118_;
		gchar* _tmp119_;
		gchar* _tmp120_;
		gchar* _tmp121_;
		GtkdocHeader* _tmp122_;
		GtkdocHeader* _tmp123_;
		GtkdocHeader* _tmp124_;
		GtkdocHeader* _tmp125_;
		const gchar* _tmp126_;
		ValadocApiClass* _tmp127_;
		gchar* _tmp128_;
		gchar* _tmp129_;
		GtkdocGComment* _tmp130_;
		GtkdocGComment* _tmp131_;
		ValadocApiClass* _tmp132_;
		gchar* _tmp133_;
		gchar* _tmp134_;
		gchar* _tmp135_;
		GtkdocGComment* _tmp136_;
		gchar* _tmp137_;
		ValaList* _tmp138_;
		ValadocApiClass* _tmp139_;
		gchar* _tmp140_;
		gchar* _tmp141_;
		gchar* _tmp142_;
		gchar* _tmp143_;
		GtkdocHeader* _tmp144_;
		GtkdocHeader* _tmp145_;
		GtkdocHeader* _tmp146_;
		GtkdocHeader* _tmp147_;
		const gchar* _tmp148_;
		ValadocApiClass* _tmp149_;
		gchar* _tmp150_;
		gchar* _tmp151_;
		GtkdocGComment* _tmp152_;
		GtkdocGComment* _tmp153_;
		ValadocApiClass* _tmp154_;
		gchar* _tmp155_;
		gchar* _tmp156_;
		gchar* _tmp157_;
		GtkdocGComment* _tmp158_;
		ValadocApiClass* _tmp159_;
		gchar* _tmp160_;
		gchar* _tmp161_;
		gchar* _tmp162_;
		gchar* _tmp163_;
		ValadocApiClass* _tmp164_;
		gchar* _tmp165_;
		gchar* _tmp166_;
		ValadocApiClass* _tmp167_;
		gchar* _tmp168_;
		gchar* _tmp169_;
		gchar* _tmp170_;
		gchar* _tmp171_;
		ValadocApiClass* _tmp172_;
		gchar* _tmp173_;
		gchar* _tmp174_;
		gchar* _tmp175_;
		ValaList* _tmp176_;
		ValadocApiClass* _tmp177_;
		gchar* _tmp178_;
		gchar* _tmp179_;
		gchar* _tmp180_;
		gchar* _tmp181_;
		GtkdocHeader* _tmp182_;
		GtkdocHeader* _tmp183_;
		const gchar* _tmp184_;
		ValadocApiClass* _tmp185_;
		gchar* _tmp186_;
		gchar* _tmp187_;
		GtkdocGComment* _tmp188_;
		GtkdocGComment* _tmp189_;
		ValadocApiClass* _tmp190_;
		gchar* _tmp191_;
		gchar* _tmp192_;
		gchar* _tmp193_;
		GtkdocGComment* _tmp194_;
		gchar* _tmp195_;
		ValaList* _tmp196_;
		ValadocApiClass* _tmp197_;
		gchar* _tmp198_;
		gchar* _tmp199_;
		gchar* _tmp200_;
		gchar* _tmp201_;
		GtkdocHeader* _tmp202_;
		GtkdocHeader* _tmp203_;
		GtkdocHeader* _tmp204_;
		GtkdocHeader* _tmp205_;
		const gchar* _tmp206_;
		ValadocApiClass* _tmp207_;
		gchar* _tmp208_;
		gchar* _tmp209_;
		GtkdocGComment* _tmp210_;
		GtkdocGComment* _tmp211_;
		ValadocApiClass* _tmp212_;
		gchar* _tmp213_;
		gchar* _tmp214_;
		gchar* _tmp215_;
		GtkdocGComment* _tmp216_;
		ValadocApiClass* _tmp217_;
		gchar* _tmp218_;
		gchar* _tmp219_;
		gchar* _tmp220_;
		gchar* _tmp221_;
		ValadocApiClass* _tmp222_;
		gchar* _tmp223_;
		gchar* _tmp224_;
		gchar* _tmp225_;
		_tmp76_ = cl;
		_tmp77_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp76_);
		filename = _tmp77_;
		_tmp78_ = self->priv->current_headers;
		vala_collection_clear ((ValaCollection*) _tmp78_);
		_tmp79_ = cl;
		_tmp80_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp79_, FALSE, FALSE);
		_tmp81_ = _tmp80_;
		_tmp82_ = g_strdup_printf ("a %s.", _tmp81_);
		_tmp83_ = _tmp82_;
		_tmp84_ = gtkdoc_generator_add_custom_header (self, "instance", _tmp83_, NULL, 0, DBL_MAX, TRUE);
		_tmp85_ = _tmp84_;
		_gtkdoc_header_unref0 (_tmp85_);
		_g_free0 (_tmp83_);
		_g_free0 (_tmp81_);
		_tmp86_ = filename;
		_tmp87_ = cl;
		_tmp88_ = valadoc_api_class_get_ref_function_cname (_tmp87_);
		_tmp89_ = _tmp88_;
		_tmp90_ = gtkdoc_generator_add_symbol (self, _tmp86_, _tmp89_, NULL, NULL, NULL, 0);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp90_;
		_g_free0 (_tmp89_);
		_tmp91_ = gcomment;
		_tmp92_ = g_strdup ("Increases the reference count of @object.");
		_g_free0 (_tmp91_->brief_comment);
		_tmp91_->brief_comment = _tmp92_;
		_tmp93_ = gcomment;
		_tmp94_ = g_strdup ("the same @object");
		_g_free0 (_tmp93_->returns);
		_tmp93_->returns = _tmp94_;
		_tmp95_ = self->priv->current_headers;
		vala_collection_clear ((ValaCollection*) _tmp95_);
		_tmp96_ = cl;
		_tmp97_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp96_, FALSE, FALSE);
		_tmp98_ = _tmp97_;
		_tmp99_ = g_strdup_printf ("a %s.", _tmp98_);
		_tmp100_ = _tmp99_;
		_tmp101_ = gtkdoc_generator_add_custom_header (self, "instance", _tmp100_, NULL, 0, DBL_MAX, TRUE);
		_tmp102_ = _tmp101_;
		_gtkdoc_header_unref0 (_tmp102_);
		_g_free0 (_tmp100_);
		_g_free0 (_tmp98_);
		_tmp103_ = filename;
		_tmp104_ = cl;
		_tmp105_ = valadoc_api_class_get_unref_function_cname (_tmp104_);
		_tmp106_ = _tmp105_;
		_tmp107_ = gtkdoc_generator_add_symbol (self, _tmp103_, _tmp106_, NULL, NULL, NULL, 0);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp107_;
		_g_free0 (_tmp106_);
		_tmp108_ = gcomment;
		_tmp109_ = g_strdup ("Decreases the reference count of @object. When its reference count dro" \
"ps to 0, the object is finalized (i.e. its memory is freed).");
		_g_free0 (_tmp108_->brief_comment);
		_tmp108_->brief_comment = _tmp109_;
		_tmp110_ = self->priv->current_headers;
		vala_collection_clear ((ValaCollection*) _tmp110_);
		_tmp111_ = gtkdoc_generator_add_custom_header (self, "name", "canonical name of the property specified", NULL, 0, DBL_MAX, TRUE);
		_tmp112_ = _tmp111_;
		_gtkdoc_header_unref0 (_tmp112_);
		_tmp113_ = gtkdoc_generator_add_custom_header (self, "nick", "nick name for the property specified", NULL, 0, DBL_MAX, TRUE);
		_tmp114_ = _tmp113_;
		_gtkdoc_header_unref0 (_tmp114_);
		_tmp115_ = gtkdoc_generator_add_custom_header (self, "blurb", "description of the property specified", NULL, 0, DBL_MAX, TRUE);
		_tmp116_ = _tmp115_;
		_gtkdoc_header_unref0 (_tmp116_);
		_tmp117_ = cl;
		_tmp118_ = gtkdoc_get_docbook_type_link (_tmp117_);
		_tmp119_ = _tmp118_;
		_tmp120_ = g_strdup_printf ("%s derived type of this property", _tmp119_);
		_tmp121_ = _tmp120_;
		_tmp122_ = gtkdoc_generator_add_custom_header (self, "object_type", _tmp121_, NULL, 0, DBL_MAX, TRUE);
		_tmp123_ = _tmp122_;
		_gtkdoc_header_unref0 (_tmp123_);
		_g_free0 (_tmp121_);
		_g_free0 (_tmp119_);
		_tmp124_ = gtkdoc_generator_add_custom_header (self, "flags", "flags for the property specified", NULL, 0, DBL_MAX, TRUE);
		_tmp125_ = _tmp124_;
		_gtkdoc_header_unref0 (_tmp125_);
		_tmp126_ = filename;
		_tmp127_ = cl;
		_tmp128_ = valadoc_api_class_get_param_spec_function_cname (_tmp127_);
		_tmp129_ = _tmp128_;
		_tmp130_ = gtkdoc_generator_add_symbol (self, _tmp126_, _tmp129_, NULL, NULL, NULL, 0);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp130_;
		_g_free0 (_tmp129_);
		_tmp131_ = gcomment;
		_tmp132_ = cl;
		_tmp133_ = gtkdoc_get_docbook_type_link (_tmp132_);
		_tmp134_ = _tmp133_;
		_tmp135_ = g_strdup_printf ("Creates a new <link linkend=\"GParamSpecBoxed\"><type>GParamSpecBoxed<" \
"/type></link> instance specifying a %s derived property.", _tmp134_);
		_g_free0 (_tmp131_->brief_comment);
		_tmp131_->brief_comment = _tmp135_;
		_g_free0 (_tmp134_);
		_tmp136_ = gcomment;
		_tmp137_ = g_strdup ("See <link linkend=\"g-param-spec-internal\"><function>g_param_spec_int" \
"ernal()</function></link> for details on property names.");
		_g_free0 (_tmp136_->long_comment);
		_tmp136_->long_comment = _tmp137_;
		_tmp138_ = self->priv->current_headers;
		vala_collection_clear ((ValaCollection*) _tmp138_);
		_tmp139_ = cl;
		_tmp140_ = gtkdoc_get_docbook_type_link (_tmp139_);
		_tmp141_ = _tmp140_;
		_tmp142_ = g_strdup_printf ("a valid <link linkend=\"GValue\"><type>GValue</type></link> of %s deri" \
"ved type", _tmp141_);
		_tmp143_ = _tmp142_;
		_tmp144_ = gtkdoc_generator_add_custom_header (self, "value", _tmp143_, NULL, 0, DBL_MAX, TRUE);
		_tmp145_ = _tmp144_;
		_gtkdoc_header_unref0 (_tmp145_);
		_g_free0 (_tmp143_);
		_g_free0 (_tmp141_);
		_tmp146_ = gtkdoc_generator_add_custom_header (self, "v_object", "object value to be set", NULL, 0, DBL_MAX, TRUE);
		_tmp147_ = _tmp146_;
		_gtkdoc_header_unref0 (_tmp147_);
		_tmp148_ = filename;
		_tmp149_ = cl;
		_tmp150_ = valadoc_api_class_get_set_value_function_cname (_tmp149_);
		_tmp151_ = _tmp150_;
		_tmp152_ = gtkdoc_generator_add_symbol (self, _tmp148_, _tmp151_, NULL, NULL, NULL, 0);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp152_;
		_g_free0 (_tmp151_);
		_tmp153_ = gcomment;
		_tmp154_ = cl;
		_tmp155_ = gtkdoc_get_docbook_type_link (_tmp154_);
		_tmp156_ = _tmp155_;
		_tmp157_ = g_strdup_printf ("Set the contents of a %s derived <link linkend=\"GValue\"><type>GValue" \
"</type></link> to @v_object.", _tmp156_);
		_g_free0 (_tmp153_->brief_comment);
		_tmp153_->brief_comment = _tmp157_;
		_g_free0 (_tmp156_);
		_tmp158_ = gcomment;
		_tmp159_ = cl;
		_tmp160_ = valadoc_api_class_get_set_value_function_cname (_tmp159_);
		_tmp161_ = _tmp160_;
		_tmp162_ = gtkdoc_to_docbook_id (_tmp161_);
		_tmp163_ = _tmp162_;
		_tmp164_ = cl;
		_tmp165_ = valadoc_api_class_get_set_value_function_cname (_tmp164_);
		_tmp166_ = _tmp165_;
		_tmp167_ = cl;
		_tmp168_ = valadoc_api_class_get_take_value_function_cname (_tmp167_);
		_tmp169_ = _tmp168_;
		_tmp170_ = gtkdoc_to_docbook_id (_tmp169_);
		_tmp171_ = _tmp170_;
		_tmp172_ = cl;
		_tmp173_ = valadoc_api_class_get_take_value_function_cname (_tmp172_);
		_tmp174_ = _tmp173_;
		_tmp175_ = g_strdup_printf ("<link linkend=\"%s\"><function>%s()</function></link> increases the re" \
"ference count of @v_object (the <link linkend=\"GValue\"><type>GValue<" \
"/type></link> holds a reference to @v_object). If you do not wish to i" \
"ncrease the reference count of the object (i.e. you wish to pass your " \
"current reference to the <link linkend=\"GValue\"><type>GValue</type><" \
"/link> because you no longer need it), use <link linkend=\"%s\"><funct" \
"ion>%s()</function></link> instead.\n" \
"\n" \
"It is important that your <link linkend=\"GValue\"><type>GValue</type>" \
"</link> holds a reference to @v_object (either its own, or one it has " \
"taken) to ensure that the object won't be destroyed while the <link li" \
"nkend=\"GValue\"><type>GValue</type></link> still exists).", _tmp163_, _tmp166_, _tmp171_, _tmp174_);
		_g_free0 (_tmp158_->long_comment);
		_tmp158_->long_comment = _tmp175_;
		_g_free0 (_tmp174_);
		_g_free0 (_tmp171_);
		_g_free0 (_tmp169_);
		_g_free0 (_tmp166_);
		_g_free0 (_tmp163_);
		_g_free0 (_tmp161_);
		_tmp176_ = self->priv->current_headers;
		vala_collection_clear ((ValaCollection*) _tmp176_);
		_tmp177_ = cl;
		_tmp178_ = gtkdoc_get_docbook_type_link (_tmp177_);
		_tmp179_ = _tmp178_;
		_tmp180_ = g_strdup_printf ("a valid <link linkend=\"GValue\"><type>GValue</type></link> of %s deri" \
"ved type", _tmp179_);
		_tmp181_ = _tmp180_;
		_tmp182_ = gtkdoc_generator_add_custom_header (self, "value", _tmp181_, NULL, 0, DBL_MAX, TRUE);
		_tmp183_ = _tmp182_;
		_gtkdoc_header_unref0 (_tmp183_);
		_g_free0 (_tmp181_);
		_g_free0 (_tmp179_);
		_tmp184_ = filename;
		_tmp185_ = cl;
		_tmp186_ = valadoc_api_class_get_get_value_function_cname (_tmp185_);
		_tmp187_ = _tmp186_;
		_tmp188_ = gtkdoc_generator_add_symbol (self, _tmp184_, _tmp187_, NULL, NULL, NULL, 0);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp188_;
		_g_free0 (_tmp187_);
		_tmp189_ = gcomment;
		_tmp190_ = cl;
		_tmp191_ = gtkdoc_get_docbook_type_link (_tmp190_);
		_tmp192_ = _tmp191_;
		_tmp193_ = g_strdup_printf ("Get the contents of a %s derived <link linkend=\"GValue\"><type>GValue" \
"</type></link>.", _tmp192_);
		_g_free0 (_tmp189_->brief_comment);
		_tmp189_->brief_comment = _tmp193_;
		_g_free0 (_tmp192_);
		_tmp194_ = gcomment;
		_tmp195_ = g_strdup ("object contents of @value");
		_g_free0 (_tmp194_->returns);
		_tmp194_->returns = _tmp195_;
		_tmp196_ = self->priv->current_headers;
		vala_collection_clear ((ValaCollection*) _tmp196_);
		_tmp197_ = cl;
		_tmp198_ = gtkdoc_get_docbook_type_link (_tmp197_);
		_tmp199_ = _tmp198_;
		_tmp200_ = g_strdup_printf ("a valid <link linkend=\"GValue\"><type>GValue</type></link> of %s deri" \
"ved type", _tmp199_);
		_tmp201_ = _tmp200_;
		_tmp202_ = gtkdoc_generator_add_custom_header (self, "value", _tmp201_, NULL, 0, DBL_MAX, TRUE);
		_tmp203_ = _tmp202_;
		_gtkdoc_header_unref0 (_tmp203_);
		_g_free0 (_tmp201_);
		_g_free0 (_tmp199_);
		_tmp204_ = gtkdoc_generator_add_custom_header (self, "v_object", "object value to be set", NULL, 0, DBL_MAX, TRUE);
		_tmp205_ = _tmp204_;
		_gtkdoc_header_unref0 (_tmp205_);
		_tmp206_ = filename;
		_tmp207_ = cl;
		_tmp208_ = valadoc_api_class_get_take_value_function_cname (_tmp207_);
		_tmp209_ = _tmp208_;
		_tmp210_ = gtkdoc_generator_add_symbol (self, _tmp206_, _tmp209_, NULL, NULL, NULL, 0);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp210_;
		_g_free0 (_tmp209_);
		_tmp211_ = gcomment;
		_tmp212_ = cl;
		_tmp213_ = gtkdoc_get_docbook_type_link (_tmp212_);
		_tmp214_ = _tmp213_;
		_tmp215_ = g_strdup_printf ("Sets the contents of a %s derived <link linkend=\"GValue\"><type>GValu" \
"e</type></link> to @v_object and takes over the ownership of the calle" \
"rs reference to @v_object; the caller doesn't have to unref it any mor" \
"e (i.e. the reference count of the object is not increased).", _tmp214_);
		_g_free0 (_tmp211_->brief_comment);
		_tmp211_->brief_comment = _tmp215_;
		_g_free0 (_tmp214_);
		_tmp216_ = gcomment;
		_tmp217_ = cl;
		_tmp218_ = valadoc_api_class_get_set_value_function_cname (_tmp217_);
		_tmp219_ = _tmp218_;
		_tmp220_ = gtkdoc_to_docbook_id (_tmp219_);
		_tmp221_ = _tmp220_;
		_tmp222_ = cl;
		_tmp223_ = valadoc_api_class_get_set_value_function_cname (_tmp222_);
		_tmp224_ = _tmp223_;
		_tmp225_ = g_strdup_printf ("If you want the GValue to hold its own reference to @v_object, use <li" \
"nk linkend=\"%s\"><function>%s()</function></link> instead.", _tmp221_, _tmp224_);
		_g_free0 (_tmp216_->long_comment);
		_tmp216_->long_comment = _tmp225_;
		_g_free0 (_tmp224_);
		_g_free0 (_tmp221_);
		_g_free0 (_tmp219_);
		_g_free0 (filename);
	}
	_tmp226_ = self->priv->current_headers;
	vala_collection_clear ((ValaCollection*) _tmp226_);
	_tmp227_ = cl;
	_tmp228_ = g_new0 (ValadocApiNodeType, 1);
	_tmp228_[0] = VALADOC_API_NODE_TYPE_METHOD;
	_tmp229_ = _tmp228_;
	_tmp229__length1 = 1;
	_tmp230_ = valadoc_api_node_get_children_by_types ((ValadocApiNode*) _tmp227_, _tmp229_, 1, FALSE);
	_tmp231_ = _tmp230_;
	_tmp229_ = (g_free (_tmp229_), NULL);
	abstract_methods = _tmp231_;
	{
		ValaList* _m_list = NULL;
		ValaList* _tmp232_;
		ValaList* _tmp233_;
		gint _m_size = 0;
		ValaList* _tmp234_;
		gint _tmp235_;
		gint _tmp236_;
		gint _m_index = 0;
		_tmp232_ = abstract_methods;
		_tmp233_ = _vala_iterable_ref0 (_tmp232_);
		_m_list = _tmp233_;
		_tmp234_ = _m_list;
		_tmp235_ = vala_collection_get_size ((ValaCollection*) _tmp234_);
		_tmp236_ = _tmp235_;
		_m_size = _tmp236_;
		_m_index = -1;
		while (TRUE) {
			gint _tmp237_;
			gint _tmp238_;
			gint _tmp239_;
			ValadocApiNode* m = NULL;
			ValaList* _tmp240_;
			gint _tmp241_;
			gpointer _tmp242_;
			gboolean _tmp243_ = FALSE;
			ValadocApiNode* _tmp244_;
			ValadocSettings* _tmp245_;
			gboolean _tmp246_;
			_tmp237_ = _m_index;
			_m_index = _tmp237_ + 1;
			_tmp238_ = _m_index;
			_tmp239_ = _m_size;
			if (!(_tmp238_ < _tmp239_)) {
				break;
			}
			_tmp240_ = _m_list;
			_tmp241_ = _m_index;
			_tmp242_ = vala_list_get (_tmp240_, _tmp241_);
			m = (ValadocApiNode*) _tmp242_;
			_tmp244_ = m;
			_tmp245_ = self->priv->settings;
			_tmp246_ = valadoc_api_node_is_browsable (_tmp244_, _tmp245_);
			if (_tmp246_) {
				_tmp243_ = TRUE;
			} else {
				ValadocApiNode* _tmp247_;
				gboolean _tmp248_;
				gboolean _tmp249_;
				_tmp247_ = m;
				_tmp248_ = valadoc_api_symbol_get_is_protected (G_TYPE_CHECK_INSTANCE_CAST (_tmp247_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
				_tmp249_ = _tmp248_;
				_tmp243_ = _tmp249_;
			}
			if (_tmp243_) {
				ValadocApiNode* _tmp250_;
				_tmp250_ = m;
				gtkdoc_generator_visit_abstract_method (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp250_, VALADOC_API_TYPE_METHOD, ValadocApiMethod));
			}
			_g_object_unref0 (m);
		}
		_vala_iterable_unref0 (_m_list);
	}
	_tmp251_ = cl;
	_tmp252_ = g_new0 (ValadocApiNodeType, 1);
	_tmp252_[0] = VALADOC_API_NODE_TYPE_PROPERTY;
	_tmp253_ = _tmp252_;
	_tmp253__length1 = 1;
	_tmp254_ = valadoc_api_node_get_children_by_types ((ValadocApiNode*) _tmp251_, _tmp253_, 1, FALSE);
	_tmp255_ = _tmp254_;
	_tmp253_ = (g_free (_tmp253_), NULL);
	abstract_properties = _tmp255_;
	{
		ValaList* _prop_list = NULL;
		ValaList* _tmp256_;
		ValaList* _tmp257_;
		gint _prop_size = 0;
		ValaList* _tmp258_;
		gint _tmp259_;
		gint _tmp260_;
		gint _prop_index = 0;
		_tmp256_ = abstract_properties;
		_tmp257_ = _vala_iterable_ref0 (_tmp256_);
		_prop_list = _tmp257_;
		_tmp258_ = _prop_list;
		_tmp259_ = vala_collection_get_size ((ValaCollection*) _tmp258_);
		_tmp260_ = _tmp259_;
		_prop_size = _tmp260_;
		_prop_index = -1;
		while (TRUE) {
			gint _tmp261_;
			gint _tmp262_;
			gint _tmp263_;
			ValadocApiNode* prop = NULL;
			ValaList* _tmp264_;
			gint _tmp265_;
			gpointer _tmp266_;
			gboolean _tmp267_ = FALSE;
			ValadocApiNode* _tmp268_;
			ValadocSettings* _tmp269_;
			gboolean _tmp270_;
			_tmp261_ = _prop_index;
			_prop_index = _tmp261_ + 1;
			_tmp262_ = _prop_index;
			_tmp263_ = _prop_size;
			if (!(_tmp262_ < _tmp263_)) {
				break;
			}
			_tmp264_ = _prop_list;
			_tmp265_ = _prop_index;
			_tmp266_ = vala_list_get (_tmp264_, _tmp265_);
			prop = (ValadocApiNode*) _tmp266_;
			_tmp268_ = prop;
			_tmp269_ = self->priv->settings;
			_tmp270_ = valadoc_api_node_is_browsable (_tmp268_, _tmp269_);
			if (_tmp270_) {
				_tmp267_ = TRUE;
			} else {
				ValadocApiNode* _tmp271_;
				gboolean _tmp272_;
				gboolean _tmp273_;
				_tmp271_ = prop;
				_tmp272_ = valadoc_api_symbol_get_is_protected (G_TYPE_CHECK_INSTANCE_CAST (_tmp271_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol));
				_tmp273_ = _tmp272_;
				_tmp267_ = _tmp273_;
			}
			if (_tmp267_) {
				ValadocApiNode* _tmp274_;
				_tmp274_ = prop;
				gtkdoc_generator_visit_abstract_property (self, G_TYPE_CHECK_INSTANCE_CAST (_tmp274_, VALADOC_API_TYPE_PROPERTY, ValadocApiProperty));
			}
			_g_object_unref0 (prop);
		}
		_vala_iterable_unref0 (_prop_list);
	}
	_tmp275_ = gtkdoc_generator_add_custom_header (self, "parent_class", "the parent class structure", NULL, 0, DBL_MAX, TRUE);
	_tmp276_ = _tmp275_;
	_gtkdoc_header_unref0 (_tmp276_);
	_tmp277_ = cl;
	_tmp278_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp277_);
	_tmp279_ = _tmp278_;
	_tmp280_ = cl;
	_tmp281_ = valadoc_api_class_get_cname (_tmp280_);
	_tmp282_ = _tmp281_;
	_tmp283_ = g_strconcat (_tmp282_, "Class", NULL);
	_tmp284_ = _tmp283_;
	_tmp285_ = gtkdoc_generator_add_symbol (self, _tmp279_, _tmp284_, NULL, NULL, NULL, 0);
	_gtkdoc_gcomment_unref0 (gcomment);
	gcomment = _tmp285_;
	_g_free0 (_tmp284_);
	_g_free0 (_tmp282_);
	_g_free0 (_tmp279_);
	_tmp286_ = gcomment;
	_tmp287_ = cl;
	_tmp288_ = gtkdoc_get_docbook_type_link (_tmp287_);
	_tmp289_ = _tmp288_;
	_tmp290_ = g_strdup_printf ("The class structure for %s. All the fields in this structure are priva" \
"te and should never be accessed directly.", _tmp289_);
	_g_free0 (_tmp286_->brief_comment);
	_tmp286_->brief_comment = _tmp290_;
	_g_free0 (_tmp289_);
	_tmp291_ = cl;
	_tmp292_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp291_);
	_tmp293_ = _tmp292_;
	_tmp294_ = gtkdoc_generator_get_file_data (self, _tmp293_);
	_tmp295_ = _tmp294_;
	_g_free0 (_tmp293_);
	file_data = _tmp295_;
	_tmp296_ = file_data;
	_tmp297_ = cl;
	_tmp298_ = valadoc_api_typesymbol_get_is_type_macro_name ((ValadocApiTypeSymbol*) _tmp297_);
	_tmp299_ = _tmp298_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp296_, _tmp299_);
	_g_free0 (_tmp299_);
	_tmp300_ = file_data;
	_tmp301_ = cl;
	_tmp302_ = valadoc_api_class_get_is_class_type_macro_name (_tmp301_);
	_tmp303_ = _tmp302_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp300_, _tmp303_);
	_g_free0 (_tmp303_);
	_tmp304_ = file_data;
	_tmp305_ = cl;
	_tmp306_ = valadoc_api_typesymbol_get_type_cast_macro_name ((ValadocApiTypeSymbol*) _tmp305_);
	_tmp307_ = _tmp306_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp304_, _tmp307_);
	_g_free0 (_tmp307_);
	_tmp308_ = file_data;
	_tmp309_ = cl;
	_tmp310_ = valadoc_api_class_get_class_type_macro_name (_tmp309_);
	_tmp311_ = _tmp310_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp308_, _tmp311_);
	_g_free0 (_tmp311_);
	_tmp312_ = file_data;
	_tmp313_ = cl;
	_tmp314_ = valadoc_api_class_get_class_macro_name (_tmp313_);
	_tmp315_ = _tmp314_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp312_, _tmp315_);
	_g_free0 (_tmp315_);
	_tmp316_ = file_data;
	_tmp317_ = cl;
	_tmp318_ = valadoc_api_typesymbol_get_type_function_name ((ValadocApiTypeSymbol*) _tmp317_);
	_tmp319_ = _tmp318_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp316_, _tmp319_);
	_g_free0 (_tmp319_);
	_tmp320_ = file_data;
	_tmp321_ = cl;
	_tmp322_ = valadoc_api_class_get_private_cname (_tmp321_);
	_tmp323_ = _tmp322_;
	gtkdoc_generator_file_data_register_private_section_line (_tmp320_, _tmp323_);
	_g_free0 (_tmp323_);
	_tmp325_ = cl;
	_tmp326_ = valadoc_api_node_get_nspace ((ValadocApiNode*) _tmp325_);
	_tmp327_ = _tmp326_;
	_tmp328_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp327_);
	_tmp329_ = _tmp328_;
	if (_tmp329_ != NULL) {
		ValadocApiClass* _tmp330_;
		ValadocApiNamespace* _tmp331_;
		ValadocApiNamespace* _tmp332_;
		const gchar* _tmp333_;
		const gchar* _tmp334_;
		gchar* _tmp335_;
		gchar* _tmp336_;
		gchar* _tmp337_;
		_tmp330_ = cl;
		_tmp331_ = valadoc_api_node_get_nspace ((ValadocApiNode*) _tmp330_);
		_tmp332_ = _tmp331_;
		_tmp333_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp332_);
		_tmp334_ = _tmp333_;
		_tmp335_ = g_utf8_strdown (_tmp334_, (gssize) -1);
		_tmp336_ = _tmp335_;
		_tmp337_ = g_strconcat (_tmp336_, "_", NULL);
		_g_free0 (_tmp324_);
		_tmp324_ = _tmp337_;
		_g_free0 (_tmp336_);
	} else {
		gchar* _tmp338_;
		_tmp338_ = g_strdup ("");
		_g_free0 (_tmp324_);
		_tmp324_ = _tmp338_;
	}
	_tmp339_ = file_data;
	_tmp340_ = cl;
	_tmp341_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp340_);
	_tmp342_ = _tmp341_;
	_tmp343_ = gtkdoc_to_lower_case (_tmp342_);
	_tmp344_ = _tmp343_;
	_tmp345_ = g_strconcat (_tmp324_, _tmp344_, NULL);
	_tmp346_ = _tmp345_;
	_tmp347_ = g_strconcat (_tmp346_, "_construct", NULL);
	_tmp348_ = _tmp347_;
	gtkdoc_generator_file_data_register_private_section_line (_tmp339_, _tmp348_);
	_g_free0 (_tmp348_);
	_g_free0 (_tmp346_);
	_g_free0 (_tmp344_);
	_tmp349_ = old_cname;
	_tmp350_ = g_strdup (_tmp349_);
	_g_free0 (self->priv->current_cname);
	self->priv->current_cname = _tmp350_;
	_tmp351_ = old_headers;
	_tmp352_ = _vala_iterable_ref0 (_tmp351_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp352_;
	_tmp353_ = old_class;
	_tmp354_ = _g_object_ref0 (_tmp353_);
	_g_object_unref0 (self->priv->current_class);
	self->priv->current_class = _tmp354_;
	_tmp355_ = old_dbus_interface;
	_tmp356_ = _gtkdoc_dbus_interface_ref0 (_tmp355_);
	_gtkdoc_dbus_interface_unref0 (self->priv->current_dbus_interface);
	self->priv->current_dbus_interface = _tmp356_;
	_g_free0 (_tmp324_);
	_gtkdoc_generator_file_data_unref0 (file_data);
	_vala_iterable_unref0 (abstract_properties);
	_vala_iterable_unref0 (abstract_methods);
	_gtkdoc_gcomment_unref0 (gcomment);
	_gtkdoc_dbus_interface_unref0 (old_dbus_interface);
	_g_object_unref0 (old_class);
	_vala_iterable_unref0 (old_headers);
	_g_free0 (old_cname);
}


static void _vala_array_add19 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static gchar** _vala_array_dup9 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static gchar** gtkdoc_generator_create_see_function_array (GtkdocGenerator* self, gchar** functions, int functions_length1, int* result_length1) {
	gchar** result = NULL;
	gchar** arr = NULL;
	gchar** _tmp0_;
	gint arr_length1;
	gint _arr_size_;
	gchar** _tmp1_;
	gint _tmp1__length1;
	gchar** _tmp7_ = NULL;
	gint _tmp7__length1 = 0;
	gint __tmp7__size_ = 0;
	gchar** _tmp8_;
	gint _tmp8__length1;
	gchar** _tmp10_;
	gint _tmp10__length1;
	gchar** _tmp11_;
	gint _tmp11__length1;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_new0 (gchar*, 0 + 1);
	arr = _tmp0_;
	arr_length1 = 0;
	_arr_size_ = arr_length1;
	_tmp1_ = functions;
	_tmp1__length1 = functions_length1;
	{
		gchar** func_collection = NULL;
		gint func_collection_length1 = 0;
		gint _func_collection_size_ = 0;
		gint func_it = 0;
		func_collection = _tmp1_;
		func_collection_length1 = _tmp1__length1;
		for (func_it = 0; func_it < _tmp1__length1; func_it = func_it + 1) {
			gchar* _tmp2_;
			gchar* func = NULL;
			_tmp2_ = g_strdup (func_collection[func_it]);
			func = _tmp2_;
			{
				const gchar* _tmp3_;
				_tmp3_ = func;
				if (_tmp3_ != NULL) {
					gchar** _tmp4_;
					gint _tmp4__length1;
					const gchar* _tmp5_;
					gchar* _tmp6_;
					_tmp4_ = arr;
					_tmp4__length1 = arr_length1;
					_tmp5_ = func;
					_tmp6_ = g_strconcat (_tmp5_, "()", NULL);
					_vala_array_add19 (&arr, &arr_length1, &_arr_size_, _tmp6_);
				}
				_g_free0 (func);
			}
		}
	}
	_tmp8_ = arr;
	_tmp8__length1 = arr_length1;
	if (_tmp8__length1 > 0) {
		gchar** _tmp9_;
		gint _tmp9__length1;
		_tmp9_ = arr;
		_tmp9__length1 = arr_length1;
		_tmp7_ = _tmp9_;
		_tmp7__length1 = _tmp9__length1;
		__tmp7__size_ = _tmp7__length1;
	} else {
		_tmp7_ = NULL;
		_tmp7__length1 = 0;
		__tmp7__size_ = _tmp7__length1;
	}
	_tmp10_ = (_tmp7_ != NULL) ? _vala_array_dup9 (_tmp7_, _tmp7__length1) : ((gpointer) _tmp7_);
	_tmp10__length1 = _tmp7__length1;
	_tmp11_ = _tmp10_;
	_tmp11__length1 = _tmp10__length1;
	if (result_length1) {
		*result_length1 = _tmp11__length1;
	}
	result = _tmp11_;
	arr = (_vala_array_free (arr, arr_length1, (GDestroyNotify) g_free), NULL);
	return result;
}


static void gtkdoc_generator_real_visit_struct (ValadocApiVisitor* base, ValadocApiStruct* st) {
	GtkdocGenerator * self;
	gchar* old_cname = NULL;
	const gchar* _tmp0_;
	gchar* _tmp1_;
	ValaList* old_headers = NULL;
	ValaList* _tmp2_;
	ValaList* _tmp3_;
	ValadocApiStruct* _tmp4_;
	gchar* _tmp5_;
	GEqualFunc _tmp6_;
	ValaArrayList* _tmp7_;
	ValadocApiStruct* _tmp8_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiStruct* _tmp9_;
	gchar* _tmp10_;
	gchar* _tmp11_;
	ValadocApiStruct* _tmp12_;
	gchar* _tmp13_;
	gchar* _tmp14_;
	ValadocApiStruct* _tmp15_;
	ValadocContentComment* _tmp16_;
	ValadocContentComment* _tmp17_;
	GtkdocGComment* _tmp18_;
	GtkdocGComment* _tmp19_;
	ValadocApiStruct* _tmp20_;
	GtkdocGComment* _tmp21_;
	const gchar* _tmp22_;
	gchar* _tmp23_;
	ValaList* _tmp24_;
	ValaList* _tmp25_;
	GtkdocGeneratorFileData* file_data = NULL;
	ValadocApiStruct* _tmp26_;
	gchar* _tmp27_;
	gchar* _tmp28_;
	GtkdocGeneratorFileData* _tmp29_;
	GtkdocGeneratorFileData* _tmp30_;
	GtkdocGeneratorFileData* _tmp31_;
	ValadocApiStruct* _tmp32_;
	gchar* _tmp33_;
	gchar* _tmp34_;
	GtkdocGeneratorFileData* _tmp35_;
	ValadocApiStruct* _tmp36_;
	gchar* _tmp37_;
	gchar* _tmp38_;
	gchar* dup_function_cname = NULL;
	ValadocApiStruct* _tmp39_;
	gchar* _tmp40_;
	gchar* free_function_cname = NULL;
	ValadocApiStruct* _tmp41_;
	gchar* _tmp42_;
	gchar* copy_function_cname = NULL;
	ValadocApiStruct* _tmp43_;
	gchar* _tmp44_;
	gchar* destroy_function_cname = NULL;
	ValadocApiStruct* _tmp45_;
	gchar* _tmp46_;
	const gchar* _tmp47_;
	const gchar* _tmp77_;
	const gchar* _tmp101_;
	const gchar* _tmp137_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (st != NULL);
	_tmp0_ = self->priv->current_cname;
	_tmp1_ = g_strdup (_tmp0_);
	old_cname = _tmp1_;
	_tmp2_ = self->priv->current_headers;
	_tmp3_ = _vala_iterable_ref0 (_tmp2_);
	old_headers = _tmp3_;
	_tmp4_ = st;
	_tmp5_ = valadoc_api_struct_get_cname (_tmp4_);
	_g_free0 (self->priv->current_cname);
	self->priv->current_cname = _tmp5_;
	_tmp6_ = g_direct_equal;
	_tmp7_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp6_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp7_;
	_tmp8_ = st;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp8_, (ValadocApiVisitor*) self, TRUE);
	_tmp9_ = st;
	_tmp10_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = st;
	_tmp13_ = valadoc_api_struct_get_cname (_tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = st;
	_tmp16_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp15_);
	_tmp17_ = _tmp16_;
	_tmp18_ = gtkdoc_generator_add_symbol (self, _tmp11_, _tmp14_, _tmp17_, NULL, NULL, 0);
	_tmp19_ = _tmp18_;
	_g_free0 (_tmp14_);
	_g_free0 (_tmp11_);
	gcomment = _tmp19_;
	_tmp20_ = st;
	_tmp21_ = gcomment;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp20_, _tmp21_);
	_tmp22_ = old_cname;
	_tmp23_ = g_strdup (_tmp22_);
	_g_free0 (self->priv->current_cname);
	self->priv->current_cname = _tmp23_;
	_tmp24_ = old_headers;
	_tmp25_ = _vala_iterable_ref0 (_tmp24_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp25_;
	_tmp26_ = st;
	_tmp27_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp26_);
	_tmp28_ = _tmp27_;
	_tmp29_ = gtkdoc_generator_get_file_data (self, _tmp28_);
	_tmp30_ = _tmp29_;
	_g_free0 (_tmp28_);
	file_data = _tmp30_;
	_tmp31_ = file_data;
	_tmp32_ = st;
	_tmp33_ = valadoc_api_typesymbol_get_type_macro_name ((ValadocApiTypeSymbol*) _tmp32_);
	_tmp34_ = _tmp33_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp31_, _tmp34_);
	_g_free0 (_tmp34_);
	_tmp35_ = file_data;
	_tmp36_ = st;
	_tmp37_ = valadoc_api_typesymbol_get_type_function_name ((ValadocApiTypeSymbol*) _tmp36_);
	_tmp38_ = _tmp37_;
	gtkdoc_generator_file_data_register_standard_section_line (_tmp35_, _tmp38_);
	_g_free0 (_tmp38_);
	_tmp39_ = st;
	_tmp40_ = valadoc_api_struct_get_dup_function_cname (_tmp39_);
	dup_function_cname = _tmp40_;
	_tmp41_ = st;
	_tmp42_ = valadoc_api_struct_get_free_function_cname (_tmp41_);
	free_function_cname = _tmp42_;
	_tmp43_ = st;
	_tmp44_ = valadoc_api_struct_get_copy_function_cname (_tmp43_);
	copy_function_cname = _tmp44_;
	_tmp45_ = st;
	_tmp46_ = valadoc_api_struct_get_destroy_function_cname (_tmp45_);
	destroy_function_cname = _tmp46_;
	_tmp47_ = dup_function_cname;
	if (_tmp47_ != NULL) {
		GtkdocGComment* dup_gcomment = NULL;
		ValadocApiStruct* _tmp48_;
		gchar* _tmp49_;
		gchar* _tmp50_;
		const gchar* _tmp51_;
		GtkdocGComment* _tmp52_;
		GtkdocGComment* _tmp53_;
		GtkdocGComment* _tmp54_;
		ValaList* _tmp55_;
		GtkdocHeader* _tmp56_;
		GtkdocHeader* _tmp57_;
		const gchar* _tmp58_;
		GtkdocGComment* _tmp64_;
		gchar* _tmp65_;
		GtkdocGComment* _tmp66_;
		const gchar* _tmp67_;
		gchar* _tmp68_;
		const gchar* _tmp69_;
		gchar* _tmp70_;
		const gchar* _tmp71_;
		gchar* _tmp72_;
		gchar** _tmp73_;
		gchar** _tmp74_;
		gint _tmp74__length1;
		gint _tmp75_;
		gchar** _tmp76_;
		_tmp48_ = st;
		_tmp49_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp48_);
		_tmp50_ = _tmp49_;
		_tmp51_ = dup_function_cname;
		_tmp52_ = gtkdoc_generator_add_symbol (self, _tmp50_, _tmp51_, NULL, NULL, NULL, 0);
		_tmp53_ = _tmp52_;
		_g_free0 (_tmp50_);
		dup_gcomment = _tmp53_;
		_tmp54_ = dup_gcomment;
		_tmp55_ = _tmp54_->headers;
		_tmp56_ = gtkdoc_header_new ("self", "the instance to duplicate", DBL_MAX, TRUE);
		_tmp57_ = _tmp56_;
		vala_collection_add ((ValaCollection*) _tmp55_, _tmp57_);
		_gtkdoc_header_unref0 (_tmp57_);
		_tmp58_ = free_function_cname;
		if (_tmp58_ != NULL) {
			GtkdocGComment* _tmp59_;
			const gchar* _tmp60_;
			gchar* _tmp61_;
			_tmp59_ = dup_gcomment;
			_tmp60_ = free_function_cname;
			_tmp61_ = g_strdup_printf ("a copy of @self, free with %s()", _tmp60_);
			_g_free0 (_tmp59_->returns);
			_tmp59_->returns = _tmp61_;
		} else {
			GtkdocGComment* _tmp62_;
			gchar* _tmp63_;
			_tmp62_ = dup_gcomment;
			_tmp63_ = g_strdup ("a copy of @self");
			_g_free0 (_tmp62_->returns);
			_tmp62_->returns = _tmp63_;
		}
		_tmp64_ = dup_gcomment;
		_tmp65_ = g_strdup ("Creates a copy of self.");
		_g_free0 (_tmp64_->brief_comment);
		_tmp64_->brief_comment = _tmp65_;
		_tmp66_ = dup_gcomment;
		_tmp67_ = copy_function_cname;
		_tmp68_ = g_strdup (_tmp67_);
		_tmp69_ = destroy_function_cname;
		_tmp70_ = g_strdup (_tmp69_);
		_tmp71_ = free_function_cname;
		_tmp72_ = g_strdup (_tmp71_);
		_tmp73_ = g_new0 (gchar*, 3 + 1);
		_tmp73_[0] = _tmp68_;
		_tmp73_[1] = _tmp70_;
		_tmp73_[2] = _tmp72_;
		_tmp74_ = _tmp73_;
		_tmp74__length1 = 3;
		_tmp76_ = gtkdoc_generator_create_see_function_array (self, _tmp74_, 3, &_tmp75_);
		_tmp66_->see_also = (_vala_array_free (_tmp66_->see_also, _tmp66_->see_also_length1, (GDestroyNotify) g_free), NULL);
		_tmp66_->see_also = _tmp76_;
		_tmp66_->see_also_length1 = _tmp75_;
		_tmp74_ = (_vala_array_free (_tmp74_, _tmp74__length1, (GDestroyNotify) g_free), NULL);
		_gtkdoc_gcomment_unref0 (dup_gcomment);
	}
	_tmp77_ = free_function_cname;
	if (_tmp77_ != NULL) {
		GtkdocGComment* free_gcomment = NULL;
		ValadocApiStruct* _tmp78_;
		gchar* _tmp79_;
		gchar* _tmp80_;
		const gchar* _tmp81_;
		GtkdocGComment* _tmp82_;
		GtkdocGComment* _tmp83_;
		GtkdocGComment* _tmp84_;
		ValaList* _tmp85_;
		GtkdocHeader* _tmp86_;
		GtkdocHeader* _tmp87_;
		GtkdocGComment* _tmp88_;
		gchar* _tmp89_;
		GtkdocGComment* _tmp90_;
		const gchar* _tmp91_;
		gchar* _tmp92_;
		const gchar* _tmp93_;
		gchar* _tmp94_;
		const gchar* _tmp95_;
		gchar* _tmp96_;
		gchar** _tmp97_;
		gchar** _tmp98_;
		gint _tmp98__length1;
		gint _tmp99_;
		gchar** _tmp100_;
		_tmp78_ = st;
		_tmp79_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp78_);
		_tmp80_ = _tmp79_;
		_tmp81_ = free_function_cname;
		_tmp82_ = gtkdoc_generator_add_symbol (self, _tmp80_, _tmp81_, NULL, NULL, NULL, 0);
		_tmp83_ = _tmp82_;
		_g_free0 (_tmp80_);
		free_gcomment = _tmp83_;
		_tmp84_ = free_gcomment;
		_tmp85_ = _tmp84_->headers;
		_tmp86_ = gtkdoc_header_new ("self", "the struct to free", DBL_MAX, TRUE);
		_tmp87_ = _tmp86_;
		vala_collection_add ((ValaCollection*) _tmp85_, _tmp87_);
		_gtkdoc_header_unref0 (_tmp87_);
		_tmp88_ = free_gcomment;
		_tmp89_ = g_strdup ("Frees the heap-allocated struct.");
		_g_free0 (_tmp88_->brief_comment);
		_tmp88_->brief_comment = _tmp89_;
		_tmp90_ = free_gcomment;
		_tmp91_ = dup_function_cname;
		_tmp92_ = g_strdup (_tmp91_);
		_tmp93_ = copy_function_cname;
		_tmp94_ = g_strdup (_tmp93_);
		_tmp95_ = destroy_function_cname;
		_tmp96_ = g_strdup (_tmp95_);
		_tmp97_ = g_new0 (gchar*, 3 + 1);
		_tmp97_[0] = _tmp92_;
		_tmp97_[1] = _tmp94_;
		_tmp97_[2] = _tmp96_;
		_tmp98_ = _tmp97_;
		_tmp98__length1 = 3;
		_tmp100_ = gtkdoc_generator_create_see_function_array (self, _tmp98_, 3, &_tmp99_);
		_tmp90_->see_also = (_vala_array_free (_tmp90_->see_also, _tmp90_->see_also_length1, (GDestroyNotify) g_free), NULL);
		_tmp90_->see_also = _tmp100_;
		_tmp90_->see_also_length1 = _tmp99_;
		_tmp98_ = (_vala_array_free (_tmp98_, _tmp98__length1, (GDestroyNotify) g_free), NULL);
		_gtkdoc_gcomment_unref0 (free_gcomment);
	}
	_tmp101_ = copy_function_cname;
	if (_tmp101_ != NULL) {
		GtkdocGComment* copy_gcomment = NULL;
		ValadocApiStruct* _tmp102_;
		gchar* _tmp103_;
		gchar* _tmp104_;
		const gchar* _tmp105_;
		GtkdocGComment* _tmp106_;
		GtkdocGComment* _tmp107_;
		GtkdocGComment* _tmp108_;
		ValaList* _tmp109_;
		GtkdocHeader* _tmp110_;
		GtkdocHeader* _tmp111_;
		const gchar* _tmp112_;
		GtkdocGComment* _tmp124_;
		gchar* _tmp125_;
		GtkdocGComment* _tmp126_;
		const gchar* _tmp127_;
		gchar* _tmp128_;
		const gchar* _tmp129_;
		gchar* _tmp130_;
		const gchar* _tmp131_;
		gchar* _tmp132_;
		gchar** _tmp133_;
		gchar** _tmp134_;
		gint _tmp134__length1;
		gint _tmp135_;
		gchar** _tmp136_;
		_tmp102_ = st;
		_tmp103_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp102_);
		_tmp104_ = _tmp103_;
		_tmp105_ = copy_function_cname;
		_tmp106_ = gtkdoc_generator_add_symbol (self, _tmp104_, _tmp105_, NULL, NULL, NULL, 0);
		_tmp107_ = _tmp106_;
		_g_free0 (_tmp104_);
		copy_gcomment = _tmp107_;
		_tmp108_ = copy_gcomment;
		_tmp109_ = _tmp108_->headers;
		_tmp110_ = gtkdoc_header_new ("self", "the struct to copy", DBL_MAX, TRUE);
		_tmp111_ = _tmp110_;
		vala_collection_add ((ValaCollection*) _tmp109_, _tmp111_);
		_gtkdoc_header_unref0 (_tmp111_);
		_tmp112_ = destroy_function_cname;
		if (_tmp112_ != NULL) {
			GtkdocGComment* _tmp113_;
			ValaList* _tmp114_;
			const gchar* _tmp115_;
			gchar* _tmp116_;
			gchar* _tmp117_;
			GtkdocHeader* _tmp118_;
			GtkdocHeader* _tmp119_;
			_tmp113_ = copy_gcomment;
			_tmp114_ = _tmp113_->headers;
			_tmp115_ = destroy_function_cname;
			_tmp116_ = g_strdup_printf ("a unused struct. Use %s() to free the content.", _tmp115_);
			_tmp117_ = _tmp116_;
			_tmp118_ = gtkdoc_header_new ("dest", _tmp117_, DBL_MAX, TRUE);
			_tmp119_ = _tmp118_;
			vala_collection_add ((ValaCollection*) _tmp114_, _tmp119_);
			_gtkdoc_header_unref0 (_tmp119_);
			_g_free0 (_tmp117_);
		} else {
			GtkdocGComment* _tmp120_;
			ValaList* _tmp121_;
			GtkdocHeader* _tmp122_;
			GtkdocHeader* _tmp123_;
			_tmp120_ = copy_gcomment;
			_tmp121_ = _tmp120_->headers;
			_tmp122_ = gtkdoc_header_new ("dest", "a unused struct.", DBL_MAX, TRUE);
			_tmp123_ = _tmp122_;
			vala_collection_add ((ValaCollection*) _tmp121_, _tmp123_);
			_gtkdoc_header_unref0 (_tmp123_);
		}
		_tmp124_ = copy_gcomment;
		_tmp125_ = g_strdup ("Creates a copy of self.");
		_g_free0 (_tmp124_->brief_comment);
		_tmp124_->brief_comment = _tmp125_;
		_tmp126_ = copy_gcomment;
		_tmp127_ = dup_function_cname;
		_tmp128_ = g_strdup (_tmp127_);
		_tmp129_ = destroy_function_cname;
		_tmp130_ = g_strdup (_tmp129_);
		_tmp131_ = free_function_cname;
		_tmp132_ = g_strdup (_tmp131_);
		_tmp133_ = g_new0 (gchar*, 3 + 1);
		_tmp133_[0] = _tmp128_;
		_tmp133_[1] = _tmp130_;
		_tmp133_[2] = _tmp132_;
		_tmp134_ = _tmp133_;
		_tmp134__length1 = 3;
		_tmp136_ = gtkdoc_generator_create_see_function_array (self, _tmp134_, 3, &_tmp135_);
		_tmp126_->see_also = (_vala_array_free (_tmp126_->see_also, _tmp126_->see_also_length1, (GDestroyNotify) g_free), NULL);
		_tmp126_->see_also = _tmp136_;
		_tmp126_->see_also_length1 = _tmp135_;
		_tmp134_ = (_vala_array_free (_tmp134_, _tmp134__length1, (GDestroyNotify) g_free), NULL);
		_gtkdoc_gcomment_unref0 (copy_gcomment);
	}
	_tmp137_ = destroy_function_cname;
	if (_tmp137_ != NULL) {
		GtkdocGComment* destroy_gcomment = NULL;
		ValadocApiStruct* _tmp138_;
		gchar* _tmp139_;
		gchar* _tmp140_;
		const gchar* _tmp141_;
		GtkdocGComment* _tmp142_;
		GtkdocGComment* _tmp143_;
		GtkdocGComment* _tmp144_;
		ValaList* _tmp145_;
		GtkdocHeader* _tmp146_;
		GtkdocHeader* _tmp147_;
		GtkdocGComment* _tmp148_;
		gchar* _tmp149_;
		GtkdocGComment* _tmp150_;
		const gchar* _tmp151_;
		gchar* _tmp152_;
		const gchar* _tmp153_;
		gchar* _tmp154_;
		const gchar* _tmp155_;
		gchar* _tmp156_;
		gchar** _tmp157_;
		gchar** _tmp158_;
		gint _tmp158__length1;
		gint _tmp159_;
		gchar** _tmp160_;
		_tmp138_ = st;
		_tmp139_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp138_);
		_tmp140_ = _tmp139_;
		_tmp141_ = destroy_function_cname;
		_tmp142_ = gtkdoc_generator_add_symbol (self, _tmp140_, _tmp141_, NULL, NULL, NULL, 0);
		_tmp143_ = _tmp142_;
		_g_free0 (_tmp140_);
		destroy_gcomment = _tmp143_;
		_tmp144_ = destroy_gcomment;
		_tmp145_ = _tmp144_->headers;
		_tmp146_ = gtkdoc_header_new ("self", "the struct to destroy", DBL_MAX, TRUE);
		_tmp147_ = _tmp146_;
		vala_collection_add ((ValaCollection*) _tmp145_, _tmp147_);
		_gtkdoc_header_unref0 (_tmp147_);
		_tmp148_ = destroy_gcomment;
		_tmp149_ = g_strdup ("Frees the content of the struct pointed by @self.");
		_g_free0 (_tmp148_->brief_comment);
		_tmp148_->brief_comment = _tmp149_;
		_tmp150_ = destroy_gcomment;
		_tmp151_ = dup_function_cname;
		_tmp152_ = g_strdup (_tmp151_);
		_tmp153_ = copy_function_cname;
		_tmp154_ = g_strdup (_tmp153_);
		_tmp155_ = free_function_cname;
		_tmp156_ = g_strdup (_tmp155_);
		_tmp157_ = g_new0 (gchar*, 3 + 1);
		_tmp157_[0] = _tmp152_;
		_tmp157_[1] = _tmp154_;
		_tmp157_[2] = _tmp156_;
		_tmp158_ = _tmp157_;
		_tmp158__length1 = 3;
		_tmp160_ = gtkdoc_generator_create_see_function_array (self, _tmp158_, 3, &_tmp159_);
		_tmp150_->see_also = (_vala_array_free (_tmp150_->see_also, _tmp150_->see_also_length1, (GDestroyNotify) g_free), NULL);
		_tmp150_->see_also = _tmp160_;
		_tmp150_->see_also_length1 = _tmp159_;
		_tmp158_ = (_vala_array_free (_tmp158_, _tmp158__length1, (GDestroyNotify) g_free), NULL);
		_gtkdoc_gcomment_unref0 (destroy_gcomment);
	}
	_g_free0 (destroy_function_cname);
	_g_free0 (copy_function_cname);
	_g_free0 (free_function_cname);
	_g_free0 (dup_function_cname);
	_gtkdoc_generator_file_data_unref0 (file_data);
	_gtkdoc_gcomment_unref0 (gcomment);
	_vala_iterable_unref0 (old_headers);
	_g_free0 (old_cname);
}


/**
 * Visit thrown error domains
 */
static void gtkdoc_generator_visit_thrown_error_domain (GtkdocGenerator* self, ValadocApiNode* _error_) {
	GtkdocHeader* param_header = NULL;
	ValadocApiErrorDomain* edomain = NULL;
	ValadocApiNode* _tmp15_;
	ValadocApiErrorDomain* _tmp16_;
	ValadocApiErrorDomain* _tmp17_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (_error_ != NULL);
	param_header = NULL;
	{
		ValaList* _header_list = NULL;
		ValaList* _tmp0_;
		ValaList* _tmp1_;
		gint _header_size = 0;
		ValaList* _tmp2_;
		gint _tmp3_;
		gint _tmp4_;
		gint _header_index = 0;
		_tmp0_ = self->priv->current_headers;
		_tmp1_ = _vala_iterable_ref0 (_tmp0_);
		_header_list = _tmp1_;
		_tmp2_ = _header_list;
		_tmp3_ = vala_collection_get_size ((ValaCollection*) _tmp2_);
		_tmp4_ = _tmp3_;
		_header_size = _tmp4_;
		_header_index = -1;
		while (TRUE) {
			gint _tmp5_;
			gint _tmp6_;
			gint _tmp7_;
			GtkdocHeader* header = NULL;
			ValaList* _tmp8_;
			gint _tmp9_;
			gpointer _tmp10_;
			GtkdocHeader* _tmp11_;
			const gchar* _tmp12_;
			_tmp5_ = _header_index;
			_header_index = _tmp5_ + 1;
			_tmp6_ = _header_index;
			_tmp7_ = _header_size;
			if (!(_tmp6_ < _tmp7_)) {
				break;
			}
			_tmp8_ = _header_list;
			_tmp9_ = _header_index;
			_tmp10_ = vala_list_get (_tmp8_, _tmp9_);
			header = (GtkdocHeader*) _tmp10_;
			_tmp11_ = header;
			_tmp12_ = _tmp11_->name;
			if (g_strcmp0 (_tmp12_, "error") == 0) {
				GtkdocHeader* _tmp13_;
				GtkdocHeader* _tmp14_;
				_tmp13_ = header;
				_tmp14_ = _gtkdoc_header_ref0 (_tmp13_);
				_gtkdoc_header_unref0 (param_header);
				param_header = _tmp14_;
				_gtkdoc_header_unref0 (header);
				break;
			}
			_gtkdoc_header_unref0 (header);
		}
		_vala_iterable_unref0 (_header_list);
	}
	_tmp15_ = _error_;
	_tmp16_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp15_, VALADOC_API_TYPE_ERROR_DOMAIN) ? ((ValadocApiErrorDomain*) _tmp15_) : NULL);
	edomain = _tmp16_;
	_tmp17_ = edomain;
	if (_tmp17_ != NULL) {
		GtkdocHeader* _tmp18_;
		_tmp18_ = param_header;
		if (_tmp18_ == NULL) {
			ValadocApiErrorDomain* _tmp19_;
			gchar* _tmp20_;
			gchar* _tmp21_;
			gchar* _tmp22_;
			gchar** _tmp23_;
			gchar** _tmp24_;
			gint _tmp24__length1;
			GtkdocHeader* _tmp25_;
			GtkdocHeader* _tmp26_;
			_tmp19_ = edomain;
			_tmp20_ = valadoc_api_error_domain_get_cname (_tmp19_);
			_tmp21_ = _tmp20_;
			_tmp22_ = g_strdup_printf ("error-domains %s", _tmp21_);
			_tmp23_ = g_new0 (gchar*, 1 + 1);
			_tmp23_[0] = _tmp22_;
			_tmp24_ = _tmp23_;
			_tmp24__length1 = 1;
			_tmp25_ = gtkdoc_generator_add_custom_header (self, "error", "location to store the error occuring, or %NULL to ignore", _tmp24_, 1, DBL_MAX - 1, TRUE);
			_tmp26_ = _tmp25_;
			_gtkdoc_header_unref0 (_tmp26_);
			_tmp24_ = (_vala_array_free (_tmp24_, _tmp24__length1, (GDestroyNotify) g_free), NULL);
			_g_free0 (_tmp21_);
		} else {
			gchar* annotation = NULL;
			GtkdocHeader* _tmp27_;
			gchar** _tmp28_;
			gint _tmp28__length1;
			const gchar* _tmp29_;
			gchar* _tmp30_;
			const gchar* _tmp31_;
			ValadocApiErrorDomain* _tmp32_;
			gchar* _tmp33_;
			gchar* _tmp34_;
			gchar* _tmp35_;
			gchar* _tmp36_;
			gchar* _tmp37_;
			GtkdocHeader* _tmp38_;
			gchar** _tmp39_;
			gint _tmp39__length1;
			const gchar* _tmp40_;
			gchar* _tmp41_;
			gchar* _tmp42_;
			_tmp27_ = param_header;
			_tmp28_ = _tmp27_->annotations;
			_tmp28__length1 = _tmp27_->annotations_length1;
			_tmp29_ = _tmp28_[0];
			_tmp30_ = g_strdup (_tmp29_);
			annotation = _tmp30_;
			_tmp31_ = annotation;
			_tmp32_ = edomain;
			_tmp33_ = valadoc_api_error_domain_get_cname (_tmp32_);
			_tmp34_ = _tmp33_;
			_tmp35_ = g_strdup_printf (" %s", _tmp34_);
			_tmp36_ = _tmp35_;
			_tmp37_ = g_strconcat (_tmp31_, _tmp36_, NULL);
			_g_free0 (annotation);
			annotation = _tmp37_;
			_g_free0 (_tmp36_);
			_g_free0 (_tmp34_);
			_tmp38_ = param_header;
			_tmp39_ = _tmp38_->annotations;
			_tmp39__length1 = _tmp38_->annotations_length1;
			_tmp40_ = annotation;
			_tmp41_ = g_strdup (_tmp40_);
			_g_free0 (_tmp39_[0]);
			_tmp39_[0] = _tmp41_;
			_tmp42_ = _tmp39_[0];
			_g_free0 (annotation);
		}
	} else {
		GtkdocHeader* _tmp43_;
		_tmp43_ = param_header;
		if (_tmp43_ == NULL) {
			GtkdocHeader* _tmp44_;
			GtkdocHeader* _tmp45_;
			_tmp44_ = gtkdoc_generator_add_custom_header (self, "error", "location to store the error occuring, or %NULL to ignore", NULL, 0, DBL_MAX - 1, TRUE);
			_tmp45_ = _tmp44_;
			_gtkdoc_header_unref0 (_tmp45_);
		}
	}
	_g_object_unref0 (edomain);
	_gtkdoc_header_unref0 (param_header);
}


/**
 * Visit error domain definitions
 */
static void gtkdoc_generator_real_visit_error_domain (ValadocApiVisitor* base, ValadocApiErrorDomain* edomain) {
	GtkdocGenerator * self;
	ValaList* old_headers = NULL;
	ValaList* _tmp0_;
	ValaList* _tmp1_;
	GEqualFunc _tmp2_;
	ValaArrayList* _tmp3_;
	ValadocApiErrorDomain* _tmp4_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiErrorDomain* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	ValadocApiErrorDomain* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	ValadocApiErrorDomain* _tmp11_;
	ValadocContentComment* _tmp12_;
	ValadocContentComment* _tmp13_;
	GtkdocGComment* _tmp14_;
	GtkdocGComment* _tmp15_;
	ValadocApiErrorDomain* _tmp16_;
	GtkdocGeneratorFileData* file_data = NULL;
	ValadocApiErrorDomain* _tmp17_;
	gchar* _tmp18_;
	gchar* _tmp19_;
	GtkdocGeneratorFileData* _tmp20_;
	GtkdocGeneratorFileData* _tmp21_;
	ValadocApiErrorDomain* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	ValadocApiErrorDomain* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	ValaList* _tmp28_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (edomain != NULL);
	_tmp0_ = self->priv->current_headers;
	_tmp1_ = _vala_iterable_ref0 (_tmp0_);
	old_headers = _tmp1_;
	_tmp2_ = g_direct_equal;
	_tmp3_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp2_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp3_;
	_tmp4_ = edomain;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp4_, (ValadocApiVisitor*) self, TRUE);
	_tmp5_ = edomain;
	_tmp6_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = edomain;
	_tmp9_ = valadoc_api_error_domain_get_cname (_tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = edomain;
	_tmp12_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = gtkdoc_generator_add_symbol (self, _tmp7_, _tmp10_, _tmp13_, NULL, NULL, 0);
	_tmp15_ = _tmp14_;
	_g_free0 (_tmp10_);
	_g_free0 (_tmp7_);
	gcomment = _tmp15_;
	_tmp16_ = edomain;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp16_, gcomment);
	_tmp17_ = edomain;
	_tmp18_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = gtkdoc_generator_get_file_data (self, _tmp19_);
	_tmp21_ = _tmp20_;
	_g_free0 (_tmp19_);
	file_data = _tmp21_;
	_tmp22_ = edomain;
	_tmp23_ = valadoc_api_error_domain_get_quark_function_name (_tmp22_);
	_tmp24_ = _tmp23_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp24_);
	_g_free0 (_tmp24_);
	_tmp25_ = edomain;
	_tmp26_ = valadoc_api_error_domain_get_quark_macro_name (_tmp25_);
	_tmp27_ = _tmp26_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp27_);
	_g_free0 (_tmp27_);
	_tmp28_ = _vala_iterable_ref0 (old_headers);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp28_;
	_gtkdoc_generator_file_data_unref0 (file_data);
	_gtkdoc_gcomment_unref0 (gcomment);
	_vala_iterable_unref0 (old_headers);
}


static void gtkdoc_generator_real_visit_error_code (ValadocApiVisitor* base, ValadocApiErrorCode* ecode) {
	GtkdocGenerator * self;
	ValadocApiErrorCode* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValadocApiErrorCode* _tmp3_;
	ValadocContentComment* _tmp4_;
	ValadocContentComment* _tmp5_;
	GtkdocHeader* _tmp6_;
	GtkdocHeader* _tmp7_;
	ValadocApiErrorCode* _tmp8_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (ecode != NULL);
	_tmp0_ = ecode;
	_tmp1_ = valadoc_api_error_code_get_cname (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = ecode;
	_tmp4_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = gtkdoc_generator_add_header (self, _tmp2_, _tmp5_, NULL, 0, DBL_MAX);
	_tmp7_ = _tmp6_;
	_gtkdoc_header_unref0 (_tmp7_);
	_g_free0 (_tmp2_);
	_tmp8_ = ecode;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp8_, (ValadocApiVisitor*) self, TRUE);
}


static void gtkdoc_generator_real_visit_enum (ValadocApiVisitor* base, ValadocApiEnum* en) {
	GtkdocGenerator * self;
	ValaList* old_headers = NULL;
	ValaList* _tmp0_;
	ValaList* _tmp1_;
	GEqualFunc _tmp2_;
	ValaArrayList* _tmp3_;
	ValadocApiEnum* _tmp4_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiEnum* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	ValadocApiEnum* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	ValadocApiEnum* _tmp11_;
	ValadocContentComment* _tmp12_;
	ValadocContentComment* _tmp13_;
	GtkdocGComment* _tmp14_;
	GtkdocGComment* _tmp15_;
	ValadocApiEnum* _tmp16_;
	GtkdocGeneratorFileData* file_data = NULL;
	ValadocApiEnum* _tmp17_;
	gchar* _tmp18_;
	gchar* _tmp19_;
	GtkdocGeneratorFileData* _tmp20_;
	GtkdocGeneratorFileData* _tmp21_;
	ValadocApiEnum* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	ValadocApiEnum* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	ValaList* _tmp28_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (en != NULL);
	_tmp0_ = self->priv->current_headers;
	_tmp1_ = _vala_iterable_ref0 (_tmp0_);
	old_headers = _tmp1_;
	_tmp2_ = g_direct_equal;
	_tmp3_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp2_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp3_;
	_tmp4_ = en;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp4_, (ValadocApiVisitor*) self, TRUE);
	_tmp5_ = en;
	_tmp6_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = en;
	_tmp9_ = valadoc_api_enum_get_cname (_tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = en;
	_tmp12_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = gtkdoc_generator_add_symbol (self, _tmp7_, _tmp10_, _tmp13_, NULL, NULL, 0);
	_tmp15_ = _tmp14_;
	_g_free0 (_tmp10_);
	_g_free0 (_tmp7_);
	gcomment = _tmp15_;
	_tmp16_ = en;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp16_, gcomment);
	_tmp17_ = en;
	_tmp18_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = gtkdoc_generator_get_file_data (self, _tmp19_);
	_tmp21_ = _tmp20_;
	_g_free0 (_tmp19_);
	file_data = _tmp21_;
	_tmp22_ = en;
	_tmp23_ = valadoc_api_typesymbol_get_type_macro_name ((ValadocApiTypeSymbol*) _tmp22_);
	_tmp24_ = _tmp23_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp24_);
	_g_free0 (_tmp24_);
	_tmp25_ = en;
	_tmp26_ = valadoc_api_typesymbol_get_type_function_name ((ValadocApiTypeSymbol*) _tmp25_);
	_tmp27_ = _tmp26_;
	gtkdoc_generator_file_data_register_standard_section_line (file_data, _tmp27_);
	_g_free0 (_tmp27_);
	_tmp28_ = _vala_iterable_ref0 (old_headers);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp28_;
	_gtkdoc_generator_file_data_unref0 (file_data);
	_gtkdoc_gcomment_unref0 (gcomment);
	_vala_iterable_unref0 (old_headers);
}


static void gtkdoc_generator_real_visit_enum_value (ValadocApiVisitor* base, ValadocApiEnumValue* eval) {
	GtkdocGenerator * self;
	ValadocApiEnumValue* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValadocApiEnumValue* _tmp3_;
	ValadocContentComment* _tmp4_;
	ValadocContentComment* _tmp5_;
	GtkdocHeader* _tmp6_;
	GtkdocHeader* _tmp7_;
	ValadocApiEnumValue* _tmp8_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (eval != NULL);
	_tmp0_ = eval;
	_tmp1_ = valadoc_api_enum_value_get_cname (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = eval;
	_tmp4_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = gtkdoc_generator_add_header (self, _tmp2_, _tmp5_, NULL, 0, DBL_MAX);
	_tmp7_ = _tmp6_;
	_gtkdoc_header_unref0 (_tmp7_);
	_g_free0 (_tmp2_);
	_tmp8_ = eval;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp8_, (ValadocApiVisitor*) self, TRUE);
}


static gchar* string_strip (const gchar* self) {
	gchar* result = NULL;
	gchar* _result_ = NULL;
	gchar* _tmp0_;
	const gchar* _tmp1_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_strdup (self);
	_result_ = _tmp0_;
	_tmp1_ = _result_;
	g_strstrip (_tmp1_);
	result = _result_;
	return result;
}


static gchar* gtkdoc_generator_combine_comments (GtkdocGenerator* self, const gchar* brief, const gchar* _long_) {
	gchar* result = NULL;
	GString* builder = NULL;
	GString* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp6_ = NULL;
	const gchar* _tmp7_;
	gchar* _long = NULL;
	gchar* _tmp11_;
	gboolean _tmp12_ = FALSE;
	GString* _tmp13_;
	gssize _tmp14_;
	const gchar* _tmp17_;
	GString* _tmp20_;
	gchar* _tmp21_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_string_new ("");
	builder = _tmp0_;
	_tmp1_ = brief;
	if (_tmp1_ != NULL) {
		GString* _tmp2_;
		const gchar* _tmp3_;
		gchar* _tmp4_;
		gchar* _tmp5_;
		_tmp2_ = builder;
		_tmp3_ = brief;
		_tmp4_ = string_strip (_tmp3_);
		_tmp5_ = _tmp4_;
		g_string_append (_tmp2_, _tmp5_);
		_g_free0 (_tmp5_);
	}
	_tmp7_ = _long_;
	if (_tmp7_ != NULL) {
		const gchar* _tmp8_;
		gchar* _tmp9_;
		_tmp8_ = _long_;
		_tmp9_ = string_strip (_tmp8_);
		_g_free0 (_tmp6_);
		_tmp6_ = _tmp9_;
	} else {
		gchar* _tmp10_;
		_tmp10_ = g_strdup ("");
		_g_free0 (_tmp6_);
		_tmp6_ = _tmp10_;
	}
	_tmp11_ = g_strdup (_tmp6_);
	_long = _tmp11_;
	_tmp13_ = builder;
	_tmp14_ = _tmp13_->len;
	if (_tmp14_ > ((gssize) 0)) {
		const gchar* _tmp15_;
		_tmp15_ = _long;
		_tmp12_ = g_strcmp0 (_tmp15_, "") != 0;
	} else {
		_tmp12_ = FALSE;
	}
	if (_tmp12_) {
		GString* _tmp16_;
		_tmp16_ = builder;
		g_string_append (_tmp16_, "\n\n");
	}
	_tmp17_ = _long;
	if (g_strcmp0 (_tmp17_, "") != 0) {
		GString* _tmp18_;
		const gchar* _tmp19_;
		_tmp18_ = builder;
		_tmp19_ = _long;
		g_string_append (_tmp18_, _tmp19_);
	}
	_tmp20_ = builder;
	_tmp21_ = _tmp20_->str;
	_tmp20_->str = NULL;
	result = _tmp21_;
	_g_free0 (_long);
	_g_free0 (_tmp6_);
	_g_string_free0 (builder);
	return result;
}


static void gtkdoc_generator_real_visit_property (ValadocApiVisitor* base, ValadocApiProperty* prop) {
	GtkdocGenerator * self;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	ValadocApiProperty* _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp4_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiProperty* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	const gchar* _tmp22_;
	ValadocApiProperty* _tmp23_;
	gchar* _tmp24_;
	gchar* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	ValadocApiProperty* _tmp28_;
	ValadocContentComment* _tmp29_;
	ValadocContentComment* _tmp30_;
	GtkdocGComment* _tmp31_;
	GtkdocGComment* _tmp32_;
	ValadocApiProperty* _tmp33_;
	ValadocApiTypeParameter* type_parameter = NULL;
	ValadocApiProperty* _tmp34_;
	ValadocApiTypeReference* _tmp35_;
	ValadocApiTypeReference* _tmp36_;
	ValadocApiItem* _tmp37_;
	ValadocApiItem* _tmp38_;
	ValadocApiTypeParameter* _tmp39_;
	gchar* return_type_link = NULL;
	ValadocApiTypeParameter* _tmp40_;
	ValadocApiProperty* _tmp75_;
	GtkdocGComment* _tmp76_;
	gboolean _tmp77_ = FALSE;
	gboolean _tmp78_ = FALSE;
	ValadocApiProperty* _tmp79_;
	ValadocApiPropertyAccessor* _tmp80_;
	ValadocApiPropertyAccessor* _tmp81_;
	gboolean _tmp172_ = FALSE;
	gboolean _tmp173_ = FALSE;
	ValadocApiProperty* _tmp174_;
	ValadocApiPropertyAccessor* _tmp175_;
	ValadocApiPropertyAccessor* _tmp176_;
	const gchar* _tmp270_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (prop != NULL);
	_tmp2_ = prop;
	_tmp3_ = valadoc_api_property_get_is_override (_tmp2_);
	_tmp4_ = _tmp3_;
	if (_tmp4_) {
		_tmp1_ = TRUE;
	} else {
		ValadocApiProperty* _tmp5_;
		gboolean _tmp6_;
		gboolean _tmp7_;
		_tmp5_ = prop;
		_tmp6_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp5_);
		_tmp7_ = _tmp6_;
		_tmp1_ = _tmp7_;
	}
	if (_tmp1_) {
		_tmp0_ = TRUE;
	} else {
		gboolean _tmp8_ = FALSE;
		gboolean _tmp9_ = FALSE;
		ValadocApiProperty* _tmp10_;
		gboolean _tmp11_;
		gboolean _tmp12_;
		_tmp10_ = prop;
		_tmp11_ = valadoc_api_property_get_is_abstract (_tmp10_);
		_tmp12_ = _tmp11_;
		if (!_tmp12_) {
			ValadocApiProperty* _tmp13_;
			gboolean _tmp14_;
			gboolean _tmp15_;
			_tmp13_ = prop;
			_tmp14_ = valadoc_api_property_get_is_virtual (_tmp13_);
			_tmp15_ = _tmp14_;
			_tmp9_ = !_tmp15_;
		} else {
			_tmp9_ = FALSE;
		}
		if (_tmp9_) {
			ValadocApiProperty* _tmp16_;
			ValadocApiProperty* _tmp17_;
			ValadocApiProperty* _tmp18_;
			_tmp16_ = prop;
			_tmp17_ = valadoc_api_property_get_base_property (_tmp16_);
			_tmp18_ = _tmp17_;
			_tmp8_ = _tmp18_ != NULL;
		} else {
			_tmp8_ = FALSE;
		}
		_tmp0_ = _tmp8_;
	}
	if (_tmp0_) {
		return;
	}
	_tmp19_ = prop;
	_tmp20_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp19_);
	_tmp21_ = _tmp20_;
	_tmp22_ = self->priv->current_cname;
	_tmp23_ = prop;
	_tmp24_ = valadoc_api_property_get_cname (_tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = g_strdup_printf ("%s:%s", _tmp22_, _tmp25_);
	_tmp27_ = _tmp26_;
	_tmp28_ = prop;
	_tmp29_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = gtkdoc_generator_add_comment (self, _tmp21_, _tmp27_, _tmp30_);
	_tmp32_ = _tmp31_;
	_g_free0 (_tmp27_);
	_g_free0 (_tmp25_);
	_g_free0 (_tmp21_);
	gcomment = _tmp32_;
	_tmp33_ = prop;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp33_, (ValadocApiVisitor*) self, TRUE);
	_tmp34_ = prop;
	_tmp35_ = valadoc_api_property_get_property_type (_tmp34_);
	_tmp36_ = _tmp35_;
	_tmp37_ = valadoc_api_typereference_get_data_type (_tmp36_);
	_tmp38_ = _tmp37_;
	_tmp39_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp38_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp38_) : NULL);
	type_parameter = _tmp39_;
	return_type_link = NULL;
	_tmp40_ = type_parameter;
	if (_tmp40_ != NULL) {
		ValadocApiTypeParameter* _tmp41_;
		ValadocApiItem* _tmp42_;
		ValadocApiItem* _tmp43_;
		_tmp41_ = type_parameter;
		_tmp42_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp41_);
		_tmp43_ = _tmp42_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp43_, VALADOC_API_TYPE_CLASS)) {
			ValadocApiProperty* _tmp44_;
			ValadocApiItem* _tmp45_;
			ValadocApiItem* _tmp46_;
			gchar* _tmp47_;
			gchar* _tmp48_;
			ValadocApiTypeParameter* _tmp49_;
			const gchar* _tmp50_;
			const gchar* _tmp51_;
			gchar* _tmp52_;
			gchar* _tmp53_;
			gchar* _tmp54_;
			_tmp44_ = prop;
			_tmp45_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp44_);
			_tmp46_ = _tmp45_;
			_tmp47_ = gtkdoc_get_cname (_tmp46_);
			_tmp48_ = _tmp47_;
			_tmp49_ = type_parameter;
			_tmp50_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp49_);
			_tmp51_ = _tmp50_;
			_tmp52_ = g_utf8_strdown (_tmp51_, (gssize) -1);
			_tmp53_ = _tmp52_;
			_tmp54_ = g_strdup_printf ("#%s:%s-type", _tmp48_, _tmp53_);
			_g_free0 (return_type_link);
			return_type_link = _tmp54_;
			_g_free0 (_tmp53_);
			_g_free0 (_tmp48_);
		} else {
			gboolean _tmp55_ = FALSE;
			ValadocApiTypeParameter* _tmp56_;
			ValadocApiItem* _tmp57_;
			ValadocApiItem* _tmp58_;
			_tmp56_ = type_parameter;
			_tmp57_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp56_);
			_tmp58_ = _tmp57_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp58_, VALADOC_API_TYPE_INTERFACE)) {
				ValadocApiTypeParameter* _tmp59_;
				ValadocApiItem* _tmp60_;
				ValadocApiItem* _tmp61_;
				ValadocApiAttribute* _tmp62_;
				ValadocApiAttribute* _tmp63_;
				_tmp59_ = type_parameter;
				_tmp60_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp59_);
				_tmp61_ = _tmp60_;
				_tmp62_ = valadoc_api_symbol_get_attribute (G_TYPE_CHECK_INSTANCE_CAST (_tmp61_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), "GenericAccessors");
				_tmp63_ = _tmp62_;
				_tmp55_ = _tmp63_ != NULL;
				_g_object_unref0 (_tmp63_);
			} else {
				_tmp55_ = FALSE;
			}
			if (_tmp55_) {
				ValadocApiTypeParameter* _tmp64_;
				ValadocApiItem* _tmp65_;
				ValadocApiItem* _tmp66_;
				gchar* _tmp67_;
				gchar* _tmp68_;
				ValadocApiTypeParameter* _tmp69_;
				const gchar* _tmp70_;
				const gchar* _tmp71_;
				gchar* _tmp72_;
				gchar* _tmp73_;
				gchar* _tmp74_;
				_tmp64_ = type_parameter;
				_tmp65_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp64_);
				_tmp66_ = _tmp65_;
				_tmp67_ = gtkdoc_get_cname (_tmp66_);
				_tmp68_ = _tmp67_;
				_tmp69_ = type_parameter;
				_tmp70_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp69_);
				_tmp71_ = _tmp70_;
				_tmp72_ = g_utf8_strdown (_tmp71_, (gssize) -1);
				_tmp73_ = _tmp72_;
				_tmp74_ = g_strdup_printf ("#_%sIface.get_%s_type()", _tmp68_, _tmp73_);
				_g_free0 (return_type_link);
				return_type_link = _tmp74_;
				_g_free0 (_tmp73_);
				_g_free0 (_tmp68_);
			}
		}
	}
	_tmp75_ = prop;
	_tmp76_ = gcomment;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp75_, _tmp76_);
	_tmp79_ = prop;
	_tmp80_ = valadoc_api_property_get_getter (_tmp79_);
	_tmp81_ = _tmp80_;
	if (_tmp81_ != NULL) {
		ValadocApiProperty* _tmp82_;
		ValadocApiPropertyAccessor* _tmp83_;
		ValadocApiPropertyAccessor* _tmp84_;
		gboolean _tmp85_;
		gboolean _tmp86_;
		_tmp82_ = prop;
		_tmp83_ = valadoc_api_property_get_getter (_tmp82_);
		_tmp84_ = _tmp83_;
		_tmp85_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp84_);
		_tmp86_ = _tmp85_;
		_tmp78_ = !_tmp86_;
	} else {
		_tmp78_ = FALSE;
	}
	if (_tmp78_) {
		ValadocApiProperty* _tmp87_;
		ValadocApiPropertyAccessor* _tmp88_;
		ValadocApiPropertyAccessor* _tmp89_;
		gboolean _tmp90_;
		gboolean _tmp91_;
		_tmp87_ = prop;
		_tmp88_ = valadoc_api_property_get_getter (_tmp87_);
		_tmp89_ = _tmp88_;
		_tmp90_ = valadoc_api_property_accessor_get_is_get (_tmp89_);
		_tmp91_ = _tmp90_;
		_tmp77_ = _tmp91_;
	} else {
		_tmp77_ = FALSE;
	}
	if (_tmp77_) {
		GtkdocGComment* getter_gcomment = NULL;
		ValadocApiProperty* _tmp92_;
		gchar* _tmp93_;
		gchar* _tmp94_;
		ValadocApiProperty* _tmp95_;
		ValadocApiPropertyAccessor* _tmp96_;
		ValadocApiPropertyAccessor* _tmp97_;
		gchar* _tmp98_;
		gchar* _tmp99_;
		GtkdocGComment* _tmp100_;
		GtkdocGComment* _tmp101_;
		GtkdocGComment* _tmp102_;
		ValaList* _tmp103_;
		ValadocApiProperty* _tmp104_;
		ValadocApiItem* _tmp105_;
		ValadocApiItem* _tmp106_;
		gchar* _tmp107_;
		gchar* _tmp108_;
		gchar* _tmp109_;
		gchar* _tmp110_;
		GtkdocHeader* _tmp111_;
		GtkdocHeader* _tmp112_;
		GtkdocGComment* _tmp113_;
		ValadocApiProperty* _tmp114_;
		gchar* _tmp115_;
		gchar* _tmp116_;
		gchar* _tmp117_;
		const gchar* _tmp118_;
		GtkdocGComment* _tmp126_;
		ValadocApiProperty* _tmp127_;
		gchar* _tmp128_;
		gchar* _tmp129_;
		gchar* _tmp130_;
		GtkdocGComment* _tmp131_;
		GtkdocGComment* _tmp132_;
		const gchar* _tmp133_;
		GtkdocGComment* _tmp134_;
		const gchar* _tmp135_;
		gchar* _tmp136_;
		gboolean _tmp137_ = FALSE;
		ValadocApiProperty* _tmp138_;
		ValadocApiTypeReference* _tmp139_;
		ValadocApiTypeReference* _tmp140_;
		GtkdocGComment* _tmp168_;
		GtkdocGComment* _tmp169_;
		ValaList* _tmp170_;
		ValaList* _tmp171_;
		_tmp92_ = prop;
		_tmp93_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp92_);
		_tmp94_ = _tmp93_;
		_tmp95_ = prop;
		_tmp96_ = valadoc_api_property_get_getter (_tmp95_);
		_tmp97_ = _tmp96_;
		_tmp98_ = valadoc_api_property_accessor_get_cname (_tmp97_);
		_tmp99_ = _tmp98_;
		_tmp100_ = gtkdoc_generator_add_symbol (self, _tmp94_, _tmp99_, NULL, NULL, NULL, 0);
		_tmp101_ = _tmp100_;
		_g_free0 (_tmp99_);
		_g_free0 (_tmp94_);
		getter_gcomment = _tmp101_;
		_tmp102_ = getter_gcomment;
		_tmp103_ = _tmp102_->headers;
		_tmp104_ = prop;
		_tmp105_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp104_);
		_tmp106_ = _tmp105_;
		_tmp107_ = gtkdoc_get_docbook_link (_tmp106_, FALSE, FALSE);
		_tmp108_ = _tmp107_;
		_tmp109_ = g_strdup_printf ("the %s instance to query", _tmp108_);
		_tmp110_ = _tmp109_;
		_tmp111_ = gtkdoc_header_new ("self", _tmp110_, (gdouble) 1, TRUE);
		_tmp112_ = _tmp111_;
		vala_collection_add ((ValaCollection*) _tmp103_, _tmp112_);
		_gtkdoc_header_unref0 (_tmp112_);
		_g_free0 (_tmp110_);
		_g_free0 (_tmp108_);
		_tmp113_ = getter_gcomment;
		_tmp114_ = prop;
		_tmp115_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp114_, FALSE, FALSE);
		_tmp116_ = _tmp115_;
		_tmp117_ = g_strdup_printf ("the value of the %s property", _tmp116_);
		_g_free0 (_tmp113_->returns);
		_tmp113_->returns = _tmp117_;
		_g_free0 (_tmp116_);
		_tmp118_ = return_type_link;
		if (_tmp118_ != NULL) {
			GtkdocGComment* _tmp119_;
			GtkdocGComment* _tmp120_;
			const gchar* _tmp121_;
			const gchar* _tmp122_;
			gchar* _tmp123_;
			gchar* _tmp124_;
			gchar* _tmp125_;
			_tmp119_ = getter_gcomment;
			_tmp120_ = getter_gcomment;
			_tmp121_ = _tmp120_->returns;
			_tmp122_ = return_type_link;
			_tmp123_ = g_strconcat (" of type ", _tmp122_, NULL);
			_tmp124_ = _tmp123_;
			_tmp125_ = g_strconcat (_tmp121_, _tmp124_, NULL);
			_g_free0 (_tmp120_->returns);
			_tmp120_->returns = _tmp125_;
			_g_free0 (_tmp124_);
		}
		_tmp126_ = getter_gcomment;
		_tmp127_ = prop;
		_tmp128_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp127_, FALSE, FALSE);
		_tmp129_ = _tmp128_;
		_tmp130_ = g_strdup_printf ("Get and return the current value of the %s property.", _tmp129_);
		_g_free0 (_tmp126_->brief_comment);
		_tmp126_->brief_comment = _tmp130_;
		_g_free0 (_tmp129_);
		_tmp131_ = getter_gcomment;
		_tmp132_ = gcomment;
		_tmp133_ = _tmp132_->brief_comment;
		_tmp134_ = gcomment;
		_tmp135_ = _tmp134_->long_comment;
		_tmp136_ = gtkdoc_generator_combine_comments (self, _tmp133_, _tmp135_);
		_g_free0 (_tmp131_->long_comment);
		_tmp131_->long_comment = _tmp136_;
		_tmp138_ = prop;
		_tmp139_ = valadoc_api_property_get_property_type (_tmp138_);
		_tmp140_ = _tmp139_;
		if (_tmp140_ != NULL) {
			ValadocApiProperty* _tmp141_;
			ValadocApiTypeReference* _tmp142_;
			ValadocApiTypeReference* _tmp143_;
			ValadocApiItem* _tmp144_;
			ValadocApiItem* _tmp145_;
			_tmp141_ = prop;
			_tmp142_ = valadoc_api_property_get_property_type (_tmp141_);
			_tmp143_ = _tmp142_;
			_tmp144_ = valadoc_api_typereference_get_data_type (_tmp143_);
			_tmp145_ = _tmp144_;
			_tmp137_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp145_, VALADOC_API_TYPE_ARRAY);
		} else {
			_tmp137_ = FALSE;
		}
		if (_tmp137_) {
			ValadocApiItem* array_type = NULL;
			ValadocApiProperty* _tmp146_;
			ValadocApiTypeReference* _tmp147_;
			ValadocApiTypeReference* _tmp148_;
			ValadocApiItem* _tmp149_;
			ValadocApiItem* _tmp150_;
			ValadocApiItem* _tmp151_;
			_tmp146_ = prop;
			_tmp147_ = valadoc_api_property_get_property_type (_tmp146_);
			_tmp148_ = _tmp147_;
			_tmp149_ = valadoc_api_typereference_get_data_type (_tmp148_);
			_tmp150_ = _tmp149_;
			_tmp151_ = _g_object_ref0 (_tmp150_);
			array_type = _tmp151_;
			{
				guint dim = 0U;
				dim = (guint) 1;
				{
					gboolean _tmp152_ = FALSE;
					_tmp152_ = TRUE;
					while (TRUE) {
						gboolean _tmp158_ = FALSE;
						ValadocApiItem* _tmp159_;
						GtkdocGComment* _tmp161_;
						ValaList* _tmp162_;
						guint _tmp163_;
						gchar* _tmp164_;
						gchar* _tmp165_;
						GtkdocHeader* _tmp166_;
						GtkdocHeader* _tmp167_;
						if (!_tmp152_) {
							guint _tmp153_;
							ValadocApiItem* _tmp154_;
							ValadocApiItem* _tmp155_;
							ValadocApiItem* _tmp156_;
							ValadocApiItem* _tmp157_;
							_tmp153_ = dim;
							dim = _tmp153_ + 1;
							_tmp154_ = array_type;
							_tmp155_ = valadoc_api_array_get_data_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp154_, VALADOC_API_TYPE_ARRAY, ValadocApiArray));
							_tmp156_ = _tmp155_;
							_tmp157_ = _g_object_ref0 (_tmp156_);
							_g_object_unref0 (array_type);
							array_type = _tmp157_;
						}
						_tmp152_ = FALSE;
						_tmp159_ = array_type;
						if (_tmp159_ != NULL) {
							ValadocApiItem* _tmp160_;
							_tmp160_ = array_type;
							_tmp158_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp160_, VALADOC_API_TYPE_ARRAY);
						} else {
							_tmp158_ = FALSE;
						}
						if (!_tmp158_) {
							break;
						}
						_tmp161_ = gcomment;
						_tmp162_ = _tmp161_->headers;
						_tmp163_ = dim;
						_tmp164_ = g_strdup_printf ("result_length%u", _tmp163_);
						_tmp165_ = _tmp164_;
						_tmp166_ = gtkdoc_header_new (_tmp165_, "return location for the length of the property's value", DBL_MAX, TRUE);
						_tmp167_ = _tmp166_;
						vala_collection_add ((ValaCollection*) _tmp162_, _tmp167_);
						_gtkdoc_header_unref0 (_tmp167_);
						_g_free0 (_tmp165_);
					}
				}
			}
			_g_object_unref0 (array_type);
		}
		_tmp168_ = getter_gcomment;
		_tmp169_ = gcomment;
		_tmp170_ = _tmp169_->versioning;
		_tmp171_ = _vala_iterable_ref0 (_tmp170_);
		_vala_iterable_unref0 (_tmp168_->versioning);
		_tmp168_->versioning = _tmp171_;
		_gtkdoc_gcomment_unref0 (getter_gcomment);
	}
	_tmp174_ = prop;
	_tmp175_ = valadoc_api_property_get_setter (_tmp174_);
	_tmp176_ = _tmp175_;
	if (_tmp176_ != NULL) {
		ValadocApiProperty* _tmp177_;
		ValadocApiPropertyAccessor* _tmp178_;
		ValadocApiPropertyAccessor* _tmp179_;
		gboolean _tmp180_;
		gboolean _tmp181_;
		_tmp177_ = prop;
		_tmp178_ = valadoc_api_property_get_setter (_tmp177_);
		_tmp179_ = _tmp178_;
		_tmp180_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp179_);
		_tmp181_ = _tmp180_;
		_tmp173_ = !_tmp181_;
	} else {
		_tmp173_ = FALSE;
	}
	if (_tmp173_) {
		ValadocApiProperty* _tmp182_;
		ValadocApiPropertyAccessor* _tmp183_;
		ValadocApiPropertyAccessor* _tmp184_;
		gboolean _tmp185_;
		gboolean _tmp186_;
		_tmp182_ = prop;
		_tmp183_ = valadoc_api_property_get_setter (_tmp182_);
		_tmp184_ = _tmp183_;
		_tmp185_ = valadoc_api_property_accessor_get_is_set (_tmp184_);
		_tmp186_ = _tmp185_;
		_tmp172_ = _tmp186_;
	} else {
		_tmp172_ = FALSE;
	}
	if (_tmp172_) {
		GtkdocGComment* setter_gcomment = NULL;
		ValadocApiProperty* _tmp187_;
		gchar* _tmp188_;
		gchar* _tmp189_;
		ValadocApiProperty* _tmp190_;
		ValadocApiPropertyAccessor* _tmp191_;
		ValadocApiPropertyAccessor* _tmp192_;
		gchar* _tmp193_;
		gchar* _tmp194_;
		GtkdocGComment* _tmp195_;
		GtkdocGComment* _tmp196_;
		GtkdocGComment* _tmp197_;
		ValaList* _tmp198_;
		ValadocApiProperty* _tmp199_;
		ValadocApiItem* _tmp200_;
		ValadocApiItem* _tmp201_;
		gchar* _tmp202_;
		gchar* _tmp203_;
		gchar* _tmp204_;
		gchar* _tmp205_;
		GtkdocHeader* _tmp206_;
		GtkdocHeader* _tmp207_;
		gchar* _tmp208_ = NULL;
		const gchar* _tmp209_;
		gchar* type_desc = NULL;
		gchar* _tmp213_;
		GtkdocGComment* _tmp214_;
		ValaList* _tmp215_;
		ValadocApiProperty* _tmp216_;
		gchar* _tmp217_;
		gchar* _tmp218_;
		const gchar* _tmp219_;
		gchar* _tmp220_;
		gchar* _tmp221_;
		GtkdocHeader* _tmp222_;
		GtkdocHeader* _tmp223_;
		GtkdocGComment* _tmp224_;
		ValadocApiProperty* _tmp225_;
		gchar* _tmp226_;
		gchar* _tmp227_;
		gchar* _tmp228_;
		GtkdocGComment* _tmp229_;
		GtkdocGComment* _tmp230_;
		const gchar* _tmp231_;
		GtkdocGComment* _tmp232_;
		const gchar* _tmp233_;
		gchar* _tmp234_;
		gboolean _tmp235_ = FALSE;
		ValadocApiProperty* _tmp236_;
		ValadocApiTypeReference* _tmp237_;
		ValadocApiTypeReference* _tmp238_;
		GtkdocGComment* _tmp266_;
		GtkdocGComment* _tmp267_;
		ValaList* _tmp268_;
		ValaList* _tmp269_;
		_tmp187_ = prop;
		_tmp188_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp187_);
		_tmp189_ = _tmp188_;
		_tmp190_ = prop;
		_tmp191_ = valadoc_api_property_get_setter (_tmp190_);
		_tmp192_ = _tmp191_;
		_tmp193_ = valadoc_api_property_accessor_get_cname (_tmp192_);
		_tmp194_ = _tmp193_;
		_tmp195_ = gtkdoc_generator_add_symbol (self, _tmp189_, _tmp194_, NULL, NULL, NULL, 0);
		_tmp196_ = _tmp195_;
		_g_free0 (_tmp194_);
		_g_free0 (_tmp189_);
		setter_gcomment = _tmp196_;
		_tmp197_ = setter_gcomment;
		_tmp198_ = _tmp197_->headers;
		_tmp199_ = prop;
		_tmp200_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp199_);
		_tmp201_ = _tmp200_;
		_tmp202_ = gtkdoc_get_docbook_link (_tmp201_, FALSE, FALSE);
		_tmp203_ = _tmp202_;
		_tmp204_ = g_strdup_printf ("the %s instance to modify", _tmp203_);
		_tmp205_ = _tmp204_;
		_tmp206_ = gtkdoc_header_new ("self", _tmp205_, (gdouble) 1, TRUE);
		_tmp207_ = _tmp206_;
		vala_collection_add ((ValaCollection*) _tmp198_, _tmp207_);
		_gtkdoc_header_unref0 (_tmp207_);
		_g_free0 (_tmp205_);
		_g_free0 (_tmp203_);
		_tmp209_ = return_type_link;
		if (_tmp209_ != NULL) {
			const gchar* _tmp210_;
			gchar* _tmp211_;
			_tmp210_ = return_type_link;
			_tmp211_ = g_strconcat (" of type ", _tmp210_, NULL);
			_g_free0 (_tmp208_);
			_tmp208_ = _tmp211_;
		} else {
			gchar* _tmp212_;
			_tmp212_ = g_strdup ("");
			_g_free0 (_tmp208_);
			_tmp208_ = _tmp212_;
		}
		_tmp213_ = g_strdup (_tmp208_);
		type_desc = _tmp213_;
		_tmp214_ = setter_gcomment;
		_tmp215_ = _tmp214_->headers;
		_tmp216_ = prop;
		_tmp217_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp216_, FALSE, FALSE);
		_tmp218_ = _tmp217_;
		_tmp219_ = type_desc;
		_tmp220_ = g_strdup_printf ("the new value of the %s property%s", _tmp218_, _tmp219_);
		_tmp221_ = _tmp220_;
		_tmp222_ = gtkdoc_header_new ("value", _tmp221_, (gdouble) 2, TRUE);
		_tmp223_ = _tmp222_;
		vala_collection_add ((ValaCollection*) _tmp215_, _tmp223_);
		_gtkdoc_header_unref0 (_tmp223_);
		_g_free0 (_tmp221_);
		_g_free0 (_tmp218_);
		_tmp224_ = setter_gcomment;
		_tmp225_ = prop;
		_tmp226_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp225_, FALSE, FALSE);
		_tmp227_ = _tmp226_;
		_tmp228_ = g_strdup_printf ("Set the value of the %s property to @value.", _tmp227_);
		_g_free0 (_tmp224_->brief_comment);
		_tmp224_->brief_comment = _tmp228_;
		_g_free0 (_tmp227_);
		_tmp229_ = setter_gcomment;
		_tmp230_ = gcomment;
		_tmp231_ = _tmp230_->brief_comment;
		_tmp232_ = gcomment;
		_tmp233_ = _tmp232_->long_comment;
		_tmp234_ = gtkdoc_generator_combine_comments (self, _tmp231_, _tmp233_);
		_g_free0 (_tmp229_->long_comment);
		_tmp229_->long_comment = _tmp234_;
		_tmp236_ = prop;
		_tmp237_ = valadoc_api_property_get_property_type (_tmp236_);
		_tmp238_ = _tmp237_;
		if (_tmp238_ != NULL) {
			ValadocApiProperty* _tmp239_;
			ValadocApiTypeReference* _tmp240_;
			ValadocApiTypeReference* _tmp241_;
			ValadocApiItem* _tmp242_;
			ValadocApiItem* _tmp243_;
			_tmp239_ = prop;
			_tmp240_ = valadoc_api_property_get_property_type (_tmp239_);
			_tmp241_ = _tmp240_;
			_tmp242_ = valadoc_api_typereference_get_data_type (_tmp241_);
			_tmp243_ = _tmp242_;
			_tmp235_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp243_, VALADOC_API_TYPE_ARRAY);
		} else {
			_tmp235_ = FALSE;
		}
		if (_tmp235_) {
			ValadocApiItem* array_type = NULL;
			ValadocApiProperty* _tmp244_;
			ValadocApiTypeReference* _tmp245_;
			ValadocApiTypeReference* _tmp246_;
			ValadocApiItem* _tmp247_;
			ValadocApiItem* _tmp248_;
			ValadocApiItem* _tmp249_;
			_tmp244_ = prop;
			_tmp245_ = valadoc_api_property_get_property_type (_tmp244_);
			_tmp246_ = _tmp245_;
			_tmp247_ = valadoc_api_typereference_get_data_type (_tmp246_);
			_tmp248_ = _tmp247_;
			_tmp249_ = _g_object_ref0 (_tmp248_);
			array_type = _tmp249_;
			{
				guint dim = 0U;
				dim = (guint) 1;
				{
					gboolean _tmp250_ = FALSE;
					_tmp250_ = TRUE;
					while (TRUE) {
						gboolean _tmp256_ = FALSE;
						ValadocApiItem* _tmp257_;
						GtkdocGComment* _tmp259_;
						ValaList* _tmp260_;
						guint _tmp261_;
						gchar* _tmp262_;
						gchar* _tmp263_;
						GtkdocHeader* _tmp264_;
						GtkdocHeader* _tmp265_;
						if (!_tmp250_) {
							guint _tmp251_;
							ValadocApiItem* _tmp252_;
							ValadocApiItem* _tmp253_;
							ValadocApiItem* _tmp254_;
							ValadocApiItem* _tmp255_;
							_tmp251_ = dim;
							dim = _tmp251_ + 1;
							_tmp252_ = array_type;
							_tmp253_ = valadoc_api_array_get_data_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp252_, VALADOC_API_TYPE_ARRAY, ValadocApiArray));
							_tmp254_ = _tmp253_;
							_tmp255_ = _g_object_ref0 (_tmp254_);
							_g_object_unref0 (array_type);
							array_type = _tmp255_;
						}
						_tmp250_ = FALSE;
						_tmp257_ = array_type;
						if (_tmp257_ != NULL) {
							ValadocApiItem* _tmp258_;
							_tmp258_ = array_type;
							_tmp256_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp258_, VALADOC_API_TYPE_ARRAY);
						} else {
							_tmp256_ = FALSE;
						}
						if (!_tmp256_) {
							break;
						}
						_tmp259_ = gcomment;
						_tmp260_ = _tmp259_->headers;
						_tmp261_ = dim;
						_tmp262_ = g_strdup_printf ("value_length%u", _tmp261_);
						_tmp263_ = _tmp262_;
						_tmp264_ = gtkdoc_header_new (_tmp263_, "length of the property's new value", DBL_MAX, TRUE);
						_tmp265_ = _tmp264_;
						vala_collection_add ((ValaCollection*) _tmp260_, _tmp265_);
						_gtkdoc_header_unref0 (_tmp265_);
						_g_free0 (_tmp263_);
					}
				}
			}
			_g_object_unref0 (array_type);
		}
		_tmp266_ = setter_gcomment;
		_tmp267_ = gcomment;
		_tmp268_ = _tmp267_->versioning;
		_tmp269_ = _vala_iterable_ref0 (_tmp268_);
		_vala_iterable_unref0 (_tmp266_->versioning);
		_tmp266_->versioning = _tmp269_;
		_g_free0 (type_desc);
		_g_free0 (_tmp208_);
		_gtkdoc_gcomment_unref0 (setter_gcomment);
	}
	_tmp270_ = return_type_link;
	if (_tmp270_ != NULL) {
		gchar* return_type_desc = NULL;
		ValadocApiProperty* _tmp271_;
		ValadocApiItem* _tmp272_;
		ValadocApiItem* _tmp273_;
		gchar* _tmp274_;
		gchar* _tmp275_;
		ValadocApiTypeParameter* _tmp276_;
		const gchar* _tmp277_;
		const gchar* _tmp278_;
		gchar* _tmp279_;
		gchar* _tmp280_;
		gchar* _tmp281_;
		gchar* _tmp282_;
		GtkdocGComment* _tmp283_;
		const gchar* _tmp284_;
		GtkdocGComment* _tmp285_;
		const gchar* _tmp286_;
		gchar* _tmp287_;
		_tmp271_ = prop;
		_tmp272_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp271_);
		_tmp273_ = _tmp272_;
		_tmp274_ = gtkdoc_get_cname (_tmp273_);
		_tmp275_ = _tmp274_;
		_tmp276_ = type_parameter;
		_tmp277_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp276_);
		_tmp278_ = _tmp277_;
		_tmp279_ = g_utf8_strdown (_tmp278_, (gssize) -1);
		_tmp280_ = _tmp279_;
		_tmp281_ = g_strdup_printf ("<para>Holds a value from type #%s:%s-type.</para>", _tmp275_, _tmp280_);
		_tmp282_ = _tmp281_;
		_g_free0 (_tmp280_);
		_g_free0 (_tmp275_);
		return_type_desc = _tmp282_;
		_tmp283_ = gcomment;
		_tmp284_ = return_type_desc;
		_tmp285_ = gcomment;
		_tmp286_ = _tmp285_->long_comment;
		_tmp287_ = gtkdoc_generator_combine_inline_docs (self, _tmp284_, _tmp286_);
		_g_free0 (_tmp283_->long_comment);
		_tmp283_->long_comment = _tmp287_;
		_g_free0 (return_type_desc);
	}
	_g_free0 (return_type_link);
	_g_object_unref0 (type_parameter);
	_gtkdoc_gcomment_unref0 (gcomment);
}


static void gtkdoc_generator_real_visit_field (ValadocApiVisitor* base, ValadocApiField* f) {
	GtkdocGenerator * self;
	ValadocApiField* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	ValaList* _tmp3_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (f != NULL);
	_tmp0_ = f;
	_tmp1_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_) {
		return;
	}
	_tmp3_ = self->priv->current_headers;
	if (_tmp3_ == NULL) {
		GtkdocGComment* gcomment = NULL;
		ValadocApiField* _tmp4_;
		gchar* _tmp5_;
		gchar* _tmp6_;
		ValadocApiField* _tmp7_;
		gchar* _tmp8_;
		gchar* _tmp9_;
		ValadocApiField* _tmp10_;
		ValadocContentComment* _tmp11_;
		ValadocContentComment* _tmp12_;
		GtkdocGComment* _tmp13_;
		GtkdocGComment* _tmp14_;
		ValadocApiField* _tmp15_;
		ValadocApiField* _tmp16_;
		GtkdocGComment* _tmp17_;
		_tmp4_ = f;
		_tmp5_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp4_);
		_tmp6_ = _tmp5_;
		_tmp7_ = f;
		_tmp8_ = valadoc_api_field_get_cname (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = f;
		_tmp11_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp10_);
		_tmp12_ = _tmp11_;
		_tmp13_ = gtkdoc_generator_add_symbol (self, _tmp6_, _tmp9_, _tmp12_, NULL, NULL, 0);
		_tmp14_ = _tmp13_;
		_g_free0 (_tmp9_);
		_g_free0 (_tmp6_);
		gcomment = _tmp14_;
		_tmp15_ = f;
		valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp15_, (ValadocApiVisitor*) self, TRUE);
		_tmp16_ = f;
		_tmp17_ = gcomment;
		gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp16_, _tmp17_);
		_gtkdoc_gcomment_unref0 (gcomment);
	} else {
		ValadocApiField* _tmp18_;
		gchar* _tmp19_;
		gchar* _tmp20_;
		ValadocApiField* _tmp21_;
		ValadocContentComment* _tmp22_;
		ValadocContentComment* _tmp23_;
		GtkdocHeader* _tmp24_;
		GtkdocHeader* _tmp25_;
		ValadocApiField* _tmp26_;
		_tmp18_ = f;
		_tmp19_ = valadoc_api_field_get_cname (_tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = f;
		_tmp22_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = gtkdoc_generator_add_header (self, _tmp20_, _tmp23_, NULL, 0, DBL_MAX);
		_tmp25_ = _tmp24_;
		_gtkdoc_header_unref0 (_tmp25_);
		_g_free0 (_tmp20_);
		_tmp26_ = f;
		valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp26_, (ValadocApiVisitor*) self, TRUE);
	}
}


static void gtkdoc_generator_real_visit_constant (ValadocApiVisitor* base, ValadocApiConstant* c) {
	GtkdocGenerator * self;
	GtkdocGComment* gcomment = NULL;
	ValadocApiConstant* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	ValadocApiConstant* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	ValadocApiConstant* _tmp6_;
	ValadocContentComment* _tmp7_;
	ValadocContentComment* _tmp8_;
	GtkdocGComment* _tmp9_;
	GtkdocGComment* _tmp10_;
	ValadocApiConstant* _tmp11_;
	ValadocApiConstant* _tmp12_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (c != NULL);
	_tmp0_ = c;
	_tmp1_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = c;
	_tmp4_ = valadoc_api_constant_get_cname (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = c;
	_tmp7_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = gtkdoc_generator_add_symbol (self, _tmp2_, _tmp5_, _tmp8_, NULL, NULL, 0);
	_tmp10_ = _tmp9_;
	_g_free0 (_tmp5_);
	_g_free0 (_tmp2_);
	gcomment = _tmp10_;
	_tmp11_ = c;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp11_, (ValadocApiVisitor*) self, TRUE);
	_tmp12_ = c;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp12_, gcomment);
	_gtkdoc_gcomment_unref0 (gcomment);
}


static void gtkdoc_generator_real_visit_delegate (ValadocApiVisitor* base, ValadocApiDelegate* d) {
	GtkdocGenerator * self;
	ValaList* old_headers = NULL;
	ValaList* _tmp0_;
	ValaList* _tmp1_;
	ValadocApiDelegate* old_delegate = NULL;
	ValadocApiDelegate* _tmp2_;
	ValadocApiDelegate* _tmp3_;
	GEqualFunc _tmp4_;
	ValaArrayList* _tmp5_;
	ValadocApiDelegate* _tmp6_;
	ValadocApiDelegate* _tmp7_;
	ValadocApiDelegate* _tmp8_;
	ValadocApiNodeType* _tmp9_;
	ValadocApiNodeType* _tmp10_;
	gint _tmp10__length1;
	ValaList* exceptions = NULL;
	ValadocApiDelegate* _tmp11_;
	ValadocApiNodeType* _tmp12_;
	ValadocApiNodeType* _tmp13_;
	gint _tmp13__length1;
	ValaList* _tmp14_;
	ValaList* _tmp15_;
	ValadocApiDelegate* _tmp28_;
	gboolean _tmp29_;
	gboolean _tmp30_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiDelegate* _tmp36_;
	gchar* _tmp37_;
	gchar* _tmp38_;
	ValadocApiDelegate* _tmp39_;
	gchar* _tmp40_;
	gchar* _tmp41_;
	ValadocApiDelegate* _tmp42_;
	ValadocContentComment* _tmp43_;
	ValadocContentComment* _tmp44_;
	GtkdocGComment* _tmp45_;
	GtkdocGComment* _tmp46_;
	ValadocApiTypeParameter* type_parameter = NULL;
	ValadocApiDelegate* _tmp47_;
	ValadocApiTypeReference* _tmp48_;
	ValadocApiTypeReference* _tmp49_;
	ValadocApiItem* _tmp50_;
	ValadocApiItem* _tmp51_;
	ValadocApiTypeParameter* _tmp52_;
	ValadocApiTypeParameter* _tmp53_;
	ValadocApiDelegate* _tmp100_;
	GtkdocGComment* _tmp101_;
	ValaList* _tmp102_;
	ValaList* _tmp103_;
	ValadocApiDelegate* _tmp104_;
	ValadocApiDelegate* _tmp105_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (d != NULL);
	_tmp0_ = self->priv->current_headers;
	_tmp1_ = _vala_iterable_ref0 (_tmp0_);
	old_headers = _tmp1_;
	_tmp2_ = self->priv->current_delegate;
	_tmp3_ = _g_object_ref0 (_tmp2_);
	old_delegate = _tmp3_;
	_tmp4_ = g_direct_equal;
	_tmp5_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp4_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp5_;
	_tmp6_ = d;
	_tmp7_ = _g_object_ref0 (_tmp6_);
	_g_object_unref0 (self->priv->current_delegate);
	self->priv->current_delegate = _tmp7_;
	_tmp8_ = d;
	_tmp9_ = g_new0 (ValadocApiNodeType, 2);
	_tmp9_[0] = VALADOC_API_NODE_TYPE_FORMAL_PARAMETER;
	_tmp9_[1] = VALADOC_API_NODE_TYPE_TYPE_PARAMETER;
	_tmp10_ = _tmp9_;
	_tmp10__length1 = 2;
	valadoc_api_node_accept_children ((ValadocApiNode*) _tmp8_, _tmp10_, 2, (ValadocApiVisitor*) self, TRUE);
	_tmp10_ = (g_free (_tmp10_), NULL);
	_tmp11_ = d;
	_tmp12_ = g_new0 (ValadocApiNodeType, 2);
	_tmp12_[0] = VALADOC_API_NODE_TYPE_ERROR_DOMAIN;
	_tmp12_[1] = VALADOC_API_NODE_TYPE_CLASS;
	_tmp13_ = _tmp12_;
	_tmp13__length1 = 2;
	_tmp14_ = valadoc_api_node_get_children_by_types ((ValadocApiNode*) _tmp11_, _tmp13_, 2, TRUE);
	_tmp15_ = _tmp14_;
	_tmp13_ = (g_free (_tmp13_), NULL);
	exceptions = _tmp15_;
	{
		ValaList* _ex_list = NULL;
		ValaList* _tmp16_;
		ValaList* _tmp17_;
		gint _ex_size = 0;
		ValaList* _tmp18_;
		gint _tmp19_;
		gint _tmp20_;
		gint _ex_index = 0;
		_tmp16_ = exceptions;
		_tmp17_ = _vala_iterable_ref0 (_tmp16_);
		_ex_list = _tmp17_;
		_tmp18_ = _ex_list;
		_tmp19_ = vala_collection_get_size ((ValaCollection*) _tmp18_);
		_tmp20_ = _tmp19_;
		_ex_size = _tmp20_;
		_ex_index = -1;
		while (TRUE) {
			gint _tmp21_;
			gint _tmp22_;
			gint _tmp23_;
			ValadocApiNode* ex = NULL;
			ValaList* _tmp24_;
			gint _tmp25_;
			gpointer _tmp26_;
			ValadocApiNode* _tmp27_;
			_tmp21_ = _ex_index;
			_ex_index = _tmp21_ + 1;
			_tmp22_ = _ex_index;
			_tmp23_ = _ex_size;
			if (!(_tmp22_ < _tmp23_)) {
				break;
			}
			_tmp24_ = _ex_list;
			_tmp25_ = _ex_index;
			_tmp26_ = vala_list_get (_tmp24_, _tmp25_);
			ex = (ValadocApiNode*) _tmp26_;
			_tmp27_ = ex;
			gtkdoc_generator_visit_thrown_error_domain (self, _tmp27_);
			_g_object_unref0 (ex);
		}
		_vala_iterable_unref0 (_ex_list);
	}
	_tmp28_ = d;
	_tmp29_ = valadoc_api_delegate_get_is_static (_tmp28_);
	_tmp30_ = _tmp29_;
	if (!_tmp30_) {
		gchar* _tmp31_;
		gchar** _tmp32_;
		gchar** _tmp33_;
		gint _tmp33__length1;
		GtkdocHeader* _tmp34_;
		GtkdocHeader* _tmp35_;
		_tmp31_ = g_strdup ("closure");
		_tmp32_ = g_new0 (gchar*, 1 + 1);
		_tmp32_[0] = _tmp31_;
		_tmp33_ = _tmp32_;
		_tmp33__length1 = 1;
		_tmp34_ = gtkdoc_generator_add_custom_header (self, "user_data", "data to pass to the delegate function", _tmp33_, 1, DBL_MAX, TRUE);
		_tmp35_ = _tmp34_;
		_gtkdoc_header_unref0 (_tmp35_);
		_tmp33_ = (_vala_array_free (_tmp33_, _tmp33__length1, (GDestroyNotify) g_free), NULL);
	}
	_tmp36_ = d;
	_tmp37_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp36_);
	_tmp38_ = _tmp37_;
	_tmp39_ = d;
	_tmp40_ = valadoc_api_delegate_get_cname (_tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = d;
	_tmp43_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp42_);
	_tmp44_ = _tmp43_;
	_tmp45_ = gtkdoc_generator_add_symbol (self, _tmp38_, _tmp41_, _tmp44_, NULL, NULL, 0);
	_tmp46_ = _tmp45_;
	_g_free0 (_tmp41_);
	_g_free0 (_tmp38_);
	gcomment = _tmp46_;
	_tmp47_ = d;
	_tmp48_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp47_);
	_tmp49_ = _tmp48_;
	_tmp50_ = valadoc_api_typereference_get_data_type (_tmp49_);
	_tmp51_ = _tmp50_;
	_tmp52_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp51_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp51_) : NULL);
	type_parameter = _tmp52_;
	_tmp53_ = type_parameter;
	if (_tmp53_ != NULL) {
		ValadocApiTypeParameter* _tmp54_;
		ValadocApiItem* _tmp55_;
		ValadocApiItem* _tmp56_;
		_tmp54_ = type_parameter;
		_tmp55_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp54_);
		_tmp56_ = _tmp55_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp56_, VALADOC_API_TYPE_CLASS)) {
			gchar* return_type_desc = NULL;
			ValadocApiDelegate* _tmp57_;
			ValadocApiItem* _tmp58_;
			ValadocApiItem* _tmp59_;
			gchar* _tmp60_;
			gchar* _tmp61_;
			ValadocApiTypeParameter* _tmp62_;
			const gchar* _tmp63_;
			const gchar* _tmp64_;
			gchar* _tmp65_;
			gchar* _tmp66_;
			gchar* _tmp67_;
			gchar* _tmp68_;
			GtkdocGComment* _tmp69_;
			const gchar* _tmp70_;
			GtkdocGComment* _tmp71_;
			const gchar* _tmp72_;
			gchar* _tmp73_;
			_tmp57_ = d;
			_tmp58_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp57_);
			_tmp59_ = _tmp58_;
			_tmp60_ = gtkdoc_get_cname (_tmp59_);
			_tmp61_ = _tmp60_;
			_tmp62_ = type_parameter;
			_tmp63_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp62_);
			_tmp64_ = _tmp63_;
			_tmp65_ = g_utf8_strdown (_tmp64_, (gssize) -1);
			_tmp66_ = _tmp65_;
			_tmp67_ = g_strdup_printf ("A value from type #%s:%s-type.", _tmp61_, _tmp66_);
			_tmp68_ = _tmp67_;
			_g_free0 (_tmp66_);
			_g_free0 (_tmp61_);
			return_type_desc = _tmp68_;
			_tmp69_ = gcomment;
			_tmp70_ = return_type_desc;
			_tmp71_ = gcomment;
			_tmp72_ = _tmp71_->returns;
			_tmp73_ = gtkdoc_generator_combine_inline_docs (self, _tmp70_, _tmp72_);
			_g_free0 (_tmp69_->returns);
			_tmp69_->returns = _tmp73_;
			_g_free0 (return_type_desc);
		} else {
			gboolean _tmp74_ = FALSE;
			ValadocApiTypeParameter* _tmp75_;
			ValadocApiItem* _tmp76_;
			ValadocApiItem* _tmp77_;
			_tmp75_ = type_parameter;
			_tmp76_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp75_);
			_tmp77_ = _tmp76_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp77_, VALADOC_API_TYPE_INTERFACE)) {
				ValadocApiTypeParameter* _tmp78_;
				ValadocApiItem* _tmp79_;
				ValadocApiItem* _tmp80_;
				ValadocApiAttribute* _tmp81_;
				ValadocApiAttribute* _tmp82_;
				_tmp78_ = type_parameter;
				_tmp79_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp78_);
				_tmp80_ = _tmp79_;
				_tmp81_ = valadoc_api_symbol_get_attribute (G_TYPE_CHECK_INSTANCE_CAST (_tmp80_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), "GenericAccessors");
				_tmp82_ = _tmp81_;
				_tmp74_ = _tmp82_ != NULL;
				_g_object_unref0 (_tmp82_);
			} else {
				_tmp74_ = FALSE;
			}
			if (_tmp74_) {
				gchar* return_type_desc = NULL;
				ValadocApiDelegate* _tmp83_;
				ValadocApiItem* _tmp84_;
				ValadocApiItem* _tmp85_;
				gchar* _tmp86_;
				gchar* _tmp87_;
				ValadocApiTypeParameter* _tmp88_;
				const gchar* _tmp89_;
				const gchar* _tmp90_;
				gchar* _tmp91_;
				gchar* _tmp92_;
				gchar* _tmp93_;
				gchar* _tmp94_;
				GtkdocGComment* _tmp95_;
				const gchar* _tmp96_;
				GtkdocGComment* _tmp97_;
				const gchar* _tmp98_;
				gchar* _tmp99_;
				_tmp83_ = d;
				_tmp84_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp83_);
				_tmp85_ = _tmp84_;
				_tmp86_ = gtkdoc_get_cname (_tmp85_);
				_tmp87_ = _tmp86_;
				_tmp88_ = type_parameter;
				_tmp89_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp88_);
				_tmp90_ = _tmp89_;
				_tmp91_ = g_utf8_strdown (_tmp90_, (gssize) -1);
				_tmp92_ = _tmp91_;
				_tmp93_ = g_strdup_printf ("A value from type #_%sIface.get_%s_type().", _tmp87_, _tmp92_);
				_tmp94_ = _tmp93_;
				_g_free0 (_tmp92_);
				_g_free0 (_tmp87_);
				return_type_desc = _tmp94_;
				_tmp95_ = gcomment;
				_tmp96_ = return_type_desc;
				_tmp97_ = gcomment;
				_tmp98_ = _tmp97_->returns;
				_tmp99_ = gtkdoc_generator_combine_inline_docs (self, _tmp96_, _tmp98_);
				_g_free0 (_tmp95_->returns);
				_tmp95_->returns = _tmp99_;
				_g_free0 (return_type_desc);
			}
		}
	}
	_tmp100_ = d;
	_tmp101_ = gcomment;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp100_, _tmp101_);
	_tmp102_ = old_headers;
	_tmp103_ = _vala_iterable_ref0 (_tmp102_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp103_;
	_tmp104_ = old_delegate;
	_tmp105_ = _g_object_ref0 (_tmp104_);
	_g_object_unref0 (self->priv->current_delegate);
	self->priv->current_delegate = _tmp105_;
	_g_object_unref0 (type_parameter);
	_gtkdoc_gcomment_unref0 (gcomment);
	_vala_iterable_unref0 (exceptions);
	_g_object_unref0 (old_delegate);
	_vala_iterable_unref0 (old_headers);
}


static gpointer _gtkdoc_dbus_member_ref0 (gpointer self) {
	return self ? gtkdoc_dbus_member_ref (self) : NULL;
}


static gchar* string_replace (const gchar* self, const gchar* old, const gchar* replacement) {
	gchar* result = NULL;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (old != NULL, NULL);
	g_return_val_if_fail (replacement != NULL, NULL);
	if ((*((gchar*) self)) == '\0') {
		_tmp1_ = TRUE;
	} else {
		const gchar* _tmp2_;
		_tmp2_ = old;
		_tmp1_ = (*((gchar*) _tmp2_)) == '\0';
	}
	if (_tmp1_) {
		_tmp0_ = TRUE;
	} else {
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		_tmp3_ = old;
		_tmp4_ = replacement;
		_tmp0_ = g_strcmp0 (_tmp3_, _tmp4_) == 0;
	}
	if (_tmp0_) {
		gchar* _tmp5_;
		_tmp5_ = g_strdup (self);
		result = _tmp5_;
		return result;
	}
	{
		GRegex* regex = NULL;
		const gchar* _tmp6_;
		gchar* _tmp7_;
		gchar* _tmp8_;
		GRegex* _tmp9_;
		GRegex* _tmp10_;
		gchar* _tmp11_ = NULL;
		GRegex* _tmp12_;
		const gchar* _tmp13_;
		gchar* _tmp14_;
		gchar* _tmp15_;
		_tmp6_ = old;
		_tmp7_ = g_regex_escape_string (_tmp6_, -1);
		_tmp8_ = _tmp7_;
		_tmp9_ = g_regex_new (_tmp8_, 0, 0, &_inner_error_);
		_tmp10_ = _tmp9_;
		_g_free0 (_tmp8_);
		regex = _tmp10_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			if (_inner_error_->domain == G_REGEX_ERROR) {
				goto __catch9_g_regex_error;
			}
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
			g_clear_error (&_inner_error_);
			return NULL;
		}
		_tmp12_ = regex;
		_tmp13_ = replacement;
		_tmp14_ = g_regex_replace_literal (_tmp12_, self, (gssize) -1, 0, _tmp13_, 0, &_inner_error_);
		_tmp11_ = _tmp14_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			_g_regex_unref0 (regex);
			if (_inner_error_->domain == G_REGEX_ERROR) {
				goto __catch9_g_regex_error;
			}
			_g_regex_unref0 (regex);
			g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
			g_clear_error (&_inner_error_);
			return NULL;
		}
		_tmp15_ = _tmp11_;
		_tmp11_ = NULL;
		result = _tmp15_;
		_g_free0 (_tmp11_);
		_g_regex_unref0 (regex);
		return result;
	}
	goto __finally9;
	__catch9_g_regex_error:
	{
		GError* e = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		g_assert_not_reached ();
		_g_error_free0 (e);
	}
	__finally9:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return NULL;
	}
}


static void gtkdoc_generator_real_visit_signal (ValadocApiVisitor* base, ValadocApiSignal* sig) {
	GtkdocGenerator * self;
	ValaList* old_headers = NULL;
	ValaList* _tmp0_;
	ValaList* _tmp1_;
	ValadocApiSignal* old_signal = NULL;
	ValadocApiSignal* _tmp2_;
	ValadocApiSignal* _tmp3_;
	GtkdocDBusMember* old_dbus_member = NULL;
	GtkdocDBusMember* _tmp4_;
	GtkdocDBusMember* _tmp5_;
	GEqualFunc _tmp6_;
	ValaArrayList* _tmp7_;
	ValadocApiSignal* _tmp8_;
	ValadocApiSignal* _tmp9_;
	gboolean _tmp10_ = FALSE;
	GtkdocDBusInterface* _tmp11_;
	ValadocApiSignal* _tmp19_;
	gchar* name = NULL;
	ValadocApiSignal* _tmp20_;
	gchar* _tmp21_;
	gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	GtkdocGComment* gcomment = NULL;
	ValadocApiSignal* _tmp25_;
	gchar* _tmp26_;
	gchar* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	gchar* _tmp30_;
	gchar* _tmp31_;
	ValadocApiSignal* _tmp32_;
	ValadocContentComment* _tmp33_;
	ValadocContentComment* _tmp34_;
	GtkdocGComment* _tmp35_;
	GtkdocGComment* _tmp36_;
	GtkdocGComment* _tmp37_;
	ValaList* _tmp38_;
	ValadocApiSignal* _tmp39_;
	ValadocApiItem* _tmp40_;
	ValadocApiItem* _tmp41_;
	const gchar* _tmp42_;
	const gchar* _tmp43_;
	gchar* _tmp44_;
	gchar* _tmp45_;
	ValadocApiSignal* _tmp46_;
	ValadocApiItem* _tmp47_;
	ValadocApiItem* _tmp48_;
	gchar* _tmp49_;
	gchar* _tmp50_;
	gchar* _tmp51_;
	gchar* _tmp52_;
	GtkdocHeader* _tmp53_;
	GtkdocHeader* _tmp54_;
	gboolean _tmp55_ = FALSE;
	GtkdocDBusInterface* _tmp56_;
	ValadocApiTypeParameter* type_parameter = NULL;
	ValadocApiSignal* _tmp73_;
	ValadocApiTypeReference* _tmp74_;
	ValadocApiTypeReference* _tmp75_;
	ValadocApiItem* _tmp76_;
	ValadocApiItem* _tmp77_;
	ValadocApiTypeParameter* _tmp78_;
	ValadocApiTypeParameter* _tmp79_;
	ValadocApiSignal* _tmp126_;
	GtkdocGComment* _tmp127_;
	ValaList* _tmp128_;
	ValaList* _tmp129_;
	ValadocApiSignal* _tmp130_;
	ValadocApiSignal* _tmp131_;
	GtkdocDBusMember* _tmp132_;
	GtkdocDBusMember* _tmp133_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (sig != NULL);
	_tmp0_ = self->priv->current_headers;
	_tmp1_ = _vala_iterable_ref0 (_tmp0_);
	old_headers = _tmp1_;
	_tmp2_ = self->priv->current_signal;
	_tmp3_ = _g_object_ref0 (_tmp2_);
	old_signal = _tmp3_;
	_tmp4_ = self->priv->current_dbus_member;
	_tmp5_ = _gtkdoc_dbus_member_ref0 (_tmp4_);
	old_dbus_member = _tmp5_;
	_tmp6_ = g_direct_equal;
	_tmp7_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp6_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp7_;
	_tmp8_ = sig;
	_tmp9_ = _g_object_ref0 (_tmp8_);
	_g_object_unref0 (self->priv->current_signal);
	self->priv->current_signal = _tmp9_;
	_gtkdoc_dbus_member_unref0 (self->priv->current_dbus_member);
	self->priv->current_dbus_member = NULL;
	_tmp11_ = self->priv->current_dbus_interface;
	if (_tmp11_ != NULL) {
		ValadocApiSignal* _tmp12_;
		gboolean _tmp13_;
		gboolean _tmp14_;
		_tmp12_ = sig;
		_tmp13_ = valadoc_api_signal_get_is_dbus_visible (_tmp12_);
		_tmp14_ = _tmp13_;
		_tmp10_ = _tmp14_;
	} else {
		_tmp10_ = FALSE;
	}
	if (_tmp10_) {
		ValadocApiSignal* _tmp15_;
		gchar* _tmp16_;
		gchar* _tmp17_;
		GtkdocDBusMember* _tmp18_;
		_tmp15_ = sig;
		_tmp16_ = valadoc_api_signal_get_dbus_name (_tmp15_);
		_tmp17_ = _tmp16_;
		_tmp18_ = gtkdoc_dbus_member_new (_tmp17_);
		_gtkdoc_dbus_member_unref0 (self->priv->current_dbus_member);
		self->priv->current_dbus_member = _tmp18_;
		_g_free0 (_tmp17_);
	}
	_tmp19_ = sig;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp19_, (ValadocApiVisitor*) self, TRUE);
	_tmp20_ = sig;
	_tmp21_ = valadoc_api_signal_get_cname (_tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = string_replace (_tmp22_, "_", "-");
	_tmp24_ = _tmp23_;
	_g_free0 (_tmp22_);
	name = _tmp24_;
	_tmp25_ = sig;
	_tmp26_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp25_);
	_tmp27_ = _tmp26_;
	_tmp28_ = self->priv->current_cname;
	_tmp29_ = name;
	_tmp30_ = g_strdup_printf ("%s::%s", _tmp28_, _tmp29_);
	_tmp31_ = _tmp30_;
	_tmp32_ = sig;
	_tmp33_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = gtkdoc_generator_add_comment (self, _tmp27_, _tmp31_, _tmp34_);
	_tmp36_ = _tmp35_;
	_g_free0 (_tmp31_);
	_g_free0 (_tmp27_);
	gcomment = _tmp36_;
	_tmp37_ = gcomment;
	_tmp38_ = _tmp37_->headers;
	_tmp39_ = sig;
	_tmp40_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = valadoc_api_node_get_name (G_TYPE_CHECK_INSTANCE_CAST (_tmp41_, VALADOC_API_TYPE_NODE, ValadocApiNode));
	_tmp43_ = _tmp42_;
	_tmp44_ = gtkdoc_to_lower_case (_tmp43_);
	_tmp45_ = _tmp44_;
	_tmp46_ = sig;
	_tmp47_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = gtkdoc_get_docbook_link (_tmp48_, FALSE, FALSE);
	_tmp50_ = _tmp49_;
	_tmp51_ = g_strdup_printf ("the %s instance that received the signal", _tmp50_);
	_tmp52_ = _tmp51_;
	_tmp53_ = gtkdoc_header_new (_tmp45_, _tmp52_, 0.1, TRUE);
	_tmp54_ = _tmp53_;
	vala_list_insert (_tmp38_, 0, _tmp54_);
	_gtkdoc_header_unref0 (_tmp54_);
	_g_free0 (_tmp52_);
	_g_free0 (_tmp50_);
	_g_free0 (_tmp45_);
	_tmp56_ = self->priv->current_dbus_interface;
	if (_tmp56_ != NULL) {
		ValadocApiSignal* _tmp57_;
		gboolean _tmp58_;
		gboolean _tmp59_;
		_tmp57_ = sig;
		_tmp58_ = valadoc_api_signal_get_is_dbus_visible (_tmp57_);
		_tmp59_ = _tmp58_;
		_tmp55_ = _tmp59_;
	} else {
		_tmp55_ = FALSE;
	}
	if (_tmp55_) {
		GtkdocGComment* dbuscomment = NULL;
		ValadocApiSignal* _tmp60_;
		gchar* _tmp61_;
		gchar* _tmp62_;
		ValadocApiSignal* _tmp63_;
		ValadocContentComment* _tmp64_;
		ValadocContentComment* _tmp65_;
		GtkdocGComment* _tmp66_;
		GtkdocGComment* _tmp67_;
		GtkdocDBusMember* _tmp68_;
		GtkdocGComment* _tmp69_;
		GtkdocGComment* _tmp70_;
		GtkdocDBusInterface* _tmp71_;
		GtkdocDBusMember* _tmp72_;
		_tmp60_ = sig;
		_tmp61_ = valadoc_api_signal_get_dbus_name (_tmp60_);
		_tmp62_ = _tmp61_;
		_tmp63_ = sig;
		_tmp64_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp63_);
		_tmp65_ = _tmp64_;
		_tmp66_ = gtkdoc_generator_create_gcomment (self, _tmp62_, _tmp65_, NULL, 0, TRUE);
		_tmp67_ = _tmp66_;
		_g_free0 (_tmp62_);
		dbuscomment = _tmp67_;
		_tmp68_ = self->priv->current_dbus_member;
		_tmp69_ = dbuscomment;
		_tmp70_ = _gtkdoc_gcomment_ref0 (_tmp69_);
		_gtkdoc_gcomment_unref0 (_tmp68_->comment);
		_tmp68_->comment = _tmp70_;
		_tmp71_ = self->priv->current_dbus_interface;
		_tmp72_ = self->priv->current_dbus_member;
		gtkdoc_dbus_interface_add_signal (_tmp71_, _tmp72_);
		_gtkdoc_gcomment_unref0 (dbuscomment);
	}
	_tmp73_ = sig;
	_tmp74_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp73_);
	_tmp75_ = _tmp74_;
	_tmp76_ = valadoc_api_typereference_get_data_type (_tmp75_);
	_tmp77_ = _tmp76_;
	_tmp78_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp77_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp77_) : NULL);
	type_parameter = _tmp78_;
	_tmp79_ = type_parameter;
	if (_tmp79_ != NULL) {
		ValadocApiTypeParameter* _tmp80_;
		ValadocApiItem* _tmp81_;
		ValadocApiItem* _tmp82_;
		_tmp80_ = type_parameter;
		_tmp81_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp80_);
		_tmp82_ = _tmp81_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp82_, VALADOC_API_TYPE_CLASS)) {
			gchar* return_type_desc = NULL;
			ValadocApiTypeParameter* _tmp83_;
			ValadocApiItem* _tmp84_;
			ValadocApiItem* _tmp85_;
			gchar* _tmp86_;
			gchar* _tmp87_;
			ValadocApiTypeParameter* _tmp88_;
			const gchar* _tmp89_;
			const gchar* _tmp90_;
			gchar* _tmp91_;
			gchar* _tmp92_;
			gchar* _tmp93_;
			gchar* _tmp94_;
			GtkdocGComment* _tmp95_;
			const gchar* _tmp96_;
			GtkdocGComment* _tmp97_;
			const gchar* _tmp98_;
			gchar* _tmp99_;
			_tmp83_ = type_parameter;
			_tmp84_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp83_);
			_tmp85_ = _tmp84_;
			_tmp86_ = gtkdoc_get_cname (_tmp85_);
			_tmp87_ = _tmp86_;
			_tmp88_ = type_parameter;
			_tmp89_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp88_);
			_tmp90_ = _tmp89_;
			_tmp91_ = g_utf8_strdown (_tmp90_, (gssize) -1);
			_tmp92_ = _tmp91_;
			_tmp93_ = g_strdup_printf ("A value from type #%s:%s-type.", _tmp87_, _tmp92_);
			_tmp94_ = _tmp93_;
			_g_free0 (_tmp92_);
			_g_free0 (_tmp87_);
			return_type_desc = _tmp94_;
			_tmp95_ = gcomment;
			_tmp96_ = return_type_desc;
			_tmp97_ = gcomment;
			_tmp98_ = _tmp97_->returns;
			_tmp99_ = gtkdoc_generator_combine_inline_docs (self, _tmp96_, _tmp98_);
			_g_free0 (_tmp95_->returns);
			_tmp95_->returns = _tmp99_;
			_g_free0 (return_type_desc);
		} else {
			gboolean _tmp100_ = FALSE;
			ValadocApiTypeParameter* _tmp101_;
			ValadocApiItem* _tmp102_;
			ValadocApiItem* _tmp103_;
			_tmp101_ = type_parameter;
			_tmp102_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp101_);
			_tmp103_ = _tmp102_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp103_, VALADOC_API_TYPE_INTERFACE)) {
				ValadocApiTypeParameter* _tmp104_;
				ValadocApiItem* _tmp105_;
				ValadocApiItem* _tmp106_;
				ValadocApiAttribute* _tmp107_;
				ValadocApiAttribute* _tmp108_;
				_tmp104_ = type_parameter;
				_tmp105_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp104_);
				_tmp106_ = _tmp105_;
				_tmp107_ = valadoc_api_symbol_get_attribute (G_TYPE_CHECK_INSTANCE_CAST (_tmp106_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), "GenericAccessors");
				_tmp108_ = _tmp107_;
				_tmp100_ = _tmp108_ != NULL;
				_g_object_unref0 (_tmp108_);
			} else {
				_tmp100_ = FALSE;
			}
			if (_tmp100_) {
				gchar* return_type_desc = NULL;
				ValadocApiTypeParameter* _tmp109_;
				ValadocApiItem* _tmp110_;
				ValadocApiItem* _tmp111_;
				gchar* _tmp112_;
				gchar* _tmp113_;
				ValadocApiTypeParameter* _tmp114_;
				const gchar* _tmp115_;
				const gchar* _tmp116_;
				gchar* _tmp117_;
				gchar* _tmp118_;
				gchar* _tmp119_;
				gchar* _tmp120_;
				GtkdocGComment* _tmp121_;
				const gchar* _tmp122_;
				GtkdocGComment* _tmp123_;
				const gchar* _tmp124_;
				gchar* _tmp125_;
				_tmp109_ = type_parameter;
				_tmp110_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp109_);
				_tmp111_ = _tmp110_;
				_tmp112_ = gtkdoc_get_cname (_tmp111_);
				_tmp113_ = _tmp112_;
				_tmp114_ = type_parameter;
				_tmp115_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp114_);
				_tmp116_ = _tmp115_;
				_tmp117_ = g_utf8_strdown (_tmp116_, (gssize) -1);
				_tmp118_ = _tmp117_;
				_tmp119_ = g_strdup_printf ("A value from type #_%sIface.get_%s_type().", _tmp113_, _tmp118_);
				_tmp120_ = _tmp119_;
				_g_free0 (_tmp118_);
				_g_free0 (_tmp113_);
				return_type_desc = _tmp120_;
				_tmp121_ = gcomment;
				_tmp122_ = return_type_desc;
				_tmp123_ = gcomment;
				_tmp124_ = _tmp123_->returns;
				_tmp125_ = gtkdoc_generator_combine_inline_docs (self, _tmp122_, _tmp124_);
				_g_free0 (_tmp121_->returns);
				_tmp121_->returns = _tmp125_;
				_g_free0 (return_type_desc);
			}
		}
	}
	_tmp126_ = sig;
	_tmp127_ = gcomment;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp126_, _tmp127_);
	_tmp128_ = old_headers;
	_tmp129_ = _vala_iterable_ref0 (_tmp128_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp129_;
	_tmp130_ = old_signal;
	_tmp131_ = _g_object_ref0 (_tmp130_);
	_g_object_unref0 (self->priv->current_signal);
	self->priv->current_signal = _tmp131_;
	_tmp132_ = old_dbus_member;
	_tmp133_ = _gtkdoc_dbus_member_ref0 (_tmp132_);
	_gtkdoc_dbus_member_unref0 (self->priv->current_dbus_member);
	self->priv->current_dbus_member = _tmp133_;
	_g_object_unref0 (type_parameter);
	_gtkdoc_gcomment_unref0 (gcomment);
	_g_free0 (name);
	_gtkdoc_dbus_member_unref0 (old_dbus_member);
	_g_object_unref0 (old_signal);
	_vala_iterable_unref0 (old_headers);
}


static void _vala_array_add20 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add21 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static gchar** _vala_array_dup10 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static void _vala_array_add22 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static gchar** _vala_array_dup11 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static gchar** _vala_array_dup12 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static void _vala_array_add23 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static gchar** _vala_array_dup13 (gchar** self, int length) {
	gchar** result;
	int i;
	result = g_new0 (gchar*, length + 1);
	for (i = 0; i < length; i++) {
		gchar* _tmp0_;
		_tmp0_ = g_strdup (self[i]);
		result[i] = _tmp0_;
	}
	return result;
}


static void gtkdoc_generator_real_visit_method (ValadocApiVisitor* base, ValadocApiMethod* m) {
	GtkdocGenerator * self;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	ValadocApiMethod* _tmp5_;
	gboolean _tmp6_;
	gboolean _tmp7_;
	gchar** annotations = NULL;
	gchar** _tmp29_;
	gint annotations_length1;
	gint _annotations_size_;
	ValadocApiMethod* _tmp30_;
	ValadocApiTypeReference* _tmp31_;
	ValadocApiTypeReference* _tmp32_;
	ValaList* old_headers = NULL;
	ValaList* _tmp47_;
	ValaList* _tmp48_;
	ValadocApiMethod* old_method = NULL;
	ValadocApiMethod* _tmp49_;
	ValadocApiMethod* _tmp50_;
	GtkdocDBusMember* old_dbus_member = NULL;
	GtkdocDBusMember* _tmp51_;
	GtkdocDBusMember* _tmp52_;
	GEqualFunc _tmp53_;
	ValaArrayList* _tmp54_;
	ValadocApiMethod* _tmp55_;
	ValadocApiMethod* _tmp56_;
	gboolean _tmp57_ = FALSE;
	gboolean _tmp58_ = FALSE;
	GtkdocDBusInterface* _tmp59_;
	gboolean _tmp70_ = FALSE;
	ValadocApiMethod* _tmp71_;
	gboolean _tmp72_;
	gboolean _tmp73_;
	ValadocApiMethod* _tmp86_;
	gboolean _tmp87_;
	gboolean _tmp88_;
	ValaList* type_parameters = NULL;
	ValadocApiMethod* _tmp131_;
	ValaList* _tmp132_;
	ValadocApiMethod* _tmp174_;
	ValadocApiNodeType* _tmp175_;
	ValadocApiNodeType* _tmp176_;
	gint _tmp176__length1;
	ValaList* exceptions = NULL;
	ValadocApiMethod* _tmp177_;
	ValadocApiNodeType* _tmp178_;
	ValadocApiNodeType* _tmp179_;
	gint _tmp179__length1;
	ValaList* _tmp180_;
	ValaList* _tmp181_;
	GtkdocHeader* error_header = NULL;
	GtkdocGComment* gcomment = NULL;
	ValadocApiMethod* _tmp194_;
	gboolean _tmp195_;
	gboolean _tmp196_;
	ValadocApiMethod* _tmp239_;
	GtkdocGComment* _tmp240_;
	GtkdocHeader* _tmp241_;
	GtkdocHeader* _tmp242_;
	gboolean _tmp243_ = FALSE;
	gboolean _tmp244_ = FALSE;
	GtkdocDBusInterface* _tmp245_;
	ValaList* _tmp286_;
	ValaList* _tmp287_;
	ValadocApiMethod* _tmp288_;
	ValadocApiMethod* _tmp289_;
	GtkdocDBusMember* _tmp290_;
	GtkdocDBusMember* _tmp291_;
	gchar* return_type_desc = NULL;
	ValadocApiTypeParameter* type_parameter = NULL;
	ValadocApiMethod* _tmp292_;
	ValadocApiTypeReference* _tmp293_;
	ValadocApiTypeReference* _tmp294_;
	ValadocApiItem* _tmp295_;
	ValadocApiItem* _tmp296_;
	ValadocApiTypeParameter* _tmp297_;
	ValadocApiTypeParameter* _tmp298_;
	ValadocApiMethod* _tmp346_;
	gboolean _tmp347_;
	gboolean _tmp348_;
	gboolean _tmp405_ = FALSE;
	ValadocApiMethod* _tmp406_;
	gboolean _tmp407_;
	gboolean _tmp408_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (m != NULL);
	_tmp5_ = m;
	_tmp6_ = valadoc_api_method_get_is_constructor (_tmp5_);
	_tmp7_ = _tmp6_;
	if (_tmp7_) {
		ValadocApiClass* _tmp8_;
		_tmp8_ = self->priv->current_class;
		_tmp4_ = _tmp8_ != NULL;
	} else {
		_tmp4_ = FALSE;
	}
	if (_tmp4_) {
		ValadocApiClass* _tmp9_;
		gboolean _tmp10_;
		gboolean _tmp11_;
		_tmp9_ = self->priv->current_class;
		_tmp10_ = valadoc_api_class_get_is_abstract (_tmp9_);
		_tmp11_ = _tmp10_;
		_tmp3_ = _tmp11_;
	} else {
		_tmp3_ = FALSE;
	}
	if (_tmp3_) {
		_tmp2_ = TRUE;
	} else {
		ValadocApiMethod* _tmp12_;
		gboolean _tmp13_;
		gboolean _tmp14_;
		_tmp12_ = m;
		_tmp13_ = valadoc_api_method_get_is_override (_tmp12_);
		_tmp14_ = _tmp13_;
		_tmp2_ = _tmp14_;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		ValadocApiMethod* _tmp15_;
		gboolean _tmp16_;
		gboolean _tmp17_;
		_tmp15_ = m;
		_tmp16_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp15_);
		_tmp17_ = _tmp16_;
		_tmp1_ = _tmp17_;
	}
	if (_tmp1_) {
		_tmp0_ = TRUE;
	} else {
		gboolean _tmp18_ = FALSE;
		gboolean _tmp19_ = FALSE;
		ValadocApiMethod* _tmp20_;
		gboolean _tmp21_;
		gboolean _tmp22_;
		_tmp20_ = m;
		_tmp21_ = valadoc_api_method_get_is_abstract (_tmp20_);
		_tmp22_ = _tmp21_;
		if (!_tmp22_) {
			ValadocApiMethod* _tmp23_;
			gboolean _tmp24_;
			gboolean _tmp25_;
			_tmp23_ = m;
			_tmp24_ = valadoc_api_method_get_is_virtual (_tmp23_);
			_tmp25_ = _tmp24_;
			_tmp19_ = !_tmp25_;
		} else {
			_tmp19_ = FALSE;
		}
		if (_tmp19_) {
			ValadocApiMethod* _tmp26_;
			ValadocApiMethod* _tmp27_;
			ValadocApiMethod* _tmp28_;
			_tmp26_ = m;
			_tmp27_ = valadoc_api_method_get_base_method (_tmp26_);
			_tmp28_ = _tmp27_;
			_tmp18_ = _tmp28_ != NULL;
		} else {
			_tmp18_ = FALSE;
		}
		_tmp0_ = _tmp18_;
	}
	if (_tmp0_) {
		return;
	}
	_tmp29_ = g_new0 (gchar*, 0 + 1);
	annotations = _tmp29_;
	annotations_length1 = 0;
	_annotations_size_ = annotations_length1;
	_tmp30_ = m;
	_tmp31_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp30_);
	_tmp32_ = _tmp31_;
	if (_tmp32_ != NULL) {
		ValadocApiMethod* _tmp33_;
		ValadocApiTypeReference* _tmp34_;
		ValadocApiTypeReference* _tmp35_;
		ValadocApiItem* _tmp36_;
		ValadocApiItem* _tmp37_;
		ValadocApiMethod* _tmp40_;
		ValadocApiTypeReference* _tmp41_;
		ValadocApiTypeReference* _tmp42_;
		gboolean _tmp43_;
		gboolean _tmp44_;
		_tmp33_ = m;
		_tmp34_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp33_);
		_tmp35_ = _tmp34_;
		_tmp36_ = valadoc_api_typereference_get_data_type (_tmp35_);
		_tmp37_ = _tmp36_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp37_, VALADOC_API_TYPE_ARRAY)) {
			gchar** _tmp38_;
			gint _tmp38__length1;
			gchar* _tmp39_;
			_tmp38_ = annotations;
			_tmp38__length1 = annotations_length1;
			_tmp39_ = g_strdup ("array length=result_length1");
			_vala_array_add20 (&annotations, &annotations_length1, &_annotations_size_, _tmp39_);
		}
		_tmp40_ = m;
		_tmp41_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp40_);
		_tmp42_ = _tmp41_;
		_tmp43_ = valadoc_api_typereference_get_is_unowned (_tmp42_);
		_tmp44_ = _tmp43_;
		if (_tmp44_) {
			gchar** _tmp45_;
			gint _tmp45__length1;
			gchar* _tmp46_;
			_tmp45_ = annotations;
			_tmp45__length1 = annotations_length1;
			_tmp46_ = g_strdup ("transfer none");
			_vala_array_add21 (&annotations, &annotations_length1, &_annotations_size_, _tmp46_);
		}
	}
	_tmp47_ = self->priv->current_headers;
	_tmp48_ = _vala_iterable_ref0 (_tmp47_);
	old_headers = _tmp48_;
	_tmp49_ = self->priv->current_method;
	_tmp50_ = _g_object_ref0 (_tmp49_);
	old_method = _tmp50_;
	_tmp51_ = self->priv->current_dbus_member;
	_tmp52_ = _gtkdoc_dbus_member_ref0 (_tmp51_);
	old_dbus_member = _tmp52_;
	_tmp53_ = g_direct_equal;
	_tmp54_ = vala_array_list_new (GTKDOC_TYPE_HEADER, (GBoxedCopyFunc) gtkdoc_header_ref, (GDestroyNotify) gtkdoc_header_unref, _tmp53_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = (ValaList*) _tmp54_;
	_tmp55_ = m;
	_tmp56_ = _g_object_ref0 (_tmp55_);
	_g_object_unref0 (self->priv->current_method);
	self->priv->current_method = _tmp56_;
	_gtkdoc_dbus_member_unref0 (self->priv->current_dbus_member);
	self->priv->current_dbus_member = NULL;
	_tmp59_ = self->priv->current_dbus_interface;
	if (_tmp59_ != NULL) {
		ValadocApiMethod* _tmp60_;
		gboolean _tmp61_;
		gboolean _tmp62_;
		_tmp60_ = m;
		_tmp61_ = valadoc_api_method_get_is_dbus_visible (_tmp60_);
		_tmp62_ = _tmp61_;
		_tmp58_ = _tmp62_;
	} else {
		_tmp58_ = FALSE;
	}
	if (_tmp58_) {
		ValadocApiMethod* _tmp63_;
		gboolean _tmp64_;
		gboolean _tmp65_;
		_tmp63_ = m;
		_tmp64_ = valadoc_api_method_get_is_constructor (_tmp63_);
		_tmp65_ = _tmp64_;
		_tmp57_ = !_tmp65_;
	} else {
		_tmp57_ = FALSE;
	}
	if (_tmp57_) {
		ValadocApiMethod* _tmp66_;
		gchar* _tmp67_;
		gchar* _tmp68_;
		GtkdocDBusMember* _tmp69_;
		_tmp66_ = m;
		_tmp67_ = valadoc_api_method_get_dbus_name (_tmp66_);
		_tmp68_ = _tmp67_;
		_tmp69_ = gtkdoc_dbus_member_new (_tmp68_);
		_gtkdoc_dbus_member_unref0 (self->priv->current_dbus_member);
		self->priv->current_dbus_member = _tmp69_;
		_g_free0 (_tmp68_);
	}
	_tmp71_ = m;
	_tmp72_ = valadoc_api_method_get_is_static (_tmp71_);
	_tmp73_ = _tmp72_;
	if (!_tmp73_) {
		ValadocApiMethod* _tmp74_;
		gboolean _tmp75_;
		gboolean _tmp76_;
		_tmp74_ = m;
		_tmp75_ = valadoc_api_method_get_is_constructor (_tmp74_);
		_tmp76_ = _tmp75_;
		_tmp70_ = !_tmp76_;
	} else {
		_tmp70_ = FALSE;
	}
	if (_tmp70_) {
		ValadocApiMethod* _tmp77_;
		ValadocApiItem* _tmp78_;
		ValadocApiItem* _tmp79_;
		gchar* _tmp80_;
		gchar* _tmp81_;
		gchar* _tmp82_;
		gchar* _tmp83_;
		GtkdocHeader* _tmp84_;
		GtkdocHeader* _tmp85_;
		_tmp77_ = m;
		_tmp78_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp77_);
		_tmp79_ = _tmp78_;
		_tmp80_ = gtkdoc_get_docbook_link (_tmp79_, FALSE, FALSE);
		_tmp81_ = _tmp80_;
		_tmp82_ = g_strdup_printf ("the %s instance", _tmp81_);
		_tmp83_ = _tmp82_;
		_tmp84_ = gtkdoc_generator_add_custom_header (self, "self", _tmp83_, NULL, 0, 0.1, TRUE);
		_tmp85_ = _tmp84_;
		_gtkdoc_header_unref0 (_tmp85_);
		_g_free0 (_tmp83_);
		_g_free0 (_tmp81_);
	}
	_tmp86_ = m;
	_tmp87_ = valadoc_api_method_get_is_constructor (_tmp86_);
	_tmp88_ = _tmp87_;
	if (_tmp88_) {
		ValaList* type_parameters = NULL;
		ValadocApiMethod* _tmp89_;
		ValadocApiItem* _tmp90_;
		ValadocApiItem* _tmp91_;
		ValaList* _tmp92_;
		_tmp89_ = m;
		_tmp90_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp89_);
		_tmp91_ = _tmp90_;
		_tmp92_ = valadoc_api_node_get_children_by_type (G_TYPE_CHECK_INSTANCE_CAST (_tmp91_, VALADOC_API_TYPE_NODE, ValadocApiNode), VALADOC_API_NODE_TYPE_TYPE_PARAMETER, FALSE);
		type_parameters = _tmp92_;
		{
			ValaList* __type_list = NULL;
			ValaList* _tmp93_;
			ValaList* _tmp94_;
			gint __type_size = 0;
			ValaList* _tmp95_;
			gint _tmp96_;
			gint _tmp97_;
			gint __type_index = 0;
			_tmp93_ = type_parameters;
			_tmp94_ = _vala_iterable_ref0 (_tmp93_);
			__type_list = _tmp94_;
			_tmp95_ = __type_list;
			_tmp96_ = vala_collection_get_size ((ValaCollection*) _tmp95_);
			_tmp97_ = _tmp96_;
			__type_size = _tmp97_;
			__type_index = -1;
			while (TRUE) {
				gint _tmp98_;
				gint _tmp99_;
				gint _tmp100_;
				ValadocApiNode* _type = NULL;
				ValaList* _tmp101_;
				gint _tmp102_;
				gpointer _tmp103_;
				ValadocApiTypeParameter* type = NULL;
				ValadocApiNode* _tmp104_;
				ValadocApiTypeParameter* _tmp105_;
				gchar* type_name_down = NULL;
				ValadocApiTypeParameter* _tmp106_;
				const gchar* _tmp107_;
				const gchar* _tmp108_;
				gchar* _tmp109_;
				const gchar* _tmp110_;
				gchar* _tmp111_;
				gchar* _tmp112_;
				GtkdocHeader* _tmp113_;
				GtkdocHeader* _tmp114_;
				const gchar* _tmp115_;
				gchar* _tmp116_;
				gchar* _tmp117_;
				const gchar* _tmp118_;
				gchar* _tmp119_;
				gchar* _tmp120_;
				GtkdocHeader* _tmp121_;
				GtkdocHeader* _tmp122_;
				const gchar* _tmp123_;
				gchar* _tmp124_;
				gchar* _tmp125_;
				const gchar* _tmp126_;
				gchar* _tmp127_;
				gchar* _tmp128_;
				GtkdocHeader* _tmp129_;
				GtkdocHeader* _tmp130_;
				_tmp98_ = __type_index;
				__type_index = _tmp98_ + 1;
				_tmp99_ = __type_index;
				_tmp100_ = __type_size;
				if (!(_tmp99_ < _tmp100_)) {
					break;
				}
				_tmp101_ = __type_list;
				_tmp102_ = __type_index;
				_tmp103_ = vala_list_get (_tmp101_, _tmp102_);
				_type = (ValadocApiNode*) _tmp103_;
				_tmp104_ = _type;
				_tmp105_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp104_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp104_) : NULL);
				type = _tmp105_;
				_tmp106_ = type;
				_tmp107_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp106_);
				_tmp108_ = _tmp107_;
				_tmp109_ = g_utf8_strdown (_tmp108_, (gssize) -1);
				type_name_down = _tmp109_;
				_tmp110_ = type_name_down;
				_tmp111_ = g_strconcat (_tmp110_, "_type", NULL);
				_tmp112_ = _tmp111_;
				_tmp113_ = gtkdoc_generator_add_custom_header (self, _tmp112_, "A #GType", NULL, 0, DBL_MAX, TRUE);
				_tmp114_ = _tmp113_;
				_gtkdoc_header_unref0 (_tmp114_);
				_g_free0 (_tmp112_);
				_tmp115_ = type_name_down;
				_tmp116_ = g_strconcat (_tmp115_, "_dup_func", NULL);
				_tmp117_ = _tmp116_;
				_tmp118_ = type_name_down;
				_tmp119_ = g_strdup_printf ("A dup function for @%s_type", _tmp118_);
				_tmp120_ = _tmp119_;
				_tmp121_ = gtkdoc_generator_add_custom_header (self, _tmp117_, _tmp120_, NULL, 0, DBL_MAX, TRUE);
				_tmp122_ = _tmp121_;
				_gtkdoc_header_unref0 (_tmp122_);
				_g_free0 (_tmp120_);
				_g_free0 (_tmp117_);
				_tmp123_ = type_name_down;
				_tmp124_ = g_strconcat (_tmp123_, "_destroy_func", NULL);
				_tmp125_ = _tmp124_;
				_tmp126_ = type_name_down;
				_tmp127_ = g_strdup_printf ("A destroy function for @%s_type", _tmp126_);
				_tmp128_ = _tmp127_;
				_tmp129_ = gtkdoc_generator_add_custom_header (self, _tmp125_, _tmp128_, NULL, 0, DBL_MAX, TRUE);
				_tmp130_ = _tmp129_;
				_gtkdoc_header_unref0 (_tmp130_);
				_g_free0 (_tmp128_);
				_g_free0 (_tmp125_);
				_g_free0 (type_name_down);
				_g_object_unref0 (type);
				_g_object_unref0 (_type);
			}
			_vala_iterable_unref0 (__type_list);
		}
		_vala_iterable_unref0 (type_parameters);
	}
	_tmp131_ = m;
	_tmp132_ = valadoc_api_node_get_children_by_type ((ValadocApiNode*) _tmp131_, VALADOC_API_NODE_TYPE_TYPE_PARAMETER, FALSE);
	type_parameters = _tmp132_;
	{
		ValaList* __type_list = NULL;
		ValaList* _tmp133_;
		ValaList* _tmp134_;
		gint __type_size = 0;
		ValaList* _tmp135_;
		gint _tmp136_;
		gint _tmp137_;
		gint __type_index = 0;
		_tmp133_ = type_parameters;
		_tmp134_ = _vala_iterable_ref0 (_tmp133_);
		__type_list = _tmp134_;
		_tmp135_ = __type_list;
		_tmp136_ = vala_collection_get_size ((ValaCollection*) _tmp135_);
		_tmp137_ = _tmp136_;
		__type_size = _tmp137_;
		__type_index = -1;
		while (TRUE) {
			gint _tmp138_;
			gint _tmp139_;
			gint _tmp140_;
			ValadocApiNode* _type = NULL;
			ValaList* _tmp141_;
			gint _tmp142_;
			gpointer _tmp143_;
			ValadocApiTypeParameter* type = NULL;
			ValadocApiNode* _tmp144_;
			ValadocApiTypeParameter* _tmp145_;
			gchar* type_name_down = NULL;
			ValadocApiTypeParameter* _tmp146_;
			const gchar* _tmp147_;
			const gchar* _tmp148_;
			gchar* _tmp149_;
			const gchar* _tmp150_;
			gchar* _tmp151_;
			gchar* _tmp152_;
			const gchar* _tmp153_;
			gchar* _tmp154_;
			gchar* _tmp155_;
			GtkdocHeader* _tmp156_;
			GtkdocHeader* _tmp157_;
			const gchar* _tmp158_;
			gchar* _tmp159_;
			gchar* _tmp160_;
			const gchar* _tmp161_;
			gchar* _tmp162_;
			gchar* _tmp163_;
			GtkdocHeader* _tmp164_;
			GtkdocHeader* _tmp165_;
			const gchar* _tmp166_;
			gchar* _tmp167_;
			gchar* _tmp168_;
			const gchar* _tmp169_;
			gchar* _tmp170_;
			gchar* _tmp171_;
			GtkdocHeader* _tmp172_;
			GtkdocHeader* _tmp173_;
			_tmp138_ = __type_index;
			__type_index = _tmp138_ + 1;
			_tmp139_ = __type_index;
			_tmp140_ = __type_size;
			if (!(_tmp139_ < _tmp140_)) {
				break;
			}
			_tmp141_ = __type_list;
			_tmp142_ = __type_index;
			_tmp143_ = vala_list_get (_tmp141_, _tmp142_);
			_type = (ValadocApiNode*) _tmp143_;
			_tmp144_ = _type;
			_tmp145_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp144_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp144_) : NULL);
			type = _tmp145_;
			_tmp146_ = type;
			_tmp147_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp146_);
			_tmp148_ = _tmp147_;
			_tmp149_ = g_utf8_strdown (_tmp148_, (gssize) -1);
			type_name_down = _tmp149_;
			_tmp150_ = type_name_down;
			_tmp151_ = g_strconcat (_tmp150_, "_type", NULL);
			_tmp152_ = _tmp151_;
			_tmp153_ = type_name_down;
			_tmp154_ = g_strdup_printf ("The #GType for @%s", _tmp153_);
			_tmp155_ = _tmp154_;
			_tmp156_ = gtkdoc_generator_add_custom_header (self, _tmp152_, _tmp155_, NULL, 0, 0.2, TRUE);
			_tmp157_ = _tmp156_;
			_gtkdoc_header_unref0 (_tmp157_);
			_g_free0 (_tmp155_);
			_g_free0 (_tmp152_);
			_tmp158_ = type_name_down;
			_tmp159_ = g_strconcat (_tmp158_, "_dup_func", NULL);
			_tmp160_ = _tmp159_;
			_tmp161_ = type_name_down;
			_tmp162_ = g_strdup_printf ("A dup function for @%s_type", _tmp161_);
			_tmp163_ = _tmp162_;
			_tmp164_ = gtkdoc_generator_add_custom_header (self, _tmp160_, _tmp163_, NULL, 0, 0.3, TRUE);
			_tmp165_ = _tmp164_;
			_gtkdoc_header_unref0 (_tmp165_);
			_g_free0 (_tmp163_);
			_g_free0 (_tmp160_);
			_tmp166_ = type_name_down;
			_tmp167_ = g_strconcat (_tmp166_, "_destroy_func", NULL);
			_tmp168_ = _tmp167_;
			_tmp169_ = type_name_down;
			_tmp170_ = g_strdup_printf ("A destroy function for @%s_type", _tmp169_);
			_tmp171_ = _tmp170_;
			_tmp172_ = gtkdoc_generator_add_custom_header (self, _tmp168_, _tmp171_, NULL, 0, 0.4, TRUE);
			_tmp173_ = _tmp172_;
			_gtkdoc_header_unref0 (_tmp173_);
			_g_free0 (_tmp171_);
			_g_free0 (_tmp168_);
			_g_free0 (type_name_down);
			_g_object_unref0 (type);
			_g_object_unref0 (_type);
		}
		_vala_iterable_unref0 (__type_list);
	}
	_tmp174_ = m;
	_tmp175_ = g_new0 (ValadocApiNodeType, 2);
	_tmp175_[0] = VALADOC_API_NODE_TYPE_FORMAL_PARAMETER;
	_tmp175_[1] = VALADOC_API_NODE_TYPE_TYPE_PARAMETER;
	_tmp176_ = _tmp175_;
	_tmp176__length1 = 2;
	valadoc_api_node_accept_children ((ValadocApiNode*) _tmp174_, _tmp176_, 2, (ValadocApiVisitor*) self, TRUE);
	_tmp176_ = (g_free (_tmp176_), NULL);
	_tmp177_ = m;
	_tmp178_ = g_new0 (ValadocApiNodeType, 2);
	_tmp178_[0] = VALADOC_API_NODE_TYPE_ERROR_DOMAIN;
	_tmp178_[1] = VALADOC_API_NODE_TYPE_CLASS;
	_tmp179_ = _tmp178_;
	_tmp179__length1 = 2;
	_tmp180_ = valadoc_api_node_get_children_by_types ((ValadocApiNode*) _tmp177_, _tmp179_, 2, TRUE);
	_tmp181_ = _tmp180_;
	_tmp179_ = (g_free (_tmp179_), NULL);
	exceptions = _tmp181_;
	{
		ValaList* _ex_list = NULL;
		ValaList* _tmp182_;
		ValaList* _tmp183_;
		gint _ex_size = 0;
		ValaList* _tmp184_;
		gint _tmp185_;
		gint _tmp186_;
		gint _ex_index = 0;
		_tmp182_ = exceptions;
		_tmp183_ = _vala_iterable_ref0 (_tmp182_);
		_ex_list = _tmp183_;
		_tmp184_ = _ex_list;
		_tmp185_ = vala_collection_get_size ((ValaCollection*) _tmp184_);
		_tmp186_ = _tmp185_;
		_ex_size = _tmp186_;
		_ex_index = -1;
		while (TRUE) {
			gint _tmp187_;
			gint _tmp188_;
			gint _tmp189_;
			ValadocApiNode* ex = NULL;
			ValaList* _tmp190_;
			gint _tmp191_;
			gpointer _tmp192_;
			ValadocApiNode* _tmp193_;
			_tmp187_ = _ex_index;
			_ex_index = _tmp187_ + 1;
			_tmp188_ = _ex_index;
			_tmp189_ = _ex_size;
			if (!(_tmp188_ < _tmp189_)) {
				break;
			}
			_tmp190_ = _ex_list;
			_tmp191_ = _ex_index;
			_tmp192_ = vala_list_get (_tmp190_, _tmp191_);
			ex = (ValadocApiNode*) _tmp192_;
			_tmp193_ = ex;
			gtkdoc_generator_visit_thrown_error_domain (self, _tmp193_);
			_g_object_unref0 (ex);
		}
		_vala_iterable_unref0 (_ex_list);
	}
	error_header = NULL;
	gcomment = NULL;
	_tmp194_ = m;
	_tmp195_ = valadoc_api_method_get_is_yields (_tmp194_);
	_tmp196_ = _tmp195_;
	if (_tmp196_) {
		gchar* _tmp197_;
		gchar** _tmp198_;
		gchar** _tmp199_;
		gint _tmp199__length1;
		GtkdocHeader* _tmp200_;
		GtkdocHeader* _tmp201_;
		gchar* _tmp202_;
		gchar** _tmp203_;
		gchar** _tmp204_;
		gint _tmp204__length1;
		GtkdocHeader* _tmp205_;
		GtkdocHeader* _tmp206_;
		GtkdocHeader* _tmp207_;
		ValadocApiMethod* _tmp208_;
		gchar* _tmp209_;
		gchar* _tmp210_;
		ValadocApiMethod* _tmp211_;
		gchar* _tmp212_;
		gchar* _tmp213_;
		ValadocApiMethod* _tmp214_;
		ValadocContentComment* _tmp215_;
		ValadocContentComment* _tmp216_;
		GtkdocGComment* _tmp217_;
		GtkdocGComment* _tmp218_;
		gchar** see_also = NULL;
		GtkdocGComment* _tmp219_;
		gchar** _tmp220_;
		gint _tmp220__length1;
		gchar** _tmp221_;
		gint _tmp221__length1;
		gint see_also_length1;
		gint _see_also_size_;
		gchar** _tmp222_;
		gint _tmp222__length1;
		ValadocApiMethod* _tmp223_;
		gchar* _tmp224_;
		GtkdocGComment* _tmp225_;
		gchar** _tmp226_;
		gint _tmp226__length1;
		gchar** _tmp227_;
		gint _tmp227__length1;
		_tmp197_ = g_strdup ("scope async");
		_tmp198_ = g_new0 (gchar*, 1 + 1);
		_tmp198_[0] = _tmp197_;
		_tmp199_ = _tmp198_;
		_tmp199__length1 = 1;
		_tmp200_ = gtkdoc_generator_add_custom_header (self, "_callback_", "callback to call when the request is satisfied", _tmp199_, 1, DBL_MAX, TRUE);
		_tmp201_ = _tmp200_;
		_gtkdoc_header_unref0 (_tmp201_);
		_tmp199_ = (_vala_array_free (_tmp199_, _tmp199__length1, (GDestroyNotify) g_free), NULL);
		_tmp202_ = g_strdup ("closure");
		_tmp203_ = g_new0 (gchar*, 1 + 1);
		_tmp203_[0] = _tmp202_;
		_tmp204_ = _tmp203_;
		_tmp204__length1 = 1;
		_tmp205_ = gtkdoc_generator_add_custom_header (self, "_user_data_", "the data to pass to @_callback_ function", _tmp204_, 1, DBL_MAX, TRUE);
		_tmp206_ = _tmp205_;
		_gtkdoc_header_unref0 (_tmp206_);
		_tmp204_ = (_vala_array_free (_tmp204_, _tmp204__length1, (GDestroyNotify) g_free), NULL);
		_tmp207_ = gtkdoc_generator_remove_custom_header (self, "error");
		_gtkdoc_header_unref0 (error_header);
		error_header = _tmp207_;
		_tmp208_ = m;
		_tmp209_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp208_);
		_tmp210_ = _tmp209_;
		_tmp211_ = m;
		_tmp212_ = valadoc_api_method_get_cname (_tmp211_);
		_tmp213_ = _tmp212_;
		_tmp214_ = m;
		_tmp215_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp214_);
		_tmp216_ = _tmp215_;
		_tmp217_ = gtkdoc_generator_add_symbol (self, _tmp210_, _tmp213_, _tmp216_, NULL, NULL, 0);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp217_;
		_g_free0 (_tmp213_);
		_g_free0 (_tmp210_);
		_tmp218_ = gcomment;
		_g_free0 (_tmp218_->returns);
		_tmp218_->returns = NULL;
		_tmp219_ = gcomment;
		_tmp220_ = _tmp219_->see_also;
		_tmp220__length1 = _tmp219_->see_also_length1;
		_tmp221_ = (_tmp220_ != NULL) ? _vala_array_dup10 (_tmp220_, _tmp220__length1) : ((gpointer) _tmp220_);
		_tmp221__length1 = _tmp220__length1;
		see_also = _tmp221_;
		see_also_length1 = _tmp221__length1;
		_see_also_size_ = see_also_length1;
		_tmp222_ = see_also;
		_tmp222__length1 = see_also_length1;
		_tmp223_ = m;
		_tmp224_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp223_, FALSE, TRUE);
		_vala_array_add22 (&see_also, &see_also_length1, &_see_also_size_, _tmp224_);
		_tmp225_ = gcomment;
		_tmp226_ = see_also;
		_tmp226__length1 = see_also_length1;
		_tmp227_ = (_tmp226_ != NULL) ? _vala_array_dup11 (_tmp226_, _tmp226__length1) : ((gpointer) _tmp226_);
		_tmp227__length1 = _tmp226__length1;
		_tmp225_->see_also = (_vala_array_free (_tmp225_->see_also, _tmp225_->see_also_length1, (GDestroyNotify) g_free), NULL);
		_tmp225_->see_also = _tmp227_;
		_tmp225_->see_also_length1 = _tmp227__length1;
		see_also = (_vala_array_free (see_also, see_also_length1, (GDestroyNotify) g_free), NULL);
	} else {
		ValadocApiMethod* _tmp228_;
		gchar* _tmp229_;
		gchar* _tmp230_;
		ValadocApiMethod* _tmp231_;
		gchar* _tmp232_;
		gchar* _tmp233_;
		ValadocApiMethod* _tmp234_;
		ValadocContentComment* _tmp235_;
		ValadocContentComment* _tmp236_;
		gchar** _tmp237_;
		gint _tmp237__length1;
		GtkdocGComment* _tmp238_;
		_tmp228_ = m;
		_tmp229_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp228_);
		_tmp230_ = _tmp229_;
		_tmp231_ = m;
		_tmp232_ = valadoc_api_method_get_cname (_tmp231_);
		_tmp233_ = _tmp232_;
		_tmp234_ = m;
		_tmp235_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp234_);
		_tmp236_ = _tmp235_;
		_tmp237_ = annotations;
		_tmp237__length1 = annotations_length1;
		_tmp238_ = gtkdoc_generator_add_symbol (self, _tmp230_, _tmp233_, _tmp236_, NULL, _tmp237_, _tmp237__length1);
		_gtkdoc_gcomment_unref0 (gcomment);
		gcomment = _tmp238_;
		_g_free0 (_tmp233_);
		_g_free0 (_tmp230_);
	}
	_tmp239_ = m;
	_tmp240_ = gcomment;
	gtkdoc_generator_process_attributes (self, (ValadocApiSymbol*) _tmp239_, _tmp240_);
	_tmp241_ = gtkdoc_generator_remove_custom_header (self, "self");
	_tmp242_ = _tmp241_;
	_gtkdoc_header_unref0 (_tmp242_);
	_tmp245_ = self->priv->current_dbus_interface;
	if (_tmp245_ != NULL) {
		ValadocApiMethod* _tmp246_;
		gboolean _tmp247_;
		gboolean _tmp248_;
		_tmp246_ = m;
		_tmp247_ = valadoc_api_method_get_is_dbus_visible (_tmp246_);
		_tmp248_ = _tmp247_;
		_tmp244_ = _tmp248_;
	} else {
		_tmp244_ = FALSE;
	}
	if (_tmp244_) {
		ValadocApiMethod* _tmp249_;
		gboolean _tmp250_;
		gboolean _tmp251_;
		_tmp249_ = m;
		_tmp250_ = valadoc_api_method_get_is_constructor (_tmp249_);
		_tmp251_ = _tmp250_;
		_tmp243_ = !_tmp251_;
	} else {
		_tmp243_ = FALSE;
	}
	if (_tmp243_) {
		gboolean _tmp252_ = FALSE;
		ValadocApiMethod* _tmp253_;
		ValadocApiTypeReference* _tmp254_;
		ValadocApiTypeReference* _tmp255_;
		GtkdocGComment* dbus_gcomment = NULL;
		ValadocApiMethod* _tmp273_;
		gchar* _tmp274_;
		gchar* _tmp275_;
		ValadocApiMethod* _tmp276_;
		ValadocContentComment* _tmp277_;
		ValadocContentComment* _tmp278_;
		GtkdocGComment* _tmp279_;
		GtkdocGComment* _tmp280_;
		GtkdocDBusMember* _tmp281_;
		GtkdocGComment* _tmp282_;
		GtkdocGComment* _tmp283_;
		GtkdocDBusInterface* _tmp284_;
		GtkdocDBusMember* _tmp285_;
		_tmp253_ = m;
		_tmp254_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp253_);
		_tmp255_ = _tmp254_;
		if (_tmp255_ != NULL) {
			ValadocApiMethod* _tmp256_;
			ValadocApiTypeReference* _tmp257_;
			ValadocApiTypeReference* _tmp258_;
			ValadocApiItem* _tmp259_;
			ValadocApiItem* _tmp260_;
			_tmp256_ = m;
			_tmp257_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp256_);
			_tmp258_ = _tmp257_;
			_tmp259_ = valadoc_api_typereference_get_data_type (_tmp258_);
			_tmp260_ = _tmp259_;
			_tmp252_ = _tmp260_ != NULL;
		} else {
			_tmp252_ = FALSE;
		}
		if (_tmp252_) {
			GtkdocDBusParameter* dresult = NULL;
			ValadocApiMethod* _tmp261_;
			gchar* _tmp262_;
			gchar* _tmp263_;
			ValadocApiMethod* _tmp264_;
			ValadocApiTypeReference* _tmp265_;
			ValadocApiTypeReference* _tmp266_;
			gchar* _tmp267_;
			gchar* _tmp268_;
			GtkdocDBusParameter* _tmp269_;
			GtkdocDBusParameter* _tmp270_;
			GtkdocDBusMember* _tmp271_;
			GtkdocDBusParameter* _tmp272_;
			_tmp261_ = m;
			_tmp262_ = valadoc_api_method_get_dbus_result_name (_tmp261_);
			_tmp263_ = _tmp262_;
			_tmp264_ = m;
			_tmp265_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp264_);
			_tmp266_ = _tmp265_;
			_tmp267_ = valadoc_api_typereference_get_dbus_type_signature (_tmp266_);
			_tmp268_ = _tmp267_;
			_tmp269_ = gtkdoc_dbus_parameter_new (_tmp263_, _tmp268_, GTKDOC_DBUS_PARAMETER_DIRECTION_OUT);
			_tmp270_ = _tmp269_;
			_g_free0 (_tmp268_);
			_g_free0 (_tmp263_);
			dresult = _tmp270_;
			_tmp271_ = self->priv->current_dbus_member;
			_tmp272_ = dresult;
			gtkdoc_dbus_member_add_parameter (_tmp271_, _tmp272_);
			_gtkdoc_dbus_parameter_unref0 (dresult);
		}
		_tmp273_ = m;
		_tmp274_ = valadoc_api_method_get_dbus_name (_tmp273_);
		_tmp275_ = _tmp274_;
		_tmp276_ = m;
		_tmp277_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp276_);
		_tmp278_ = _tmp277_;
		_tmp279_ = gtkdoc_generator_create_gcomment (self, _tmp275_, _tmp278_, NULL, 0, TRUE);
		_tmp280_ = _tmp279_;
		_g_free0 (_tmp275_);
		dbus_gcomment = _tmp280_;
		_tmp281_ = self->priv->current_dbus_member;
		_tmp282_ = dbus_gcomment;
		_tmp283_ = _gtkdoc_gcomment_ref0 (_tmp282_);
		_gtkdoc_gcomment_unref0 (_tmp281_->comment);
		_tmp281_->comment = _tmp283_;
		_tmp284_ = self->priv->current_dbus_interface;
		_tmp285_ = self->priv->current_dbus_member;
		gtkdoc_dbus_interface_add_method (_tmp284_, _tmp285_);
		_gtkdoc_gcomment_unref0 (dbus_gcomment);
	}
	_tmp286_ = old_headers;
	_tmp287_ = _vala_iterable_ref0 (_tmp286_);
	_vala_iterable_unref0 (self->priv->current_headers);
	self->priv->current_headers = _tmp287_;
	_tmp288_ = old_method;
	_tmp289_ = _g_object_ref0 (_tmp288_);
	_g_object_unref0 (self->priv->current_method);
	self->priv->current_method = _tmp289_;
	_tmp290_ = old_dbus_member;
	_tmp291_ = _gtkdoc_dbus_member_ref0 (_tmp290_);
	_gtkdoc_dbus_member_unref0 (self->priv->current_dbus_member);
	self->priv->current_dbus_member = _tmp291_;
	return_type_desc = NULL;
	_tmp292_ = m;
	_tmp293_ = valadoc_api_callable_get_return_type ((ValadocApiCallable*) _tmp292_);
	_tmp294_ = _tmp293_;
	_tmp295_ = valadoc_api_typereference_get_data_type (_tmp294_);
	_tmp296_ = _tmp295_;
	_tmp297_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp296_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp296_) : NULL);
	type_parameter = _tmp297_;
	_tmp298_ = type_parameter;
	if (_tmp298_ != NULL) {
		ValadocApiTypeParameter* _tmp299_;
		ValadocApiItem* _tmp300_;
		ValadocApiItem* _tmp301_;
		_tmp299_ = type_parameter;
		_tmp300_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp299_);
		_tmp301_ = _tmp300_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp301_, VALADOC_API_TYPE_CLASS)) {
			ValadocApiMethod* _tmp302_;
			ValadocApiItem* _tmp303_;
			ValadocApiItem* _tmp304_;
			gchar* _tmp305_;
			gchar* _tmp306_;
			ValadocApiTypeParameter* _tmp307_;
			const gchar* _tmp308_;
			const gchar* _tmp309_;
			gchar* _tmp310_;
			gchar* _tmp311_;
			gchar* _tmp312_;
			_tmp302_ = m;
			_tmp303_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp302_);
			_tmp304_ = _tmp303_;
			_tmp305_ = gtkdoc_get_cname (_tmp304_);
			_tmp306_ = _tmp305_;
			_tmp307_ = type_parameter;
			_tmp308_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp307_);
			_tmp309_ = _tmp308_;
			_tmp310_ = g_utf8_strdown (_tmp309_, (gssize) -1);
			_tmp311_ = _tmp310_;
			_tmp312_ = g_strdup_printf ("A value from type #%s:%s-type.", _tmp306_, _tmp311_);
			_g_free0 (return_type_desc);
			return_type_desc = _tmp312_;
			_g_free0 (_tmp311_);
			_g_free0 (_tmp306_);
		} else {
			gboolean _tmp313_ = FALSE;
			ValadocApiTypeParameter* _tmp314_;
			ValadocApiItem* _tmp315_;
			ValadocApiItem* _tmp316_;
			_tmp314_ = type_parameter;
			_tmp315_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp314_);
			_tmp316_ = _tmp315_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp316_, VALADOC_API_TYPE_INTERFACE)) {
				ValadocApiTypeParameter* _tmp317_;
				ValadocApiItem* _tmp318_;
				ValadocApiItem* _tmp319_;
				ValadocApiAttribute* _tmp320_;
				ValadocApiAttribute* _tmp321_;
				_tmp317_ = type_parameter;
				_tmp318_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp317_);
				_tmp319_ = _tmp318_;
				_tmp320_ = valadoc_api_symbol_get_attribute (G_TYPE_CHECK_INSTANCE_CAST (_tmp319_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), "GenericAccessors");
				_tmp321_ = _tmp320_;
				_tmp313_ = _tmp321_ != NULL;
				_g_object_unref0 (_tmp321_);
			} else {
				_tmp313_ = FALSE;
			}
			if (_tmp313_) {
				ValadocApiMethod* _tmp322_;
				ValadocApiItem* _tmp323_;
				ValadocApiItem* _tmp324_;
				gchar* _tmp325_;
				gchar* _tmp326_;
				ValadocApiTypeParameter* _tmp327_;
				const gchar* _tmp328_;
				const gchar* _tmp329_;
				gchar* _tmp330_;
				gchar* _tmp331_;
				gchar* _tmp332_;
				_tmp322_ = m;
				_tmp323_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp322_);
				_tmp324_ = _tmp323_;
				_tmp325_ = gtkdoc_get_cname (_tmp324_);
				_tmp326_ = _tmp325_;
				_tmp327_ = type_parameter;
				_tmp328_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp327_);
				_tmp329_ = _tmp328_;
				_tmp330_ = g_utf8_strdown (_tmp329_, (gssize) -1);
				_tmp331_ = _tmp330_;
				_tmp332_ = g_strdup_printf ("A value from type #_%sIface.get_%s_type().", _tmp326_, _tmp331_);
				_g_free0 (return_type_desc);
				return_type_desc = _tmp332_;
				_g_free0 (_tmp331_);
				_g_free0 (_tmp326_);
			} else {
				ValadocApiTypeParameter* _tmp333_;
				ValadocApiItem* _tmp334_;
				ValadocApiItem* _tmp335_;
				_tmp333_ = type_parameter;
				_tmp334_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp333_);
				_tmp335_ = _tmp334_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp335_, VALADOC_API_TYPE_STRUCT)) {
				} else {
					ValadocApiTypeParameter* _tmp336_;
					ValadocApiItem* _tmp337_;
					ValadocApiItem* _tmp338_;
					ValadocApiMethod* _tmp339_;
					_tmp336_ = type_parameter;
					_tmp337_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp336_);
					_tmp338_ = _tmp337_;
					_tmp339_ = m;
					if (_tmp338_ == G_TYPE_CHECK_INSTANCE_CAST (_tmp339_, VALADOC_API_TYPE_ITEM, ValadocApiItem)) {
						ValadocApiTypeParameter* _tmp340_;
						const gchar* _tmp341_;
						const gchar* _tmp342_;
						gchar* _tmp343_;
						gchar* _tmp344_;
						gchar* _tmp345_;
						_tmp340_ = type_parameter;
						_tmp341_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp340_);
						_tmp342_ = _tmp341_;
						_tmp343_ = g_utf8_strdown (_tmp342_, (gssize) -1);
						_tmp344_ = _tmp343_;
						_tmp345_ = g_strdup_printf ("value from type @%s_type.", _tmp344_);
						_g_free0 (return_type_desc);
						return_type_desc = _tmp345_;
						_g_free0 (_tmp344_);
					}
				}
			}
		}
	}
	_tmp346_ = m;
	_tmp347_ = valadoc_api_method_get_is_yields (_tmp346_);
	_tmp348_ = _tmp347_;
	if (_tmp348_) {
		GtkdocGComment* finish_gcomment = NULL;
		ValadocApiMethod* _tmp349_;
		gchar* _tmp350_;
		gchar* _tmp351_;
		ValadocApiMethod* _tmp352_;
		gchar* _tmp353_;
		gchar* _tmp354_;
		ValadocApiMethod* _tmp355_;
		ValadocContentComment* _tmp356_;
		ValadocContentComment* _tmp357_;
		GtkdocGComment* _tmp358_;
		GtkdocGComment* _tmp359_;
		GtkdocGComment* _tmp360_;
		ValaList* _tmp361_;
		ValadocApiMethod* _tmp362_;
		gboolean _tmp363_;
		gboolean _tmp364_;
		GtkdocGComment* _tmp376_;
		ValaList* _tmp377_;
		GtkdocHeader* _tmp378_;
		GtkdocHeader* _tmp379_;
		GtkdocHeader* _tmp380_;
		gchar** see_also = NULL;
		GtkdocGComment* _tmp384_;
		gchar** _tmp385_;
		gint _tmp385__length1;
		gchar** _tmp386_;
		gint _tmp386__length1;
		gint see_also_length1;
		gint _see_also_size_;
		gchar** _tmp387_;
		gint _tmp387__length1;
		ValadocApiMethod* _tmp388_;
		gchar* _tmp389_;
		GtkdocGComment* _tmp390_;
		gchar** _tmp391_;
		gint _tmp391__length1;
		gchar** _tmp392_;
		gint _tmp392__length1;
		const gchar* _tmp393_;
		_tmp349_ = m;
		_tmp350_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp349_);
		_tmp351_ = _tmp350_;
		_tmp352_ = m;
		_tmp353_ = valadoc_api_method_get_finish_function_cname (_tmp352_);
		_tmp354_ = _tmp353_;
		_tmp355_ = m;
		_tmp356_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp355_);
		_tmp357_ = _tmp356_;
		_tmp358_ = gtkdoc_generator_add_symbol (self, _tmp351_, _tmp354_, _tmp357_, NULL, NULL, 0);
		_tmp359_ = _tmp358_;
		_g_free0 (_tmp354_);
		_g_free0 (_tmp351_);
		finish_gcomment = _tmp359_;
		_tmp360_ = finish_gcomment;
		_tmp361_ = _tmp360_->headers;
		vala_collection_clear ((ValaCollection*) _tmp361_);
		_tmp362_ = m;
		_tmp363_ = valadoc_api_method_get_is_static (_tmp362_);
		_tmp364_ = _tmp363_;
		if (!_tmp364_) {
			GtkdocGComment* _tmp365_;
			ValaList* _tmp366_;
			ValadocApiMethod* _tmp367_;
			ValadocApiItem* _tmp368_;
			ValadocApiItem* _tmp369_;
			gchar* _tmp370_;
			gchar* _tmp371_;
			gchar* _tmp372_;
			gchar* _tmp373_;
			GtkdocHeader* _tmp374_;
			GtkdocHeader* _tmp375_;
			_tmp365_ = finish_gcomment;
			_tmp366_ = _tmp365_->headers;
			_tmp367_ = m;
			_tmp368_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp367_);
			_tmp369_ = _tmp368_;
			_tmp370_ = gtkdoc_get_docbook_link (_tmp369_, FALSE, FALSE);
			_tmp371_ = _tmp370_;
			_tmp372_ = g_strdup_printf ("the %s instance", _tmp371_);
			_tmp373_ = _tmp372_;
			_tmp374_ = gtkdoc_header_new ("self", _tmp373_, DBL_MAX, TRUE);
			_tmp375_ = _tmp374_;
			vala_collection_add ((ValaCollection*) _tmp366_, _tmp375_);
			_gtkdoc_header_unref0 (_tmp375_);
			_g_free0 (_tmp373_);
			_g_free0 (_tmp371_);
		}
		_tmp376_ = finish_gcomment;
		_tmp377_ = _tmp376_->headers;
		_tmp378_ = gtkdoc_header_new ("_res_", "a <link linkend=\"GAsyncResult\"><type>GAsyncResult</type></link>", DBL_MAX, TRUE);
		_tmp379_ = _tmp378_;
		vala_collection_add ((ValaCollection*) _tmp377_, _tmp379_);
		_gtkdoc_header_unref0 (_tmp379_);
		_tmp380_ = error_header;
		if (_tmp380_ != NULL) {
			GtkdocGComment* _tmp381_;
			ValaList* _tmp382_;
			GtkdocHeader* _tmp383_;
			_tmp381_ = finish_gcomment;
			_tmp382_ = _tmp381_->headers;
			_tmp383_ = error_header;
			vala_collection_add ((ValaCollection*) _tmp382_, _tmp383_);
		}
		_tmp384_ = finish_gcomment;
		_tmp385_ = _tmp384_->see_also;
		_tmp385__length1 = _tmp384_->see_also_length1;
		_tmp386_ = (_tmp385_ != NULL) ? _vala_array_dup12 (_tmp385_, _tmp385__length1) : ((gpointer) _tmp385_);
		_tmp386__length1 = _tmp385__length1;
		see_also = _tmp386_;
		see_also_length1 = _tmp386__length1;
		_see_also_size_ = see_also_length1;
		_tmp387_ = see_also;
		_tmp387__length1 = see_also_length1;
		_tmp388_ = m;
		_tmp389_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp388_, FALSE, FALSE);
		_vala_array_add23 (&see_also, &see_also_length1, &_see_also_size_, _tmp389_);
		_tmp390_ = finish_gcomment;
		_tmp391_ = see_also;
		_tmp391__length1 = see_also_length1;
		_tmp392_ = (_tmp391_ != NULL) ? _vala_array_dup13 (_tmp391_, _tmp391__length1) : ((gpointer) _tmp391_);
		_tmp392__length1 = _tmp391__length1;
		_tmp390_->see_also = (_vala_array_free (_tmp390_->see_also, _tmp390_->see_also_length1, (GDestroyNotify) g_free), NULL);
		_tmp390_->see_also = _tmp392_;
		_tmp390_->see_also_length1 = _tmp392__length1;
		_tmp393_ = return_type_desc;
		if (_tmp393_ != NULL) {
			GtkdocGComment* _tmp394_;
			const gchar* _tmp395_;
			GtkdocGComment* _tmp396_;
			const gchar* _tmp397_;
			gchar* _tmp398_;
			_tmp394_ = finish_gcomment;
			_tmp395_ = return_type_desc;
			_tmp396_ = finish_gcomment;
			_tmp397_ = _tmp396_->returns;
			_tmp398_ = gtkdoc_generator_combine_inline_docs (self, _tmp395_, _tmp397_);
			_g_free0 (_tmp394_->returns);
			_tmp394_->returns = _tmp398_;
		}
		see_also = (_vala_array_free (see_also, see_also_length1, (GDestroyNotify) g_free), NULL);
		_gtkdoc_gcomment_unref0 (finish_gcomment);
	} else {
		const gchar* _tmp399_;
		_tmp399_ = return_type_desc;
		if (_tmp399_ != NULL) {
			GtkdocGComment* _tmp400_;
			const gchar* _tmp401_;
			GtkdocGComment* _tmp402_;
			const gchar* _tmp403_;
			gchar* _tmp404_;
			_tmp400_ = gcomment;
			_tmp401_ = return_type_desc;
			_tmp402_ = gcomment;
			_tmp403_ = _tmp402_->returns;
			_tmp404_ = gtkdoc_generator_combine_inline_docs (self, _tmp401_, _tmp403_);
			_g_free0 (_tmp400_->returns);
			_tmp400_->returns = _tmp404_;
		}
	}
	_tmp406_ = m;
	_tmp407_ = valadoc_api_method_get_is_constructor (_tmp406_);
	_tmp408_ = _tmp407_;
	if (_tmp408_) {
		ValadocApiMethod* _tmp409_;
		gchar* _tmp410_;
		gchar* _tmp411_;
		gboolean _tmp412_;
		_tmp409_ = m;
		_tmp410_ = valadoc_api_method_get_cname (_tmp409_);
		_tmp411_ = _tmp410_;
		_tmp412_ = g_str_has_suffix (_tmp411_, "_new");
		_tmp405_ = !_tmp412_;
		_g_free0 (_tmp411_);
	} else {
		_tmp405_ = FALSE;
	}
	if (_tmp405_) {
		GtkdocGeneratorFileData* file_data = NULL;
		ValadocApiMethod* _tmp413_;
		gchar* _tmp414_;
		gchar* _tmp415_;
		GtkdocGeneratorFileData* _tmp416_;
		GtkdocGeneratorFileData* _tmp417_;
		GtkdocGeneratorFileData* _tmp418_;
		ValaList* _tmp419_;
		ValadocApiMethod* _tmp420_;
		gchar* _tmp421_;
		gchar* _tmp422_;
		gchar* _tmp423_;
		gchar* _tmp424_;
		_tmp413_ = m;
		_tmp414_ = valadoc_documentation_get_filename ((ValadocDocumentation*) _tmp413_);
		_tmp415_ = _tmp414_;
		_tmp416_ = gtkdoc_generator_get_file_data (self, _tmp415_);
		_tmp417_ = _tmp416_;
		_g_free0 (_tmp415_);
		file_data = _tmp417_;
		_tmp418_ = file_data;
		_tmp419_ = _tmp418_->private_section_lines;
		_tmp420_ = m;
		_tmp421_ = valadoc_api_method_get_cname (_tmp420_);
		_tmp422_ = _tmp421_;
		_tmp423_ = string_replace (_tmp422_, "_new", "_construct");
		_tmp424_ = _tmp423_;
		vala_collection_add ((ValaCollection*) _tmp419_, _tmp424_);
		_g_free0 (_tmp424_);
		_g_free0 (_tmp422_);
		_gtkdoc_generator_file_data_unref0 (file_data);
	}
	_g_object_unref0 (type_parameter);
	_g_free0 (return_type_desc);
	_gtkdoc_gcomment_unref0 (gcomment);
	_gtkdoc_header_unref0 (error_header);
	_vala_iterable_unref0 (exceptions);
	_vala_iterable_unref0 (type_parameters);
	_gtkdoc_dbus_member_unref0 (old_dbus_member);
	_g_object_unref0 (old_method);
	_vala_iterable_unref0 (old_headers);
	annotations = (_vala_array_free (annotations, annotations_length1, (GDestroyNotify) g_free), NULL);
}


/**
 * Visit abstract methods
 */
static void gtkdoc_generator_visit_abstract_method (GtkdocGenerator* self, ValadocApiMethod* m) {
	gboolean _tmp0_ = FALSE;
	ValadocApiMethod* _tmp1_;
	gboolean _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	ValadocApiMethod* _tmp9_;
	gboolean _tmp10_;
	gboolean _tmp11_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (m != NULL);
	_tmp1_ = m;
	_tmp2_ = valadoc_api_method_get_is_abstract (_tmp1_);
	_tmp3_ = _tmp2_;
	if (!_tmp3_) {
		ValadocApiMethod* _tmp4_;
		gboolean _tmp5_;
		gboolean _tmp6_;
		_tmp4_ = m;
		_tmp5_ = valadoc_api_method_get_is_virtual (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = !_tmp6_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		return;
	}
	_tmp9_ = m;
	_tmp10_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp9_);
	_tmp11_ = _tmp10_;
	if (!_tmp11_) {
		ValadocApiMethod* _tmp12_;
		gboolean _tmp13_;
		gboolean _tmp14_;
		_tmp12_ = m;
		_tmp13_ = valadoc_api_symbol_get_is_protected ((ValadocApiSymbol*) _tmp12_);
		_tmp14_ = _tmp13_;
		_tmp8_ = !_tmp14_;
	} else {
		_tmp8_ = FALSE;
	}
	if (_tmp8_) {
		ValadocApiMethod* _tmp15_;
		gboolean _tmp16_;
		gboolean _tmp17_;
		_tmp15_ = m;
		_tmp16_ = valadoc_api_symbol_get_is_internal ((ValadocApiSymbol*) _tmp15_);
		_tmp17_ = _tmp16_;
		_tmp7_ = !_tmp17_;
	} else {
		_tmp7_ = FALSE;
	}
	if (_tmp7_) {
		ValadocApiMethod* _tmp18_;
		const gchar* _tmp19_;
		const gchar* _tmp20_;
		ValadocApiMethod* _tmp21_;
		gchar* _tmp22_;
		gchar* _tmp23_;
		gchar* _tmp24_;
		gchar* _tmp25_;
		GtkdocHeader* _tmp26_;
		GtkdocHeader* _tmp27_;
		ValadocApiMethod* _tmp28_;
		gboolean _tmp29_;
		gboolean _tmp30_;
		_tmp18_ = m;
		_tmp19_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = m;
		_tmp22_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp21_, FALSE, FALSE);
		_tmp23_ = _tmp22_;
		_tmp24_ = g_strdup_printf ("virtual method called by %s", _tmp23_);
		_tmp25_ = _tmp24_;
		_tmp26_ = gtkdoc_generator_add_custom_header (self, _tmp20_, _tmp25_, NULL, 0, DBL_MAX, TRUE);
		_tmp27_ = _tmp26_;
		_gtkdoc_header_unref0 (_tmp27_);
		_g_free0 (_tmp25_);
		_g_free0 (_tmp23_);
		_tmp28_ = m;
		_tmp29_ = valadoc_api_method_get_is_yields (_tmp28_);
		_tmp30_ = _tmp29_;
		if (_tmp30_) {
			ValadocApiMethod* _tmp31_;
			const gchar* _tmp32_;
			const gchar* _tmp33_;
			gchar* _tmp34_;
			gchar* _tmp35_;
			ValadocApiMethod* _tmp36_;
			const gchar* _tmp37_;
			const gchar* _tmp38_;
			ValadocApiMethod* _tmp39_;
			gchar* _tmp40_;
			gchar* _tmp41_;
			gchar* _tmp42_;
			gchar* _tmp43_;
			GtkdocHeader* _tmp44_;
			GtkdocHeader* _tmp45_;
			_tmp31_ = m;
			_tmp32_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp31_);
			_tmp33_ = _tmp32_;
			_tmp34_ = g_strconcat (_tmp33_, "_finish", NULL);
			_tmp35_ = _tmp34_;
			_tmp36_ = m;
			_tmp37_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp36_);
			_tmp38_ = _tmp37_;
			_tmp39_ = m;
			_tmp40_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp39_, FALSE, FALSE);
			_tmp41_ = _tmp40_;
			_tmp42_ = g_strdup_printf ("asynchronous finish function for <structfield>%s</structfield>, called" \
" by %s", _tmp38_, _tmp41_);
			_tmp43_ = _tmp42_;
			_tmp44_ = gtkdoc_generator_add_custom_header (self, _tmp35_, _tmp43_, NULL, 0, DBL_MAX, TRUE);
			_tmp45_ = _tmp44_;
			_gtkdoc_header_unref0 (_tmp45_);
			_g_free0 (_tmp43_);
			_g_free0 (_tmp41_);
			_g_free0 (_tmp35_);
		}
	} else {
		ValadocApiMethod* _tmp46_;
		const gchar* _tmp47_;
		const gchar* _tmp48_;
		GtkdocHeader* _tmp49_;
		GtkdocHeader* _tmp50_;
		ValadocApiMethod* _tmp51_;
		gboolean _tmp52_;
		gboolean _tmp53_;
		_tmp46_ = m;
		_tmp47_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp46_);
		_tmp48_ = _tmp47_;
		_tmp49_ = gtkdoc_generator_add_custom_header (self, _tmp48_, "virtual method used internally", NULL, 0, DBL_MAX, TRUE);
		_tmp50_ = _tmp49_;
		_gtkdoc_header_unref0 (_tmp50_);
		_tmp51_ = m;
		_tmp52_ = valadoc_api_method_get_is_yields (_tmp51_);
		_tmp53_ = _tmp52_;
		if (_tmp53_) {
			ValadocApiMethod* _tmp54_;
			const gchar* _tmp55_;
			const gchar* _tmp56_;
			gchar* _tmp57_;
			gchar* _tmp58_;
			GtkdocHeader* _tmp59_;
			GtkdocHeader* _tmp60_;
			_tmp54_ = m;
			_tmp55_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp54_);
			_tmp56_ = _tmp55_;
			_tmp57_ = g_strconcat (_tmp56_, "_finish", NULL);
			_tmp58_ = _tmp57_;
			_tmp59_ = gtkdoc_generator_add_custom_header (self, _tmp58_, "asynchronous finish function used internally", NULL, 0, DBL_MAX, TRUE);
			_tmp60_ = _tmp59_;
			_gtkdoc_header_unref0 (_tmp60_);
			_g_free0 (_tmp58_);
		}
	}
}


/**
 * Visit abstract properties
 */
static void gtkdoc_generator_visit_abstract_property (GtkdocGenerator* self, ValadocApiProperty* prop) {
	gboolean _tmp0_ = FALSE;
	ValadocApiProperty* _tmp1_;
	gboolean _tmp2_;
	gboolean _tmp3_;
	gboolean _tmp7_ = FALSE;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp9_ = FALSE;
	ValadocApiProperty* _tmp10_;
	ValadocApiPropertyAccessor* _tmp11_;
	ValadocApiPropertyAccessor* _tmp12_;
	gboolean _tmp40_ = FALSE;
	gboolean _tmp41_ = FALSE;
	gboolean _tmp42_ = FALSE;
	gboolean _tmp43_ = FALSE;
	ValadocApiProperty* _tmp44_;
	ValadocApiPropertyAccessor* _tmp45_;
	ValadocApiPropertyAccessor* _tmp46_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (prop != NULL);
	_tmp1_ = prop;
	_tmp2_ = valadoc_api_property_get_is_abstract (_tmp1_);
	_tmp3_ = _tmp2_;
	if (!_tmp3_) {
		ValadocApiProperty* _tmp4_;
		gboolean _tmp5_;
		gboolean _tmp6_;
		_tmp4_ = prop;
		_tmp5_ = valadoc_api_property_get_is_virtual (_tmp4_);
		_tmp6_ = _tmp5_;
		_tmp0_ = !_tmp6_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		return;
	}
	_tmp10_ = prop;
	_tmp11_ = valadoc_api_property_get_getter (_tmp10_);
	_tmp12_ = _tmp11_;
	if (_tmp12_ != NULL) {
		ValadocApiProperty* _tmp13_;
		ValadocApiPropertyAccessor* _tmp14_;
		ValadocApiPropertyAccessor* _tmp15_;
		gboolean _tmp16_;
		gboolean _tmp17_;
		_tmp13_ = prop;
		_tmp14_ = valadoc_api_property_get_getter (_tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp15_);
		_tmp17_ = _tmp16_;
		_tmp9_ = !_tmp17_;
	} else {
		_tmp9_ = FALSE;
	}
	if (_tmp9_) {
		ValadocApiProperty* _tmp18_;
		ValadocApiPropertyAccessor* _tmp19_;
		ValadocApiPropertyAccessor* _tmp20_;
		gboolean _tmp21_;
		gboolean _tmp22_;
		_tmp18_ = prop;
		_tmp19_ = valadoc_api_property_get_getter (_tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = valadoc_api_symbol_get_is_internal ((ValadocApiSymbol*) _tmp20_);
		_tmp22_ = _tmp21_;
		_tmp8_ = !_tmp22_;
	} else {
		_tmp8_ = FALSE;
	}
	if (_tmp8_) {
		ValadocApiProperty* _tmp23_;
		ValadocApiPropertyAccessor* _tmp24_;
		ValadocApiPropertyAccessor* _tmp25_;
		gboolean _tmp26_;
		gboolean _tmp27_;
		_tmp23_ = prop;
		_tmp24_ = valadoc_api_property_get_getter (_tmp23_);
		_tmp25_ = _tmp24_;
		_tmp26_ = valadoc_api_property_accessor_get_is_get (_tmp25_);
		_tmp27_ = _tmp26_;
		_tmp7_ = _tmp27_;
	} else {
		_tmp7_ = FALSE;
	}
	if (_tmp7_) {
		ValadocApiProperty* _tmp28_;
		const gchar* _tmp29_;
		const gchar* _tmp30_;
		gchar* _tmp31_;
		gchar* _tmp32_;
		ValadocApiProperty* _tmp33_;
		gchar* _tmp34_;
		gchar* _tmp35_;
		gchar* _tmp36_;
		gchar* _tmp37_;
		GtkdocHeader* _tmp38_;
		GtkdocHeader* _tmp39_;
		_tmp28_ = prop;
		_tmp29_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp28_);
		_tmp30_ = _tmp29_;
		_tmp31_ = g_strconcat ("get_", _tmp30_, NULL);
		_tmp32_ = _tmp31_;
		_tmp33_ = prop;
		_tmp34_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp33_, FALSE, FALSE);
		_tmp35_ = _tmp34_;
		_tmp36_ = g_strdup_printf ("getter method for the abstract property %s", _tmp35_);
		_tmp37_ = _tmp36_;
		_tmp38_ = gtkdoc_generator_add_custom_header (self, _tmp32_, _tmp37_, NULL, 0, DBL_MAX, TRUE);
		_tmp39_ = _tmp38_;
		_gtkdoc_header_unref0 (_tmp39_);
		_g_free0 (_tmp37_);
		_g_free0 (_tmp35_);
		_g_free0 (_tmp32_);
	}
	_tmp44_ = prop;
	_tmp45_ = valadoc_api_property_get_setter (_tmp44_);
	_tmp46_ = _tmp45_;
	if (_tmp46_ != NULL) {
		ValadocApiProperty* _tmp47_;
		ValadocApiPropertyAccessor* _tmp48_;
		ValadocApiPropertyAccessor* _tmp49_;
		gboolean _tmp50_;
		gboolean _tmp51_;
		_tmp47_ = prop;
		_tmp48_ = valadoc_api_property_get_setter (_tmp47_);
		_tmp49_ = _tmp48_;
		_tmp50_ = valadoc_api_symbol_get_is_private ((ValadocApiSymbol*) _tmp49_);
		_tmp51_ = _tmp50_;
		_tmp43_ = !_tmp51_;
	} else {
		_tmp43_ = FALSE;
	}
	if (_tmp43_) {
		ValadocApiProperty* _tmp52_;
		ValadocApiPropertyAccessor* _tmp53_;
		ValadocApiPropertyAccessor* _tmp54_;
		gboolean _tmp55_;
		gboolean _tmp56_;
		_tmp52_ = prop;
		_tmp53_ = valadoc_api_property_get_setter (_tmp52_);
		_tmp54_ = _tmp53_;
		_tmp55_ = valadoc_api_symbol_get_is_internal ((ValadocApiSymbol*) _tmp54_);
		_tmp56_ = _tmp55_;
		_tmp42_ = !_tmp56_;
	} else {
		_tmp42_ = FALSE;
	}
	if (_tmp42_) {
		ValadocApiProperty* _tmp57_;
		ValadocApiPropertyAccessor* _tmp58_;
		ValadocApiPropertyAccessor* _tmp59_;
		gboolean _tmp60_;
		gboolean _tmp61_;
		_tmp57_ = prop;
		_tmp58_ = valadoc_api_property_get_setter (_tmp57_);
		_tmp59_ = _tmp58_;
		_tmp60_ = valadoc_api_property_accessor_get_is_set (_tmp59_);
		_tmp61_ = _tmp60_;
		_tmp41_ = _tmp61_;
	} else {
		_tmp41_ = FALSE;
	}
	if (_tmp41_) {
		ValadocApiProperty* _tmp62_;
		ValadocApiPropertyAccessor* _tmp63_;
		ValadocApiPropertyAccessor* _tmp64_;
		gboolean _tmp65_;
		gboolean _tmp66_;
		_tmp62_ = prop;
		_tmp63_ = valadoc_api_property_get_setter (_tmp62_);
		_tmp64_ = _tmp63_;
		_tmp65_ = valadoc_api_property_accessor_get_is_construct (_tmp64_);
		_tmp66_ = _tmp65_;
		_tmp40_ = !_tmp66_;
	} else {
		_tmp40_ = FALSE;
	}
	if (_tmp40_) {
		ValadocApiProperty* _tmp67_;
		const gchar* _tmp68_;
		const gchar* _tmp69_;
		gchar* _tmp70_;
		gchar* _tmp71_;
		ValadocApiProperty* _tmp72_;
		gchar* _tmp73_;
		gchar* _tmp74_;
		gchar* _tmp75_;
		gchar* _tmp76_;
		GtkdocHeader* _tmp77_;
		GtkdocHeader* _tmp78_;
		_tmp67_ = prop;
		_tmp68_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp67_);
		_tmp69_ = _tmp68_;
		_tmp70_ = g_strconcat ("set_", _tmp69_, NULL);
		_tmp71_ = _tmp70_;
		_tmp72_ = prop;
		_tmp73_ = gtkdoc_get_docbook_link ((ValadocApiItem*) _tmp72_, FALSE, FALSE);
		_tmp74_ = _tmp73_;
		_tmp75_ = g_strdup_printf ("setter method for the abstract property %s", _tmp74_);
		_tmp76_ = _tmp75_;
		_tmp77_ = gtkdoc_generator_add_custom_header (self, _tmp71_, _tmp76_, NULL, 0, DBL_MAX, TRUE);
		_tmp78_ = _tmp77_;
		_gtkdoc_header_unref0 (_tmp78_);
		_g_free0 (_tmp76_);
		_g_free0 (_tmp74_);
		_g_free0 (_tmp71_);
	}
}


static void _vala_array_add24 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add25 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add26 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add27 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void _vala_array_add28 (gchar** * array, int* length, int* size, gchar* value) {
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}


static void gtkdoc_generator_real_visit_formal_parameter (ValadocApiVisitor* base, ValadocApiFormalParameter* param) {
	GtkdocGenerator * self;
	const gchar* _tmp0_ = NULL;
	ValadocApiFormalParameter* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* param_name = NULL;
	gchar* _tmp4_;
	gchar** annotations = NULL;
	gchar** _tmp5_;
	gint annotations_length1;
	gint _annotations_size_;
	gchar* direction = NULL;
	gchar* _tmp6_;
	const gchar* _tmp7_;
	GtkdocHeader* _tmp8_;
	GtkdocHeader* _tmp9_;
	ValadocApiFormalParameter* _tmp10_;
	gboolean _tmp11_;
	gboolean _tmp12_;
	gchar** _tmp18_;
	gint _tmp18__length1;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	ValadocApiTypeParameter* type_parameter = NULL;
	ValadocApiFormalParameter* _tmp21_;
	ValadocApiTypeReference* _tmp22_;
	ValadocApiTypeReference* _tmp23_;
	ValadocApiItem* _tmp24_;
	ValadocApiItem* _tmp25_;
	ValadocApiTypeParameter* _tmp26_;
	ValadocApiTypeParameter* _tmp27_;
	ValadocApiFormalParameter* _tmp86_;
	ValadocApiTypeReference* _tmp87_;
	ValadocApiTypeReference* _tmp88_;
	gboolean _tmp89_;
	gboolean _tmp90_;
	gboolean _tmp93_ = FALSE;
	ValadocApiFormalParameter* _tmp94_;
	ValadocApiTypeReference* _tmp95_;
	ValadocApiTypeReference* _tmp96_;
	gboolean _tmp97_;
	gboolean _tmp98_;
	ValadocApiFormalParameter* _tmp106_;
	ValadocApiTypeReference* _tmp107_;
	ValadocApiTypeReference* _tmp108_;
	ValadocApiItem* _tmp109_;
	ValadocApiItem* _tmp110_;
	gboolean _tmp126_ = FALSE;
	gboolean _tmp127_ = FALSE;
	ValadocApiFormalParameter* _tmp128_;
	gboolean _tmp129_;
	gboolean _tmp130_;
	gboolean _tmp145_ = FALSE;
	ValadocApiSignal* _tmp146_;
	ValadocApiFormalParameter* _tmp164_;
	ValadocApiTypeReference* _tmp165_;
	ValadocApiTypeReference* _tmp166_;
	ValadocApiItem* _tmp167_;
	ValadocApiItem* _tmp168_;
	GtkdocDBusMember* _tmp205_;
	ValadocApiFormalParameter* _tmp221_;
	self = (GtkdocGenerator*) base;
	g_return_if_fail (param != NULL);
	_tmp1_ = param;
	_tmp2_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp1_);
	_tmp3_ = _tmp2_;
	_tmp0_ = _tmp3_;
	if (_tmp0_ == NULL) {
		_tmp0_ = "...";
	}
	_tmp4_ = g_strdup (_tmp0_);
	param_name = _tmp4_;
	_tmp5_ = g_new0 (gchar*, 0 + 1);
	annotations = _tmp5_;
	annotations_length1 = 0;
	_annotations_size_ = annotations_length1;
	_tmp6_ = g_strdup ("in");
	direction = _tmp6_;
	_tmp7_ = param_name;
	_tmp8_ = gtkdoc_generator_add_custom_header (self, _tmp7_, "&nbsp;", NULL, 0, DBL_MAX, FALSE);
	_tmp9_ = _tmp8_;
	_gtkdoc_header_unref0 (_tmp9_);
	_tmp10_ = param;
	_tmp11_ = valadoc_api_formal_parameter_get_is_out (_tmp10_);
	_tmp12_ = _tmp11_;
	if (_tmp12_) {
		gchar* _tmp13_;
		_tmp13_ = g_strdup ("out");
		_g_free0 (direction);
		direction = _tmp13_;
	} else {
		ValadocApiFormalParameter* _tmp14_;
		gboolean _tmp15_;
		gboolean _tmp16_;
		_tmp14_ = param;
		_tmp15_ = valadoc_api_formal_parameter_get_is_ref (_tmp14_);
		_tmp16_ = _tmp15_;
		if (_tmp16_) {
			gchar* _tmp17_;
			_tmp17_ = g_strdup ("inout");
			_g_free0 (direction);
			direction = _tmp17_;
		}
	}
	_tmp18_ = annotations;
	_tmp18__length1 = annotations_length1;
	_tmp19_ = direction;
	_tmp20_ = g_strdup (_tmp19_);
	_vala_array_add24 (&annotations, &annotations_length1, &_annotations_size_, _tmp20_);
	_tmp21_ = param;
	_tmp22_ = valadoc_api_formal_parameter_get_parameter_type (_tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = valadoc_api_typereference_get_data_type (_tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp25_, VALADOC_API_TYPE_TYPEPARAMETER) ? ((ValadocApiTypeParameter*) _tmp25_) : NULL);
	type_parameter = _tmp26_;
	_tmp27_ = type_parameter;
	if (_tmp27_ != NULL) {
		ValadocApiTypeParameter* _tmp28_;
		ValadocApiItem* _tmp29_;
		ValadocApiItem* _tmp30_;
		_tmp28_ = type_parameter;
		_tmp29_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp28_);
		_tmp30_ = _tmp29_;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp30_, VALADOC_API_TYPE_CLASS)) {
			const gchar* _tmp31_;
			ValadocApiTypeParameter* _tmp32_;
			ValadocApiItem* _tmp33_;
			ValadocApiItem* _tmp34_;
			gchar* _tmp35_;
			gchar* _tmp36_;
			ValadocApiTypeParameter* _tmp37_;
			const gchar* _tmp38_;
			const gchar* _tmp39_;
			gchar* _tmp40_;
			gchar* _tmp41_;
			gchar* _tmp42_;
			gchar* _tmp43_;
			GtkdocHeader* _tmp44_;
			GtkdocHeader* _tmp45_;
			_tmp31_ = param_name;
			_tmp32_ = type_parameter;
			_tmp33_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp32_);
			_tmp34_ = _tmp33_;
			_tmp35_ = gtkdoc_get_cname (_tmp34_);
			_tmp36_ = _tmp35_;
			_tmp37_ = type_parameter;
			_tmp38_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp37_);
			_tmp39_ = _tmp38_;
			_tmp40_ = g_utf8_strdown (_tmp39_, (gssize) -1);
			_tmp41_ = _tmp40_;
			_tmp42_ = g_strdup_printf ("A parameter from type #%s:%s-type.", _tmp36_, _tmp41_);
			_tmp43_ = _tmp42_;
			_tmp44_ = gtkdoc_generator_add_custom_header (self, _tmp31_, _tmp43_, NULL, 0, DBL_MAX, FALSE);
			_tmp45_ = _tmp44_;
			_gtkdoc_header_unref0 (_tmp45_);
			_g_free0 (_tmp43_);
			_g_free0 (_tmp41_);
			_g_free0 (_tmp36_);
		} else {
			gboolean _tmp46_ = FALSE;
			ValadocApiTypeParameter* _tmp47_;
			ValadocApiItem* _tmp48_;
			ValadocApiItem* _tmp49_;
			_tmp47_ = type_parameter;
			_tmp48_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp47_);
			_tmp49_ = _tmp48_;
			if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp49_, VALADOC_API_TYPE_INTERFACE)) {
				ValadocApiTypeParameter* _tmp50_;
				ValadocApiItem* _tmp51_;
				ValadocApiItem* _tmp52_;
				ValadocApiAttribute* _tmp53_;
				ValadocApiAttribute* _tmp54_;
				_tmp50_ = type_parameter;
				_tmp51_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp50_);
				_tmp52_ = _tmp51_;
				_tmp53_ = valadoc_api_symbol_get_attribute (G_TYPE_CHECK_INSTANCE_CAST (_tmp52_, VALADOC_API_TYPE_SYMBOL, ValadocApiSymbol), "GenericAccessors");
				_tmp54_ = _tmp53_;
				_tmp46_ = _tmp54_ != NULL;
				_g_object_unref0 (_tmp54_);
			} else {
				_tmp46_ = FALSE;
			}
			if (_tmp46_) {
				const gchar* _tmp55_;
				ValadocApiTypeParameter* _tmp56_;
				ValadocApiItem* _tmp57_;
				ValadocApiItem* _tmp58_;
				gchar* _tmp59_;
				gchar* _tmp60_;
				ValadocApiTypeParameter* _tmp61_;
				const gchar* _tmp62_;
				const gchar* _tmp63_;
				gchar* _tmp64_;
				gchar* _tmp65_;
				gchar* _tmp66_;
				gchar* _tmp67_;
				GtkdocHeader* _tmp68_;
				GtkdocHeader* _tmp69_;
				_tmp55_ = param_name;
				_tmp56_ = type_parameter;
				_tmp57_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp56_);
				_tmp58_ = _tmp57_;
				_tmp59_ = gtkdoc_get_cname (_tmp58_);
				_tmp60_ = _tmp59_;
				_tmp61_ = type_parameter;
				_tmp62_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp61_);
				_tmp63_ = _tmp62_;
				_tmp64_ = g_utf8_strdown (_tmp63_, (gssize) -1);
				_tmp65_ = _tmp64_;
				_tmp66_ = g_strdup_printf ("A parameter from type #_%sIface.get_%s_type().", _tmp60_, _tmp65_);
				_tmp67_ = _tmp66_;
				_tmp68_ = gtkdoc_generator_add_custom_header (self, _tmp55_, _tmp67_, NULL, 0, DBL_MAX, FALSE);
				_tmp69_ = _tmp68_;
				_gtkdoc_header_unref0 (_tmp69_);
				_g_free0 (_tmp67_);
				_g_free0 (_tmp65_);
				_g_free0 (_tmp60_);
			} else {
				ValadocApiTypeParameter* _tmp70_;
				ValadocApiItem* _tmp71_;
				ValadocApiItem* _tmp72_;
				_tmp70_ = type_parameter;
				_tmp71_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp70_);
				_tmp72_ = _tmp71_;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp72_, VALADOC_API_TYPE_STRUCT)) {
				} else {
					ValadocApiTypeParameter* _tmp73_;
					ValadocApiItem* _tmp74_;
					ValadocApiItem* _tmp75_;
					_tmp73_ = type_parameter;
					_tmp74_ = valadoc_api_item_get_parent ((ValadocApiItem*) _tmp73_);
					_tmp75_ = _tmp74_;
					if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp75_, VALADOC_API_TYPE_METHOD)) {
						const gchar* _tmp76_;
						ValadocApiTypeParameter* _tmp77_;
						const gchar* _tmp78_;
						const gchar* _tmp79_;
						gchar* _tmp80_;
						gchar* _tmp81_;
						gchar* _tmp82_;
						gchar* _tmp83_;
						GtkdocHeader* _tmp84_;
						GtkdocHeader* _tmp85_;
						_tmp76_ = param_name;
						_tmp77_ = type_parameter;
						_tmp78_ = valadoc_api_node_get_name ((ValadocApiNode*) _tmp77_);
						_tmp79_ = _tmp78_;
						_tmp80_ = g_utf8_strdown (_tmp79_, (gssize) -1);
						_tmp81_ = _tmp80_;
						_tmp82_ = g_strdup_printf ("A parameter from type @%s_type.", _tmp81_);
						_tmp83_ = _tmp82_;
						_tmp84_ = gtkdoc_generator_add_custom_header (self, _tmp76_, _tmp83_, NULL, 0, DBL_MAX, FALSE);
						_tmp85_ = _tmp84_;
						_gtkdoc_header_unref0 (_tmp85_);
						_g_free0 (_tmp83_);
						_g_free0 (_tmp81_);
					}
				}
			}
		}
	}
	_tmp86_ = param;
	_tmp87_ = valadoc_api_formal_parameter_get_parameter_type (_tmp86_);
	_tmp88_ = _tmp87_;
	_tmp89_ = valadoc_api_typereference_get_is_nullable (_tmp88_);
	_tmp90_ = _tmp89_;
	if (_tmp90_) {
		gchar** _tmp91_;
		gint _tmp91__length1;
		gchar* _tmp92_;
		_tmp91_ = annotations;
		_tmp91__length1 = annotations_length1;
		_tmp92_ = g_strdup ("allow-none");
		_vala_array_add25 (&annotations, &annotations_length1, &_annotations_size_, _tmp92_);
	}
	_tmp94_ = param;
	_tmp95_ = valadoc_api_formal_parameter_get_parameter_type (_tmp94_);
	_tmp96_ = _tmp95_;
	_tmp97_ = valadoc_api_typereference_get_is_owned (_tmp96_);
	_tmp98_ = _tmp97_;
	if (_tmp98_) {
		ValadocApiFormalParameter* _tmp99_;
		ValadocApiTypeReference* _tmp100_;
		ValadocApiTypeReference* _tmp101_;
		ValadocApiItem* _tmp102_;
		ValadocApiItem* _tmp103_;
		_tmp99_ = param;
		_tmp100_ = valadoc_api_formal_parameter_get_parameter_type (_tmp99_);
		_tmp101_ = _tmp100_;
		_tmp102_ = valadoc_api_typereference_get_data_type (_tmp101_);
		_tmp103_ = _tmp102_;
		_tmp93_ = !G_TYPE_CHECK_INSTANCE_TYPE (_tmp103_, VALADOC_API_TYPE_DELEGATE);
	} else {
		_tmp93_ = FALSE;
	}
	if (_tmp93_) {
		gchar** _tmp104_;
		gint _tmp104__length1;
		gchar* _tmp105_;
		_tmp104_ = annotations;
		_tmp104__length1 = annotations_length1;
		_tmp105_ = g_strdup ("transfer full");
		_vala_array_add26 (&annotations, &annotations_length1, &_annotations_size_, _tmp105_);
	}
	_tmp106_ = param;
	_tmp107_ = valadoc_api_formal_parameter_get_parameter_type (_tmp106_);
	_tmp108_ = _tmp107_;
	_tmp109_ = valadoc_api_typereference_get_data_type (_tmp108_);
	_tmp110_ = _tmp109_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp110_, VALADOC_API_TYPE_ARRAY)) {
		gchar** _tmp111_;
		gint _tmp111__length1;
		const gchar* _tmp112_;
		gchar* _tmp113_;
		const gchar* _tmp114_;
		gchar* _tmp115_;
		gchar* _tmp116_;
		const gchar* _tmp117_;
		gchar* _tmp118_;
		gchar* _tmp119_;
		ValadocApiNode* _tmp120_;
		ValadocApiNode* _tmp121_;
		const gchar* _tmp122_;
		gdouble _tmp123_;
		GtkdocHeader* _tmp124_;
		GtkdocHeader* _tmp125_;
		_tmp111_ = annotations;
		_tmp111__length1 = annotations_length1;
		_tmp112_ = param_name;
		_tmp113_ = g_strdup_printf ("array length=%s_length1", _tmp112_);
		_vala_array_add27 (&annotations, &annotations_length1, &_annotations_size_, _tmp113_);
		_tmp114_ = param_name;
		_tmp115_ = g_strdup_printf ("%s_length1", _tmp114_);
		_tmp116_ = _tmp115_;
		_tmp117_ = param_name;
		_tmp118_ = g_strdup_printf ("length of the @%s array", _tmp117_);
		_tmp119_ = _tmp118_;
		_tmp120_ = gtkdoc_generator_get_current_method_or_delegate (self);
		_tmp121_ = _tmp120_;
		_tmp122_ = param_name;
		_tmp123_ = gtkdoc_get_parameter_pos (_tmp121_, _tmp122_);
		_tmp124_ = gtkdoc_generator_add_custom_header (self, _tmp116_, _tmp119_, NULL, 0, _tmp123_ + 0.1, TRUE);
		_tmp125_ = _tmp124_;
		_gtkdoc_header_unref0 (_tmp125_);
		_g_free0 (_tmp119_);
		_g_free0 (_tmp116_);
	}
	_tmp128_ = param;
	_tmp129_ = valadoc_api_formal_parameter_get_ellipsis (_tmp128_);
	_tmp130_ = _tmp129_;
	if (!_tmp130_) {
		ValadocApiFormalParameter* _tmp131_;
		ValadocApiTypeReference* _tmp132_;
		ValadocApiTypeReference* _tmp133_;
		ValadocApiItem* _tmp134_;
		ValadocApiItem* _tmp135_;
		_tmp131_ = param;
		_tmp132_ = valadoc_api_formal_parameter_get_parameter_type (_tmp131_);
		_tmp133_ = _tmp132_;
		_tmp134_ = valadoc_api_typereference_get_data_type (_tmp133_);
		_tmp135_ = _tmp134_;
		_tmp127_ = _tmp135_ != NULL;
	} else {
		_tmp127_ = FALSE;
	}
	if (_tmp127_) {
		ValadocApiFormalParameter* _tmp136_;
		ValadocApiTypeReference* _tmp137_;
		ValadocApiTypeReference* _tmp138_;
		ValadocApiItem* _tmp139_;
		ValadocApiItem* _tmp140_;
		gchar* _tmp141_;
		gchar* _tmp142_;
		_tmp136_ = param;
		_tmp137_ = valadoc_api_formal_parameter_get_parameter_type (_tmp136_);
		_tmp138_ = _tmp137_;
		_tmp139_ = valadoc_api_typereference_get_data_type (_tmp138_);
		_tmp140_ = _tmp139_;
		_tmp141_ = gtkdoc_get_cname (_tmp140_);
		_tmp142_ = _tmp141_;
		_tmp126_ = g_strcmp0 (_tmp142_, "GError") == 0;
		_g_free0 (_tmp142_);
	} else {
		_tmp126_ = FALSE;
	}
	if (_tmp126_) {
		gchar** _tmp143_;
		gint _tmp143__length1;
		gchar* _tmp144_;
		_tmp143_ = annotations;
		_tmp143__length1 = annotations_length1;
		_tmp144_ = g_strdup ("not-error");
		_vala_array_add28 (&annotations, &annotations_length1, &_annotations_size_, _tmp144_);
	}
	_tmp146_ = self->priv->current_signal;
	if (_tmp146_ != NULL) {
		ValadocApiFormalParameter* _tmp147_;
		ValadocContentComment* _tmp148_;
		ValadocContentComment* _tmp149_;
		_tmp147_ = param;
		_tmp148_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp147_);
		_tmp149_ = _tmp148_;
		_tmp145_ = _tmp149_ == NULL;
	} else {
		_tmp145_ = FALSE;
	}
	if (_tmp145_) {
		const gchar* _tmp150_;
		GtkdocHeader* _tmp151_;
		GtkdocHeader* _tmp152_;
		_tmp150_ = param_name;
		_tmp151_ = gtkdoc_generator_add_custom_header (self, _tmp150_, "", NULL, 0, DBL_MAX, TRUE);
		_tmp152_ = _tmp151_;
		_gtkdoc_header_unref0 (_tmp152_);
	} else {
		const gchar* _tmp153_;
		ValadocApiFormalParameter* _tmp154_;
		ValadocContentComment* _tmp155_;
		ValadocContentComment* _tmp156_;
		gchar** _tmp157_;
		gint _tmp157__length1;
		ValadocApiNode* _tmp158_;
		ValadocApiNode* _tmp159_;
		const gchar* _tmp160_;
		gdouble _tmp161_;
		GtkdocHeader* _tmp162_;
		GtkdocHeader* _tmp163_;
		_tmp153_ = param_name;
		_tmp154_ = param;
		_tmp155_ = valadoc_api_node_get_documentation ((ValadocApiNode*) _tmp154_);
		_tmp156_ = _tmp155_;
		_tmp157_ = annotations;
		_tmp157__length1 = annotations_length1;
		_tmp158_ = gtkdoc_generator_get_current_method_or_delegate (self);
		_tmp159_ = _tmp158_;
		_tmp160_ = param_name;
		_tmp161_ = gtkdoc_get_parameter_pos (_tmp159_, _tmp160_);
		_tmp162_ = gtkdoc_generator_add_header (self, _tmp153_, _tmp156_, _tmp157_, _tmp157__length1, _tmp161_);
		_tmp163_ = _tmp162_;
		_gtkdoc_header_unref0 (_tmp163_);
	}
	_tmp164_ = param;
	_tmp165_ = valadoc_api_formal_parameter_get_parameter_type (_tmp164_);
	_tmp166_ = _tmp165_;
	_tmp167_ = valadoc_api_typereference_get_data_type (_tmp166_);
	_tmp168_ = _tmp167_;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp168_, VALADOC_API_TYPE_DELEGATE)) {
		const gchar* _tmp169_;
		gchar* _tmp170_;
		gchar* _tmp171_;
		const gchar* _tmp172_;
		gchar* _tmp173_;
		gchar* _tmp174_;
		gchar* _tmp175_;
		gchar* _tmp176_;
		gchar** _tmp177_;
		gchar** _tmp178_;
		gint _tmp178__length1;
		ValadocApiNode* _tmp179_;
		ValadocApiNode* _tmp180_;
		const gchar* _tmp181_;
		gdouble _tmp182_;
		GtkdocHeader* _tmp183_;
		GtkdocHeader* _tmp184_;
		ValadocApiFormalParameter* _tmp185_;
		ValadocApiTypeReference* _tmp186_;
		ValadocApiTypeReference* _tmp187_;
		gboolean _tmp188_;
		gboolean _tmp189_;
		_tmp169_ = param_name;
		_tmp170_ = g_strdup_printf ("%s_target", _tmp169_);
		_tmp171_ = _tmp170_;
		_tmp172_ = param_name;
		_tmp173_ = g_strdup_printf ("user data to pass to @%s", _tmp172_);
		_tmp174_ = _tmp173_;
		_tmp175_ = g_strdup ("allow-none");
		_tmp176_ = g_strdup ("closure");
		_tmp177_ = g_new0 (gchar*, 2 + 1);
		_tmp177_[0] = _tmp175_;
		_tmp177_[1] = _tmp176_;
		_tmp178_ = _tmp177_;
		_tmp178__length1 = 2;
		_tmp179_ = gtkdoc_generator_get_current_method_or_delegate (self);
		_tmp180_ = _tmp179_;
		_tmp181_ = param_name;
		_tmp182_ = gtkdoc_get_parameter_pos (_tmp180_, _tmp181_);
		_tmp183_ = gtkdoc_generator_add_custom_header (self, _tmp171_, _tmp174_, _tmp178_, 2, _tmp182_ + 0.1, TRUE);
		_tmp184_ = _tmp183_;
		_gtkdoc_header_unref0 (_tmp184_);
		_tmp178_ = (_vala_array_free (_tmp178_, _tmp178__length1, (GDestroyNotify) g_free), NULL);
		_g_free0 (_tmp174_);
		_g_free0 (_tmp171_);
		_tmp185_ = param;
		_tmp186_ = valadoc_api_formal_parameter_get_parameter_type (_tmp185_);
		_tmp187_ = _tmp186_;
		_tmp188_ = valadoc_api_typereference_get_is_owned (_tmp187_);
		_tmp189_ = _tmp188_;
		if (_tmp189_) {
			const gchar* _tmp190_;
			gchar* _tmp191_;
			gchar* _tmp192_;
			const gchar* _tmp193_;
			gchar* _tmp194_;
			gchar* _tmp195_;
			gchar* _tmp196_;
			gchar** _tmp197_;
			gchar** _tmp198_;
			gint _tmp198__length1;
			ValadocApiNode* _tmp199_;
			ValadocApiNode* _tmp200_;
			const gchar* _tmp201_;
			gdouble _tmp202_;
			GtkdocHeader* _tmp203_;
			GtkdocHeader* _tmp204_;
			_tmp190_ = param_name;
			_tmp191_ = g_strdup_printf ("%s_target_destroy_notify", _tmp190_);
			_tmp192_ = _tmp191_;
			_tmp193_ = param_name;
			_tmp194_ = g_strdup_printf ("function to call when @%s_target is no longer needed", _tmp193_);
			_tmp195_ = _tmp194_;
			_tmp196_ = g_strdup ("allow-none");
			_tmp197_ = g_new0 (gchar*, 1 + 1);
			_tmp197_[0] = _tmp196_;
			_tmp198_ = _tmp197_;
			_tmp198__length1 = 1;
			_tmp199_ = gtkdoc_generator_get_current_method_or_delegate (self);
			_tmp200_ = _tmp199_;
			_tmp201_ = param_name;
			_tmp202_ = gtkdoc_get_parameter_pos (_tmp200_, _tmp201_);
			_tmp203_ = gtkdoc_generator_add_custom_header (self, _tmp192_, _tmp195_, _tmp198_, 1, _tmp202_ + 0.2, TRUE);
			_tmp204_ = _tmp203_;
			_gtkdoc_header_unref0 (_tmp204_);
			_tmp198_ = (_vala_array_free (_tmp198_, _tmp198__length1, (GDestroyNotify) g_free), NULL);
			_g_free0 (_tmp195_);
			_g_free0 (_tmp192_);
		}
	}
	_tmp205_ = self->priv->current_dbus_member;
	if (_tmp205_ != NULL) {
		GtkdocDBusParameterDirection ddirection = 0;
		ValadocApiSignal* _tmp206_;
		GtkdocDBusParameter* dparam = NULL;
		const gchar* _tmp210_;
		ValadocApiFormalParameter* _tmp211_;
		ValadocApiTypeReference* _tmp212_;
		ValadocApiTypeReference* _tmp213_;
		gchar* _tmp214_;
		gchar* _tmp215_;
		GtkdocDBusParameterDirection _tmp216_;
		GtkdocDBusParameter* _tmp217_;
		GtkdocDBusParameter* _tmp218_;
		GtkdocDBusMember* _tmp219_;
		GtkdocDBusParameter* _tmp220_;
		ddirection = GTKDOC_DBUS_PARAMETER_DIRECTION_IN;
		_tmp206_ = self->priv->current_signal;
		if (_tmp206_ != NULL) {
			ddirection = GTKDOC_DBUS_PARAMETER_DIRECTION_NONE;
		} else {
			ValadocApiFormalParameter* _tmp207_;
			gboolean _tmp208_;
			gboolean _tmp209_;
			_tmp207_ = param;
			_tmp208_ = valadoc_api_formal_parameter_get_is_out (_tmp207_);
			_tmp209_ = _tmp208_;
			if (_tmp209_) {
				ddirection = GTKDOC_DBUS_PARAMETER_DIRECTION_OUT;
			}
		}
		_tmp210_ = param_name;
		_tmp211_ = param;
		_tmp212_ = valadoc_api_formal_parameter_get_parameter_type (_tmp211_);
		_tmp213_ = _tmp212_;
		_tmp214_ = valadoc_api_typereference_get_dbus_type_signature (_tmp213_);
		_tmp215_ = _tmp214_;
		_tmp216_ = ddirection;
		_tmp217_ = gtkdoc_dbus_parameter_new (_tmp210_, _tmp215_, _tmp216_);
		_tmp218_ = _tmp217_;
		_g_free0 (_tmp215_);
		dparam = _tmp218_;
		_tmp219_ = self->priv->current_dbus_member;
		_tmp220_ = dparam;
		gtkdoc_dbus_member_add_parameter (_tmp219_, _tmp220_);
		_gtkdoc_dbus_parameter_unref0 (dparam);
	}
	_tmp221_ = param;
	valadoc_api_node_accept_all_children ((ValadocApiNode*) _tmp221_, (ValadocApiVisitor*) self, TRUE);
	_g_object_unref0 (type_parameter);
	_g_free0 (direction);
	annotations = (_vala_array_free (annotations, annotations_length1, (GDestroyNotify) g_free), NULL);
	_g_free0 (param_name);
}


static gchar* string_slice (const gchar* self, glong start, glong end) {
	gchar* result = NULL;
	glong string_length = 0L;
	gint _tmp0_;
	gint _tmp1_;
	glong _tmp2_;
	glong _tmp5_;
	gboolean _tmp8_ = FALSE;
	glong _tmp9_;
	gboolean _tmp12_ = FALSE;
	glong _tmp13_;
	glong _tmp16_;
	glong _tmp17_;
	glong _tmp18_;
	glong _tmp19_;
	glong _tmp20_;
	gchar* _tmp21_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = strlen (self);
	_tmp1_ = _tmp0_;
	string_length = (glong) _tmp1_;
	_tmp2_ = start;
	if (_tmp2_ < ((glong) 0)) {
		glong _tmp3_;
		glong _tmp4_;
		_tmp3_ = string_length;
		_tmp4_ = start;
		start = _tmp3_ + _tmp4_;
	}
	_tmp5_ = end;
	if (_tmp5_ < ((glong) 0)) {
		glong _tmp6_;
		glong _tmp7_;
		_tmp6_ = string_length;
		_tmp7_ = end;
		end = _tmp6_ + _tmp7_;
	}
	_tmp9_ = start;
	if (_tmp9_ >= ((glong) 0)) {
		glong _tmp10_;
		glong _tmp11_;
		_tmp10_ = start;
		_tmp11_ = string_length;
		_tmp8_ = _tmp10_ <= _tmp11_;
	} else {
		_tmp8_ = FALSE;
	}
	g_return_val_if_fail (_tmp8_, NULL);
	_tmp13_ = end;
	if (_tmp13_ >= ((glong) 0)) {
		glong _tmp14_;
		glong _tmp15_;
		_tmp14_ = end;
		_tmp15_ = string_length;
		_tmp12_ = _tmp14_ <= _tmp15_;
	} else {
		_tmp12_ = FALSE;
	}
	g_return_val_if_fail (_tmp12_, NULL);
	_tmp16_ = start;
	_tmp17_ = end;
	g_return_val_if_fail (_tmp16_ <= _tmp17_, NULL);
	_tmp18_ = start;
	_tmp19_ = end;
	_tmp20_ = start;
	_tmp21_ = g_strndup (((gchar*) self) + _tmp18_, (gsize) (_tmp19_ - _tmp20_));
	result = _tmp21_;
	return result;
}


static void gtkdoc_generator_process_attributes (GtkdocGenerator* self, ValadocApiSymbol* sym, GtkdocGComment* gcomment) {
	ValadocApiSymbol* _tmp0_;
	gboolean _tmp1_;
	gboolean _tmp2_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (sym != NULL);
	g_return_if_fail (gcomment != NULL);
	_tmp0_ = sym;
	_tmp1_ = valadoc_api_symbol_get_is_deprecated (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_) {
		ValadocApiAttribute* version = NULL;
		ValadocApiAttribute* deprecated = NULL;
		ValadocApiAttributeArgument* deprecated_since = NULL;
		ValadocApiAttributeArgument* replacement = NULL;
		ValadocApiSymbol* _tmp3_;
		ValadocApiAttribute* _tmp4_;
		ValadocApiAttribute* _tmp5_;
		gchar* since = NULL;
		ValadocApiAttributeArgument* _tmp17_;
		gchar* replacement_symbol_name = NULL;
		ValadocApiNode* replacement_symbol = NULL;
		ValadocApiAttributeArgument* _tmp33_;
		gboolean _tmp57_ = FALSE;
		ValadocApiAttributeArgument* _tmp58_;
		gchar* deprecation_string = NULL;
		gchar* _tmp65_;
		gboolean _tmp66_ = FALSE;
		const gchar* _tmp67_;
		GtkdocGComment* _tmp90_;
		ValaList* _tmp91_;
		const gchar* _tmp92_;
		GtkdocHeader* _tmp93_;
		GtkdocHeader* _tmp94_;
		_tmp3_ = sym;
		_tmp4_ = valadoc_api_symbol_get_attribute (_tmp3_, "Version");
		_g_object_unref0 (version);
		version = _tmp4_;
		_tmp5_ = version;
		if (_tmp5_ != NULL) {
			ValadocApiAttribute* _tmp6_;
			ValadocApiAttributeArgument* _tmp7_;
			ValadocApiAttribute* _tmp8_;
			ValadocApiAttributeArgument* _tmp9_;
			_tmp6_ = version;
			_tmp7_ = valadoc_api_attribute_get_argument (_tmp6_, "deprecated_since");
			_g_object_unref0 (deprecated_since);
			deprecated_since = _tmp7_;
			_tmp8_ = version;
			_tmp9_ = valadoc_api_attribute_get_argument (_tmp8_, "replacement");
			_g_object_unref0 (replacement);
			replacement = _tmp9_;
		} else {
			ValadocApiSymbol* _tmp10_;
			ValadocApiAttribute* _tmp11_;
			ValadocApiAttribute* _tmp12_;
			_tmp10_ = sym;
			_tmp11_ = valadoc_api_symbol_get_attribute (_tmp10_, "Deprecated");
			_g_object_unref0 (deprecated);
			deprecated = _tmp11_;
			_tmp12_ = deprecated;
			if (_tmp12_ != NULL) {
				ValadocApiAttribute* _tmp13_;
				ValadocApiAttributeArgument* _tmp14_;
				ValadocApiAttribute* _tmp15_;
				ValadocApiAttributeArgument* _tmp16_;
				_tmp13_ = deprecated;
				_tmp14_ = valadoc_api_attribute_get_argument (_tmp13_, "since");
				_g_object_unref0 (deprecated_since);
				deprecated_since = _tmp14_;
				_tmp15_ = deprecated;
				_tmp16_ = valadoc_api_attribute_get_argument (_tmp15_, "replacement");
				_g_object_unref0 (replacement);
				replacement = _tmp16_;
			} else {
				g_assert_not_reached ();
			}
		}
		since = NULL;
		_tmp17_ = deprecated_since;
		if (_tmp17_ != NULL) {
			ValadocApiAttributeArgument* _tmp18_;
			const gchar* _tmp19_;
			const gchar* _tmp20_;
			gchar* _tmp21_;
			const gchar* _tmp22_;
			gboolean _tmp23_;
			const gchar* _tmp29_;
			gboolean _tmp30_;
			_tmp18_ = deprecated_since;
			_tmp19_ = valadoc_api_attribute_argument_get_value (_tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = g_strdup (_tmp20_);
			_g_free0 (since);
			since = _tmp21_;
			_tmp22_ = since;
			_tmp23_ = g_str_has_prefix (_tmp22_, "\"");
			if (_tmp23_) {
				const gchar* _tmp24_;
				const gchar* _tmp25_;
				gint _tmp26_;
				gint _tmp27_;
				gchar* _tmp28_;
				_tmp24_ = since;
				_tmp25_ = since;
				_tmp26_ = strlen (_tmp25_);
				_tmp27_ = _tmp26_;
				_tmp28_ = string_slice (_tmp24_, (glong) 1, (glong) (_tmp27_ - 1));
				_g_free0 (since);
				since = _tmp28_;
			}
			_tmp29_ = since;
			_tmp30_ = g_str_has_suffix (_tmp29_, "\"");
			if (_tmp30_) {
				const gchar* _tmp31_;
				gchar* _tmp32_;
				_tmp31_ = since;
				_tmp32_ = string_slice (_tmp31_, (glong) 0, (glong) -1);
				_g_free0 (since);
				since = _tmp32_;
			}
		}
		replacement_symbol_name = NULL;
		replacement_symbol = NULL;
		_tmp33_ = replacement;
		if (_tmp33_ != NULL) {
			ValadocApiAttributeArgument* _tmp34_;
			const gchar* _tmp35_;
			const gchar* _tmp36_;
			gchar* _tmp37_;
			const gchar* _tmp38_;
			gboolean _tmp39_;
			const gchar* _tmp45_;
			gboolean _tmp46_;
			const gchar* _tmp49_;
			gboolean _tmp50_;
			ValadocApiTree* _tmp53_;
			ValadocApiSymbol* _tmp54_;
			const gchar* _tmp55_;
			ValadocApiNode* _tmp56_;
			_tmp34_ = replacement;
			_tmp35_ = valadoc_api_attribute_argument_get_value (_tmp34_);
			_tmp36_ = _tmp35_;
			_tmp37_ = g_strdup (_tmp36_);
			_g_free0 (replacement_symbol_name);
			replacement_symbol_name = _tmp37_;
			_tmp38_ = replacement_symbol_name;
			_tmp39_ = g_str_has_prefix (_tmp38_, "\"");
			if (_tmp39_) {
				const gchar* _tmp40_;
				const gchar* _tmp41_;
				gint _tmp42_;
				gint _tmp43_;
				gchar* _tmp44_;
				_tmp40_ = replacement_symbol_name;
				_tmp41_ = replacement_symbol_name;
				_tmp42_ = strlen (_tmp41_);
				_tmp43_ = _tmp42_;
				_tmp44_ = string_slice (_tmp40_, (glong) 1, (glong) (_tmp43_ - 1));
				_g_free0 (replacement_symbol_name);
				replacement_symbol_name = _tmp44_;
			}
			_tmp45_ = replacement_symbol_name;
			_tmp46_ = g_str_has_suffix (_tmp45_, "\"");
			if (_tmp46_) {
				const gchar* _tmp47_;
				gchar* _tmp48_;
				_tmp47_ = replacement_symbol_name;
				_tmp48_ = string_slice (_tmp47_, (glong) 0, (glong) -1);
				_g_free0 (replacement_symbol_name);
				replacement_symbol_name = _tmp48_;
			}
			_tmp49_ = replacement_symbol_name;
			_tmp50_ = g_str_has_suffix (_tmp49_, "()");
			if (_tmp50_) {
				const gchar* _tmp51_;
				gchar* _tmp52_;
				_tmp51_ = replacement_symbol_name;
				_tmp52_ = string_slice (_tmp51_, (glong) 0, (glong) -2);
				_g_free0 (replacement_symbol_name);
				replacement_symbol_name = _tmp52_;
			}
			_tmp53_ = self->priv->current_tree;
			_tmp54_ = sym;
			_tmp55_ = replacement_symbol_name;
			_tmp56_ = valadoc_api_tree_search_symbol_str (_tmp53_, (ValadocApiNode*) _tmp54_, _tmp55_);
			_g_object_unref0 (replacement_symbol);
			replacement_symbol = _tmp56_;
		}
		_tmp58_ = replacement;
		if (_tmp58_ != NULL) {
			ValadocApiNode* _tmp59_;
			_tmp59_ = replacement_symbol;
			_tmp57_ = _tmp59_ == NULL;
		} else {
			_tmp57_ = FALSE;
		}
		if (_tmp57_) {
			ValadocErrorReporter* _tmp60_;
			const gchar* _tmp61_;
			ValadocApiSymbol* _tmp62_;
			gchar* _tmp63_;
			gchar* _tmp64_;
			_tmp60_ = self->priv->reporter;
			_tmp61_ = replacement_symbol_name;
			_tmp62_ = sym;
			_tmp63_ = valadoc_api_node_get_full_name ((ValadocApiNode*) _tmp62_);
			_tmp64_ = _tmp63_;
			valadoc_error_reporter_simple_warning (_tmp60_, "GtkDoc", "Couldn’t resolve replacement symbol ‘%s’ for ‘Deprecated’ attribute on" \
" %s.", _tmp61_, _tmp64_);
			_g_free0 (_tmp64_);
		}
		_tmp65_ = g_strdup ("No replacement specified.");
		deprecation_string = _tmp65_;
		_tmp67_ = since;
		if (_tmp67_ != NULL) {
			ValadocApiNode* _tmp68_;
			_tmp68_ = replacement_symbol;
			_tmp66_ = _tmp68_ != NULL;
		} else {
			_tmp66_ = FALSE;
		}
		if (_tmp66_) {
			const gchar* _tmp69_;
			ValadocApiNode* _tmp70_;
			gchar* _tmp71_;
			gchar* _tmp72_;
			gchar* _tmp73_;
			_tmp69_ = since;
			_tmp70_ = replacement_symbol;
			_tmp71_ = gtkdoc_get_gtkdoc_link (_tmp70_);
			_tmp72_ = _tmp71_;
			_tmp73_ = g_strdup_printf ("%s: Replaced by %s.", _tmp69_, _tmp72_);
			_g_free0 (deprecation_string);
			deprecation_string = _tmp73_;
			_g_free0 (_tmp72_);
		} else {
			gboolean _tmp74_ = FALSE;
			const gchar* _tmp75_;
			_tmp75_ = since;
			if (_tmp75_ != NULL) {
				ValadocApiNode* _tmp76_;
				_tmp76_ = replacement_symbol;
				_tmp74_ = _tmp76_ == NULL;
			} else {
				_tmp74_ = FALSE;
			}
			if (_tmp74_) {
				const gchar* _tmp77_;
				gchar* _tmp78_;
				_tmp77_ = since;
				_tmp78_ = g_strdup_printf ("%s: No replacement specified.", _tmp77_);
				_g_free0 (deprecation_string);
				deprecation_string = _tmp78_;
			} else {
				gboolean _tmp79_ = FALSE;
				const gchar* _tmp80_;
				_tmp80_ = since;
				if (_tmp80_ == NULL) {
					ValadocApiNode* _tmp81_;
					_tmp81_ = replacement_symbol;
					_tmp79_ = _tmp81_ != NULL;
				} else {
					_tmp79_ = FALSE;
				}
				if (_tmp79_) {
					ValadocApiNode* _tmp82_;
					gchar* _tmp83_;
					gchar* _tmp84_;
					gchar* _tmp85_;
					_tmp82_ = replacement_symbol;
					_tmp83_ = gtkdoc_get_gtkdoc_link (_tmp82_);
					_tmp84_ = _tmp83_;
					_tmp85_ = g_strdup_printf ("Replaced by %s.", _tmp84_);
					_g_free0 (deprecation_string);
					deprecation_string = _tmp85_;
					_g_free0 (_tmp84_);
				} else {
					ValadocErrorReporter* _tmp86_;
					ValadocApiSymbol* _tmp87_;
					gchar* _tmp88_;
					gchar* _tmp89_;
					_tmp86_ = self->priv->reporter;
					_tmp87_ = sym;
					_tmp88_ = valadoc_api_node_get_full_name ((ValadocApiNode*) _tmp87_);
					_tmp89_ = _tmp88_;
					valadoc_error_reporter_simple_warning (_tmp86_, "GtkDoc", "Missing ‘since’ and ‘replacement’ arguments to ‘Deprecated’ attribute " \
"on %s.", _tmp89_);
					_g_free0 (_tmp89_);
				}
			}
		}
		_tmp90_ = gcomment;
		_tmp91_ = _tmp90_->versioning;
		_tmp92_ = deprecation_string;
		_tmp93_ = gtkdoc_header_new ("Deprecated", _tmp92_, DBL_MAX, TRUE);
		_tmp94_ = _tmp93_;
		vala_collection_add ((ValaCollection*) _tmp91_, _tmp94_);
		_gtkdoc_header_unref0 (_tmp94_);
		_g_free0 (deprecation_string);
		_g_object_unref0 (replacement_symbol);
		_g_free0 (replacement_symbol_name);
		_g_free0 (since);
		_g_object_unref0 (replacement);
		_g_object_unref0 (deprecated_since);
		_g_object_unref0 (deprecated);
		_g_object_unref0 (version);
	}
}


GtkdocGenerator* gtkdoc_generator_construct (GType object_type) {
	GtkdocGenerator * self = NULL;
	self = (GtkdocGenerator*) valadoc_api_visitor_construct (object_type);
	return self;
}


GtkdocGenerator* gtkdoc_generator_new (void) {
	return gtkdoc_generator_construct (GTKDOC_TYPE_GENERATOR);
}


static ValadocApiNode* gtkdoc_generator_get_current_method_or_delegate (GtkdocGenerator* self) {
	ValadocApiNode* result;
	ValadocApiMethod* _tmp0_;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->current_method;
	if (_tmp0_ != NULL) {
		ValadocApiMethod* _tmp1_;
		_tmp1_ = self->priv->current_method;
		result = (ValadocApiNode*) _tmp1_;
		return result;
	} else {
		ValadocApiDelegate* _tmp2_;
		_tmp2_ = self->priv->current_delegate;
		if (_tmp2_ != NULL) {
			ValadocApiDelegate* _tmp3_;
			_tmp3_ = self->priv->current_delegate;
			result = (ValadocApiNode*) _tmp3_;
			return result;
		}
	}
	result = NULL;
	return result;
}


static void gtkdoc_generator_file_data_register_section_line (GtkdocGeneratorFileData* self, const gchar* line) {
	const gchar* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = line;
	if (_tmp0_ != NULL) {
		ValaList* _tmp1_;
		const gchar* _tmp2_;
		_tmp1_ = self->section_lines;
		_tmp2_ = line;
		vala_collection_add ((ValaCollection*) _tmp1_, _tmp2_);
	}
}


static void gtkdoc_generator_file_data_register_standard_section_line (GtkdocGeneratorFileData* self, const gchar* line) {
	const gchar* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = line;
	if (_tmp0_ != NULL) {
		ValaList* _tmp1_;
		const gchar* _tmp2_;
		_tmp1_ = self->standard_section_lines;
		_tmp2_ = line;
		vala_collection_add ((ValaCollection*) _tmp1_, _tmp2_);
	}
}


static void gtkdoc_generator_file_data_register_private_section_line (GtkdocGeneratorFileData* self, const gchar* line) {
	const gchar* _tmp0_;
	g_return_if_fail (self != NULL);
	_tmp0_ = line;
	if (_tmp0_ != NULL) {
		ValaList* _tmp1_;
		const gchar* _tmp2_;
		_tmp1_ = self->private_section_lines;
		_tmp2_ = line;
		vala_collection_add ((ValaCollection*) _tmp1_, _tmp2_);
	}
}


static GtkdocGeneratorFileData* gtkdoc_generator_file_data_construct (GType object_type) {
	GtkdocGeneratorFileData* self = NULL;
	self = (GtkdocGeneratorFileData*) g_type_create_instance (object_type);
	return self;
}


static GtkdocGeneratorFileData* gtkdoc_generator_file_data_new (void) {
	return gtkdoc_generator_file_data_construct (GTKDOC_GENERATOR_TYPE_FILE_DATA);
}


static void gtkdoc_generator_value_file_data_init (GValue* value) {
	value->data[0].v_pointer = NULL;
}


static void gtkdoc_generator_value_file_data_free_value (GValue* value) {
	if (value->data[0].v_pointer) {
		gtkdoc_generator_file_data_unref (value->data[0].v_pointer);
	}
}


static void gtkdoc_generator_value_file_data_copy_value (const GValue* src_value, GValue* dest_value) {
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = gtkdoc_generator_file_data_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}


static gpointer gtkdoc_generator_value_file_data_peek_pointer (const GValue* value) {
	return value->data[0].v_pointer;
}


static gchar* gtkdoc_generator_value_file_data_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	if (collect_values[0].v_pointer) {
		GtkdocGeneratorFileData * object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = gtkdoc_generator_file_data_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}


static gchar* gtkdoc_generator_value_file_data_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	GtkdocGeneratorFileData ** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = gtkdoc_generator_file_data_ref (value->data[0].v_pointer);
	}
	return NULL;
}


static GParamSpec* gtkdoc_generator_param_spec_file_data (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	GtkdocGeneratorParamSpecFileData* spec;
	g_return_val_if_fail (g_type_is_a (object_type, GTKDOC_GENERATOR_TYPE_FILE_DATA), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}


static gpointer gtkdoc_generator_value_get_file_data (const GValue* value) {
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GTKDOC_GENERATOR_TYPE_FILE_DATA), NULL);
	return value->data[0].v_pointer;
}


static void gtkdoc_generator_value_set_file_data (GValue* value, gpointer v_object) {
	GtkdocGeneratorFileData * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GTKDOC_GENERATOR_TYPE_FILE_DATA));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GTKDOC_GENERATOR_TYPE_FILE_DATA));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		gtkdoc_generator_file_data_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		gtkdoc_generator_file_data_unref (old);
	}
}


static void gtkdoc_generator_value_take_file_data (GValue* value, gpointer v_object) {
	GtkdocGeneratorFileData * old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GTKDOC_GENERATOR_TYPE_FILE_DATA));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GTKDOC_GENERATOR_TYPE_FILE_DATA));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		gtkdoc_generator_file_data_unref (old);
	}
}


static void gtkdoc_generator_file_data_class_init (GtkdocGeneratorFileDataClass * klass) {
	gtkdoc_generator_file_data_parent_class = g_type_class_peek_parent (klass);
	((GtkdocGeneratorFileDataClass *) klass)->finalize = gtkdoc_generator_file_data_finalize;
}


static void gtkdoc_generator_file_data_instance_init (GtkdocGeneratorFileData * self) {
	self->ref_count = 1;
}


static void gtkdoc_generator_file_data_finalize (GtkdocGeneratorFileData * obj) {
	GtkdocGeneratorFileData * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GTKDOC_GENERATOR_TYPE_FILE_DATA, GtkdocGeneratorFileData);
	g_signal_handlers_destroy (self);
	_g_free0 (self->filename);
	_g_free0 (self->title);
	_gtkdoc_gcomment_unref0 (self->section_comment);
	_vala_iterable_unref0 (self->comments);
	_vala_iterable_unref0 (self->section_lines);
	_vala_iterable_unref0 (self->standard_section_lines);
	_vala_iterable_unref0 (self->private_section_lines);
}


static GType gtkdoc_generator_file_data_get_type (void) {
	static volatile gsize gtkdoc_generator_file_data_type_id__volatile = 0;
	if (g_once_init_enter (&gtkdoc_generator_file_data_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { gtkdoc_generator_value_file_data_init, gtkdoc_generator_value_file_data_free_value, gtkdoc_generator_value_file_data_copy_value, gtkdoc_generator_value_file_data_peek_pointer, "p", gtkdoc_generator_value_file_data_collect_value, "p", gtkdoc_generator_value_file_data_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (GtkdocGeneratorFileDataClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gtkdoc_generator_file_data_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GtkdocGeneratorFileData), 0, (GInstanceInitFunc) gtkdoc_generator_file_data_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType gtkdoc_generator_file_data_type_id;
		gtkdoc_generator_file_data_type_id = g_type_register_fundamental (g_type_fundamental_next (), "GtkdocGeneratorFileData", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&gtkdoc_generator_file_data_type_id__volatile, gtkdoc_generator_file_data_type_id);
	}
	return gtkdoc_generator_file_data_type_id__volatile;
}


static gpointer gtkdoc_generator_file_data_ref (gpointer instance) {
	GtkdocGeneratorFileData * self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}


static void gtkdoc_generator_file_data_unref (gpointer instance) {
	GtkdocGeneratorFileData * self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		GTKDOC_GENERATOR_FILE_DATA_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}


static void gtkdoc_generator_class_init (GtkdocGeneratorClass * klass) {
	gtkdoc_generator_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (GtkdocGeneratorPrivate));
	((ValadocApiVisitorClass *) klass)->visit_tree = (void (*) (ValadocApiVisitor *, ValadocApiTree*)) gtkdoc_generator_real_visit_tree;
	((ValadocApiVisitorClass *) klass)->visit_package = (void (*) (ValadocApiVisitor *, ValadocApiPackage*)) gtkdoc_generator_real_visit_package;
	((ValadocApiVisitorClass *) klass)->visit_namespace = (void (*) (ValadocApiVisitor *, ValadocApiNamespace*)) gtkdoc_generator_real_visit_namespace;
	((ValadocApiVisitorClass *) klass)->visit_interface = (void (*) (ValadocApiVisitor *, ValadocApiInterface*)) gtkdoc_generator_real_visit_interface;
	((ValadocApiVisitorClass *) klass)->visit_class = (void (*) (ValadocApiVisitor *, ValadocApiClass*)) gtkdoc_generator_real_visit_class;
	((ValadocApiVisitorClass *) klass)->visit_struct = (void (*) (ValadocApiVisitor *, ValadocApiStruct*)) gtkdoc_generator_real_visit_struct;
	((ValadocApiVisitorClass *) klass)->visit_error_domain = (void (*) (ValadocApiVisitor *, ValadocApiErrorDomain*)) gtkdoc_generator_real_visit_error_domain;
	((ValadocApiVisitorClass *) klass)->visit_error_code = (void (*) (ValadocApiVisitor *, ValadocApiErrorCode*)) gtkdoc_generator_real_visit_error_code;
	((ValadocApiVisitorClass *) klass)->visit_enum = (void (*) (ValadocApiVisitor *, ValadocApiEnum*)) gtkdoc_generator_real_visit_enum;
	((ValadocApiVisitorClass *) klass)->visit_enum_value = (void (*) (ValadocApiVisitor *, ValadocApiEnumValue*)) gtkdoc_generator_real_visit_enum_value;
	((ValadocApiVisitorClass *) klass)->visit_property = (void (*) (ValadocApiVisitor *, ValadocApiProperty*)) gtkdoc_generator_real_visit_property;
	((ValadocApiVisitorClass *) klass)->visit_field = (void (*) (ValadocApiVisitor *, ValadocApiField*)) gtkdoc_generator_real_visit_field;
	((ValadocApiVisitorClass *) klass)->visit_constant = (void (*) (ValadocApiVisitor *, ValadocApiConstant*)) gtkdoc_generator_real_visit_constant;
	((ValadocApiVisitorClass *) klass)->visit_delegate = (void (*) (ValadocApiVisitor *, ValadocApiDelegate*)) gtkdoc_generator_real_visit_delegate;
	((ValadocApiVisitorClass *) klass)->visit_signal = (void (*) (ValadocApiVisitor *, ValadocApiSignal*)) gtkdoc_generator_real_visit_signal;
	((ValadocApiVisitorClass *) klass)->visit_method = (void (*) (ValadocApiVisitor *, ValadocApiMethod*)) gtkdoc_generator_real_visit_method;
	((ValadocApiVisitorClass *) klass)->visit_formal_parameter = (void (*) (ValadocApiVisitor *, ValadocApiFormalParameter*)) gtkdoc_generator_real_visit_formal_parameter;
	G_OBJECT_CLASS (klass)->get_property = _vala_gtkdoc_generator_get_property;
	G_OBJECT_CLASS (klass)->finalize = gtkdoc_generator_finalize;
}


static void gtkdoc_generator_instance_init (GtkdocGenerator * self) {
	GEqualFunc _tmp0_;
	ValaArrayList* _tmp1_;
	GHashFunc _tmp2_;
	GEqualFunc _tmp3_;
	GEqualFunc _tmp4_;
	ValaHashMap* _tmp5_;
	self->priv = GTKDOC_GENERATOR_GET_PRIVATE (self);
	_tmp0_ = g_direct_equal;
	_tmp1_ = vala_array_list_new (GTKDOC_DBUS_TYPE_INTERFACE, (GBoxedCopyFunc) gtkdoc_dbus_interface_ref, (GDestroyNotify) gtkdoc_dbus_interface_unref, _tmp0_);
	self->dbus_interfaces = (ValaList*) _tmp1_;
	_tmp2_ = g_str_hash;
	_tmp3_ = g_str_equal;
	_tmp4_ = g_direct_equal;
	_tmp5_ = vala_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, (GDestroyNotify) g_free, GTKDOC_GENERATOR_TYPE_FILE_DATA, (GBoxedCopyFunc) gtkdoc_generator_file_data_ref, (GDestroyNotify) gtkdoc_generator_file_data_unref, _tmp2_, _tmp3_, _tmp4_);
	self->priv->files_data = (ValaMap*) _tmp5_;
}


static void gtkdoc_generator_finalize (GObject * obj) {
	GtkdocGenerator * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, GTKDOC_TYPE_GENERATOR, GtkdocGenerator);
	_vala_iterable_unref0 (self->dbus_interfaces);
	_g_object_unref0 (self->priv->reporter);
	_g_object_unref0 (self->priv->settings);
	_vala_map_unref0 (self->priv->files_data);
	_g_free0 (self->priv->current_cname);
	_vala_iterable_unref0 (self->priv->current_headers);
	_valadoc_api_tree_unref0 (self->priv->current_tree);
	_g_object_unref0 (self->priv->current_class);
	_g_object_unref0 (self->priv->current_method);
	_g_object_unref0 (self->priv->current_delegate);
	_g_object_unref0 (self->priv->current_signal);
	_gtkdoc_dbus_interface_unref0 (self->priv->current_dbus_interface);
	_gtkdoc_dbus_member_unref0 (self->priv->current_dbus_member);
	G_OBJECT_CLASS (gtkdoc_generator_parent_class)->finalize (obj);
}


GType gtkdoc_generator_get_type (void) {
	static volatile gsize gtkdoc_generator_type_id__volatile = 0;
	if (g_once_init_enter (&gtkdoc_generator_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (GtkdocGeneratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gtkdoc_generator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GtkdocGenerator), 0, (GInstanceInitFunc) gtkdoc_generator_instance_init, NULL };
		GType gtkdoc_generator_type_id;
		gtkdoc_generator_type_id = g_type_register_static (VALADOC_API_TYPE_VISITOR, "GtkdocGenerator", &g_define_type_info, 0);
		g_once_init_leave (&gtkdoc_generator_type_id__volatile, gtkdoc_generator_type_id);
	}
	return gtkdoc_generator_type_id__volatile;
}


static void _vala_gtkdoc_generator_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	GtkdocGenerator * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, GTKDOC_TYPE_GENERATOR, GtkdocGenerator);
	switch (property_id) {
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


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


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



