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

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <libcommon.h>
#include "wixl.h"
#include <gio/gio.h>
#include <libxml/tree.h>
#include <libxml/parser.h>
#include <glib/gstdio.h>
#include <stdio.h>
#include <libmsi.h>
#include <libgcab.h>

typedef enum  {
	WIXL_ARCH_X86 = 0,
	WIXL_ARCH_INTEL = 0,
	WIXL_ARCH_IA64 = 1,
	WIXL_ARCH_INTEL64 = 1,
	WIXL_ARCH_X64
} WixlArch;

#define WIXL_TYPE_ARCH (wixl_arch_get_type ())

#define WIXL_TYPE_WIX_BUILDER (wixl_wix_builder_get_type ())
#define WIXL_WIX_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_WIX_BUILDER, WixlWixBuilder))
#define WIXL_WIX_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_WIX_BUILDER, WixlWixBuilderClass))
#define WIXL_IS_WIX_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_WIX_BUILDER))
#define WIXL_IS_WIX_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_WIX_BUILDER))
#define WIXL_WIX_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_WIX_BUILDER, WixlWixBuilderClass))

typedef struct _WixlWixBuilder WixlWixBuilder;
typedef struct _WixlWixBuilderClass WixlWixBuilderClass;
typedef struct _WixlWixBuilderPrivate WixlWixBuilderPrivate;

#define WIXL_TYPE_WIX_ROOT (wixl_wix_root_get_type ())
#define WIXL_WIX_ROOT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_WIX_ROOT, WixlWixRoot))
#define WIXL_WIX_ROOT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_WIX_ROOT, WixlWixRootClass))
#define WIXL_IS_WIX_ROOT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_WIX_ROOT))
#define WIXL_IS_WIX_ROOT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_WIX_ROOT))
#define WIXL_WIX_ROOT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_WIX_ROOT, WixlWixRootClass))

typedef struct _WixlWixRoot WixlWixRoot;
typedef struct _WixlWixRootClass WixlWixRootClass;

#define WIXL_TYPE_MSI_DATABASE (wixl_msi_database_get_type ())
#define WIXL_MSI_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabase))
#define WIXL_MSI_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabaseClass))
#define WIXL_IS_MSI_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_DATABASE))
#define WIXL_IS_MSI_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_DATABASE))
#define WIXL_MSI_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_DATABASE, WixlMsiDatabaseClass))

typedef struct _WixlMsiDatabase WixlMsiDatabase;
typedef struct _WixlMsiDatabaseClass WixlMsiDatabaseClass;
enum  {
	WIXL_WIX_BUILDER_0_PROPERTY,
	WIXL_WIX_BUILDER_NUM_PROPERTIES
};
static GParamSpec* wixl_wix_builder_properties[WIXL_WIX_BUILDER_NUM_PROPERTIES];
typedef enum  {
	WIXL_WIX_BUILDER_SOURCE_FLAGS_SHORT_NAMES = 1 << 0,
	WIXL_WIX_BUILDER_SOURCE_FLAGS_COMPRESSED = 1 << 1,
	WIXL_WIX_BUILDER_SOURCE_FLAGS_ADMIN = 1 << 2,
	WIXL_WIX_BUILDER_SOURCE_FLAGS_NO_PRIVILEGES = 1 << 3
} WixlWixBuilderSourceFlags;

#define WIXL_WIX_BUILDER_TYPE_SOURCE_FLAGS (wixl_wix_builder_source_flags_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_LOCAL_ONLY = 0,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SOURCE_ONLY = 1 << 0,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_OPTIONAL = 1 << 1,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_KEY_PATH = 1 << 2,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SHARED_DLL_REF_COUNT = 1 << 3,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_PERMANENT = 1 << 4,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_ODBC_DATA_SOURCE = 1 << 5,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_TRANSITIVE = 1 << 6,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_NEVER_OVERWRITE = 1 << 7,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_64BIT = 1 << 8,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_REFLECTION = 1 << 9,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_UNINSTALL_ON_SUPERSEDENCE = 1 << 10,
	WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SHARED = 1 << 11
} WixlWixBuilderComponentAttribute;

#define WIXL_WIX_BUILDER_TYPE_COMPONENT_ATTRIBUTE (wixl_wix_builder_component_attribute_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_FEATURE_DISPLAY_HIDDEN = 0,
	WIXL_WIX_BUILDER_FEATURE_DISPLAY_EXPAND,
	WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE
} WixlWixBuilderFeatureDisplay;

#define WIXL_WIX_BUILDER_TYPE_FEATURE_DISPLAY (wixl_wix_builder_feature_display_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_INSTALL_MODE_INSTALL = 1,
	WIXL_WIX_BUILDER_INSTALL_MODE_UNINSTALL,
	WIXL_WIX_BUILDER_INSTALL_MODE_BOTH
} WixlWixBuilderInstallMode;

#define WIXL_WIX_BUILDER_TYPE_INSTALL_MODE (wixl_wix_builder_install_mode_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_STRING,
	WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_INTEGER,
	WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_BINARY,
	WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_EXPANDABLE,
	WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_MULTI_STRING
} WixlWixBuilderRegistryValueType;

#define WIXL_WIX_BUILDER_TYPE_REGISTRY_VALUE_TYPE (wixl_wix_builder_registry_value_type_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_REGISTRY_ROOT_HKCR,
	WIXL_WIX_BUILDER_REGISTRY_ROOT_HKCU,
	WIXL_WIX_BUILDER_REGISTRY_ROOT_HKLM,
	WIXL_WIX_BUILDER_REGISTRY_ROOT_HKU,
	WIXL_WIX_BUILDER_REGISTRY_ROOT_HKMU
} WixlWixBuilderRegistryRoot;

#define WIXL_WIX_BUILDER_TYPE_REGISTRY_ROOT (wixl_wix_builder_registry_root_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_READ_ONLY = 1 << 0,
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_HIDDEN = 1 << 1,
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_SYSTEM = 1 << 2,
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_VITAL = 1 << 9,
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_CHECKSUM = 1 << 10,
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_PATCH_ADDED = 1 << 11,
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_NON_COMPRESSED = 1 << 12,
	WIXL_WIX_BUILDER_FILE_ATTRIBUTE_COMPRESSED = 1 << 13
} WixlWixBuilderFileAttribute;

#define WIXL_WIX_BUILDER_TYPE_FILE_ATTRIBUTE (wixl_wix_builder_file_attribute_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_MIGRATE_FEATURES = 1 << 0,
	WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_ONLY_DETECT = 1 << 1,
	WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_IGNORE_REMOVE_FAILURE = 1 << 2,
	WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MIN_INCLUSIVE = 1 << 8,
	WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MAX_INCLUSIVE = 1 << 9,
	WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_LANGUAGES_EXCLUSIVE = 1 << 10
} WixlWixBuilderUpgradeAttribute;

#define WIXL_WIX_BUILDER_TYPE_UPGRADE_ATTRIBUTE (wixl_wix_builder_upgrade_attribute_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_START = 1 << 0,
	WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_STOP = 1 << 1,
	WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_DELETE = 1 << 3,
	WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_START = 1 << 4,
	WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_STOP = 1 << 5,
	WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_DELETE = 1 << 7
} WixlWixBuilderServiceControlEvent;

#define WIXL_WIX_BUILDER_TYPE_SERVICE_CONTROL_EVENT (wixl_wix_builder_service_control_event_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_OWN_PROCESS = 1 << 4,
	WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_SHARE_PROCESS = 1 << 5
} WixlWixBuilderServiceTypeAttribute;

#define WIXL_WIX_BUILDER_TYPE_SERVICE_TYPE_ATTRIBUTE (wixl_wix_builder_service_type_attribute_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_AUTO = 2,
	WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_DEMAND = 3,
	WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_DISABLED = 4
} WixlWixBuilderStartTypeAttribute;

#define WIXL_WIX_BUILDER_TYPE_START_TYPE_ATTRIBUTE (wixl_wix_builder_start_type_attribute_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_IGNORE = 0,
	WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_NORMAL = 1,
	WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_CRITICAL = 3
} WixlWixBuilderErrorControlAttribute;

#define WIXL_WIX_BUILDER_TYPE_ERROR_CONTROL_ATTRIBUTE (wixl_wix_builder_error_control_attribute_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_REGISTRY_TYPE_DIRECTORY,
	WIXL_WIX_BUILDER_REGISTRY_TYPE_FILE,
	WIXL_WIX_BUILDER_REGISTRY_TYPE_RAW,
	WIXL_WIX_BUILDER_REGISTRY_TYPE_64BIT = 0x10
} WixlWixBuilderRegistryType;

#define WIXL_WIX_BUILDER_TYPE_REGISTRY_TYPE (wixl_wix_builder_registry_type_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_BINARY = 1,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_BINARY = 2,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_BINARY = 5,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_BINARY = 6,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_FILE = 17,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_FILE = 18,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ERROR = 19,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_FILE = 21,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_FILE = 22,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_DIR = 34,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_SET_DIR = 35,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_SEQUENCE = 37,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_SEQUENCE = 38,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_PROPERTY = 50,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_SET_PROPERTY = 51,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_PROPERTY = 53,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_PROPERTY = 54,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CONTINUE = 0x40,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ASYNC = 0x80,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_FIRST_SEQUENCE = 0x100,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ONCE_PER_PROCESS = 0x200,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CLIENT_REPEAT = 0x300,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_IN_SCRIPT = 0x400,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ROLLBACK = 0x100,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_COMMIT = 0x200,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_NO_IMPERSONATE = 0x800,
	WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_TS_AWARE = 0x4000
} WixlWixBuilderCustomActionType;

#define WIXL_WIX_BUILDER_TYPE_CUSTOM_ACTION_TYPE (wixl_wix_builder_custom_action_type_get_type ())
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))

#define WIXL_TYPE_PREPROCESSOR (wixl_preprocessor_get_type ())
#define WIXL_PREPROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_PREPROCESSOR, WixlPreprocessor))
#define WIXL_PREPROCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_PREPROCESSOR, WixlPreprocessorClass))
#define WIXL_IS_PREPROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_PREPROCESSOR))
#define WIXL_IS_PREPROCESSOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_PREPROCESSOR))
#define WIXL_PREPROCESSOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_PREPROCESSOR, WixlPreprocessorClass))

typedef struct _WixlPreprocessor WixlPreprocessor;
typedef struct _WixlPreprocessorClass WixlPreprocessorClass;
#define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL)))
#define _xmlFreeDoc0(var) ((var == NULL) ? NULL : (var = (xmlFreeDoc (var), NULL)))
#define _g_destroy_func0(var) (((var == NULL) || (g_destroy_func == NULL)) ? NULL : (var = (g_destroy_func (var), NULL)))
typedef struct _Block1Data Block1Data;
typedef void (*WixlWixBuilderAddDefaultAction) (WixlMSIDefaultAction action, gpointer user_data, GError** error);
typedef struct _WixlMsiDatabasePrivate WixlMsiDatabasePrivate;

#define WIXL_TYPE_MSI_SUMMARY_INFO (wixl_msi_summary_info_get_type ())
#define WIXL_MSI_SUMMARY_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfo))
#define WIXL_MSI_SUMMARY_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfoClass))
#define WIXL_IS_MSI_SUMMARY_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_SUMMARY_INFO))
#define WIXL_IS_MSI_SUMMARY_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_SUMMARY_INFO))
#define WIXL_MSI_SUMMARY_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_SUMMARY_INFO, WixlMsiSummaryInfoClass))

typedef struct _WixlMsiSummaryInfo WixlMsiSummaryInfo;
typedef struct _WixlMsiSummaryInfoClass WixlMsiSummaryInfoClass;

#define WIXL_TYPE_MSI_TABLE_PROPERTY (wixl_msi_table_property_get_type ())
#define WIXL_MSI_TABLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTableProperty))
#define WIXL_MSI_TABLE_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTablePropertyClass))
#define WIXL_IS_MSI_TABLE_PROPERTY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY))
#define WIXL_IS_MSI_TABLE_PROPERTY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_PROPERTY))
#define WIXL_MSI_TABLE_PROPERTY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_PROPERTY, WixlMsiTablePropertyClass))

typedef struct _WixlMsiTableProperty WixlMsiTableProperty;
typedef struct _WixlMsiTablePropertyClass WixlMsiTablePropertyClass;

#define WIXL_TYPE_MSI_TABLE_ICON (wixl_msi_table_icon_get_type ())
#define WIXL_MSI_TABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIcon))
#define WIXL_MSI_TABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIconClass))
#define WIXL_IS_MSI_TABLE_ICON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ICON))
#define WIXL_IS_MSI_TABLE_ICON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ICON))
#define WIXL_MSI_TABLE_ICON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ICON, WixlMsiTableIconClass))

typedef struct _WixlMsiTableIcon WixlMsiTableIcon;
typedef struct _WixlMsiTableIconClass WixlMsiTableIconClass;

#define WIXL_TYPE_MSI_TABLE_BINARY (wixl_msi_table_binary_get_type ())
#define WIXL_MSI_TABLE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinary))
#define WIXL_MSI_TABLE_BINARY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinaryClass))
#define WIXL_IS_MSI_TABLE_BINARY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_BINARY))
#define WIXL_IS_MSI_TABLE_BINARY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_BINARY))
#define WIXL_MSI_TABLE_BINARY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_BINARY, WixlMsiTableBinaryClass))

typedef struct _WixlMsiTableBinary WixlMsiTableBinary;
typedef struct _WixlMsiTableBinaryClass WixlMsiTableBinaryClass;

#define WIXL_TYPE_MSI_TABLE_MEDIA (wixl_msi_table_media_get_type ())
#define WIXL_MSI_TABLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMedia))
#define WIXL_MSI_TABLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMediaClass))
#define WIXL_IS_MSI_TABLE_MEDIA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_MEDIA))
#define WIXL_IS_MSI_TABLE_MEDIA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_MEDIA))
#define WIXL_MSI_TABLE_MEDIA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_MEDIA, WixlMsiTableMediaClass))

typedef struct _WixlMsiTableMedia WixlMsiTableMedia;
typedef struct _WixlMsiTableMediaClass WixlMsiTableMediaClass;

#define WIXL_TYPE_MSI_TABLE_DIRECTORY (wixl_msi_table_directory_get_type ())
#define WIXL_MSI_TABLE_DIRECTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectory))
#define WIXL_MSI_TABLE_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectoryClass))
#define WIXL_IS_MSI_TABLE_DIRECTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY))
#define WIXL_IS_MSI_TABLE_DIRECTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_DIRECTORY))
#define WIXL_MSI_TABLE_DIRECTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_DIRECTORY, WixlMsiTableDirectoryClass))

typedef struct _WixlMsiTableDirectory WixlMsiTableDirectory;
typedef struct _WixlMsiTableDirectoryClass WixlMsiTableDirectoryClass;

#define WIXL_TYPE_MSI_TABLE_COMPONENT (wixl_msi_table_component_get_type ())
#define WIXL_MSI_TABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponent))
#define WIXL_MSI_TABLE_COMPONENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponentClass))
#define WIXL_IS_MSI_TABLE_COMPONENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT))
#define WIXL_IS_MSI_TABLE_COMPONENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_COMPONENT))
#define WIXL_MSI_TABLE_COMPONENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_COMPONENT, WixlMsiTableComponentClass))

typedef struct _WixlMsiTableComponent WixlMsiTableComponent;
typedef struct _WixlMsiTableComponentClass WixlMsiTableComponentClass;

#define WIXL_TYPE_MSI_TABLE_FEATURE (wixl_msi_table_feature_get_type ())
#define WIXL_MSI_TABLE_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeature))
#define WIXL_MSI_TABLE_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeatureClass))
#define WIXL_IS_MSI_TABLE_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FEATURE))
#define WIXL_IS_MSI_TABLE_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FEATURE))
#define WIXL_MSI_TABLE_FEATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FEATURE, WixlMsiTableFeatureClass))

typedef struct _WixlMsiTableFeature WixlMsiTableFeature;
typedef struct _WixlMsiTableFeatureClass WixlMsiTableFeatureClass;

#define WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS (wixl_msi_table_feature_components_get_type ())
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponents))
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponentsClass))
#define WIXL_IS_MSI_TABLE_FEATURE_COMPONENTS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS))
#define WIXL_IS_MSI_TABLE_FEATURE_COMPONENTS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS))
#define WIXL_MSI_TABLE_FEATURE_COMPONENTS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FEATURE_COMPONENTS, WixlMsiTableFeatureComponentsClass))

typedef struct _WixlMsiTableFeatureComponents WixlMsiTableFeatureComponents;
typedef struct _WixlMsiTableFeatureComponentsClass WixlMsiTableFeatureComponentsClass;

#define WIXL_TYPE_MSI_TABLE_REMOVE_FILE (wixl_msi_table_remove_file_get_type ())
#define WIXL_MSI_TABLE_REMOVE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFile))
#define WIXL_MSI_TABLE_REMOVE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFileClass))
#define WIXL_IS_MSI_TABLE_REMOVE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE))
#define WIXL_IS_MSI_TABLE_REMOVE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_FILE))
#define WIXL_MSI_TABLE_REMOVE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_FILE, WixlMsiTableRemoveFileClass))

typedef struct _WixlMsiTableRemoveFile WixlMsiTableRemoveFile;
typedef struct _WixlMsiTableRemoveFileClass WixlMsiTableRemoveFileClass;

#define WIXL_TYPE_MSI_TABLE_REGISTRY (wixl_msi_table_registry_get_type ())
#define WIXL_MSI_TABLE_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistry))
#define WIXL_MSI_TABLE_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistryClass))
#define WIXL_IS_MSI_TABLE_REGISTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY))
#define WIXL_IS_MSI_TABLE_REGISTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REGISTRY))
#define WIXL_MSI_TABLE_REGISTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REGISTRY, WixlMsiTableRegistryClass))

typedef struct _WixlMsiTableRegistry WixlMsiTableRegistry;
typedef struct _WixlMsiTableRegistryClass WixlMsiTableRegistryClass;

#define WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL (wixl_msi_table_service_control_get_type ())
#define WIXL_MSI_TABLE_SERVICE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControl))
#define WIXL_MSI_TABLE_SERVICE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControlClass))
#define WIXL_IS_MSI_TABLE_SERVICE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL))
#define WIXL_IS_MSI_TABLE_SERVICE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL))
#define WIXL_MSI_TABLE_SERVICE_CONTROL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_CONTROL, WixlMsiTableServiceControlClass))

typedef struct _WixlMsiTableServiceControl WixlMsiTableServiceControl;
typedef struct _WixlMsiTableServiceControlClass WixlMsiTableServiceControlClass;

#define WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL (wixl_msi_table_service_install_get_type ())
#define WIXL_MSI_TABLE_SERVICE_INSTALL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstall))
#define WIXL_MSI_TABLE_SERVICE_INSTALL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstallClass))
#define WIXL_IS_MSI_TABLE_SERVICE_INSTALL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL))
#define WIXL_IS_MSI_TABLE_SERVICE_INSTALL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL))
#define WIXL_MSI_TABLE_SERVICE_INSTALL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SERVICE_INSTALL, WixlMsiTableServiceInstallClass))

typedef struct _WixlMsiTableServiceInstall WixlMsiTableServiceInstall;
typedef struct _WixlMsiTableServiceInstallClass WixlMsiTableServiceInstallClass;

#define WIXL_TYPE_MSI_TABLE_FILE (wixl_msi_table_file_get_type ())
#define WIXL_MSI_TABLE_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFile))
#define WIXL_MSI_TABLE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFileClass))
#define WIXL_IS_MSI_TABLE_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FILE))
#define WIXL_IS_MSI_TABLE_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FILE))
#define WIXL_MSI_TABLE_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FILE, WixlMsiTableFileClass))

typedef struct _WixlMsiTableFile WixlMsiTableFile;
typedef struct _WixlMsiTableFileClass WixlMsiTableFileClass;

#define WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE (wixl_msi_table_admin_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequence))
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_EXECUTE_SEQUENCE, WixlMsiTableAdminExecuteSequenceClass))

typedef struct _WixlMsiTableAdminExecuteSequence WixlMsiTableAdminExecuteSequence;
typedef struct _WixlMsiTableAdminExecuteSequenceClass WixlMsiTableAdminExecuteSequenceClass;

#define WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE (wixl_msi_table_admin_ui_sequence_get_type ())
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequence))
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequenceClass))
#define WIXL_IS_MSI_TABLE_ADMIN_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADMIN_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE))
#define WIXL_MSI_TABLE_ADMIN_UI_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADMIN_UI_SEQUENCE, WixlMsiTableAdminUISequenceClass))

typedef struct _WixlMsiTableAdminUISequence WixlMsiTableAdminUISequence;
typedef struct _WixlMsiTableAdminUISequenceClass WixlMsiTableAdminUISequenceClass;

#define WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE (wixl_msi_table_advt_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequence))
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_ADVT_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_ADVT_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ADVT_EXECUTE_SEQUENCE, WixlMsiTableAdvtExecuteSequenceClass))

typedef struct _WixlMsiTableAdvtExecuteSequence WixlMsiTableAdvtExecuteSequence;
typedef struct _WixlMsiTableAdvtExecuteSequenceClass WixlMsiTableAdvtExecuteSequenceClass;

#define WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE (wixl_msi_table_install_execute_sequence_get_type ())
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequence))
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequenceClass))
#define WIXL_IS_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE))
#define WIXL_IS_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE))
#define WIXL_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_EXECUTE_SEQUENCE, WixlMsiTableInstallExecuteSequenceClass))

typedef struct _WixlMsiTableInstallExecuteSequence WixlMsiTableInstallExecuteSequence;
typedef struct _WixlMsiTableInstallExecuteSequenceClass WixlMsiTableInstallExecuteSequenceClass;

#define WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE (wixl_msi_table_install_ui_sequence_get_type ())
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequence))
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequenceClass))
#define WIXL_IS_MSI_TABLE_INSTALL_UI_SEQUENCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE))
#define WIXL_IS_MSI_TABLE_INSTALL_UI_SEQUENCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE))
#define WIXL_MSI_TABLE_INSTALL_UI_SEQUENCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INSTALL_UI_SEQUENCE, WixlMsiTableInstallUISequenceClass))

typedef struct _WixlMsiTableInstallUISequence WixlMsiTableInstallUISequence;
typedef struct _WixlMsiTableInstallUISequenceClass WixlMsiTableInstallUISequenceClass;

#define WIXL_TYPE_MSI_TABLE_STREAMS (wixl_msi_table_streams_get_type ())
#define WIXL_MSI_TABLE_STREAMS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreams))
#define WIXL_MSI_TABLE_STREAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreamsClass))
#define WIXL_IS_MSI_TABLE_STREAMS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_STREAMS))
#define WIXL_IS_MSI_TABLE_STREAMS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_STREAMS))
#define WIXL_MSI_TABLE_STREAMS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_STREAMS, WixlMsiTableStreamsClass))

typedef struct _WixlMsiTableStreams WixlMsiTableStreams;
typedef struct _WixlMsiTableStreamsClass WixlMsiTableStreamsClass;

#define WIXL_TYPE_MSI_TABLE_SHORTCUT (wixl_msi_table_shortcut_get_type ())
#define WIXL_MSI_TABLE_SHORTCUT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcut))
#define WIXL_MSI_TABLE_SHORTCUT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcutClass))
#define WIXL_IS_MSI_TABLE_SHORTCUT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT))
#define WIXL_IS_MSI_TABLE_SHORTCUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SHORTCUT))
#define WIXL_MSI_TABLE_SHORTCUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SHORTCUT, WixlMsiTableShortcutClass))

typedef struct _WixlMsiTableShortcut WixlMsiTableShortcut;
typedef struct _WixlMsiTableShortcutClass WixlMsiTableShortcutClass;

#define WIXL_TYPE_MSI_TABLE_UPGRADE (wixl_msi_table_upgrade_get_type ())
#define WIXL_MSI_TABLE_UPGRADE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgrade))
#define WIXL_MSI_TABLE_UPGRADE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgradeClass))
#define WIXL_IS_MSI_TABLE_UPGRADE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE))
#define WIXL_IS_MSI_TABLE_UPGRADE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_UPGRADE))
#define WIXL_MSI_TABLE_UPGRADE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_UPGRADE, WixlMsiTableUpgradeClass))

typedef struct _WixlMsiTableUpgrade WixlMsiTableUpgrade;
typedef struct _WixlMsiTableUpgradeClass WixlMsiTableUpgradeClass;

#define WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION (wixl_msi_table_launch_condition_get_type ())
#define WIXL_MSI_TABLE_LAUNCH_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchCondition))
#define WIXL_MSI_TABLE_LAUNCH_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchConditionClass))
#define WIXL_IS_MSI_TABLE_LAUNCH_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION))
#define WIXL_IS_MSI_TABLE_LAUNCH_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION))
#define WIXL_MSI_TABLE_LAUNCH_CONDITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_LAUNCH_CONDITION, WixlMsiTableLaunchConditionClass))

typedef struct _WixlMsiTableLaunchCondition WixlMsiTableLaunchCondition;
typedef struct _WixlMsiTableLaunchConditionClass WixlMsiTableLaunchConditionClass;

#define WIXL_TYPE_MSI_TABLE_APP_SEARCH (wixl_msi_table_app_search_get_type ())
#define WIXL_MSI_TABLE_APP_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearch))
#define WIXL_MSI_TABLE_APP_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearchClass))
#define WIXL_IS_MSI_TABLE_APP_SEARCH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH))
#define WIXL_IS_MSI_TABLE_APP_SEARCH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_APP_SEARCH))
#define WIXL_MSI_TABLE_APP_SEARCH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_APP_SEARCH, WixlMsiTableAppSearchClass))

typedef struct _WixlMsiTableAppSearch WixlMsiTableAppSearch;
typedef struct _WixlMsiTableAppSearchClass WixlMsiTableAppSearchClass;

#define WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION (wixl_msi_table_custom_action_get_type ())
#define WIXL_MSI_TABLE_CUSTOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomAction))
#define WIXL_MSI_TABLE_CUSTOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomActionClass))
#define WIXL_IS_MSI_TABLE_CUSTOM_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION))
#define WIXL_IS_MSI_TABLE_CUSTOM_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION))
#define WIXL_MSI_TABLE_CUSTOM_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CUSTOM_ACTION, WixlMsiTableCustomActionClass))

typedef struct _WixlMsiTableCustomAction WixlMsiTableCustomAction;
typedef struct _WixlMsiTableCustomActionClass WixlMsiTableCustomActionClass;

#define WIXL_TYPE_MSI_TABLE_REG_LOCATOR (wixl_msi_table_reg_locator_get_type ())
#define WIXL_MSI_TABLE_REG_LOCATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocator))
#define WIXL_MSI_TABLE_REG_LOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocatorClass))
#define WIXL_IS_MSI_TABLE_REG_LOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR))
#define WIXL_IS_MSI_TABLE_REG_LOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REG_LOCATOR))
#define WIXL_MSI_TABLE_REG_LOCATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REG_LOCATOR, WixlMsiTableRegLocatorClass))

typedef struct _WixlMsiTableRegLocator WixlMsiTableRegLocator;
typedef struct _WixlMsiTableRegLocatorClass WixlMsiTableRegLocatorClass;

#define WIXL_TYPE_MSI_TABLE_CREATE_FOLDER (wixl_msi_table_create_folder_get_type ())
#define WIXL_MSI_TABLE_CREATE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolder))
#define WIXL_MSI_TABLE_CREATE_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolderClass))
#define WIXL_IS_MSI_TABLE_CREATE_FOLDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER))
#define WIXL_IS_MSI_TABLE_CREATE_FOLDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER))
#define WIXL_MSI_TABLE_CREATE_FOLDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CREATE_FOLDER, WixlMsiTableCreateFolderClass))

typedef struct _WixlMsiTableCreateFolder WixlMsiTableCreateFolder;
typedef struct _WixlMsiTableCreateFolderClass WixlMsiTableCreateFolderClass;

#define WIXL_TYPE_MSI_TABLE_SIGNATURE (wixl_msi_table_signature_get_type ())
#define WIXL_MSI_TABLE_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignature))
#define WIXL_MSI_TABLE_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignatureClass))
#define WIXL_IS_MSI_TABLE_SIGNATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE))
#define WIXL_IS_MSI_TABLE_SIGNATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_SIGNATURE))
#define WIXL_MSI_TABLE_SIGNATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_SIGNATURE, WixlMsiTableSignatureClass))

typedef struct _WixlMsiTableSignature WixlMsiTableSignature;
typedef struct _WixlMsiTableSignatureClass WixlMsiTableSignatureClass;

#define WIXL_TYPE_MSI_TABLE_FILE_HASH (wixl_msi_table_file_hash_get_type ())
#define WIXL_MSI_TABLE_FILE_HASH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHash))
#define WIXL_MSI_TABLE_FILE_HASH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHashClass))
#define WIXL_IS_MSI_TABLE_FILE_HASH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH))
#define WIXL_IS_MSI_TABLE_FILE_HASH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_FILE_HASH))
#define WIXL_MSI_TABLE_FILE_HASH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_FILE_HASH, WixlMsiTableFileHashClass))

typedef struct _WixlMsiTableFileHash WixlMsiTableFileHash;
typedef struct _WixlMsiTableFileHashClass WixlMsiTableFileHashClass;
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
#define _wixl_msi_table_sequence_action_unref0(var) ((var == NULL) ? NULL : (var = (wixl_msi_table_sequence_action_unref (var), NULL)))

struct _WixlWixBuilder {
	WixlWixNodeVisitor parent_instance;
	WixlWixBuilderPrivate * priv;
};

struct _WixlWixBuilderClass {
	WixlWixNodeVisitorClass parent_class;
};

struct _WixlWixBuilderPrivate {
	WixlWixRoot* root;
	WixlMsiDatabase* db;
	GHashTable* variables;
	GList* includedirs;
	WixlArch arch;
	GList* path;
	GList* roots;
	GList* medias;
	gchar** secureProperties;
	gint secureProperties_length1;
	gint _secureProperties_size_;
	WixlWixKeyElement* component_default_key;
	gint component_children_count;
	WixlWixFeature* feature_root;
	gint feature_display;
	gchar* ServiceArguments;
	gchar* ServiceDependencies;
};

struct _Block1Data {
	int _ref_count_;
	WixlWixBuilder* self;
	WixlMsiTableSequence* table;
};

struct _WixlMsiDatabase {
	GObject parent_instance;
	WixlMsiDatabasePrivate * priv;
	WixlMsiSummaryInfo* info;
	WixlMsiTableProperty* table_property;
	WixlMsiTableIcon* table_icon;
	WixlMsiTableBinary* table_binary;
	WixlMsiTableMedia* table_media;
	WixlMsiTableDirectory* table_directory;
	WixlMsiTableComponent* table_component;
	WixlMsiTableFeature* table_feature;
	WixlMsiTableFeatureComponents* table_feature_components;
	WixlMsiTableRemoveFile* table_remove_file;
	WixlMsiTableRegistry* table_registry;
	WixlMsiTableServiceControl* table_service_control;
	WixlMsiTableServiceInstall* table_service_install;
	WixlMsiTableFile* table_file;
	WixlMsiTableAdminExecuteSequence* table_admin_execute_sequence;
	WixlMsiTableAdminUISequence* table_admin_ui_sequence;
	WixlMsiTableAdvtExecuteSequence* table_advt_execute_sequence;
	WixlMsiTableInstallExecuteSequence* table_install_execute_sequence;
	WixlMsiTableInstallUISequence* table_install_ui_sequence;
	WixlMsiTableStreams* table_streams;
	WixlMsiTableShortcut* table_shortcut;
	WixlMsiTableUpgrade* table_upgrade;
	WixlMsiTableLaunchCondition* table_launch_condition;
	WixlMsiTableAppSearch* table_app_search;
	WixlMsiTableCustomAction* table_custom_action;
	WixlMsiTableRegLocator* table_reg_locator;
	WixlMsiTableCreateFolder* table_create_folder;
	WixlMsiTableSignature* table_signature;
	WixlMsiTableFileHash* table_file_hash;
	GHashTable* tables;
};

struct _WixlMsiDatabaseClass {
	GObjectClass parent_class;
};

static gint WixlWixBuilder_private_offset;
static gpointer wixl_wix_builder_parent_class = NULL;
static WixlWixResolverIface * wixl_wix_builder_wixl_wix_resolver_parent_iface = NULL;

GType wixl_arch_get_type (void) G_GNUC_CONST;
WixlArch wixl_arch_from_string (const gchar* s,
                                GError** error);
GType wixl_wix_builder_get_type (void) G_GNUC_CONST;
GType wixl_wix_root_get_type (void) G_GNUC_CONST;
GType wixl_msi_database_get_type (void) G_GNUC_CONST;
static GType wixl_wix_builder_source_flags_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static GType wixl_wix_builder_component_attribute_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static GType wixl_wix_builder_feature_display_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderFeatureDisplay wixl_wix_builder_feature_display_from_string (const gchar* s,
                                                                           GError** error);
static GType wixl_wix_builder_install_mode_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderInstallMode wixl_wix_builder_install_mode_from_string (const gchar* s,
                                                                     GError** error);
static GType wixl_wix_builder_registry_value_type_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderRegistryValueType wixl_wix_builder_registry_value_type_from_string (const gchar* s,
                                                                                  GError** error);
static GType wixl_wix_builder_registry_root_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderRegistryRoot wixl_wix_builder_registry_root_from_string (const gchar* s,
                                                                       GError** error);
static GType wixl_wix_builder_file_attribute_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static GType wixl_wix_builder_upgrade_attribute_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static GType wixl_wix_builder_service_control_event_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static GType wixl_wix_builder_service_type_attribute_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderServiceTypeAttribute wixl_wix_builder_service_type_attribute_from_string (const gchar* s,
                                                                                        GError** error);
static GType wixl_wix_builder_start_type_attribute_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderStartTypeAttribute wixl_wix_builder_start_type_attribute_from_string (const gchar* s,
                                                                                    GError** error);
static GType wixl_wix_builder_error_control_attribute_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderErrorControlAttribute wixl_wix_builder_error_control_attribute_from_string (const gchar* s,
                                                                                          GError** error);
static GType wixl_wix_builder_registry_type_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static WixlWixBuilderRegistryType wixl_wix_builder_registry_type_from_string (const gchar* s,
                                                                       GError** error);
static GType wixl_wix_builder_custom_action_type_get_type (void) G_GNUC_CONST G_GNUC_UNUSED;
static void _g_object_unref0_ (gpointer var);
static inline void _g_list_free__g_object_unref0_ (GList* self);
WixlWixBuilder* wixl_wix_builder_new (gchar** includedirs,
                                      gint includedirs_length1,
                                      WixlArch arch);
WixlWixBuilder* wixl_wix_builder_construct (GType object_type,
                                            gchar** includedirs,
                                            gint includedirs_length1,
                                            WixlArch arch);
void wixl_wix_builder_add_path (WixlWixBuilder* self,
                                const gchar* p);
void wixl_wix_builder_define_variable (WixlWixBuilder* self,
                                       const gchar* name,
                                       const gchar* value);
void wixl_wix_builder_load_doc (WixlWixBuilder* self,
                                xmlDoc* doc,
                                GError** error);
WixlWixRoot* wixl_wix_root_new (void);
WixlWixRoot* wixl_wix_root_construct (GType object_type);
void wixl_wix_builder_load_file (WixlWixBuilder* self,
                                 GFile* file,
                                 gboolean preproc_only,
                                 GError** error);
GType wixl_preprocessor_get_type (void) G_GNUC_CONST;
WixlPreprocessor* wixl_preprocessor_new (GHashTable* globals,
                                         GList* includedirs);
WixlPreprocessor* wixl_preprocessor_construct (GType object_type,
                                               GHashTable* globals,
                                               GList* includedirs);
xmlDoc* wixl_preprocessor_preprocess (WixlPreprocessor* self,
                                      const gchar* data,
                                      GFile* file,
                                      GError** error);
static gpointer wixl_wix_builder_real_find_element (WixlWixResolver* base,
                                             GType g_type,
                                             GBoxedCopyFunc g_dup_func,
                                             GDestroyNotify g_destroy_func,
                                             const gchar* Id);
gpointer* wixl_wix_builder_get_elements (WixlWixBuilder* self,
                                         GType g_type,
                                         GBoxedCopyFunc g_dup_func,
                                         GDestroyNotify g_destroy_func,
                                         gint* result_length1);
static gpointer* _vala_array_dup1 (gpointer* self,
                            int length,
                            GBoxedCopyFunc g_dup_func);
static void wixl_wix_builder_sequence_actions (WixlWixBuilder* self,
                                        GError** error);
static Block1Data* block1_data_ref (Block1Data* _data1_);
static void block1_data_unref (void * _userdata_);
static void __lambda5_ (Block1Data* _data1_,
                 WixlMSIDefaultAction action,
                 GError** error);
static void ___lambda5__wixl_wix_builder_add_default_action (WixlMSIDefaultAction action,
                                                      gpointer self,
                                                      GError** error);
GType wixl_msi_summary_info_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_property_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_icon_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_binary_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_media_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_directory_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_component_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_feature_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_feature_components_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_remove_file_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_registry_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_service_control_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_service_install_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_file_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_admin_execute_sequence_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_admin_ui_sequence_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_advt_execute_sequence_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_install_execute_sequence_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_install_ui_sequence_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_streams_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_shortcut_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_upgrade_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_launch_condition_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_app_search_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_custom_action_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_reg_locator_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_create_folder_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_signature_get_type (void) G_GNUC_CONST;
GType wixl_msi_table_file_hash_get_type (void) G_GNUC_CONST;
static void wixl_wix_builder_hash_files (WixlWixBuilder* self,
                                  GError** error);
void wixl_msi_table_file_hash_add_with_file (WixlMsiTableFileHash* self,
                                             const gchar* FileId,
                                             GFile* file,
                                             GError** error);
static void wixl_wix_builder_build_cabinet (WixlWixBuilder* self,
                                     GError** error);
gboolean wixl_msi_table_file_set_sequence (LibmsiRecord* rec,
                                           gint Sequence);
static void* _g_realloc_grealloc_func (void* data,
                                gsize size);
static void _g_free_gdestroy_notify (void* data);
static guint8* _vala_array_dup2 (guint8* self,
                          int length);
void wixl_msi_table_streams_add (WixlMsiTableStreams* self,
                                 const gchar* name,
                                 GInputStream* input,
                                 gsize count,
                                 GError** error);
gboolean wixl_msi_table_media_set_last_sequence (WixlMsiTableMedia* self,
                                                 LibmsiRecord* rec,
                                                 gint last_sequence);
static void wixl_wix_builder_shortcut_target (WixlWixBuilder* self,
                                       GError** error);
void wixl_msi_table_shortcut_set_target (LibmsiRecord* rec,
                                         const gchar* Target,
                                         GError** error);
void wixl_wix_builder_property_update (WixlWixBuilder* self,
                                       GError** error);
void wixl_msi_table_property_add (WixlMsiTableProperty* self,
                                  const gchar* prop,
                                  const gchar* value,
                                  GError** error);
WixlMsiDatabase* wixl_wix_builder_build (WixlWixBuilder* self,
                                         GError** error);
WixlMsiDatabase* wixl_msi_database_new (WixlArch arch);
WixlMsiDatabase* wixl_msi_database_construct (GType object_type,
                                              WixlArch arch);
static void wixl_wix_builder_real_visit_product (WixlWixNodeVisitor* base,
                                          WixlWixProduct* product,
                                          GError** error);
void wixl_msi_summary_info_set_codepage (WixlMsiSummaryInfo* self,
                                         gint value,
                                         GError** error);
gchar* wixl_msi_summary_info_get_subject (WixlMsiSummaryInfo* self);
void wixl_msi_summary_info_set_subject (WixlMsiSummaryInfo* self,
                                        const gchar* value,
                                        GError** error);
void wixl_msi_summary_info_set_author (WixlMsiSummaryInfo* self,
                                       const gchar* value,
                                       GError** error);
gchar* wixl_msi_summary_info_get_comments (WixlMsiSummaryInfo* self);
void wixl_msi_summary_info_set_comments (WixlMsiSummaryInfo* self,
                                         const gchar* value,
                                         GError** error);
static void wixl_wix_builder_real_visit_package (WixlWixNodeVisitor* base,
                                          WixlWixPackage* package,
                                          GError** error);
void wixl_msi_summary_info_set_keywords (WixlMsiSummaryInfo* self,
                                         const gchar* value,
                                         GError** error);
void wixl_msi_summary_info_set_property (WixlMsiSummaryInfo* self,
                                         LibmsiProperty prop,
                                         GValue* value,
                                         GError** error);
static void wixl_wix_builder_real_visit_icon (WixlWixNodeVisitor* base,
                                       WixlWixIcon* icon,
                                       GError** error);
static GFile* wixl_wix_builder_find_file (WixlWixBuilder* self,
                                   const gchar* name,
                                   GFileInfo* * info,
                                   GError** error);
void wixl_msi_table_icon_add (WixlMsiTableIcon* self,
                              const gchar* id,
                              const gchar* filename,
                              GError** error);
static void wixl_wix_builder_real_visit_property (WixlWixNodeVisitor* base,
                                           WixlWixProperty* prop,
                                           GError** error);
static void wixl_wix_builder_real_visit_media (WixlWixNodeVisitor* base,
                                        WixlWixMedia* media,
                                        GError** error);
LibmsiRecord* wixl_msi_table_media_add (WixlMsiTableMedia* self,
                                        const gchar* DiskId,
                                        const gchar* DiskPrompt,
                                        const gchar* Cabinet,
                                        GError** error);
static void wixl_wix_builder_real_visit_directory (WixlWixNodeVisitor* base,
                                            WixlWixDirectory* dir,
                                            GError** error);
void wixl_msi_table_directory_add (WixlMsiTableDirectory* self,
                                   const gchar* Directory,
                                   const gchar* Parent,
                                   const gchar* DefaultDir,
                                   GError** error);
static void wixl_wix_builder_real_visit_component (WixlWixNodeVisitor* base,
                                            WixlWixComponent* comp,
                                            WixlVisitState state,
                                            GError** error);
static WixlWixDirectory* wixl_wix_builder_get_directory (WixlWixBuilder* self,
                                                  WixlWixComponent* comp,
                                                  GError** error);
void wixl_msi_table_component_add (WixlMsiTableComponent* self,
                                   const gchar* Component,
                                   const gchar* ComponentId,
                                   const gchar* Directory,
                                   gint Attributes,
                                   const gchar* KeyPath,
                                   GError** error);
static void wixl_wix_builder_real_visit_feature (WixlWixNodeVisitor* base,
                                          WixlWixFeature* feature,
                                          WixlVisitState state,
                                          GError** error);
void wixl_msi_table_feature_add (WixlMsiTableFeature* self,
                                 const gchar* Feature,
                                 gint Display,
                                 gint Level,
                                 gint Attributes,
                                 const gchar* Parent,
                                 const gchar* Title,
                                 const gchar* Description,
                                 const gchar* ConfigurableDirectory,
                                 GError** error);
static void wixl_wix_builder_feature_add_component (WixlWixBuilder* self,
                                             WixlWixFeature* feature,
                                             WixlWixComponent* component,
                                             GError** error);
void wixl_msi_table_feature_components_add (WixlMsiTableFeatureComponents* self,
                                            const gchar* Feature,
                                            const gchar* Component,
                                            GError** error);
static void wixl_wix_builder_feature_add_component_group (WixlWixBuilder* self,
                                                   WixlWixFeature* feature,
                                                   WixlWixComponentGroup* group,
                                                   GError** error);
static void wixl_wix_builder_real_visit_component_ref (WixlWixNodeVisitor* base,
                                                WixlWixComponentRef* ref,
                                                GError** error);
static void wixl_wix_builder_real_visit_component_group_ref (WixlWixNodeVisitor* base,
                                                      WixlWixComponentGroupRef* ref,
                                                      GError** error);
static void wixl_wix_builder_real_visit_remove_folder (WixlWixNodeVisitor* base,
                                                WixlWixRemoveFolder* rm,
                                                GError** error);
void wixl_msi_table_remove_file_add (WixlMsiTableRemoveFile* self,
                                     const gchar* FileKey,
                                     const gchar* Component,
                                     const gchar* DirProperty,
                                     gint InstallMode,
                                     GError** error);
static void wixl_wix_builder_visit_key_element (WixlWixBuilder* self,
                                         WixlWixKeyElement* key,
                                         WixlWixComponent* component,
                                         GError** error);
static void wixl_wix_builder_real_visit_registry_value (WixlWixNodeVisitor* base,
                                                 WixlWixRegistryValue* reg,
                                                 GError** error);
void wixl_msi_table_registry_add (WixlMsiTableRegistry* self,
                                  const gchar* Registry,
                                  gint Root,
                                  const gchar* Key,
                                  const gchar* Component,
                                  const gchar* Name,
                                  const gchar* Value,
                                  GError** error);
static void wixl_wix_builder_real_visit_file (WixlWixNodeVisitor* base,
                                       WixlWixFile* file,
                                       GError** error);
LibmsiRecord* wixl_msi_table_file_add (WixlMsiTableFile* self,
                                       const gchar* File,
                                       const gchar* Component,
                                       const gchar* FileName,
                                       gint FileSize,
                                       gint Attributes,
                                       gint Sequence,
                                       GError** error);
static void wixl_wix_builder_real_visit_shortcut (WixlWixNodeVisitor* base,
                                           WixlWixShortcut* shortcut,
                                           GError** error);
LibmsiRecord* wixl_msi_table_shortcut_add (WixlMsiTableShortcut* self,
                                           const gchar* Shortcut,
                                           const gchar* Directory,
                                           const gchar* Name,
                                           const gchar* Component,
                                           GError** error);
void wixl_msi_table_shortcut_set_icon (LibmsiRecord* rec,
                                       const gchar* Icon,
                                       GError** error);
void wixl_msi_table_shortcut_set_icon_index (LibmsiRecord* rec,
                                             gint IconIndex,
                                             GError** error);
void wixl_msi_table_shortcut_set_working_dir (LibmsiRecord* rec,
                                              const gchar* WkDir,
                                              GError** error);
void wixl_msi_table_shortcut_set_description (LibmsiRecord* rec,
                                              const gchar* Description,
                                              GError** error);
void wixl_msi_table_shortcut_set_arguments (LibmsiRecord* rec,
                                            const gchar* Arguments,
                                            GError** error);
static void wixl_wix_builder_real_visit_sequence (WixlWixNodeVisitor* base,
                                           WixlWixSequence* sequence,
                                           GError** error);
static void wixl_wix_builder_real_visit_condition (WixlWixNodeVisitor* base,
                                            WixlWixCondition* condition,
                                            GError** error);
void wixl_msi_table_launch_condition_add (WixlMsiTableLaunchCondition* self,
                                          const gchar* condition,
                                          const gchar* description,
                                          GError** error);
static void wixl_wix_builder_real_visit_upgrade (WixlWixNodeVisitor* base,
                                          WixlWixUpgrade* upgrade,
                                          GError** error);
static void wixl_wix_builder_real_visit_upgrade_version (WixlWixNodeVisitor* base,
                                                  WixlWixUpgradeVersion* version,
                                                  GError** error);
void wixl_msi_table_upgrade_add (WixlMsiTableUpgrade* self,
                                 const gchar* UpgradeCode,
                                 const gchar* VersionMin,
                                 const gchar* VersionMax,
                                 gint Attributes,
                                 const gchar* ActionProperty,
                                 GError** error);
static void _vala_array_add1 (gchar** * array,
                       int* length,
                       int* size,
                       gchar* value);
static void wixl_wix_builder_real_visit_action (WixlWixNodeVisitor* base,
                                         WixlWixAction* action,
                                         GError** error);
static void wixl_wix_builder_real_visit_progid (WixlWixNodeVisitor* base,
                                         WixlWixProgId* progid,
                                         GError** error);
static void wixl_wix_builder_real_visit_extension (WixlWixNodeVisitor* base,
                                            WixlWixExtension* ext,
                                            GError** error);
static void wixl_wix_builder_real_visit_verb (WixlWixNodeVisitor* base,
                                       WixlWixVerb* verb,
                                       GError** error);
static void wixl_wix_builder_real_visit_mime (WixlWixNodeVisitor* base,
                                       WixlWixMIME* mime,
                                       GError** error);
static void wixl_wix_builder_real_visit_create_folder (WixlWixNodeVisitor* base,
                                                WixlWixCreateFolder* folder,
                                                GError** error);
void wixl_msi_table_create_folder_add (WixlMsiTableCreateFolder* self,
                                       const gchar* Directory,
                                       const gchar* Component,
                                       GError** error);
static void wixl_wix_builder_real_visit_fragment (WixlWixNodeVisitor* base,
                                           WixlWixFragment* fragment,
                                           GError** error);
static void wixl_wix_builder_real_visit_text (WixlWixNodeVisitor* base,
                                       WixlWixText* text,
                                       GError** error);
static gint wixl_wix_builder_install_mode_to_event (WixlWixBuilder* self,
                                             const gchar* modeString,
                                             WixlWixBuilderServiceControlEvent install,
                                             WixlWixBuilderServiceControlEvent uninstall,
                                             GError** error);
static void wixl_wix_builder_real_visit_service_argument (WixlWixNodeVisitor* base,
                                                   WixlWixServiceArgument* service_argument,
                                                   GError** error);
static void wixl_wix_builder_real_visit_service_control (WixlWixNodeVisitor* base,
                                                  WixlWixServiceControl* service_control,
                                                  WixlVisitState state,
                                                  GError** error);
static gboolean* _bool_dup (gboolean* self);
void wixl_msi_table_service_control_add (WixlMsiTableServiceControl* self,
                                         const gchar* ServiceControl,
                                         const gchar* Name,
                                         gint Event,
                                         const gchar* Arguments,
                                         gboolean* Wait,
                                         const gchar* Component,
                                         GError** error);
static void wixl_wix_builder_real_visit_service_dependency (WixlWixNodeVisitor* base,
                                                     WixlWixServiceDependency* service_dependency,
                                                     GError** error);
static void wixl_wix_builder_real_visit_service_install (WixlWixNodeVisitor* base,
                                                  WixlWixServiceInstall* service_install,
                                                  WixlVisitState state,
                                                  GError** error);
void wixl_msi_table_service_install_add (WixlMsiTableServiceInstall* self,
                                         const gchar* ServiceInstall,
                                         const gchar* Name,
                                         const gchar* DisplayName,
                                         gint ServiceType,
                                         gint StartType,
                                         gint ErrorControl,
                                         const gchar* LoadOrderGroup,
                                         const gchar* Dependencies,
                                         const gchar* StartName,
                                         const gchar* Password,
                                         const gchar* Arguments,
                                         const gchar* Component,
                                         const gchar* Description,
                                         GError** error);
static void wixl_wix_builder_real_visit_registry_search (WixlWixNodeVisitor* base,
                                                  WixlWixRegistrySearch* search,
                                                  GError** error);
void wixl_msi_table_app_search_add (WixlMsiTableAppSearch* self,
                                    const gchar* Property,
                                    const gchar* Signature,
                                    GError** error);
void wixl_msi_table_reg_locator_add (WixlMsiTableRegLocator* self,
                                     const gchar* Signature,
                                     gint Root,
                                     const gchar* Key,
                                     const gchar* Name,
                                     gint Type,
                                     GError** error);
static void wixl_wix_builder_real_visit_custom_action (WixlWixNodeVisitor* base,
                                                WixlWixCustomAction* action,
                                                GError** error);
void wixl_msi_table_custom_action_add (WixlMsiTableCustomAction* self,
                                       const gchar* Action,
                                       gint Type,
                                       const gchar* Source,
                                       const gchar* Target,
                                       gint* ExtendedType,
                                       GError** error);
static void wixl_wix_builder_real_visit_binary (WixlWixNodeVisitor* base,
                                         WixlWixBinary* binary,
                                         GError** error);
void wixl_msi_table_binary_add (WixlMsiTableBinary* self,
                                const gchar* id,
                                const gchar* filename,
                                GError** error);
static void wixl_wix_builder_real_visit_major_upgrade (WixlWixNodeVisitor* base,
                                                WixlWixMajorUpgrade* major,
                                                GError** error);
static void _vala_array_add2 (gchar** * array,
                       int* length,
                       int* size,
                       gchar* value);
static void _vala_array_add3 (gchar** * array,
                       int* length,
                       int* size,
                       gchar* value);
static void wixl_wix_builder_real_visit_media_template (WixlWixNodeVisitor* base,
                                                 WixlWixMediaTemplate* tmpl,
                                                 GError** error);
static GObject * wixl_wix_builder_constructor (GType type,
                                        guint n_construct_properties,
                                        GObjectConstructParam * construct_properties);
static void _g_free0_ (gpointer var);
static void wixl_wix_builder_finalize (GObject * obj);
static void _vala_array_destroy (gpointer array,
                          gint array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gint array_length,
                       GDestroyNotify destroy_func);

WixlArch
wixl_arch_from_string (const gchar* s,
                       GError** error)
{
	WixlArch _tmp0_ = 0;
	gpointer _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlArch result = 0;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = wixl_enum_from_string (WIXL_TYPE_ARCH, NULL, NULL, s, &_inner_error0_);
	_tmp0_ = (WixlArch) ((gintptr) _tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return 0;
	}
	result = _tmp0_;
	return result;
}

GType
wixl_arch_get_type (void)
{
	static volatile gsize wixl_arch_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_arch_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_ARCH_X86, "WIXL_ARCH_X86", "x86"}, {WIXL_ARCH_INTEL, "WIXL_ARCH_INTEL", "intel"}, {WIXL_ARCH_IA64, "WIXL_ARCH_IA64", "ia64"}, {WIXL_ARCH_INTEL64, "WIXL_ARCH_INTEL64", "intel64"}, {WIXL_ARCH_X64, "WIXL_ARCH_X64", "x64"}, {0, NULL, NULL}};
		GType wixl_arch_type_id;
		wixl_arch_type_id = g_enum_register_static ("WixlArch", values);
		g_once_init_leave (&wixl_arch_type_id__volatile, wixl_arch_type_id);
	}
	return wixl_arch_type_id__volatile;
}

static inline gpointer
wixl_wix_builder_get_instance_private (WixlWixBuilder* self)
{
	return G_STRUCT_MEMBER_P (self, WixlWixBuilder_private_offset);
}

static GType
wixl_wix_builder_source_flags_get_type (void)
{
	static volatile gsize wixl_wix_builder_source_flags_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_source_flags_type_id__volatile)) {
		static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_SOURCE_FLAGS_SHORT_NAMES, "WIXL_WIX_BUILDER_SOURCE_FLAGS_SHORT_NAMES", "short-names"}, {WIXL_WIX_BUILDER_SOURCE_FLAGS_COMPRESSED, "WIXL_WIX_BUILDER_SOURCE_FLAGS_COMPRESSED", "compressed"}, {WIXL_WIX_BUILDER_SOURCE_FLAGS_ADMIN, "WIXL_WIX_BUILDER_SOURCE_FLAGS_ADMIN", "admin"}, {WIXL_WIX_BUILDER_SOURCE_FLAGS_NO_PRIVILEGES, "WIXL_WIX_BUILDER_SOURCE_FLAGS_NO_PRIVILEGES", "no-privileges"}, {0, NULL, NULL}};
		GType wixl_wix_builder_source_flags_type_id;
		wixl_wix_builder_source_flags_type_id = g_flags_register_static ("WixlWixBuilderSourceFlags", values);
		g_once_init_leave (&wixl_wix_builder_source_flags_type_id__volatile, wixl_wix_builder_source_flags_type_id);
	}
	return wixl_wix_builder_source_flags_type_id__volatile;
}

static GType
wixl_wix_builder_component_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_component_attribute_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_component_attribute_type_id__volatile)) {
		static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_LOCAL_ONLY, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_LOCAL_ONLY", "local-only"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SOURCE_ONLY, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SOURCE_ONLY", "source-only"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_OPTIONAL, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_OPTIONAL", "optional"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_KEY_PATH, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_KEY_PATH", "registry-key-path"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SHARED_DLL_REF_COUNT, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SHARED_DLL_REF_COUNT", "shared-dll-ref-count"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_PERMANENT, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_PERMANENT", "permanent"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_ODBC_DATA_SOURCE, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_ODBC_DATA_SOURCE", "odbc-data-source"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_TRANSITIVE, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_TRANSITIVE", "transitive"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_NEVER_OVERWRITE, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_NEVER_OVERWRITE", "never-overwrite"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_64BIT, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_64BIT", "64bit"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_REFLECTION, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_REFLECTION", "registry-reflection"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_UNINSTALL_ON_SUPERSEDENCE, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_UNINSTALL_ON_SUPERSEDENCE", "uninstall-on-supersedence"}, {WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SHARED, "WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_SHARED", "shared"}, {0, NULL, NULL}};
		GType wixl_wix_builder_component_attribute_type_id;
		wixl_wix_builder_component_attribute_type_id = g_flags_register_static ("WixlWixBuilderComponentAttribute", values);
		g_once_init_leave (&wixl_wix_builder_component_attribute_type_id__volatile, wixl_wix_builder_component_attribute_type_id);
	}
	return wixl_wix_builder_component_attribute_type_id__volatile;
}

static WixlWixBuilderFeatureDisplay
wixl_wix_builder_feature_display_from_string (const gchar* s,
                                              GError** error)
{
	WixlWixBuilderFeatureDisplay _tmp0_ = 0;
	gpointer _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderFeatureDisplay result = 0;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_FEATURE_DISPLAY, NULL, NULL, s, &_inner_error0_);
	_tmp0_ = (WixlWixBuilderFeatureDisplay) ((gintptr) _tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return 0;
	}
	result = _tmp0_;
	return result;
}

static GType
wixl_wix_builder_feature_display_get_type (void)
{
	static volatile gsize wixl_wix_builder_feature_display_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_feature_display_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_FEATURE_DISPLAY_HIDDEN, "WIXL_WIX_BUILDER_FEATURE_DISPLAY_HIDDEN", "hidden"}, {WIXL_WIX_BUILDER_FEATURE_DISPLAY_EXPAND, "WIXL_WIX_BUILDER_FEATURE_DISPLAY_EXPAND", "expand"}, {WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE, "WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE", "collapse"}, {0, NULL, NULL}};
		GType wixl_wix_builder_feature_display_type_id;
		wixl_wix_builder_feature_display_type_id = g_enum_register_static ("WixlWixBuilderFeatureDisplay", values);
		g_once_init_leave (&wixl_wix_builder_feature_display_type_id__volatile, wixl_wix_builder_feature_display_type_id);
	}
	return wixl_wix_builder_feature_display_type_id__volatile;
}

static WixlWixBuilderInstallMode
wixl_wix_builder_install_mode_from_string (const gchar* s,
                                           GError** error)
{
	WixlWixBuilderInstallMode _tmp0_ = 0;
	gpointer _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderInstallMode result = 0;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_INSTALL_MODE, NULL, NULL, s, &_inner_error0_);
	_tmp0_ = (WixlWixBuilderInstallMode) ((gintptr) _tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return 0;
	}
	result = _tmp0_;
	return result;
}

static GType
wixl_wix_builder_install_mode_get_type (void)
{
	static volatile gsize wixl_wix_builder_install_mode_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_install_mode_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_INSTALL_MODE_INSTALL, "WIXL_WIX_BUILDER_INSTALL_MODE_INSTALL", "install"}, {WIXL_WIX_BUILDER_INSTALL_MODE_UNINSTALL, "WIXL_WIX_BUILDER_INSTALL_MODE_UNINSTALL", "uninstall"}, {WIXL_WIX_BUILDER_INSTALL_MODE_BOTH, "WIXL_WIX_BUILDER_INSTALL_MODE_BOTH", "both"}, {0, NULL, NULL}};
		GType wixl_wix_builder_install_mode_type_id;
		wixl_wix_builder_install_mode_type_id = g_enum_register_static ("WixlWixBuilderInstallMode", values);
		g_once_init_leave (&wixl_wix_builder_install_mode_type_id__volatile, wixl_wix_builder_install_mode_type_id);
	}
	return wixl_wix_builder_install_mode_type_id__volatile;
}

static WixlWixBuilderRegistryValueType
wixl_wix_builder_registry_value_type_from_string (const gchar* s,
                                                  GError** error)
{
	GError* _tmp0_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderRegistryValueType result = 0;
	g_return_val_if_fail (s != NULL, 0);
	if (g_strcmp0 (s, "string") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_STRING;
		return result;
	}
	if (g_strcmp0 (s, "integer") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_INTEGER;
		return result;
	}
	if (g_strcmp0 (s, "binary") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_BINARY;
		return result;
	}
	if (g_strcmp0 (s, "expandable") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_EXPANDABLE;
		return result;
	}
	if (g_strcmp0 (s, "multistring") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_MULTI_STRING;
		return result;
	}
	_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Can't convert string to enum");
	_inner_error0_ = _tmp0_;
	g_propagate_error (error, _inner_error0_);
	return 0;
}

static GType
wixl_wix_builder_registry_value_type_get_type (void)
{
	static volatile gsize wixl_wix_builder_registry_value_type_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_registry_value_type_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_STRING, "WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_STRING", "string"}, {WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_INTEGER, "WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_INTEGER", "integer"}, {WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_BINARY, "WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_BINARY", "binary"}, {WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_EXPANDABLE, "WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_EXPANDABLE", "expandable"}, {WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_MULTI_STRING, "WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_MULTI_STRING", "multi-string"}, {0, NULL, NULL}};
		GType wixl_wix_builder_registry_value_type_type_id;
		wixl_wix_builder_registry_value_type_type_id = g_enum_register_static ("WixlWixBuilderRegistryValueType", values);
		g_once_init_leave (&wixl_wix_builder_registry_value_type_type_id__volatile, wixl_wix_builder_registry_value_type_type_id);
	}
	return wixl_wix_builder_registry_value_type_type_id__volatile;
}

static WixlWixBuilderRegistryRoot
wixl_wix_builder_registry_root_from_string (const gchar* s,
                                            GError** error)
{
	WixlWixBuilderRegistryRoot _tmp0_ = 0;
	gpointer _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderRegistryRoot result = 0;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_REGISTRY_ROOT, NULL, NULL, s, &_inner_error0_);
	_tmp0_ = (WixlWixBuilderRegistryRoot) ((gintptr) _tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return 0;
	}
	result = _tmp0_;
	return result;
}

static GType
wixl_wix_builder_registry_root_get_type (void)
{
	static volatile gsize wixl_wix_builder_registry_root_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_registry_root_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_REGISTRY_ROOT_HKCR, "WIXL_WIX_BUILDER_REGISTRY_ROOT_HKCR", "hkcr"}, {WIXL_WIX_BUILDER_REGISTRY_ROOT_HKCU, "WIXL_WIX_BUILDER_REGISTRY_ROOT_HKCU", "hkcu"}, {WIXL_WIX_BUILDER_REGISTRY_ROOT_HKLM, "WIXL_WIX_BUILDER_REGISTRY_ROOT_HKLM", "hklm"}, {WIXL_WIX_BUILDER_REGISTRY_ROOT_HKU, "WIXL_WIX_BUILDER_REGISTRY_ROOT_HKU", "hku"}, {WIXL_WIX_BUILDER_REGISTRY_ROOT_HKMU, "WIXL_WIX_BUILDER_REGISTRY_ROOT_HKMU", "hkmu"}, {0, NULL, NULL}};
		GType wixl_wix_builder_registry_root_type_id;
		wixl_wix_builder_registry_root_type_id = g_enum_register_static ("WixlWixBuilderRegistryRoot", values);
		g_once_init_leave (&wixl_wix_builder_registry_root_type_id__volatile, wixl_wix_builder_registry_root_type_id);
	}
	return wixl_wix_builder_registry_root_type_id__volatile;
}

static GType
wixl_wix_builder_file_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_file_attribute_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_file_attribute_type_id__volatile)) {
		static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_FILE_ATTRIBUTE_READ_ONLY, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_READ_ONLY", "read-only"}, {WIXL_WIX_BUILDER_FILE_ATTRIBUTE_HIDDEN, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_HIDDEN", "hidden"}, {WIXL_WIX_BUILDER_FILE_ATTRIBUTE_SYSTEM, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_SYSTEM", "system"}, {WIXL_WIX_BUILDER_FILE_ATTRIBUTE_VITAL, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_VITAL", "vital"}, {WIXL_WIX_BUILDER_FILE_ATTRIBUTE_CHECKSUM, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_CHECKSUM", "checksum"}, {WIXL_WIX_BUILDER_FILE_ATTRIBUTE_PATCH_ADDED, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_PATCH_ADDED", "patch-added"}, {WIXL_WIX_BUILDER_FILE_ATTRIBUTE_NON_COMPRESSED, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_NON_COMPRESSED", "non-compressed"}, {WIXL_WIX_BUILDER_FILE_ATTRIBUTE_COMPRESSED, "WIXL_WIX_BUILDER_FILE_ATTRIBUTE_COMPRESSED", "compressed"}, {0, NULL, NULL}};
		GType wixl_wix_builder_file_attribute_type_id;
		wixl_wix_builder_file_attribute_type_id = g_flags_register_static ("WixlWixBuilderFileAttribute", values);
		g_once_init_leave (&wixl_wix_builder_file_attribute_type_id__volatile, wixl_wix_builder_file_attribute_type_id);
	}
	return wixl_wix_builder_file_attribute_type_id__volatile;
}

static GType
wixl_wix_builder_upgrade_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_upgrade_attribute_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_upgrade_attribute_type_id__volatile)) {
		static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_MIGRATE_FEATURES, "WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_MIGRATE_FEATURES", "migrate-features"}, {WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_ONLY_DETECT, "WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_ONLY_DETECT", "only-detect"}, {WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_IGNORE_REMOVE_FAILURE, "WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_IGNORE_REMOVE_FAILURE", "ignore-remove-failure"}, {WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MIN_INCLUSIVE, "WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MIN_INCLUSIVE", "version-min-inclusive"}, {WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MAX_INCLUSIVE, "WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MAX_INCLUSIVE", "version-max-inclusive"}, {WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_LANGUAGES_EXCLUSIVE, "WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_LANGUAGES_EXCLUSIVE", "languages-exclusive"}, {0, NULL, NULL}};
		GType wixl_wix_builder_upgrade_attribute_type_id;
		wixl_wix_builder_upgrade_attribute_type_id = g_flags_register_static ("WixlWixBuilderUpgradeAttribute", values);
		g_once_init_leave (&wixl_wix_builder_upgrade_attribute_type_id__volatile, wixl_wix_builder_upgrade_attribute_type_id);
	}
	return wixl_wix_builder_upgrade_attribute_type_id__volatile;
}

static GType
wixl_wix_builder_service_control_event_get_type (void)
{
	static volatile gsize wixl_wix_builder_service_control_event_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_service_control_event_type_id__volatile)) {
		static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_START, "WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_START", "install-start"}, {WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_STOP, "WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_STOP", "install-stop"}, {WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_DELETE, "WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_DELETE", "install-delete"}, {WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_START, "WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_START", "uninstall-start"}, {WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_STOP, "WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_STOP", "uninstall-stop"}, {WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_DELETE, "WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_DELETE", "uninstall-delete"}, {0, NULL, NULL}};
		GType wixl_wix_builder_service_control_event_type_id;
		wixl_wix_builder_service_control_event_type_id = g_flags_register_static ("WixlWixBuilderServiceControlEvent", values);
		g_once_init_leave (&wixl_wix_builder_service_control_event_type_id__volatile, wixl_wix_builder_service_control_event_type_id);
	}
	return wixl_wix_builder_service_control_event_type_id__volatile;
}

static WixlWixBuilderServiceTypeAttribute
wixl_wix_builder_service_type_attribute_from_string (const gchar* s,
                                                     GError** error)
{
	GError* _tmp0_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderServiceTypeAttribute result = 0;
	g_return_val_if_fail (s != NULL, 0);
	if (g_strcmp0 (s, "ownProcess") == 0) {
		result = WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_OWN_PROCESS;
		return result;
	}
	if (g_strcmp0 (s, "shareProcess") == 0) {
		result = WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_SHARE_PROCESS;
		return result;
	}
	_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Can't convert string to enum");
	_inner_error0_ = _tmp0_;
	g_propagate_error (error, _inner_error0_);
	return 0;
}

static GType
wixl_wix_builder_service_type_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_service_type_attribute_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_service_type_attribute_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_OWN_PROCESS, "WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_OWN_PROCESS", "own-process"}, {WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_SHARE_PROCESS, "WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_SHARE_PROCESS", "share-process"}, {0, NULL, NULL}};
		GType wixl_wix_builder_service_type_attribute_type_id;
		wixl_wix_builder_service_type_attribute_type_id = g_enum_register_static ("WixlWixBuilderServiceTypeAttribute", values);
		g_once_init_leave (&wixl_wix_builder_service_type_attribute_type_id__volatile, wixl_wix_builder_service_type_attribute_type_id);
	}
	return wixl_wix_builder_service_type_attribute_type_id__volatile;
}

static WixlWixBuilderStartTypeAttribute
wixl_wix_builder_start_type_attribute_from_string (const gchar* s,
                                                   GError** error)
{
	WixlWixBuilderStartTypeAttribute _tmp0_ = 0;
	gpointer _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderStartTypeAttribute result = 0;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_START_TYPE_ATTRIBUTE, NULL, NULL, s, &_inner_error0_);
	_tmp0_ = (WixlWixBuilderStartTypeAttribute) ((gintptr) _tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return 0;
	}
	result = _tmp0_;
	return result;
}

static GType
wixl_wix_builder_start_type_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_start_type_attribute_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_start_type_attribute_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_AUTO, "WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_AUTO", "auto"}, {WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_DEMAND, "WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_DEMAND", "demand"}, {WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_DISABLED, "WIXL_WIX_BUILDER_START_TYPE_ATTRIBUTE_DISABLED", "disabled"}, {0, NULL, NULL}};
		GType wixl_wix_builder_start_type_attribute_type_id;
		wixl_wix_builder_start_type_attribute_type_id = g_enum_register_static ("WixlWixBuilderStartTypeAttribute", values);
		g_once_init_leave (&wixl_wix_builder_start_type_attribute_type_id__volatile, wixl_wix_builder_start_type_attribute_type_id);
	}
	return wixl_wix_builder_start_type_attribute_type_id__volatile;
}

static WixlWixBuilderErrorControlAttribute
wixl_wix_builder_error_control_attribute_from_string (const gchar* s,
                                                      GError** error)
{
	WixlWixBuilderErrorControlAttribute _tmp0_ = 0;
	gpointer _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderErrorControlAttribute result = 0;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_ERROR_CONTROL_ATTRIBUTE, NULL, NULL, s, &_inner_error0_);
	_tmp0_ = (WixlWixBuilderErrorControlAttribute) ((gintptr) _tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return 0;
	}
	result = _tmp0_;
	return result;
}

static GType
wixl_wix_builder_error_control_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_error_control_attribute_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_error_control_attribute_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_IGNORE, "WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_IGNORE", "ignore"}, {WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_NORMAL, "WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_NORMAL", "normal"}, {WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_CRITICAL, "WIXL_WIX_BUILDER_ERROR_CONTROL_ATTRIBUTE_CRITICAL", "critical"}, {0, NULL, NULL}};
		GType wixl_wix_builder_error_control_attribute_type_id;
		wixl_wix_builder_error_control_attribute_type_id = g_enum_register_static ("WixlWixBuilderErrorControlAttribute", values);
		g_once_init_leave (&wixl_wix_builder_error_control_attribute_type_id__volatile, wixl_wix_builder_error_control_attribute_type_id);
	}
	return wixl_wix_builder_error_control_attribute_type_id__volatile;
}

static WixlWixBuilderRegistryType
wixl_wix_builder_registry_type_from_string (const gchar* s,
                                            GError** error)
{
	WixlWixBuilderRegistryType _tmp0_ = 0;
	gpointer _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderRegistryType result = 0;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_REGISTRY_TYPE, NULL, NULL, s, &_inner_error0_);
	_tmp0_ = (WixlWixBuilderRegistryType) ((gintptr) _tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return 0;
	}
	result = _tmp0_;
	return result;
}

static GType
wixl_wix_builder_registry_type_get_type (void)
{
	static volatile gsize wixl_wix_builder_registry_type_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_registry_type_type_id__volatile)) {
		static const GEnumValue values[] = {{WIXL_WIX_BUILDER_REGISTRY_TYPE_DIRECTORY, "WIXL_WIX_BUILDER_REGISTRY_TYPE_DIRECTORY", "directory"}, {WIXL_WIX_BUILDER_REGISTRY_TYPE_FILE, "WIXL_WIX_BUILDER_REGISTRY_TYPE_FILE", "file"}, {WIXL_WIX_BUILDER_REGISTRY_TYPE_RAW, "WIXL_WIX_BUILDER_REGISTRY_TYPE_RAW", "raw"}, {WIXL_WIX_BUILDER_REGISTRY_TYPE_64BIT, "WIXL_WIX_BUILDER_REGISTRY_TYPE_64BIT", "64bit"}, {0, NULL, NULL}};
		GType wixl_wix_builder_registry_type_type_id;
		wixl_wix_builder_registry_type_type_id = g_enum_register_static ("WixlWixBuilderRegistryType", values);
		g_once_init_leave (&wixl_wix_builder_registry_type_type_id__volatile, wixl_wix_builder_registry_type_type_id);
	}
	return wixl_wix_builder_registry_type_type_id__volatile;
}

static GType
wixl_wix_builder_custom_action_type_get_type (void)
{
	static volatile gsize wixl_wix_builder_custom_action_type_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_custom_action_type_type_id__volatile)) {
		static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_BINARY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_BINARY", "dll-binary"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_BINARY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_BINARY", "exe-binary"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_BINARY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_BINARY", "jscript-binary"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_BINARY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_BINARY", "vbscript-binary"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_FILE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_FILE", "dll-file"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_FILE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_FILE", "exe-file"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ERROR, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ERROR", "error"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_FILE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_FILE", "jscript-file"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_FILE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_FILE", "vbscript-file"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_DIR, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_DIR", "exe-dir"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_SET_DIR, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_SET_DIR", "set-dir"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_SEQUENCE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_SEQUENCE", "jscript-sequence"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_SEQUENCE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_SEQUENCE", "vbscript-sequence"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_PROPERTY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_PROPERTY", "exe-property"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_SET_PROPERTY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_SET_PROPERTY", "set-property"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_PROPERTY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_PROPERTY", "jscript-property"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_PROPERTY, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_VBSCRIPT_PROPERTY", "vbscript-property"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CONTINUE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CONTINUE", "continue"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ASYNC, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ASYNC", "async"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_FIRST_SEQUENCE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_FIRST_SEQUENCE", "first-sequence"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ONCE_PER_PROCESS, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ONCE_PER_PROCESS", "once-per-process"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CLIENT_REPEAT, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CLIENT_REPEAT", "client-repeat"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_IN_SCRIPT, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_IN_SCRIPT", "in-script"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ROLLBACK, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_ROLLBACK", "rollback"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_COMMIT, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_COMMIT", "commit"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_NO_IMPERSONATE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_NO_IMPERSONATE", "no-impersonate"}, {WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_TS_AWARE, "WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_TS_AWARE", "ts-aware"}, {0, NULL, NULL}};
		GType wixl_wix_builder_custom_action_type_type_id;
		wixl_wix_builder_custom_action_type_type_id = g_flags_register_static ("WixlWixBuilderCustomActionType", values);
		g_once_init_leave (&wixl_wix_builder_custom_action_type_type_id__volatile, wixl_wix_builder_custom_action_type_type_id);
	}
	return wixl_wix_builder_custom_action_type_type_id__volatile;
}

static void
_g_object_unref0_ (gpointer var)
{
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}

static inline void
_g_list_free__g_object_unref0_ (GList* self)
{
	g_list_free_full (self, (GDestroyNotify) _g_object_unref0_);
}

WixlWixBuilder*
wixl_wix_builder_construct (GType object_type,
                            gchar** includedirs,
                            gint includedirs_length1,
                            WixlArch arch)
{
	WixlWixBuilder * self = NULL;
	self = (WixlWixBuilder*) wixl_wix_node_visitor_construct (object_type);
	wixl_wix_builder_add_path (self, ".");
	{
		gchar** i_collection = NULL;
		gint i_collection_length1 = 0;
		gint _i_collection_size_ = 0;
		gint i_it = 0;
		i_collection = includedirs;
		i_collection_length1 = includedirs_length1;
		for (i_it = 0; i_it < i_collection_length1; i_it = i_it + 1) {
			gchar* _tmp0_;
			gchar* i = NULL;
			_tmp0_ = g_strdup (i_collection[i_it]);
			i = _tmp0_;
			{
				const gchar* _tmp1_;
				GFile* _tmp2_;
				_tmp1_ = i;
				_tmp2_ = g_file_new_for_path (_tmp1_);
				self->priv->includedirs = g_list_append (self->priv->includedirs, _tmp2_);
				_g_free0 (i);
			}
		}
	}
	self->priv->arch = arch;
	return self;
}

WixlWixBuilder*
wixl_wix_builder_new (gchar** includedirs,
                      gint includedirs_length1,
                      WixlArch arch)
{
	return wixl_wix_builder_construct (WIXL_TYPE_WIX_BUILDER, includedirs, includedirs_length1, arch);
}

void
wixl_wix_builder_define_variable (WixlWixBuilder* self,
                                  const gchar* name,
                                  const gchar* value)
{
	GHashTable* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (name != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = self->priv->variables;
	_tmp1_ = g_strdup (name);
	_tmp2_ = g_strdup (value);
	g_hash_table_insert (_tmp0_, _tmp1_, _tmp2_);
}

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

void
wixl_wix_builder_add_path (WixlWixBuilder* self,
                           const gchar* p)
{
	GFile* file = NULL;
	GFile* _tmp0_;
	GFile* _tmp1_;
	g_return_if_fail (self != NULL);
	g_return_if_fail (p != NULL);
	_tmp0_ = g_file_new_for_path (p);
	file = _tmp0_;
	_tmp1_ = _g_object_ref0 (file);
	self->priv->path = g_list_append (self->priv->path, _tmp1_);
	_g_object_unref0 (file);
}

void
wixl_wix_builder_load_doc (WixlWixBuilder* self,
                           xmlDoc* doc,
                           GError** error)
{
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (doc != NULL);
	{
		xmlNode* child = NULL;
		xmlNode* _tmp0_;
		_tmp0_ = doc->children;
		child = _tmp0_;
		{
			gboolean _tmp1_ = FALSE;
			_tmp1_ = TRUE;
			while (TRUE) {
				xmlNode* _tmp4_;
				xmlNode* _tmp5_;
				xmlElementType _tmp6_;
				if (!_tmp1_) {
					xmlNode* _tmp2_;
					xmlNode* _tmp3_;
					_tmp2_ = child;
					_tmp3_ = _tmp2_->next;
					child = _tmp3_;
				}
				_tmp1_ = FALSE;
				_tmp4_ = child;
				if (!(_tmp4_ != NULL)) {
					break;
				}
				_tmp5_ = child;
				_tmp6_ = _tmp5_->type;
				switch (_tmp6_) {
					case XML_ELEMENT_NODE:
					{
						xmlNode* _tmp7_;
						const gchar* _tmp8_;
						WixlWixRoot* root = NULL;
						WixlWixRoot* _tmp11_;
						WixlWixRoot* _tmp12_;
						xmlNode* _tmp13_;
						WixlWixRoot* _tmp14_;
						WixlWixRoot* _tmp15_;
						_tmp7_ = child;
						_tmp8_ = _tmp7_->name;
						if (g_strcmp0 (_tmp8_, "Wix") != 0) {
							xmlNode* _tmp9_;
							const gchar* _tmp10_;
							_tmp9_ = child;
							_tmp10_ = _tmp9_->name;
							g_warning ("builder.vala:50: unhandled node %s", _tmp10_);
						}
						_tmp11_ = wixl_wix_root_new ();
						root = _tmp11_;
						_tmp12_ = root;
						_tmp13_ = child;
						wixl_wix_element_load ((WixlWixElement*) _tmp12_, _tmp13_, &_inner_error0_);
						if (G_UNLIKELY (_inner_error0_ != NULL)) {
							g_propagate_error (error, _inner_error0_);
							_g_object_unref0 (root);
							return;
						}
						_tmp14_ = root;
						_tmp15_ = _g_object_ref0 (_tmp14_);
						self->priv->roots = g_list_append (self->priv->roots, _tmp15_);
						_g_object_unref0 (root);
						break;
					}
					default:
					break;
				}
			}
		}
	}
}

void
wixl_wix_builder_load_file (WixlWixBuilder* self,
                            GFile* file,
                            gboolean preproc_only,
                            GError** error)
{
	gchar* data = NULL;
	gchar* _tmp0_;
	gchar* _tmp1_;
	gchar* _tmp2_ = NULL;
	WixlPreprocessor* p = NULL;
	GHashTable* _tmp3_;
	GList* _tmp4_;
	WixlPreprocessor* _tmp5_;
	xmlDoc* doc = NULL;
	WixlPreprocessor* _tmp6_;
	const gchar* _tmp7_;
	xmlDoc* _tmp8_;
	xmlDoc* _tmp12_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (file != NULL);
	_tmp0_ = g_file_get_path (file);
	_tmp1_ = _tmp0_;
	g_file_get_contents (_tmp1_, &_tmp2_, NULL, &_inner_error0_);
	_g_free0 (data);
	data = _tmp2_;
	_g_free0 (_tmp1_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (data);
		return;
	}
	_tmp3_ = self->priv->variables;
	_tmp4_ = self->priv->includedirs;
	_tmp5_ = wixl_preprocessor_new (_tmp3_, _tmp4_);
	p = _tmp5_;
	_tmp6_ = p;
	_tmp7_ = data;
	_tmp8_ = wixl_preprocessor_preprocess (_tmp6_, _tmp7_, file, &_inner_error0_);
	doc = _tmp8_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (p);
		_g_free0 (data);
		return;
	}
	if (preproc_only) {
		xmlDoc* _tmp9_;
		FILE* _tmp10_;
		FILE* _tmp11_;
		_tmp9_ = doc;
		_tmp10_ = fdopen (1, "w");
		_tmp11_ = _tmp10_;
		xmlDocFormatDump (_tmp11_, _tmp9_, TRUE);
		_fclose0 (_tmp11_);
		_xmlFreeDoc0 (doc);
		_g_object_unref0 (p);
		_g_free0 (data);
		return;
	}
	_tmp12_ = doc;
	wixl_wix_builder_load_doc (self, _tmp12_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_xmlFreeDoc0 (doc);
		_g_object_unref0 (p);
		_g_free0 (data);
		return;
	}
	_xmlFreeDoc0 (doc);
	_g_object_unref0 (p);
	_g_free0 (data);
}

static gpointer
wixl_wix_builder_real_find_element (WixlWixResolver* base,
                                    GType g_type,
                                    GBoxedCopyFunc g_dup_func,
                                    GDestroyNotify g_destroy_func,
                                    const gchar* Id)
{
	WixlWixBuilder * self;
	GList* _tmp0_;
	gpointer result = NULL;
	self = (WixlWixBuilder*) base;
	g_return_val_if_fail (Id != NULL, NULL);
	_tmp0_ = self->priv->roots;
	{
		GList* r_collection = NULL;
		GList* r_it = NULL;
		r_collection = _tmp0_;
		for (r_it = r_collection; r_it != NULL; r_it = r_it->next) {
			WixlWixRoot* _tmp1_;
			WixlWixRoot* r = NULL;
			_tmp1_ = _g_object_ref0 ((WixlWixRoot*) r_it->data);
			r = _tmp1_;
			{
				gpointer e = NULL;
				WixlWixRoot* _tmp2_;
				gpointer _tmp3_;
				gconstpointer _tmp4_;
				_tmp2_ = r;
				_tmp3_ = wixl_wix_element_find_element ((WixlWixElement*) _tmp2_, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, Id);
				e = _tmp3_;
				_tmp4_ = e;
				if (_tmp4_ != NULL) {
					result = e;
					_g_object_unref0 (r);
					return result;
				}
				_g_destroy_func0 (e);
				_g_object_unref0 (r);
			}
		}
	}
	result = NULL;
	return result;
}

static gpointer*
_vala_array_dup1 (gpointer* self,
                  int length,
                  GBoxedCopyFunc g_dup_func)
{
	gpointer* result;
	int i;
	result = g_new0 (gpointer, length);
	for (i = 0; i < length; i++) {
		gpointer _tmp0_;
		_tmp0_ = ((self[i] != NULL) && (g_dup_func != NULL)) ? g_dup_func ((gpointer) self[i]) : ((gpointer) self[i]);
		result[i] = _tmp0_;
	}
	return result;
}

gpointer*
wixl_wix_builder_get_elements (WixlWixBuilder* self,
                               GType g_type,
                               GBoxedCopyFunc g_dup_func,
                               GDestroyNotify g_destroy_func,
                               gint* result_length1)
{
	gpointer* elems = NULL;
	gpointer* _tmp0_;
	gint elems_length1;
	gint _elems_size_;
	GList* _tmp1_;
	gpointer* _tmp8_;
	gint _tmp8__length1;
	gpointer* result = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = g_new0 (gpointer, 0);
	elems = _tmp0_;
	elems_length1 = 0;
	_elems_size_ = elems_length1;
	_tmp1_ = self->priv->roots;
	{
		GList* r_collection = NULL;
		GList* r_it = NULL;
		r_collection = _tmp1_;
		for (r_it = r_collection; r_it != NULL; r_it = r_it->next) {
			WixlWixRoot* _tmp2_;
			WixlWixRoot* r = NULL;
			_tmp2_ = _g_object_ref0 ((WixlWixRoot*) r_it->data);
			r = _tmp2_;
			{
				WixlWixRoot* _tmp3_;
				gpointer* _tmp4_;
				gint _tmp4__length1;
				gpointer* _tmp5_;
				gint _tmp5__length1;
				gint _tmp6_ = 0;
				gpointer* _tmp7_;
				_tmp3_ = r;
				_tmp4_ = elems;
				_tmp4__length1 = elems_length1;
				_tmp5_ = (_tmp4_ != NULL) ? _vala_array_dup1 (_tmp4_, _tmp4__length1, g_dup_func) : ((gpointer) _tmp4_);
				_tmp5__length1 = _tmp4__length1;
				_tmp7_ = wixl_wix_element_add_elements ((WixlWixElement*) _tmp3_, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, _tmp5_, (gint) _tmp5__length1, &_tmp6_);
				elems = (_vala_array_free (elems, elems_length1, (GDestroyNotify) g_destroy_func), NULL);
				elems = _tmp7_;
				elems_length1 = _tmp6_;
				_elems_size_ = elems_length1;
				_g_object_unref0 (r);
			}
		}
	}
	_tmp8_ = elems;
	_tmp8__length1 = elems_length1;
	if (result_length1) {
		*result_length1 = _tmp8__length1;
	}
	result = _tmp8_;
	return result;
}

static Block1Data*
block1_data_ref (Block1Data* _data1_)
{
	g_atomic_int_inc (&_data1_->_ref_count_);
	return _data1_;
}

static void
block1_data_unref (void * _userdata_)
{
	Block1Data* _data1_;
	_data1_ = (Block1Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) {
		WixlWixBuilder* self;
		self = _data1_->self;
		_g_object_unref0 (_data1_->table);
		_g_object_unref0 (self);
		g_slice_free (Block1Data, _data1_);
	}
}

static void
__lambda5_ (Block1Data* _data1_,
            WixlMSIDefaultAction action,
            GError** error)
{
	WixlWixBuilder* self;
	WixlMsiTableSequence* _tmp0_;
	self = _data1_->self;
	_tmp0_ = _data1_->table;
	wixl_msi_table_sequence_add_default_action (_tmp0_, action);
}

static void
___lambda5__wixl_wix_builder_add_default_action (WixlMSIDefaultAction action,
                                                 gpointer self,
                                                 GError** error)
{
	__lambda5_ (self, action, error);
}

static void
wixl_wix_builder_sequence_actions (WixlWixBuilder* self,
                                   GError** error)
{
	Block1Data* _data1_;
	WixlWixBuilderAddDefaultAction add = NULL;
	gpointer add_target;
	GDestroyNotify add_target_destroy_notify;
	WixlMsiDatabase* _tmp0_;
	WixlMsiTableAdminExecuteSequence* _tmp1_;
	WixlMsiTableSequence* _tmp2_;
	WixlWixBuilderAddDefaultAction _tmp3_;
	gpointer _tmp3__target;
	WixlWixBuilderAddDefaultAction _tmp4_;
	gpointer _tmp4__target;
	WixlWixBuilderAddDefaultAction _tmp5_;
	gpointer _tmp5__target;
	WixlWixBuilderAddDefaultAction _tmp6_;
	gpointer _tmp6__target;
	WixlWixBuilderAddDefaultAction _tmp7_;
	gpointer _tmp7__target;
	WixlWixBuilderAddDefaultAction _tmp8_;
	gpointer _tmp8__target;
	WixlWixBuilderAddDefaultAction _tmp9_;
	gpointer _tmp9__target;
	WixlWixBuilderAddDefaultAction _tmp10_;
	gpointer _tmp10__target;
	WixlMsiTableSequence* _tmp11_;
	WixlMsiDatabase* _tmp12_;
	WixlMsiTableAdminUISequence* _tmp13_;
	WixlMsiTableSequence* _tmp14_;
	WixlWixBuilderAddDefaultAction _tmp15_;
	gpointer _tmp15__target;
	WixlWixBuilderAddDefaultAction _tmp16_;
	gpointer _tmp16__target;
	WixlWixBuilderAddDefaultAction _tmp17_;
	gpointer _tmp17__target;
	WixlWixBuilderAddDefaultAction _tmp18_;
	gpointer _tmp18__target;
	WixlMsiTableSequence* _tmp19_;
	WixlMsiDatabase* _tmp20_;
	WixlMsiTableAdvtExecuteSequence* _tmp21_;
	WixlMsiTableSequence* _tmp22_;
	WixlWixBuilderAddDefaultAction _tmp23_;
	gpointer _tmp23__target;
	WixlWixBuilderAddDefaultAction _tmp24_;
	gpointer _tmp24__target;
	WixlWixBuilderAddDefaultAction _tmp25_;
	gpointer _tmp25__target;
	WixlWixBuilderAddDefaultAction _tmp26_;
	gpointer _tmp26__target;
	WixlWixBuilderAddDefaultAction _tmp27_;
	gpointer _tmp27__target;
	WixlWixBuilderAddDefaultAction _tmp28_;
	gpointer _tmp28__target;
	WixlWixBuilderAddDefaultAction _tmp29_;
	gpointer _tmp29__target;
	WixlMsiDatabase* _tmp30_;
	WixlMsiTableShortcut* _tmp31_;
	GList* _tmp32_;
	WixlMsiTableSequence* _tmp34_;
	WixlMsiDatabase* _tmp35_;
	WixlMsiTableInstallExecuteSequence* _tmp36_;
	WixlMsiTableSequence* _tmp37_;
	WixlWixBuilderAddDefaultAction _tmp38_;
	gpointer _tmp38__target;
	WixlWixBuilderAddDefaultAction _tmp39_;
	gpointer _tmp39__target;
	WixlWixBuilderAddDefaultAction _tmp40_;
	gpointer _tmp40__target;
	WixlWixBuilderAddDefaultAction _tmp41_;
	gpointer _tmp41__target;
	WixlWixBuilderAddDefaultAction _tmp42_;
	gpointer _tmp42__target;
	WixlWixBuilderAddDefaultAction _tmp43_;
	gpointer _tmp43__target;
	WixlWixBuilderAddDefaultAction _tmp44_;
	gpointer _tmp44__target;
	WixlWixBuilderAddDefaultAction _tmp45_;
	gpointer _tmp45__target;
	WixlWixBuilderAddDefaultAction _tmp46_;
	gpointer _tmp46__target;
	WixlWixBuilderAddDefaultAction _tmp47_;
	gpointer _tmp47__target;
	WixlWixBuilderAddDefaultAction _tmp48_;
	gpointer _tmp48__target;
	WixlWixBuilderAddDefaultAction _tmp49_;
	gpointer _tmp49__target;
	WixlWixBuilderAddDefaultAction _tmp50_;
	gpointer _tmp50__target;
	WixlMsiDatabase* _tmp51_;
	WixlMsiTableUpgrade* _tmp52_;
	GList* _tmp53_;
	WixlMsiDatabase* _tmp56_;
	WixlMsiTableLaunchCondition* _tmp57_;
	GList* _tmp58_;
	WixlMsiDatabase* _tmp60_;
	WixlMsiTableRegistry* _tmp61_;
	GList* _tmp62_;
	WixlMsiDatabase* _tmp65_;
	WixlMsiTableShortcut* _tmp66_;
	GList* _tmp67_;
	WixlMsiDatabase* _tmp70_;
	WixlMsiTableFile* _tmp71_;
	GList* _tmp72_;
	WixlMsiDatabase* _tmp75_;
	WixlMsiTableRemoveFile* _tmp76_;
	GList* _tmp77_;
	WixlMsiDatabase* _tmp79_;
	WixlMsiTableServiceControl* _tmp80_;
	GList* _tmp81_;
	WixlMsiDatabase* _tmp85_;
	WixlMsiTableServiceInstall* _tmp86_;
	GList* _tmp87_;
	WixlMsiDatabase* _tmp89_;
	WixlMsiTableCreateFolder* _tmp90_;
	GList* _tmp91_;
	WixlMsiDatabase* _tmp94_;
	WixlMsiTableAppSearch* _tmp95_;
	GList* _tmp96_;
	WixlMsiTableSequence* _tmp98_;
	WixlMsiDatabase* _tmp99_;
	WixlMsiTableInstallUISequence* _tmp100_;
	WixlMsiTableSequence* _tmp101_;
	WixlWixBuilderAddDefaultAction _tmp102_;
	gpointer _tmp102__target;
	WixlWixBuilderAddDefaultAction _tmp103_;
	gpointer _tmp103__target;
	WixlWixBuilderAddDefaultAction _tmp104_;
	gpointer _tmp104__target;
	WixlWixBuilderAddDefaultAction _tmp105_;
	gpointer _tmp105__target;
	WixlWixBuilderAddDefaultAction _tmp106_;
	gpointer _tmp106__target;
	WixlMsiDatabase* _tmp107_;
	WixlMsiTableUpgrade* _tmp108_;
	GList* _tmp109_;
	WixlMsiDatabase* _tmp112_;
	WixlMsiTableLaunchCondition* _tmp113_;
	GList* _tmp114_;
	WixlMsiDatabase* _tmp116_;
	WixlMsiTableAppSearch* _tmp117_;
	GList* _tmp118_;
	WixlMsiTableSequence* _tmp120_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	_data1_ = g_slice_new0 (Block1Data);
	_data1_->_ref_count_ = 1;
	_data1_->self = g_object_ref (self);
	_data1_->table = NULL;
	add = ___lambda5__wixl_wix_builder_add_default_action;
	add_target = block1_data_ref (_data1_);
	add_target_destroy_notify = block1_data_unref;
	_tmp0_ = self->priv->db;
	_tmp1_ = _tmp0_->table_admin_execute_sequence;
	_tmp2_ = _g_object_ref0 ((WixlMsiTableSequence*) _tmp1_);
	_g_object_unref0 (_data1_->table);
	_data1_->table = _tmp2_;
	_tmp3_ = add;
	_tmp3__target = add_target;
	_tmp3_ (WIXL_MSI_DEFAULT_ACTION_CostInitialize, _tmp3__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp4_ = add;
	_tmp4__target = add_target;
	_tmp4_ (WIXL_MSI_DEFAULT_ACTION_FileCost, _tmp4__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp5_ = add;
	_tmp5__target = add_target;
	_tmp5_ (WIXL_MSI_DEFAULT_ACTION_CostFinalize, _tmp5__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp6_ = add;
	_tmp6__target = add_target;
	_tmp6_ (WIXL_MSI_DEFAULT_ACTION_InstallValidate, _tmp6__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp7_ = add;
	_tmp7__target = add_target;
	_tmp7_ (WIXL_MSI_DEFAULT_ACTION_InstallInitialize, _tmp7__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp8_ = add;
	_tmp8__target = add_target;
	_tmp8_ (WIXL_MSI_DEFAULT_ACTION_InstallAdminPackage, _tmp8__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp9_ = add;
	_tmp9__target = add_target;
	_tmp9_ (WIXL_MSI_DEFAULT_ACTION_InstallFiles, _tmp9__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp10_ = add;
	_tmp10__target = add_target;
	_tmp10_ (WIXL_MSI_DEFAULT_ACTION_InstallFinalize, _tmp10__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp11_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp11_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp12_ = self->priv->db;
	_tmp13_ = _tmp12_->table_admin_ui_sequence;
	_tmp14_ = _g_object_ref0 ((WixlMsiTableSequence*) _tmp13_);
	_g_object_unref0 (_data1_->table);
	_data1_->table = _tmp14_;
	_tmp15_ = add;
	_tmp15__target = add_target;
	_tmp15_ (WIXL_MSI_DEFAULT_ACTION_CostInitialize, _tmp15__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp16_ = add;
	_tmp16__target = add_target;
	_tmp16_ (WIXL_MSI_DEFAULT_ACTION_FileCost, _tmp16__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp17_ = add;
	_tmp17__target = add_target;
	_tmp17_ (WIXL_MSI_DEFAULT_ACTION_CostFinalize, _tmp17__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp18_ = add;
	_tmp18__target = add_target;
	_tmp18_ (WIXL_MSI_DEFAULT_ACTION_ExecuteAction, _tmp18__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp19_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp19_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp20_ = self->priv->db;
	_tmp21_ = _tmp20_->table_advt_execute_sequence;
	_tmp22_ = _g_object_ref0 ((WixlMsiTableSequence*) _tmp21_);
	_g_object_unref0 (_data1_->table);
	_data1_->table = _tmp22_;
	_tmp23_ = add;
	_tmp23__target = add_target;
	_tmp23_ (WIXL_MSI_DEFAULT_ACTION_CostInitialize, _tmp23__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp24_ = add;
	_tmp24__target = add_target;
	_tmp24_ (WIXL_MSI_DEFAULT_ACTION_CostFinalize, _tmp24__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp25_ = add;
	_tmp25__target = add_target;
	_tmp25_ (WIXL_MSI_DEFAULT_ACTION_InstallValidate, _tmp25__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp26_ = add;
	_tmp26__target = add_target;
	_tmp26_ (WIXL_MSI_DEFAULT_ACTION_InstallInitialize, _tmp26__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp27_ = add;
	_tmp27__target = add_target;
	_tmp27_ (WIXL_MSI_DEFAULT_ACTION_PublishFeatures, _tmp27__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp28_ = add;
	_tmp28__target = add_target;
	_tmp28_ (WIXL_MSI_DEFAULT_ACTION_PublishProduct, _tmp28__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp29_ = add;
	_tmp29__target = add_target;
	_tmp29_ (WIXL_MSI_DEFAULT_ACTION_InstallFinalize, _tmp29__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp30_ = self->priv->db;
	_tmp31_ = _tmp30_->table_shortcut;
	_tmp32_ = ((WixlMsiTable*) _tmp31_)->records;
	if (g_list_length (_tmp32_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp33_;
		gpointer _tmp33__target;
		_tmp33_ = add;
		_tmp33__target = add_target;
		_tmp33_ (WIXL_MSI_DEFAULT_ACTION_CreateShortcuts, _tmp33__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp34_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp34_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp35_ = self->priv->db;
	_tmp36_ = _tmp35_->table_install_execute_sequence;
	_tmp37_ = _g_object_ref0 ((WixlMsiTableSequence*) _tmp36_);
	_g_object_unref0 (_data1_->table);
	_data1_->table = _tmp37_;
	_tmp38_ = add;
	_tmp38__target = add_target;
	_tmp38_ (WIXL_MSI_DEFAULT_ACTION_ValidateProductID, _tmp38__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp39_ = add;
	_tmp39__target = add_target;
	_tmp39_ (WIXL_MSI_DEFAULT_ACTION_CostInitialize, _tmp39__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp40_ = add;
	_tmp40__target = add_target;
	_tmp40_ (WIXL_MSI_DEFAULT_ACTION_FileCost, _tmp40__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp41_ = add;
	_tmp41__target = add_target;
	_tmp41_ (WIXL_MSI_DEFAULT_ACTION_CostFinalize, _tmp41__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp42_ = add;
	_tmp42__target = add_target;
	_tmp42_ (WIXL_MSI_DEFAULT_ACTION_InstallValidate, _tmp42__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp43_ = add;
	_tmp43__target = add_target;
	_tmp43_ (WIXL_MSI_DEFAULT_ACTION_InstallInitialize, _tmp43__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp44_ = add;
	_tmp44__target = add_target;
	_tmp44_ (WIXL_MSI_DEFAULT_ACTION_ProcessComponents, _tmp44__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp45_ = add;
	_tmp45__target = add_target;
	_tmp45_ (WIXL_MSI_DEFAULT_ACTION_UnpublishFeatures, _tmp45__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp46_ = add;
	_tmp46__target = add_target;
	_tmp46_ (WIXL_MSI_DEFAULT_ACTION_RegisterUser, _tmp46__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp47_ = add;
	_tmp47__target = add_target;
	_tmp47_ (WIXL_MSI_DEFAULT_ACTION_RegisterProduct, _tmp47__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp48_ = add;
	_tmp48__target = add_target;
	_tmp48_ (WIXL_MSI_DEFAULT_ACTION_PublishFeatures, _tmp48__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp49_ = add;
	_tmp49__target = add_target;
	_tmp49_ (WIXL_MSI_DEFAULT_ACTION_PublishProduct, _tmp49__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp50_ = add;
	_tmp50__target = add_target;
	_tmp50_ (WIXL_MSI_DEFAULT_ACTION_InstallFinalize, _tmp50__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp51_ = self->priv->db;
	_tmp52_ = _tmp51_->table_upgrade;
	_tmp53_ = ((WixlMsiTable*) _tmp52_)->records;
	if (g_list_length (_tmp53_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp54_;
		gpointer _tmp54__target;
		WixlWixBuilderAddDefaultAction _tmp55_;
		gpointer _tmp55__target;
		_tmp54_ = add;
		_tmp54__target = add_target;
		_tmp54_ (WIXL_MSI_DEFAULT_ACTION_FindRelatedProducts, _tmp54__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp55_ = add;
		_tmp55__target = add_target;
		_tmp55_ (WIXL_MSI_DEFAULT_ACTION_MigrateFeatureStates, _tmp55__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp56_ = self->priv->db;
	_tmp57_ = _tmp56_->table_launch_condition;
	_tmp58_ = ((WixlMsiTable*) _tmp57_)->records;
	if (g_list_length (_tmp58_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp59_;
		gpointer _tmp59__target;
		_tmp59_ = add;
		_tmp59__target = add_target;
		_tmp59_ (WIXL_MSI_DEFAULT_ACTION_LaunchConditions, _tmp59__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp60_ = self->priv->db;
	_tmp61_ = _tmp60_->table_registry;
	_tmp62_ = ((WixlMsiTable*) _tmp61_)->records;
	if (g_list_length (_tmp62_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp63_;
		gpointer _tmp63__target;
		WixlWixBuilderAddDefaultAction _tmp64_;
		gpointer _tmp64__target;
		_tmp63_ = add;
		_tmp63__target = add_target;
		_tmp63_ (WIXL_MSI_DEFAULT_ACTION_RemoveRegistryValues, _tmp63__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp64_ = add;
		_tmp64__target = add_target;
		_tmp64_ (WIXL_MSI_DEFAULT_ACTION_WriteRegistryValues, _tmp64__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp65_ = self->priv->db;
	_tmp66_ = _tmp65_->table_shortcut;
	_tmp67_ = ((WixlMsiTable*) _tmp66_)->records;
	if (g_list_length (_tmp67_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp68_;
		gpointer _tmp68__target;
		WixlWixBuilderAddDefaultAction _tmp69_;
		gpointer _tmp69__target;
		_tmp68_ = add;
		_tmp68__target = add_target;
		_tmp68_ (WIXL_MSI_DEFAULT_ACTION_RemoveShortcuts, _tmp68__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp69_ = add;
		_tmp69__target = add_target;
		_tmp69_ (WIXL_MSI_DEFAULT_ACTION_CreateShortcuts, _tmp69__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp70_ = self->priv->db;
	_tmp71_ = _tmp70_->table_file;
	_tmp72_ = ((WixlMsiTable*) _tmp71_)->records;
	if (g_list_length (_tmp72_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp73_;
		gpointer _tmp73__target;
		WixlWixBuilderAddDefaultAction _tmp74_;
		gpointer _tmp74__target;
		_tmp73_ = add;
		_tmp73__target = add_target;
		_tmp73_ (WIXL_MSI_DEFAULT_ACTION_RemoveFiles, _tmp73__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp74_ = add;
		_tmp74__target = add_target;
		_tmp74_ (WIXL_MSI_DEFAULT_ACTION_InstallFiles, _tmp74__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp75_ = self->priv->db;
	_tmp76_ = _tmp75_->table_remove_file;
	_tmp77_ = ((WixlMsiTable*) _tmp76_)->records;
	if (g_list_length (_tmp77_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp78_;
		gpointer _tmp78__target;
		_tmp78_ = add;
		_tmp78__target = add_target;
		_tmp78_ (WIXL_MSI_DEFAULT_ACTION_RemoveFiles, _tmp78__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp79_ = self->priv->db;
	_tmp80_ = _tmp79_->table_service_control;
	_tmp81_ = ((WixlMsiTable*) _tmp80_)->records;
	if (g_list_length (_tmp81_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp82_;
		gpointer _tmp82__target;
		WixlWixBuilderAddDefaultAction _tmp83_;
		gpointer _tmp83__target;
		WixlWixBuilderAddDefaultAction _tmp84_;
		gpointer _tmp84__target;
		_tmp82_ = add;
		_tmp82__target = add_target;
		_tmp82_ (WIXL_MSI_DEFAULT_ACTION_StartServices, _tmp82__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp83_ = add;
		_tmp83__target = add_target;
		_tmp83_ (WIXL_MSI_DEFAULT_ACTION_StopServices, _tmp83__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp84_ = add;
		_tmp84__target = add_target;
		_tmp84_ (WIXL_MSI_DEFAULT_ACTION_DeleteServices, _tmp84__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp85_ = self->priv->db;
	_tmp86_ = _tmp85_->table_service_install;
	_tmp87_ = ((WixlMsiTable*) _tmp86_)->records;
	if (g_list_length (_tmp87_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp88_;
		gpointer _tmp88__target;
		_tmp88_ = add;
		_tmp88__target = add_target;
		_tmp88_ (WIXL_MSI_DEFAULT_ACTION_InstallServices, _tmp88__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp89_ = self->priv->db;
	_tmp90_ = _tmp89_->table_create_folder;
	_tmp91_ = ((WixlMsiTable*) _tmp90_)->records;
	if (g_list_length (_tmp91_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp92_;
		gpointer _tmp92__target;
		WixlWixBuilderAddDefaultAction _tmp93_;
		gpointer _tmp93__target;
		_tmp92_ = add;
		_tmp92__target = add_target;
		_tmp92_ (WIXL_MSI_DEFAULT_ACTION_RemoveFolders, _tmp92__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp93_ = add;
		_tmp93__target = add_target;
		_tmp93_ (WIXL_MSI_DEFAULT_ACTION_CreateFolders, _tmp93__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp94_ = self->priv->db;
	_tmp95_ = _tmp94_->table_app_search;
	_tmp96_ = ((WixlMsiTable*) _tmp95_)->records;
	if (g_list_length (_tmp96_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp97_;
		gpointer _tmp97__target;
		_tmp97_ = add;
		_tmp97__target = add_target;
		_tmp97_ (WIXL_MSI_DEFAULT_ACTION_AppSearch, _tmp97__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp98_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp98_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp99_ = self->priv->db;
	_tmp100_ = _tmp99_->table_install_ui_sequence;
	_tmp101_ = _g_object_ref0 ((WixlMsiTableSequence*) _tmp100_);
	_g_object_unref0 (_data1_->table);
	_data1_->table = _tmp101_;
	_tmp102_ = add;
	_tmp102__target = add_target;
	_tmp102_ (WIXL_MSI_DEFAULT_ACTION_ValidateProductID, _tmp102__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp103_ = add;
	_tmp103__target = add_target;
	_tmp103_ (WIXL_MSI_DEFAULT_ACTION_CostInitialize, _tmp103__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp104_ = add;
	_tmp104__target = add_target;
	_tmp104_ (WIXL_MSI_DEFAULT_ACTION_FileCost, _tmp104__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp105_ = add;
	_tmp105__target = add_target;
	_tmp105_ (WIXL_MSI_DEFAULT_ACTION_CostFinalize, _tmp105__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp106_ = add;
	_tmp106__target = add_target;
	_tmp106_ (WIXL_MSI_DEFAULT_ACTION_ExecuteAction, _tmp106__target, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	_tmp107_ = self->priv->db;
	_tmp108_ = _tmp107_->table_upgrade;
	_tmp109_ = ((WixlMsiTable*) _tmp108_)->records;
	if (g_list_length (_tmp109_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp110_;
		gpointer _tmp110__target;
		WixlWixBuilderAddDefaultAction _tmp111_;
		gpointer _tmp111__target;
		_tmp110_ = add;
		_tmp110__target = add_target;
		_tmp110_ (WIXL_MSI_DEFAULT_ACTION_FindRelatedProducts, _tmp110__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
		_tmp111_ = add;
		_tmp111__target = add_target;
		_tmp111_ (WIXL_MSI_DEFAULT_ACTION_MigrateFeatureStates, _tmp111__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp112_ = self->priv->db;
	_tmp113_ = _tmp112_->table_launch_condition;
	_tmp114_ = ((WixlMsiTable*) _tmp113_)->records;
	if (g_list_length (_tmp114_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp115_;
		gpointer _tmp115__target;
		_tmp115_ = add;
		_tmp115__target = add_target;
		_tmp115_ (WIXL_MSI_DEFAULT_ACTION_LaunchConditions, _tmp115__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp116_ = self->priv->db;
	_tmp117_ = _tmp116_->table_app_search;
	_tmp118_ = ((WixlMsiTable*) _tmp117_)->records;
	if (g_list_length (_tmp118_) > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp119_;
		gpointer _tmp119__target;
		_tmp119_ = add;
		_tmp119__target = add_target;
		_tmp119_ (WIXL_MSI_DEFAULT_ACTION_AppSearch, _tmp119__target, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
			add = NULL;
			add_target = NULL;
			add_target_destroy_notify = NULL;
			block1_data_unref (_data1_);
			_data1_ = NULL;
			return;
		}
	}
	_tmp120_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp120_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
		add = NULL;
		add_target = NULL;
		add_target_destroy_notify = NULL;
		block1_data_unref (_data1_);
		_data1_ = NULL;
		return;
	}
	(add_target_destroy_notify == NULL) ? NULL : (add_target_destroy_notify (add_target), NULL);
	add = NULL;
	add_target = NULL;
	add_target_destroy_notify = NULL;
	block1_data_unref (_data1_);
	_data1_ = NULL;
}

static void
wixl_wix_builder_hash_files (WixlWixBuilder* self,
                             GError** error)
{
	WixlMsiDatabase* _tmp0_;
	WixlMsiTableFile* _tmp1_;
	GList* _tmp2_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->db;
	_tmp1_ = _tmp0_->table_file;
	_tmp2_ = ((WixlMsiTable*) _tmp1_)->records;
	{
		GList* rec_collection = NULL;
		GList* rec_it = NULL;
		rec_collection = _tmp2_;
		for (rec_it = rec_collection; rec_it != NULL; rec_it = rec_it->next) {
			LibmsiRecord* _tmp3_;
			LibmsiRecord* rec = NULL;
			_tmp3_ = _g_object_ref0 ((LibmsiRecord*) rec_it->data);
			rec = _tmp3_;
			{
				WixlWixFile* f = NULL;
				LibmsiRecord* _tmp4_;
				gconstpointer _tmp5_;
				WixlWixFile* _tmp6_;
				WixlWixComponent* component = NULL;
				WixlWixFile* _tmp7_;
				WixlWixElement* _tmp8_;
				WixlWixComponent* _tmp9_;
				WixlWixComponent* _tmp10_;
				GList* _tmp11_;
				WixlMsiDatabase* _tmp12_;
				WixlMsiTableFileHash* _tmp13_;
				WixlWixFile* _tmp14_;
				const gchar* _tmp15_;
				const gchar* _tmp16_;
				WixlWixFile* _tmp17_;
				GFile* _tmp18_;
				_tmp4_ = rec;
				_tmp5_ = g_object_get_data ((GObject*) _tmp4_, "wixfile");
				_tmp6_ = _g_object_ref0 ((WixlWixFile*) _tmp5_);
				f = _tmp6_;
				_tmp7_ = f;
				_tmp8_ = ((WixlWixNode*) _tmp7_)->parent;
				_tmp9_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp8_) ? ((WixlWixComponent*) _tmp8_) : NULL);
				component = _tmp9_;
				_tmp10_ = component;
				_tmp11_ = _tmp10_->in_feature;
				if (g_list_length (_tmp11_) == ((guint) 0)) {
					_g_object_unref0 (component);
					_g_object_unref0 (f);
					_g_object_unref0 (rec);
					continue;
				}
				_tmp12_ = self->priv->db;
				_tmp13_ = _tmp12_->table_file_hash;
				_tmp14_ = f;
				_tmp15_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp14_);
				_tmp16_ = _tmp15_;
				_tmp17_ = f;
				_tmp18_ = _tmp17_->file;
				wixl_msi_table_file_hash_add_with_file (_tmp13_, _tmp16_, _tmp18_, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (component);
					_g_object_unref0 (f);
					_g_object_unref0 (rec);
					return;
				}
				_g_object_unref0 (component);
				_g_object_unref0 (f);
				_g_object_unref0 (rec);
			}
		}
	}
}

static void*
_g_realloc_grealloc_func (void* data,
                          gsize size)
{
	void* result;
	result = g_realloc (data, size);
	return result;
}

static void
_g_free_gdestroy_notify (void* data)
{
	g_free (data);
}

static guint8*
_vala_array_dup2 (guint8* self,
                  int length)
{
	return g_memdup (self, length * sizeof (guint8));
}

static void
wixl_wix_builder_build_cabinet (WixlWixBuilder* self,
                                GError** error)
{
	gint sequence = 0;
	GList* _tmp0_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	sequence = 0;
	_tmp0_ = self->priv->medias;
	{
		GList* m_collection = NULL;
		GList* m_it = NULL;
		m_collection = _tmp0_;
		for (m_it = m_collection; m_it != NULL; m_it = m_it->next) {
			WixlWixMedia* _tmp1_;
			WixlWixMedia* m = NULL;
			_tmp1_ = _g_object_ref0 ((WixlWixMedia*) m_it->data);
			m = _tmp1_;
			{
				GCabFolder* folder = NULL;
				GCabFolder* _tmp2_;
				WixlMsiDatabase* _tmp3_;
				WixlMsiTableFile* _tmp4_;
				GList* _tmp5_;
				GCabCabinet* cab = NULL;
				GCabCabinet* _tmp30_;
				GCabCabinet* _tmp31_;
				GCabFolder* _tmp32_;
				GMemoryOutputStream* output = NULL;
				GMemoryOutputStream* _tmp33_;
				GCabCabinet* _tmp34_;
				GMemoryOutputStream* _tmp35_;
				GMemoryInputStream* input = NULL;
				GMemoryOutputStream* _tmp36_;
				guint8* _tmp37_;
				GMemoryOutputStream* _tmp38_;
				gulong _tmp39_;
				gulong _tmp40_;
				guint8* _tmp41_;
				gint _tmp41__length1;
				GMemoryInputStream* _tmp42_;
				WixlWixMedia* _tmp43_;
				const gchar* _tmp44_;
				const gchar* _tmp45_;
				WixlMsiDatabase* _tmp55_;
				WixlMsiTableMedia* _tmp56_;
				WixlWixMedia* _tmp57_;
				LibmsiRecord* _tmp58_;
				_tmp2_ = gcab_folder_new ((gint) GCAB_COMPRESSION_MSZIP);
				folder = _tmp2_;
				_tmp3_ = self->priv->db;
				_tmp4_ = _tmp3_->table_file;
				_tmp5_ = ((WixlMsiTable*) _tmp4_)->records;
				{
					GList* rec_collection = NULL;
					GList* rec_it = NULL;
					rec_collection = _tmp5_;
					for (rec_it = rec_collection; rec_it != NULL; rec_it = rec_it->next) {
						LibmsiRecord* _tmp6_;
						LibmsiRecord* rec = NULL;
						_tmp6_ = _g_object_ref0 ((LibmsiRecord*) rec_it->data);
						rec = _tmp6_;
						{
							WixlWixFile* f = NULL;
							LibmsiRecord* _tmp7_;
							gconstpointer _tmp8_;
							WixlWixFile* _tmp9_;
							WixlWixFile* _tmp10_;
							const gchar* _tmp11_;
							const gchar* _tmp12_;
							WixlWixMedia* _tmp13_;
							const gchar* _tmp14_;
							const gchar* _tmp15_;
							WixlWixComponent* component = NULL;
							WixlWixFile* _tmp16_;
							WixlWixElement* _tmp17_;
							WixlWixComponent* _tmp18_;
							WixlWixComponent* _tmp19_;
							GList* _tmp20_;
							GCabFolder* _tmp21_;
							WixlWixFile* _tmp22_;
							const gchar* _tmp23_;
							const gchar* _tmp24_;
							WixlWixFile* _tmp25_;
							GFile* _tmp26_;
							GCabFile* _tmp27_;
							GCabFile* _tmp28_;
							LibmsiRecord* _tmp29_;
							_tmp7_ = rec;
							_tmp8_ = g_object_get_data ((GObject*) _tmp7_, "wixfile");
							_tmp9_ = _g_object_ref0 ((WixlWixFile*) _tmp8_);
							f = _tmp9_;
							_tmp10_ = f;
							_tmp11_ = wixl_wix_file_get_DiskId (_tmp10_);
							_tmp12_ = _tmp11_;
							_tmp13_ = m;
							_tmp14_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp13_);
							_tmp15_ = _tmp14_;
							if (g_strcmp0 (_tmp12_, _tmp15_) != 0) {
								_g_object_unref0 (f);
								_g_object_unref0 (rec);
								continue;
							}
							_tmp16_ = f;
							_tmp17_ = ((WixlWixNode*) _tmp16_)->parent;
							_tmp18_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp17_) ? ((WixlWixComponent*) _tmp17_) : NULL);
							component = _tmp18_;
							_tmp19_ = component;
							_tmp20_ = _tmp19_->in_feature;
							if (g_list_length (_tmp20_) == ((guint) 0)) {
								_g_object_unref0 (component);
								_g_object_unref0 (f);
								_g_object_unref0 (rec);
								continue;
							}
							_tmp21_ = folder;
							_tmp22_ = f;
							_tmp23_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp22_);
							_tmp24_ = _tmp23_;
							_tmp25_ = f;
							_tmp26_ = _tmp25_->file;
							_tmp27_ = gcab_file_new_with_file (_tmp24_, _tmp26_);
							_tmp28_ = _tmp27_;
							gcab_folder_add_file (_tmp21_, _tmp28_, FALSE, NULL, &_inner_error0_);
							_g_object_unref0 (_tmp28_);
							if (G_UNLIKELY (_inner_error0_ != NULL)) {
								g_propagate_error (error, _inner_error0_);
								_g_object_unref0 (component);
								_g_object_unref0 (f);
								_g_object_unref0 (rec);
								_g_object_unref0 (folder);
								_g_object_unref0 (m);
								return;
							}
							sequence = sequence + 1;
							_tmp29_ = rec;
							wixl_msi_table_file_set_sequence (_tmp29_, sequence);
							_g_object_unref0 (component);
							_g_object_unref0 (f);
							_g_object_unref0 (rec);
						}
					}
				}
				_tmp30_ = gcab_cabinet_new ();
				cab = _tmp30_;
				_tmp31_ = cab;
				_tmp32_ = folder;
				gcab_cabinet_add_folder (_tmp31_, _tmp32_, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (cab);
					_g_object_unref0 (folder);
					_g_object_unref0 (m);
					return;
				}
				_tmp33_ = (GMemoryOutputStream*) g_memory_output_stream_new (NULL, 0, _g_realloc_grealloc_func, _g_free_gdestroy_notify);
				output = _tmp33_;
				_tmp34_ = cab;
				_tmp35_ = output;
				gcab_cabinet_write (_tmp34_, (GOutputStream*) _tmp35_, NULL, NULL, NULL, NULL, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (output);
					_g_object_unref0 (cab);
					_g_object_unref0 (folder);
					_g_object_unref0 (m);
					return;
				}
				_tmp36_ = output;
				_tmp37_ = g_memory_output_stream_get_data (_tmp36_);
				_tmp38_ = output;
				_tmp39_ = g_memory_output_stream_get_data_size (_tmp38_);
				_tmp40_ = _tmp39_;
				_tmp41_ = ((_tmp37_ + 0) != NULL) ? _vala_array_dup2 (_tmp37_ + 0, ((gint) _tmp40_) - 0) : ((gpointer) (_tmp37_ + 0));
				_tmp41__length1 = ((gint) _tmp40_) - 0;
				_tmp42_ = (GMemoryInputStream*) g_memory_input_stream_new_from_data (_tmp41_, _tmp41__length1, NULL);
				input = _tmp42_;
				_tmp43_ = m;
				_tmp44_ = wixl_wix_media_get_EmbedCab (_tmp43_);
				_tmp45_ = _tmp44_;
				if (wixl_parse_yesno (_tmp45_, FALSE)) {
					WixlMsiDatabase* _tmp46_;
					WixlMsiTableStreams* _tmp47_;
					WixlWixMedia* _tmp48_;
					const gchar* _tmp49_;
					const gchar* _tmp50_;
					GMemoryInputStream* _tmp51_;
					GMemoryOutputStream* _tmp52_;
					gulong _tmp53_;
					gulong _tmp54_;
					_tmp46_ = self->priv->db;
					_tmp47_ = _tmp46_->table_streams;
					_tmp48_ = m;
					_tmp49_ = wixl_wix_media_get_Cabinet (_tmp48_);
					_tmp50_ = _tmp49_;
					_tmp51_ = input;
					_tmp52_ = output;
					_tmp53_ = g_memory_output_stream_get_data_size (_tmp52_);
					_tmp54_ = _tmp53_;
					wixl_msi_table_streams_add (_tmp47_, _tmp50_, (GInputStream*) _tmp51_, (gsize) _tmp54_, &_inner_error0_);
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						g_propagate_error (error, _inner_error0_);
						_g_object_unref0 (input);
						_g_object_unref0 (output);
						_g_object_unref0 (cab);
						_g_object_unref0 (folder);
						_g_object_unref0 (m);
						return;
					}
				}
				_tmp55_ = self->priv->db;
				_tmp56_ = _tmp55_->table_media;
				_tmp57_ = m;
				_tmp58_ = _tmp57_->record;
				wixl_msi_table_media_set_last_sequence (_tmp56_, _tmp58_, sequence);
				_g_object_unref0 (input);
				_g_object_unref0 (output);
				_g_object_unref0 (cab);
				_g_object_unref0 (folder);
				_g_object_unref0 (m);
			}
		}
	}
}

static void
wixl_wix_builder_shortcut_target (WixlWixBuilder* self,
                                  GError** error)
{
	WixlWixShortcut** shortcuts = NULL;
	gint _tmp0_ = 0;
	gpointer* _tmp1_;
	gint shortcuts_length1;
	gint _shortcuts_size_;
	WixlWixShortcut** _tmp2_;
	gint _tmp2__length1;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp1_ = wixl_wix_builder_get_elements (self, WIXL_TYPE_WIX_SHORTCUT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, &_tmp0_);
	shortcuts = _tmp1_;
	shortcuts_length1 = _tmp0_;
	_shortcuts_size_ = shortcuts_length1;
	_tmp2_ = shortcuts;
	_tmp2__length1 = shortcuts_length1;
	{
		WixlWixShortcut** sc_collection = NULL;
		gint sc_collection_length1 = 0;
		gint _sc_collection_size_ = 0;
		gint sc_it = 0;
		sc_collection = _tmp2_;
		sc_collection_length1 = _tmp2__length1;
		for (sc_it = 0; sc_it < sc_collection_length1; sc_it = sc_it + 1) {
			WixlWixShortcut* _tmp3_;
			WixlWixShortcut* sc = NULL;
			_tmp3_ = _g_object_ref0 (sc_collection[sc_it]);
			sc = _tmp3_;
			{
				WixlWixShortcut* _tmp4_;
				const gchar* _tmp5_;
				const gchar* _tmp6_;
				WixlWixComponent* component = NULL;
				WixlWixShortcut* _tmp7_;
				WixlWixComponent* _tmp8_;
				WixlWixFeature* feature = NULL;
				WixlWixComponent* _tmp9_;
				GList* _tmp10_;
				GList* _tmp11_;
				gconstpointer _tmp12_;
				WixlWixFeature* _tmp13_;
				WixlWixShortcut* _tmp14_;
				LibmsiRecord* _tmp15_;
				WixlWixFeature* _tmp16_;
				const gchar* _tmp17_;
				const gchar* _tmp18_;
				_tmp4_ = sc;
				_tmp5_ = wixl_wix_shortcut_get_Target (_tmp4_);
				_tmp6_ = _tmp5_;
				if (_tmp6_ != NULL) {
					_g_object_unref0 (sc);
					continue;
				}
				_tmp7_ = sc;
				_tmp8_ = wixl_wix_shortcut_get_component (_tmp7_);
				component = _tmp8_;
				_tmp9_ = component;
				_tmp10_ = _tmp9_->in_feature;
				_tmp11_ = g_list_first (_tmp10_);
				_tmp12_ = _tmp11_->data;
				_tmp13_ = _g_object_ref0 ((WixlWixFeature*) _tmp12_);
				feature = _tmp13_;
				_tmp14_ = sc;
				_tmp15_ = _tmp14_->record;
				_tmp16_ = feature;
				_tmp17_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp16_);
				_tmp18_ = _tmp17_;
				wixl_msi_table_shortcut_set_target (_tmp15_, _tmp18_, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (feature);
					_g_object_unref0 (component);
					_g_object_unref0 (sc);
					shortcuts = (_vala_array_free (shortcuts, shortcuts_length1, (GDestroyNotify) g_object_unref), NULL);
					return;
				}
				_g_object_unref0 (feature);
				_g_object_unref0 (component);
				_g_object_unref0 (sc);
			}
		}
	}
	shortcuts = (_vala_array_free (shortcuts, shortcuts_length1, (GDestroyNotify) g_object_unref), NULL);
}

static gchar*
_vala_g_strjoinv (const gchar* separator,
                  gchar** str_array,
                  gint str_array_length1)
{
	gboolean _tmp0_ = FALSE;
	gchar* result = NULL;
	if (separator == NULL) {
		separator = "";
	}
	if (str_array != NULL) {
		gboolean _tmp1_ = FALSE;
		if (str_array_length1 > 0) {
			_tmp1_ = TRUE;
		} else {
			gboolean _tmp2_ = FALSE;
			if (str_array_length1 == -1) {
				const gchar* _tmp3_;
				_tmp3_ = str_array[0];
				_tmp2_ = _tmp3_ != NULL;
			} else {
				_tmp2_ = FALSE;
			}
			_tmp1_ = _tmp2_;
		}
		_tmp0_ = _tmp1_;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		gint i = 0;
		gsize len = 0UL;
		gint _tmp16_;
		gint _tmp17_;
		const gchar* res = NULL;
		void* _tmp18_;
		void* ptr = NULL;
		const gchar* _tmp19_;
		const gchar* _tmp20_;
		void* _tmp21_;
		const gchar* _tmp31_;
		len = (gsize) 1;
		{
			gboolean _tmp4_ = FALSE;
			i = 0;
			_tmp4_ = TRUE;
			while (TRUE) {
				gboolean _tmp6_ = FALSE;
				gboolean _tmp7_ = FALSE;
				gint _tmp10_ = 0;
				const gchar* _tmp11_;
				if (!_tmp4_) {
					gint _tmp5_;
					_tmp5_ = i;
					i = _tmp5_ + 1;
				}
				_tmp4_ = FALSE;
				if (str_array_length1 != -1) {
					_tmp7_ = i < str_array_length1;
				} else {
					_tmp7_ = FALSE;
				}
				if (_tmp7_) {
					_tmp6_ = TRUE;
				} else {
					gboolean _tmp8_ = FALSE;
					if (str_array_length1 == -1) {
						const gchar* _tmp9_;
						_tmp9_ = str_array[i];
						_tmp8_ = _tmp9_ != NULL;
					} else {
						_tmp8_ = FALSE;
					}
					_tmp6_ = _tmp8_;
				}
				if (!_tmp6_) {
					break;
				}
				_tmp11_ = str_array[i];
				if (_tmp11_ != NULL) {
					const gchar* _tmp12_;
					gint _tmp13_;
					gint _tmp14_;
					_tmp12_ = str_array[i];
					_tmp13_ = strlen ((const gchar*) _tmp12_);
					_tmp14_ = _tmp13_;
					_tmp10_ = _tmp14_;
				} else {
					_tmp10_ = 0;
				}
				len = len + _tmp10_;
			}
		}
		if (i == 0) {
			gchar* _tmp15_;
			_tmp15_ = g_strdup ("");
			result = _tmp15_;
			return result;
		}
		str_array_length1 = i;
		_tmp16_ = strlen ((const gchar*) separator);
		_tmp17_ = _tmp16_;
		len = len + (_tmp17_ * (i - 1));
		_tmp18_ = g_malloc (len);
		res = _tmp18_;
		_tmp19_ = res;
		_tmp20_ = str_array[0];
		_tmp21_ = g_stpcpy ((void*) _tmp19_, (const gchar*) _tmp20_);
		ptr = _tmp21_;
		{
			gboolean _tmp22_ = FALSE;
			i = 1;
			_tmp22_ = TRUE;
			while (TRUE) {
				void* _tmp24_;
				void* _tmp25_;
				const gchar* _tmp26_ = NULL;
				const gchar* _tmp27_;
				void* _tmp29_;
				void* _tmp30_;
				if (!_tmp22_) {
					gint _tmp23_;
					_tmp23_ = i;
					i = _tmp23_ + 1;
				}
				_tmp22_ = FALSE;
				if (!(i < str_array_length1)) {
					break;
				}
				_tmp24_ = ptr;
				_tmp25_ = g_stpcpy (_tmp24_, (const gchar*) separator);
				ptr = _tmp25_;
				_tmp27_ = str_array[i];
				if (_tmp27_ != NULL) {
					const gchar* _tmp28_;
					_tmp28_ = str_array[i];
					_tmp26_ = (const gchar*) _tmp28_;
				} else {
					_tmp26_ = "";
				}
				_tmp29_ = ptr;
				_tmp30_ = g_stpcpy (_tmp29_, _tmp26_);
				ptr = _tmp30_;
			}
		}
		_tmp31_ = res;
		res = NULL;
		result = (gchar*) _tmp31_;
		return result;
	} else {
		gchar* _tmp32_;
		_tmp32_ = g_strdup ("");
		result = _tmp32_;
		return result;
	}
}

void
wixl_wix_builder_property_update (WixlWixBuilder* self,
                                  GError** error)
{
	gchar** _tmp0_;
	gint _tmp0__length1;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->secureProperties;
	_tmp0__length1 = self->priv->secureProperties_length1;
	if (_tmp0__length1 != 0) {
		gchar* prop = NULL;
		gchar** _tmp1_;
		gint _tmp1__length1;
		gchar* _tmp2_;
		WixlMsiDatabase* _tmp3_;
		WixlMsiTableProperty* _tmp4_;
		const gchar* _tmp5_;
		_tmp1_ = self->priv->secureProperties;
		_tmp1__length1 = self->priv->secureProperties_length1;
		_tmp2_ = _vala_g_strjoinv (";", _tmp1_, (gint) _tmp1__length1);
		prop = _tmp2_;
		_tmp3_ = self->priv->db;
		_tmp4_ = _tmp3_->table_property;
		_tmp5_ = prop;
		wixl_msi_table_property_add (_tmp4_, "SecureCustomProperties", _tmp5_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (prop);
			return;
		}
		_g_free0 (prop);
	}
}

WixlMsiDatabase*
wixl_wix_builder_build (WixlWixBuilder* self,
                        GError** error)
{
	WixlArch _tmp0_;
	WixlMsiDatabase* _tmp1_;
	GList* _tmp2_;
	WixlMsiDatabase* _tmp7_;
	WixlMsiDatabase* _tmp8_;
	GError* _inner_error0_ = NULL;
	WixlMsiDatabase* result = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	_tmp0_ = self->priv->arch;
	_tmp1_ = wixl_msi_database_new (_tmp0_);
	_g_object_unref0 (self->priv->db);
	self->priv->db = _tmp1_;
	_tmp2_ = self->priv->roots;
	{
		GList* r_collection = NULL;
		GList* r_it = NULL;
		r_collection = _tmp2_;
		for (r_it = r_collection; r_it != NULL; r_it = r_it->next) {
			WixlWixRoot* _tmp3_;
			WixlWixRoot* r = NULL;
			_tmp3_ = _g_object_ref0 ((WixlWixRoot*) r_it->data);
			r = _tmp3_;
			{
				WixlWixRoot* _tmp4_;
				WixlWixRoot* _tmp5_;
				WixlWixRoot* _tmp6_;
				_tmp4_ = r;
				_tmp5_ = _g_object_ref0 (_tmp4_);
				_g_object_unref0 (self->priv->root);
				self->priv->root = _tmp5_;
				_tmp6_ = self->priv->root;
				wixl_wix_node_accept ((WixlWixNode*) _tmp6_, (WixlWixNodeVisitor*) self, &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (r);
					return NULL;
				}
				_g_object_unref0 (r);
			}
		}
	}
	_g_object_unref0 (self->priv->root);
	self->priv->root = NULL;
	wixl_wix_builder_property_update (self, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return NULL;
	}
	wixl_wix_builder_shortcut_target (self, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return NULL;
	}
	wixl_wix_builder_sequence_actions (self, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return NULL;
	}
	wixl_wix_builder_hash_files (self, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return NULL;
	}
	wixl_wix_builder_build_cabinet (self, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return NULL;
	}
	_tmp7_ = self->priv->db;
	_tmp8_ = _g_object_ref0 (_tmp7_);
	result = _tmp8_;
	return result;
}

static void
wixl_wix_builder_real_visit_product (WixlWixNodeVisitor* base,
                                     WixlWixProduct* product,
                                     GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gboolean _tmp6_ = FALSE;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	WixlMsiDatabase* _tmp17_;
	WixlMsiSummaryInfo* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	WixlMsiDatabase* _tmp21_;
	WixlMsiSummaryInfo* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	gboolean _tmp25_;
	WixlMsiDatabase* _tmp32_;
	WixlMsiTableProperty* _tmp33_;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	WixlMsiDatabase* _tmp36_;
	WixlMsiTableProperty* _tmp37_;
	const gchar* _tmp38_;
	const gchar* _tmp39_;
	gchar* _tmp40_ = NULL;
	const gchar* _tmp41_;
	const gchar* _tmp42_;
	gchar* _tmp43_;
	gchar* _tmp44_;
	WixlMsiDatabase* _tmp45_;
	WixlMsiTableProperty* _tmp46_;
	WixlMsiDatabase* _tmp47_;
	WixlMsiTableProperty* _tmp48_;
	const gchar* _tmp49_;
	const gchar* _tmp50_;
	WixlMsiDatabase* _tmp51_;
	WixlMsiTableProperty* _tmp52_;
	const gchar* _tmp53_;
	const gchar* _tmp54_;
	WixlMsiDatabase* _tmp55_;
	WixlMsiTableProperty* _tmp56_;
	const gchar* _tmp57_;
	const gchar* _tmp58_;
	gchar* _tmp59_;
	gchar* _tmp60_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (product != NULL);
	_tmp0_ = wixl_wix_product_get_Codepage (product);
	_tmp1_ = _tmp0_;
	if (_tmp1_ != NULL) {
		WixlMsiDatabase* _tmp2_;
		WixlMsiSummaryInfo* _tmp3_;
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		_tmp2_ = self->priv->db;
		_tmp3_ = _tmp2_->info;
		_tmp4_ = wixl_wix_product_get_Codepage (product);
		_tmp5_ = _tmp4_;
		wixl_msi_summary_info_set_codepage (_tmp3_, atoi (_tmp5_), &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	_tmp7_ = wixl_wix_product_get_Name (product);
	_tmp8_ = _tmp7_;
	if (_tmp8_ != NULL) {
		WixlMsiDatabase* _tmp9_;
		WixlMsiSummaryInfo* _tmp10_;
		gchar* _tmp11_;
		gchar* _tmp12_;
		_tmp9_ = self->priv->db;
		_tmp10_ = _tmp9_->info;
		_tmp11_ = wixl_msi_summary_info_get_subject (_tmp10_);
		_tmp12_ = _tmp11_;
		_tmp6_ = _tmp12_ == NULL;
		_g_free0 (_tmp12_);
	} else {
		_tmp6_ = FALSE;
	}
	if (_tmp6_) {
		WixlMsiDatabase* _tmp13_;
		WixlMsiSummaryInfo* _tmp14_;
		const gchar* _tmp15_;
		const gchar* _tmp16_;
		_tmp13_ = self->priv->db;
		_tmp14_ = _tmp13_->info;
		_tmp15_ = wixl_wix_product_get_Name (product);
		_tmp16_ = _tmp15_;
		wixl_msi_summary_info_set_subject (_tmp14_, _tmp16_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	_tmp17_ = self->priv->db;
	_tmp18_ = _tmp17_->info;
	_tmp19_ = wixl_wix_product_get_Manufacturer (product);
	_tmp20_ = _tmp19_;
	wixl_msi_summary_info_set_author (_tmp18_, _tmp20_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp21_ = self->priv->db;
	_tmp22_ = _tmp21_->info;
	_tmp23_ = wixl_msi_summary_info_get_comments (_tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = _tmp24_ == NULL;
	_g_free0 (_tmp24_);
	if (_tmp25_) {
		WixlMsiDatabase* _tmp26_;
		WixlMsiSummaryInfo* _tmp27_;
		const gchar* _tmp28_;
		const gchar* _tmp29_;
		gchar* _tmp30_;
		gchar* _tmp31_;
		_tmp26_ = self->priv->db;
		_tmp27_ = _tmp26_->info;
		_tmp28_ = wixl_wix_product_get_Name (product);
		_tmp29_ = _tmp28_;
		_tmp30_ = g_strdup_printf ("This installer database contains the logic and data required to instal" \
"l %s.", _tmp29_);
		_tmp31_ = _tmp30_;
		wixl_msi_summary_info_set_comments (_tmp27_, _tmp31_, &_inner_error0_);
		_g_free0 (_tmp31_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	_tmp32_ = self->priv->db;
	_tmp33_ = _tmp32_->table_property;
	_tmp34_ = wixl_wix_product_get_Manufacturer (product);
	_tmp35_ = _tmp34_;
	wixl_msi_table_property_add (_tmp33_, "Manufacturer", _tmp35_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp36_ = self->priv->db;
	_tmp37_ = _tmp36_->table_property;
	_tmp38_ = wixl_wix_product_get_Language (product);
	_tmp39_ = _tmp38_;
	wixl_msi_table_property_add (_tmp37_, "ProductLanguage", _tmp39_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp41_ = wixl_wix_element_get_Id ((WixlWixElement*) product);
	_tmp42_ = _tmp41_;
	_tmp43_ = g_strdup (_tmp42_);
	_tmp44_ = wixl_get_uuid (_tmp43_, &_inner_error0_);
	_tmp40_ = _tmp44_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp45_ = self->priv->db;
	_tmp46_ = _tmp45_->table_property;
	wixl_msi_table_property_add (_tmp46_, "ProductCode", _tmp40_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp40_);
		return;
	}
	_tmp47_ = self->priv->db;
	_tmp48_ = _tmp47_->table_property;
	_tmp49_ = wixl_wix_product_get_Name (product);
	_tmp50_ = _tmp49_;
	wixl_msi_table_property_add (_tmp48_, "ProductName", _tmp50_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp40_);
		return;
	}
	_tmp51_ = self->priv->db;
	_tmp52_ = _tmp51_->table_property;
	_tmp53_ = wixl_wix_product_get_Version (product);
	_tmp54_ = _tmp53_;
	wixl_msi_table_property_add (_tmp52_, "ProductVersion", _tmp54_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp40_);
		return;
	}
	_tmp55_ = self->priv->db;
	_tmp56_ = _tmp55_->table_property;
	_tmp57_ = wixl_wix_product_get_UpgradeCode (product);
	_tmp58_ = _tmp57_;
	_tmp59_ = wixl_add_braces (_tmp58_);
	_tmp60_ = _tmp59_;
	wixl_msi_table_property_add (_tmp56_, "UpgradeCode", _tmp60_, &_inner_error0_);
	_g_free0 (_tmp60_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp40_);
		return;
	}
	_g_free0 (_tmp40_);
}

static void
wixl_wix_builder_real_visit_package (WixlWixNodeVisitor* base,
                                     WixlWixPackage* package,
                                     GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	gint source = 0;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	WixlMsiDatabase* _tmp37_;
	WixlMsiSummaryInfo* _tmp38_;
	GValue _tmp39_ = {0};
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (package != NULL);
	_tmp0_ = wixl_wix_package_get_Comments (package);
	_tmp1_ = _tmp0_;
	if (_tmp1_ != NULL) {
		WixlMsiDatabase* _tmp2_;
		WixlMsiSummaryInfo* _tmp3_;
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		_tmp2_ = self->priv->db;
		_tmp3_ = _tmp2_->info;
		_tmp4_ = wixl_wix_package_get_Comments (package);
		_tmp5_ = _tmp4_;
		wixl_msi_summary_info_set_comments (_tmp3_, _tmp5_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	_tmp6_ = wixl_wix_package_get_Description (package);
	_tmp7_ = _tmp6_;
	if (_tmp7_ != NULL) {
		WixlMsiDatabase* _tmp8_;
		WixlMsiSummaryInfo* _tmp9_;
		const gchar* _tmp10_;
		const gchar* _tmp11_;
		_tmp8_ = self->priv->db;
		_tmp9_ = _tmp8_->info;
		_tmp10_ = wixl_wix_package_get_Description (package);
		_tmp11_ = _tmp10_;
		wixl_msi_summary_info_set_subject (_tmp9_, _tmp11_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	_tmp12_ = wixl_wix_package_get_Keywords (package);
	_tmp13_ = _tmp12_;
	if (_tmp13_ != NULL) {
		WixlMsiDatabase* _tmp14_;
		WixlMsiSummaryInfo* _tmp15_;
		const gchar* _tmp16_;
		const gchar* _tmp17_;
		_tmp14_ = self->priv->db;
		_tmp15_ = _tmp14_->info;
		_tmp16_ = wixl_wix_package_get_Keywords (package);
		_tmp17_ = _tmp16_;
		wixl_msi_summary_info_set_keywords (_tmp15_, _tmp17_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	_tmp18_ = wixl_wix_package_get_InstallerVersion (package);
	_tmp19_ = _tmp18_;
	if (_tmp19_ != NULL) {
		gint version = 0;
		const gchar* _tmp20_;
		const gchar* _tmp21_;
		gboolean _tmp22_ = FALSE;
		WixlArch _tmp23_;
		WixlMsiDatabase* _tmp24_;
		WixlMsiSummaryInfo* _tmp25_;
		GValue _tmp26_ = {0};
		_tmp20_ = wixl_wix_package_get_InstallerVersion (package);
		_tmp21_ = _tmp20_;
		version = atoi (_tmp21_);
		_tmp23_ = self->priv->arch;
		if (_tmp23_ != WIXL_ARCH_X86) {
			_tmp22_ = version < 200;
		} else {
			_tmp22_ = FALSE;
		}
		if (_tmp22_) {
			g_warning ("builder.vala:323: InstallerVersion >= 200 required for !x86 builds");
		}
		_tmp24_ = self->priv->db;
		_tmp25_ = _tmp24_->info;
		g_value_init (&_tmp26_, G_TYPE_INT);
		g_value_set_int (&_tmp26_, version);
		wixl_msi_summary_info_set_property (_tmp25_, LIBMSI_PROPERTY_VERSION, &_tmp26_, &_inner_error0_);
		G_IS_VALUE (&_tmp26_) ? (g_value_unset (&_tmp26_), NULL) : NULL;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	source = (gint) WIXL_WIX_BUILDER_SOURCE_FLAGS_COMPRESSED;
	_tmp27_ = wixl_wix_package_get_InstallScope (package);
	_tmp28_ = _tmp27_;
	if (_tmp28_ != NULL) {
		const gchar* _tmp29_;
		const gchar* _tmp30_;
		_tmp29_ = wixl_wix_package_get_InstallScope (package);
		_tmp30_ = _tmp29_;
		if (g_strcmp0 (_tmp30_, "perUser") == 0) {
			source = source | WIXL_WIX_BUILDER_SOURCE_FLAGS_NO_PRIVILEGES;
		} else {
			const gchar* _tmp31_;
			const gchar* _tmp32_;
			_tmp31_ = wixl_wix_package_get_InstallScope (package);
			_tmp32_ = _tmp31_;
			if (g_strcmp0 (_tmp32_, "perMachine") == 0) {
				WixlMsiDatabase* _tmp33_;
				WixlMsiTableProperty* _tmp34_;
				_tmp33_ = self->priv->db;
				_tmp34_ = _tmp33_->table_property;
				wixl_msi_table_property_add (_tmp34_, "ALLUSERS", "1", &_inner_error0_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					return;
				}
			} else {
				const gchar* _tmp35_;
				const gchar* _tmp36_;
				_tmp35_ = wixl_wix_package_get_InstallScope (package);
				_tmp36_ = _tmp35_;
				g_error ("builder.vala:335: invalid InstallScope value: %s", _tmp36_);
			}
		}
	}
	_tmp37_ = self->priv->db;
	_tmp38_ = _tmp37_->info;
	g_value_init (&_tmp39_, G_TYPE_INT);
	g_value_set_int (&_tmp39_, source);
	wixl_msi_summary_info_set_property (_tmp38_, LIBMSI_PROPERTY_SOURCE, &_tmp39_, &_inner_error0_);
	G_IS_VALUE (&_tmp39_) ? (g_value_unset (&_tmp39_), NULL) : NULL;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

static void
wixl_wix_builder_real_visit_icon (WixlWixNodeVisitor* base,
                                  WixlWixIcon* icon,
                                  GError** error)
{
	WixlWixBuilder * self;
	GFileInfo* info = NULL;
	GFile* _tmp0_ = NULL;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	GFileInfo* _tmp3_ = NULL;
	GFile* _tmp4_;
	GFile* _tmp5_;
	WixlMsiDatabase* _tmp6_;
	WixlMsiTableIcon* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	GFile* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (icon != NULL);
	_tmp1_ = wixl_wix_icon_get_SourceFile (icon);
	_tmp2_ = _tmp1_;
	_tmp4_ = wixl_wix_builder_find_file (self, _tmp2_, &_tmp3_, &_inner_error0_);
	_g_object_unref0 (info);
	info = _tmp3_;
	_tmp0_ = _tmp4_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (info);
		return;
	}
	_tmp5_ = _tmp0_;
	_tmp0_ = NULL;
	_g_object_unref0 (icon->file);
	icon->file = _tmp5_;
	_tmp6_ = self->priv->db;
	_tmp7_ = _tmp6_->table_icon;
	_tmp8_ = wixl_wix_element_get_Id ((WixlWixElement*) icon);
	_tmp9_ = _tmp8_;
	_tmp10_ = icon->file;
	_tmp11_ = g_file_get_path (_tmp10_);
	_tmp12_ = _tmp11_;
	wixl_msi_table_icon_add (_tmp7_, _tmp9_, _tmp12_, &_inner_error0_);
	_g_free0 (_tmp12_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (_tmp0_);
		_g_object_unref0 (info);
		return;
	}
	_g_object_unref0 (_tmp0_);
	_g_object_unref0 (info);
}

static void
wixl_wix_builder_real_visit_property (WixlWixNodeVisitor* base,
                                      WixlWixProperty* prop,
                                      GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	WixlMsiDatabase* _tmp2_;
	WixlMsiTableProperty* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (prop != NULL);
	_tmp0_ = wixl_wix_property_get_Value (prop);
	_tmp1_ = _tmp0_;
	if (_tmp1_ == NULL) {
		return;
	}
	_tmp2_ = self->priv->db;
	_tmp3_ = _tmp2_->table_property;
	_tmp4_ = wixl_wix_element_get_Id ((WixlWixElement*) prop);
	_tmp5_ = _tmp4_;
	_tmp6_ = wixl_wix_property_get_Value (prop);
	_tmp7_ = _tmp6_;
	wixl_msi_table_property_add (_tmp3_, _tmp5_, _tmp7_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

static void
wixl_wix_builder_real_visit_media (WixlWixNodeVisitor* base,
                                   WixlWixMedia* media,
                                   GError** error)
{
	WixlWixBuilder * self;
	gchar* cabinet = NULL;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	LibmsiRecord* rec = NULL;
	WixlMsiDatabase* _tmp7_;
	WixlMsiTableMedia* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	LibmsiRecord* _tmp14_;
	LibmsiRecord* _tmp15_;
	WixlWixMedia* _tmp16_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (media != NULL);
	_tmp0_ = wixl_wix_media_get_Cabinet (media);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strdup (_tmp1_);
	cabinet = _tmp2_;
	_tmp3_ = wixl_wix_media_get_EmbedCab (media);
	_tmp4_ = _tmp3_;
	if (wixl_parse_yesno (_tmp4_, FALSE)) {
		const gchar* _tmp5_;
		gchar* _tmp6_;
		_tmp5_ = cabinet;
		_tmp6_ = g_strconcat ("#", _tmp5_, NULL);
		_g_free0 (cabinet);
		cabinet = _tmp6_;
	}
	_tmp7_ = self->priv->db;
	_tmp8_ = _tmp7_->table_media;
	_tmp9_ = wixl_wix_element_get_Id ((WixlWixElement*) media);
	_tmp10_ = _tmp9_;
	_tmp11_ = wixl_wix_media_get_DiskPrompt (media);
	_tmp12_ = _tmp11_;
	_tmp13_ = cabinet;
	_tmp14_ = wixl_msi_table_media_add (_tmp8_, _tmp10_, _tmp12_, _tmp13_, &_inner_error0_);
	rec = _tmp14_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (cabinet);
		return;
	}
	_tmp15_ = _g_object_ref0 (rec);
	_g_object_unref0 (media->record);
	media->record = _tmp15_;
	_tmp16_ = _g_object_ref0 (media);
	self->priv->medias = g_list_append (self->priv->medias, _tmp16_);
	_g_object_unref0 (rec);
	_g_free0 (cabinet);
}

static void
wixl_wix_builder_real_visit_directory (WixlWixNodeVisitor* base,
                                       WixlWixDirectory* dir,
                                       GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	gchar* defaultdir = NULL;
	gchar* _tmp3_;
	gboolean _tmp4_ = FALSE;
	WixlWixElement* _tmp5_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (dir != NULL);
	_tmp1_ = wixl_wix_directory_get_Name (dir);
	_tmp2_ = _tmp1_;
	_tmp0_ = _tmp2_;
	if (_tmp0_ == NULL) {
		_tmp0_ = ".";
	}
	_tmp3_ = g_strdup (_tmp0_);
	defaultdir = _tmp3_;
	_tmp5_ = ((WixlWixNode*) dir)->parent;
	if (WIXL_IS_WIX_PRODUCT (_tmp5_)) {
		_tmp4_ = TRUE;
	} else {
		WixlWixElement* _tmp6_;
		_tmp6_ = ((WixlWixNode*) dir)->parent;
		_tmp4_ = WIXL_IS_WIX_FRAGMENT (_tmp6_);
	}
	if (_tmp4_) {
		const gchar* _tmp7_;
		const gchar* _tmp8_;
		WixlMsiDatabase* _tmp10_;
		WixlMsiTableDirectory* _tmp11_;
		const gchar* _tmp12_;
		const gchar* _tmp13_;
		const gchar* _tmp14_;
		_tmp7_ = wixl_wix_element_get_Id ((WixlWixElement*) dir);
		_tmp8_ = _tmp7_;
		if (g_strcmp0 (_tmp8_, "TARGETDIR") != 0) {
			GError* _tmp9_;
			_tmp9_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Invalid root directory");
			_inner_error0_ = _tmp9_;
			g_propagate_error (error, _inner_error0_);
			_g_free0 (defaultdir);
			return;
		}
		_tmp10_ = self->priv->db;
		_tmp11_ = _tmp10_->table_directory;
		_tmp12_ = wixl_wix_element_get_Id ((WixlWixElement*) dir);
		_tmp13_ = _tmp12_;
		_tmp14_ = defaultdir;
		wixl_msi_table_directory_add (_tmp11_, _tmp13_, NULL, _tmp14_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (defaultdir);
			return;
		}
	} else {
		gboolean _tmp15_ = FALSE;
		WixlWixElement* _tmp16_;
		_tmp16_ = ((WixlWixNode*) dir)->parent;
		if (WIXL_IS_WIX_DIRECTORY (_tmp16_)) {
			_tmp15_ = TRUE;
		} else {
			WixlWixElement* _tmp17_;
			_tmp17_ = ((WixlWixNode*) dir)->parent;
			_tmp15_ = WIXL_IS_WIX_DIRECTORY_REF (_tmp17_);
		}
		if (_tmp15_) {
			WixlWixDirectory* parent = NULL;
			WixlWixElement* _tmp18_;
			gpointer _tmp19_;
			WixlMsiDatabase* _tmp20_;
			WixlMsiTableDirectory* _tmp21_;
			const gchar* _tmp22_;
			const gchar* _tmp23_;
			WixlWixDirectory* _tmp24_;
			const gchar* _tmp25_;
			const gchar* _tmp26_;
			const gchar* _tmp27_;
			_tmp18_ = ((WixlWixNode*) dir)->parent;
			_tmp19_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIRECTORY, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp18_, &_inner_error0_);
			parent = (WixlWixDirectory*) _tmp19_;
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				_g_free0 (defaultdir);
				return;
			}
			_tmp20_ = self->priv->db;
			_tmp21_ = _tmp20_->table_directory;
			_tmp22_ = wixl_wix_element_get_Id ((WixlWixElement*) dir);
			_tmp23_ = _tmp22_;
			_tmp24_ = parent;
			_tmp25_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp24_);
			_tmp26_ = _tmp25_;
			_tmp27_ = defaultdir;
			wixl_msi_table_directory_add (_tmp21_, _tmp23_, _tmp26_, _tmp27_, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				_g_object_unref0 (parent);
				_g_free0 (defaultdir);
				return;
			}
			_g_object_unref0 (parent);
		} else {
			WixlWixElement* _tmp28_;
			const gchar* _tmp29_;
			_tmp28_ = ((WixlWixNode*) dir)->parent;
			_tmp29_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp28_))->name;
			g_warning ("builder.vala:377: unhandled parent type %s", _tmp29_);
		}
	}
	_g_free0 (defaultdir);
}

static void
wixl_wix_builder_real_visit_component (WixlWixNodeVisitor* base,
                                       WixlWixComponent* comp,
                                       WixlVisitState state,
                                       GError** error)
{
	WixlWixBuilder * self;
	gint attr = 0;
	gboolean _tmp0_ = FALSE;
	WixlWixKeyElement* _tmp1_;
	WixlWixKeyElement* _tmp5_;
	WixlWixDirectory* dir = NULL;
	WixlWixDirectory* _tmp6_;
	gchar* uuid = NULL;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_ = NULL;
	WixlWixKeyElement* _tmp21_;
	WixlMsiDatabase* _tmp25_;
	WixlMsiTableComponent* _tmp26_;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	WixlWixDirectory* _tmp30_;
	const gchar* _tmp31_;
	const gchar* _tmp32_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (comp != NULL);
	attr = 0;
	if (state == WIXL_VISIT_STATE_ENTER) {
		_g_object_unref0 (self->priv->component_default_key);
		self->priv->component_default_key = NULL;
		self->priv->component_children_count = 0;
		return;
	}
	_tmp1_ = comp->key;
	if (_tmp1_ == NULL) {
		WixlWixKeyElement* _tmp2_;
		_tmp2_ = self->priv->component_default_key;
		_tmp0_ = _tmp2_ != NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		WixlWixKeyElement* _tmp3_;
		WixlWixKeyElement* _tmp4_;
		_tmp3_ = self->priv->component_default_key;
		_tmp4_ = _g_object_ref0 (_tmp3_);
		_g_object_unref0 (comp->key);
		comp->key = _tmp4_;
	}
	_tmp5_ = comp->key;
	if (WIXL_IS_WIX_REGISTRY_VALUE (_tmp5_)) {
		attr = attr | WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_KEY_PATH;
	}
	_tmp6_ = wixl_wix_builder_get_directory (self, comp, &_inner_error0_);
	dir = _tmp6_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp7_ = wixl_wix_component_get_Guid (comp);
	_tmp8_ = _tmp7_;
	if (g_strcmp0 (_tmp8_, "*") == 0) {
		gchar* _tmp9_ = NULL;
		gchar* _tmp10_;
		gchar* _tmp11_;
		_tmp10_ = wixl_wix_element_full_path ((WixlWixElement*) comp, (WixlWixResolver*) self, &_inner_error0_);
		_tmp9_ = _tmp10_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (uuid);
			_g_object_unref0 (dir);
			return;
		}
		_tmp11_ = wixl_uuid_from_name (_tmp9_);
		_g_free0 (uuid);
		uuid = _tmp11_;
		_g_free0 (_tmp9_);
	} else {
		gchar* _tmp12_ = NULL;
		const gchar* _tmp13_;
		const gchar* _tmp14_;
		gchar* _tmp15_;
		gchar* _tmp16_;
		gchar* _tmp17_;
		_tmp13_ = wixl_wix_component_get_Guid (comp);
		_tmp14_ = _tmp13_;
		_tmp15_ = g_strdup (_tmp14_);
		_tmp16_ = wixl_get_uuid (_tmp15_, &_inner_error0_);
		_tmp12_ = _tmp16_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (uuid);
			_g_object_unref0 (dir);
			return;
		}
		_tmp17_ = _tmp12_;
		_tmp12_ = NULL;
		_g_free0 (uuid);
		uuid = _tmp17_;
		_g_free0 (_tmp12_);
	}
	_tmp18_ = wixl_wix_component_get_Win64 (comp);
	_tmp19_ = _tmp18_;
	if (wixl_parse_yesno (_tmp19_, FALSE)) {
		attr = attr | WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_64BIT;
	}
	_tmp21_ = comp->key;
	if (_tmp21_ != NULL) {
		WixlWixKeyElement* _tmp22_;
		const gchar* _tmp23_;
		const gchar* _tmp24_;
		_tmp22_ = comp->key;
		_tmp23_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp22_);
		_tmp24_ = _tmp23_;
		_tmp20_ = _tmp24_;
	} else {
		_tmp20_ = NULL;
	}
	_tmp25_ = self->priv->db;
	_tmp26_ = _tmp25_->table_component;
	_tmp27_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp28_ = _tmp27_;
	_tmp29_ = uuid;
	_tmp30_ = dir;
	_tmp31_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp30_);
	_tmp32_ = _tmp31_;
	wixl_msi_table_component_add (_tmp26_, _tmp28_, _tmp29_, _tmp32_, attr, _tmp20_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (uuid);
		_g_object_unref0 (dir);
		return;
	}
	_g_free0 (uuid);
	_g_object_unref0 (dir);
}

static void
wixl_wix_builder_real_visit_feature (WixlWixNodeVisitor* base,
                                     WixlWixFeature* feature,
                                     WixlVisitState state,
                                     GError** error)
{
	WixlWixBuilder * self;
	gboolean _tmp0_ = FALSE;
	gint display = 0;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp12_ = NULL;
	WixlWixElement* _tmp13_;
	gchar* parent = NULL;
	gchar* _tmp17_;
	gint _tmp18_ = 0;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	gint level = 0;
	WixlMsiDatabase* _tmp23_;
	WixlMsiTableFeature* _tmp24_;
	const gchar* _tmp25_;
	const gchar* _tmp26_;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	const gchar* _tmp31_;
	const gchar* _tmp32_;
	const gchar* _tmp33_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (feature != NULL);
	if (state == WIXL_VISIT_STATE_ENTER) {
		WixlWixFeature* _tmp1_;
		_tmp1_ = self->priv->feature_root;
		_tmp0_ = _tmp1_ == NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		WixlWixFeature* _tmp2_;
		self->priv->feature_display = 0;
		_tmp2_ = _g_object_ref0 (feature);
		_g_object_unref0 (self->priv->feature_root);
		self->priv->feature_root = _tmp2_;
	} else {
		gboolean _tmp3_ = FALSE;
		if (state == WIXL_VISIT_STATE_LEAVE) {
			WixlWixFeature* _tmp4_;
			_tmp4_ = self->priv->feature_root;
			_tmp3_ = _tmp4_ == feature;
		} else {
			_tmp3_ = FALSE;
		}
		if (_tmp3_) {
			_g_object_unref0 (self->priv->feature_root);
			self->priv->feature_root = NULL;
		}
	}
	if (state != WIXL_VISIT_STATE_ENTER) {
		return;
	}
	display = (gint) WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE;
	_tmp5_ = wixl_wix_feature_get_Display (feature);
	_tmp6_ = _tmp5_;
	if (_tmp6_ != NULL) {
		{
			WixlWixBuilderFeatureDisplay _tmp7_ = 0;
			const gchar* _tmp8_;
			const gchar* _tmp9_;
			_tmp8_ = wixl_wix_feature_get_Display (feature);
			_tmp9_ = _tmp8_;
			_tmp7_ = wixl_wix_builder_feature_display_from_string (_tmp9_, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
			display = (gint) _tmp7_;
		}
		goto __finally0;
		__catch0_g_error:
		{
			GError* _error_ = NULL;
			const gchar* _tmp10_;
			const gchar* _tmp11_;
			_error_ = _inner_error0_;
			_inner_error0_ = NULL;
			_tmp10_ = wixl_wix_feature_get_Display (feature);
			_tmp11_ = _tmp10_;
			display = atoi (_tmp11_);
			if (display != 0) {
				self->priv->feature_display = display;
			}
			_g_error_free0 (_error_);
		}
		__finally0:
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	switch (display) {
		case WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE:
		{
			self->priv->feature_display = (self->priv->feature_display | 1) + 1;
			display = self->priv->feature_display;
			break;
		}
		case WIXL_WIX_BUILDER_FEATURE_DISPLAY_EXPAND:
		{
			self->priv->feature_display = (self->priv->feature_display + 1) | 1;
			display = self->priv->feature_display;
			break;
		}
		default:
		break;
	}
	_tmp13_ = ((WixlWixNode*) feature)->parent;
	if (WIXL_IS_WIX_FEATURE (_tmp13_)) {
		WixlWixElement* _tmp14_;
		const gchar* _tmp15_;
		const gchar* _tmp16_;
		_tmp14_ = ((WixlWixNode*) feature)->parent;
		_tmp15_ = wixl_wix_element_get_Id (_tmp14_);
		_tmp16_ = _tmp15_;
		_tmp12_ = _tmp16_;
	} else {
		_tmp12_ = NULL;
	}
	_tmp17_ = g_strdup (_tmp12_);
	parent = _tmp17_;
	_tmp19_ = wixl_wix_feature_get_Level (feature);
	_tmp20_ = _tmp19_;
	if (_tmp20_ != NULL) {
		const gchar* _tmp21_;
		const gchar* _tmp22_;
		_tmp21_ = wixl_wix_feature_get_Level (feature);
		_tmp22_ = _tmp21_;
		_tmp18_ = atoi (_tmp22_);
	} else {
		_tmp18_ = 1;
	}
	level = _tmp18_;
	_tmp23_ = self->priv->db;
	_tmp24_ = _tmp23_->table_feature;
	_tmp25_ = wixl_wix_element_get_Id ((WixlWixElement*) feature);
	_tmp26_ = _tmp25_;
	_tmp27_ = parent;
	_tmp28_ = wixl_wix_feature_get_Title (feature);
	_tmp29_ = _tmp28_;
	_tmp30_ = wixl_wix_feature_get_Description (feature);
	_tmp31_ = _tmp30_;
	_tmp32_ = wixl_wix_feature_get_ConfigurableDirectory (feature);
	_tmp33_ = _tmp32_;
	wixl_msi_table_feature_add (_tmp24_, _tmp26_, display, level, 0, _tmp27_, _tmp29_, _tmp31_, _tmp33_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (parent);
		return;
	}
	_g_free0 (parent);
}

static void
wixl_wix_builder_feature_add_component (WixlWixBuilder* self,
                                        WixlWixFeature* feature,
                                        WixlWixComponent* component,
                                        GError** error)
{
	GList* _tmp0_;
	GList* _tmp1_;
	WixlWixFeature* _tmp2_;
	WixlMsiDatabase* _tmp3_;
	WixlMsiTableFeatureComponents* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (feature != NULL);
	g_return_if_fail (component != NULL);
	_tmp0_ = component->in_feature;
	_tmp1_ = g_list_find (_tmp0_, feature);
	if (_tmp1_ != NULL) {
		return;
	}
	_tmp2_ = _g_object_ref0 (feature);
	component->in_feature = g_list_append (component->in_feature, _tmp2_);
	_tmp3_ = self->priv->db;
	_tmp4_ = _tmp3_->table_feature_components;
	_tmp5_ = wixl_wix_element_get_Id ((WixlWixElement*) feature);
	_tmp6_ = _tmp5_;
	_tmp7_ = wixl_wix_element_get_Id ((WixlWixElement*) component);
	_tmp8_ = _tmp7_;
	wixl_msi_table_feature_components_add (_tmp4_, _tmp6_, _tmp8_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

static void
wixl_wix_builder_feature_add_component_group (WixlWixBuilder* self,
                                              WixlWixFeature* feature,
                                              WixlWixComponentGroup* group,
                                              GError** error)
{
	GList* _tmp0_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (feature != NULL);
	g_return_if_fail (group != NULL);
	_tmp0_ = ((WixlWixElement*) group)->children;
	{
		GList* node_collection = NULL;
		GList* node_it = NULL;
		node_collection = _tmp0_;
		for (node_it = node_collection; node_it != NULL; node_it = node_it->next) {
			WixlWixNode* _tmp1_;
			WixlWixNode* node = NULL;
			_tmp1_ = _g_object_ref0 ((WixlWixNode*) node_it->data);
			node = _tmp1_;
			{
				WixlWixElement* child = NULL;
				WixlWixNode* _tmp2_;
				WixlWixElement* _tmp3_;
				WixlWixElement* _tmp4_;
				_tmp2_ = node;
				_tmp3_ = _g_object_ref0 (WIXL_IS_WIX_ELEMENT (_tmp2_) ? ((WixlWixElement*) _tmp2_) : NULL);
				child = _tmp3_;
				_tmp4_ = child;
				if (WIXL_IS_WIX_COMPONENT_GROUP_REF (_tmp4_)) {
					WixlWixComponentGroup* _tmp5_ = NULL;
					WixlWixElement* _tmp6_;
					gpointer _tmp7_;
					_tmp6_ = child;
					_tmp7_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT_GROUP, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp6_, &_inner_error0_);
					_tmp5_ = (WixlWixComponentGroup*) _tmp7_;
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						g_propagate_error (error, _inner_error0_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					wixl_wix_builder_feature_add_component_group (self, feature, _tmp5_, &_inner_error0_);
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						g_propagate_error (error, _inner_error0_);
						_g_object_unref0 (_tmp5_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					_g_object_unref0 (_tmp5_);
				} else {
					WixlWixComponent* _tmp8_ = NULL;
					WixlWixElement* _tmp9_;
					gpointer _tmp10_;
					_tmp9_ = child;
					_tmp10_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp9_, &_inner_error0_);
					_tmp8_ = (WixlWixComponent*) _tmp10_;
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						g_propagate_error (error, _inner_error0_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					wixl_wix_builder_feature_add_component (self, feature, _tmp8_, &_inner_error0_);
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						g_propagate_error (error, _inner_error0_);
						_g_object_unref0 (_tmp8_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					_g_object_unref0 (_tmp8_);
				}
				_g_object_unref0 (child);
				_g_object_unref0 (node);
			}
		}
	}
}

static void
wixl_wix_builder_real_visit_component_ref (WixlWixNodeVisitor* base,
                                           WixlWixComponentRef* ref,
                                           GError** error)
{
	WixlWixBuilder * self;
	WixlWixComponent* component = NULL;
	gpointer _tmp0_;
	WixlWixElement* _tmp1_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ref != NULL);
	_tmp0_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, (WixlWixElement*) ref, &_inner_error0_);
	component = (WixlWixComponent*) _tmp0_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp1_ = ((WixlWixNode*) ref)->parent;
	if (WIXL_IS_WIX_FEATURE (_tmp1_)) {
		WixlWixElement* _tmp2_;
		WixlWixComponent* _tmp3_;
		_tmp2_ = ((WixlWixNode*) ref)->parent;
		_tmp3_ = component;
		wixl_wix_builder_feature_add_component (self, WIXL_IS_WIX_FEATURE (_tmp2_) ? ((WixlWixFeature*) _tmp2_) : NULL, _tmp3_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (component);
			return;
		}
	} else {
		WixlWixElement* _tmp4_;
		_tmp4_ = ((WixlWixNode*) ref)->parent;
		if (WIXL_IS_WIX_COMPONENT_GROUP (_tmp4_)) {
		} else {
			WixlWixElement* _tmp5_;
			const gchar* _tmp6_;
			_tmp5_ = ((WixlWixNode*) ref)->parent;
			_tmp6_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp5_))->name;
			g_warning ("builder.vala:506: unhandled parent type %s", _tmp6_);
		}
	}
	_g_object_unref0 (component);
}

static void
wixl_wix_builder_real_visit_component_group_ref (WixlWixNodeVisitor* base,
                                                 WixlWixComponentGroupRef* ref,
                                                 GError** error)
{
	WixlWixBuilder * self;
	WixlWixComponentGroup* group = NULL;
	gpointer _tmp0_;
	WixlWixElement* _tmp1_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ref != NULL);
	_tmp0_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT_GROUP, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, (WixlWixElement*) ref, &_inner_error0_);
	group = (WixlWixComponentGroup*) _tmp0_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp1_ = ((WixlWixNode*) ref)->parent;
	if (WIXL_IS_WIX_FEATURE (_tmp1_)) {
		WixlWixFeature* feature = NULL;
		WixlWixElement* _tmp2_;
		WixlWixFeature* _tmp3_;
		WixlWixFeature* _tmp4_;
		WixlWixComponentGroup* _tmp5_;
		_tmp2_ = ((WixlWixNode*) ref)->parent;
		_tmp3_ = _g_object_ref0 (WIXL_IS_WIX_FEATURE (_tmp2_) ? ((WixlWixFeature*) _tmp2_) : NULL);
		feature = _tmp3_;
		_tmp4_ = feature;
		_tmp5_ = group;
		wixl_wix_builder_feature_add_component_group (self, _tmp4_, _tmp5_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (feature);
			_g_object_unref0 (group);
			return;
		}
		_g_object_unref0 (feature);
	} else {
		WixlWixElement* _tmp6_;
		_tmp6_ = ((WixlWixNode*) ref)->parent;
		if (WIXL_IS_WIX_COMPONENT_GROUP (_tmp6_)) {
		} else {
			WixlWixElement* _tmp7_;
			const gchar* _tmp8_;
			_tmp7_ = ((WixlWixNode*) ref)->parent;
			_tmp8_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp7_))->name;
			g_warning ("builder.vala:518: unhandled parent type %s", _tmp8_);
		}
	}
	_g_object_unref0 (group);
}

static WixlWixDirectory*
wixl_wix_builder_get_directory (WixlWixBuilder* self,
                                WixlWixComponent* comp,
                                GError** error)
{
	WixlWixElement* _tmp0_;
	GError* _inner_error0_ = NULL;
	WixlWixDirectory* result = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (comp != NULL, NULL);
	_tmp0_ = ((WixlWixNode*) comp)->parent;
	if (WIXL_IS_WIX_COMPONENT_GROUP (_tmp0_)) {
		WixlWixComponentGroup* group = NULL;
		WixlWixElement* _tmp1_;
		WixlWixComponentGroup* _tmp2_;
		WixlWixComponentGroup* _tmp3_;
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		gpointer _tmp6_;
		_tmp1_ = ((WixlWixNode*) comp)->parent;
		_tmp2_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT_GROUP (_tmp1_) ? ((WixlWixComponentGroup*) _tmp1_) : NULL);
		group = _tmp2_;
		_tmp3_ = group;
		_tmp4_ = wixl_wix_component_group_get_Directory (_tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = wixl_wix_resolver_find_element ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIRECTORY, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp5_);
		result = (WixlWixDirectory*) _tmp6_;
		_g_object_unref0 (group);
		return result;
	} else {
		gboolean _tmp7_ = FALSE;
		WixlWixElement* _tmp8_;
		_tmp8_ = ((WixlWixNode*) comp)->parent;
		if (WIXL_IS_WIX_DIRECTORY (_tmp8_)) {
			_tmp7_ = TRUE;
		} else {
			WixlWixElement* _tmp9_;
			_tmp9_ = ((WixlWixNode*) comp)->parent;
			_tmp7_ = WIXL_IS_WIX_DIRECTORY_REF (_tmp9_);
		}
		if (_tmp7_) {
			WixlWixDirectory* _tmp10_ = NULL;
			WixlWixElement* _tmp11_;
			gpointer _tmp12_;
			WixlWixDirectory* _tmp13_;
			_tmp11_ = ((WixlWixNode*) comp)->parent;
			_tmp12_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIRECTORY, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp11_, &_inner_error0_);
			_tmp10_ = (WixlWixDirectory*) _tmp12_;
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				return NULL;
			}
			_tmp13_ = _tmp10_;
			_tmp10_ = NULL;
			result = _tmp13_;
			_g_object_unref0 (_tmp10_);
			return result;
		} else {
			WixlWixElement* _tmp14_;
			const gchar* _tmp15_;
			_tmp14_ = ((WixlWixNode*) comp)->parent;
			_tmp15_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp14_))->name;
			g_error ("builder.vala:538: unhandled parent type %s", _tmp15_);
		}
	}
}

static void
wixl_wix_builder_real_visit_remove_folder (WixlWixNodeVisitor* base,
                                           WixlWixRemoveFolder* rm,
                                           GError** error)
{
	WixlWixBuilder * self;
	WixlWixBuilderInstallMode on = 0;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	WixlWixComponent* comp = NULL;
	WixlWixElement* _tmp2_;
	WixlWixComponent* _tmp3_;
	WixlWixDirectory* dir = NULL;
	WixlWixComponent* _tmp4_;
	WixlWixDirectory* _tmp5_;
	WixlMsiDatabase* _tmp6_;
	WixlMsiTableRemoveFile* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	WixlWixComponent* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	WixlWixDirectory* _tmp13_;
	const gchar* _tmp14_;
	const gchar* _tmp15_;
	WixlWixBuilderInstallMode _tmp16_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (rm != NULL);
	_tmp0_ = wixl_wix_remove_folder_get_On (rm);
	_tmp1_ = _tmp0_;
	on = wixl_wix_builder_install_mode_from_string (_tmp1_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp2_ = ((WixlWixNode*) rm)->parent;
	_tmp3_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp2_) ? ((WixlWixComponent*) _tmp2_) : NULL);
	comp = _tmp3_;
	_tmp4_ = comp;
	_tmp5_ = wixl_wix_builder_get_directory (self, _tmp4_, &_inner_error0_);
	dir = _tmp5_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (comp);
		return;
	}
	_tmp6_ = self->priv->db;
	_tmp7_ = _tmp6_->table_remove_file;
	_tmp8_ = wixl_wix_element_get_Id ((WixlWixElement*) rm);
	_tmp9_ = _tmp8_;
	_tmp10_ = comp;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = dir;
	_tmp14_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = on;
	wixl_msi_table_remove_file_add (_tmp7_, _tmp9_, _tmp12_, _tmp15_, (gint) _tmp16_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (dir);
		_g_object_unref0 (comp);
		return;
	}
	_g_object_unref0 (dir);
	_g_object_unref0 (comp);
}

static void
wixl_wix_builder_visit_key_element (WixlWixBuilder* self,
                                    WixlWixKeyElement* key,
                                    WixlWixComponent* component,
                                    GError** error)
{
	gint _tmp1_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (key != NULL);
	if (component == NULL) {
		WixlWixElement* _tmp0_;
		_tmp0_ = ((WixlWixNode*) key)->parent;
		component = WIXL_IS_WIX_COMPONENT (_tmp0_) ? ((WixlWixComponent*) _tmp0_) : NULL;
	}
	g_return_if_fail (component != NULL);
	_tmp1_ = self->priv->component_children_count;
	self->priv->component_children_count = _tmp1_ + 1;
	if (_tmp1_ == 0) {
		WixlWixKeyElement* _tmp2_;
		_tmp2_ = _g_object_ref0 (key);
		_g_object_unref0 (self->priv->component_default_key);
		self->priv->component_default_key = _tmp2_;
	}
	_tmp3_ = wixl_wix_key_element_get_KeyPath (key);
	_tmp4_ = _tmp3_;
	if (wixl_parse_yesno (_tmp4_, FALSE)) {
		WixlWixKeyElement* _tmp5_;
		WixlWixKeyElement* _tmp7_;
		_g_object_unref0 (self->priv->component_default_key);
		self->priv->component_default_key = NULL;
		_tmp5_ = component->key;
		if (_tmp5_ != NULL) {
			GError* _tmp6_;
			_tmp6_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "multiple elements have keyPath='yes'");
			_inner_error0_ = _tmp6_;
			g_propagate_error (error, _inner_error0_);
			return;
		}
		_tmp7_ = _g_object_ref0 (key);
		_g_object_unref0 (component->key);
		component->key = _tmp7_;
	}
}

static gchar
string_get (const gchar* self,
            glong index)
{
	gchar _tmp0_;
	gchar result = '\0';
	g_return_val_if_fail (self != NULL, '\0');
	_tmp0_ = ((gchar*) self)[index];
	result = _tmp0_;
	return result;
}

static void
wixl_wix_builder_real_visit_registry_value (WixlWixNodeVisitor* base,
                                            WixlWixRegistryValue* reg,
                                            GError** error)
{
	WixlWixBuilder * self;
	WixlWixComponent* comp = NULL;
	gchar* reg_key = NULL;
	gchar* _tmp0_;
	gchar* reg_root = NULL;
	gchar* _tmp1_;
	WixlWixElement* _tmp2_;
	const gchar* _tmp26_;
	const gchar* _tmp27_;
	gchar* value = NULL;
	const gchar* _tmp31_;
	const gchar* _tmp32_;
	gchar* _tmp33_;
	WixlWixBuilderRegistryValueType t = 0;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	WixlWixBuilderRegistryRoot r = 0;
	const gchar* _tmp36_;
	gchar* _tmp37_;
	gchar* _tmp38_;
	WixlWixBuilderRegistryRoot _tmp39_;
	const gchar* _tmp40_;
	const gchar* _tmp41_;
	WixlWixBuilderRegistryValueType _tmp55_;
	WixlMsiDatabase* _tmp65_;
	WixlMsiTableRegistry* _tmp66_;
	const gchar* _tmp67_;
	const gchar* _tmp68_;
	WixlWixBuilderRegistryRoot _tmp69_;
	const gchar* _tmp70_;
	WixlWixComponent* _tmp71_;
	const gchar* _tmp72_;
	const gchar* _tmp73_;
	const gchar* _tmp74_;
	const gchar* _tmp75_;
	const gchar* _tmp76_;
	WixlWixComponent* _tmp77_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (reg != NULL);
	_tmp0_ = g_strdup ("");
	reg_key = _tmp0_;
	_tmp1_ = g_strdup ("");
	reg_root = _tmp1_;
	_tmp2_ = ((WixlWixNode*) reg)->parent;
	if (WIXL_IS_WIX_REGISTRY_KEY (_tmp2_)) {
		WixlWixRegistryKey* regkey = NULL;
		WixlWixElement* _tmp3_;
		WixlWixRegistryKey* _tmp4_;
		WixlWixRegistryKey* _tmp5_;
		WixlWixElement* _tmp6_;
		WixlWixComponent* _tmp7_;
		WixlWixRegistryKey* _tmp8_;
		const gchar* _tmp9_;
		const gchar* _tmp10_;
		gchar* _tmp11_;
		gchar* _tmp12_;
		const gchar* _tmp13_;
		const gchar* _tmp14_;
		gchar* _tmp15_;
		WixlWixRegistryKey* _tmp16_;
		const gchar* _tmp17_;
		const gchar* _tmp18_;
		gchar* _tmp19_;
		_tmp3_ = ((WixlWixNode*) reg)->parent;
		_tmp4_ = _g_object_ref0 (WIXL_IS_WIX_REGISTRY_KEY (_tmp3_) ? ((WixlWixRegistryKey*) _tmp3_) : NULL);
		regkey = _tmp4_;
		_tmp5_ = regkey;
		_tmp6_ = ((WixlWixNode*) _tmp5_)->parent;
		_tmp7_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp6_) ? ((WixlWixComponent*) _tmp6_) : NULL);
		_g_object_unref0 (comp);
		comp = _tmp7_;
		_tmp8_ = regkey;
		_tmp9_ = wixl_wix_registry_key_get_Key (_tmp8_);
		_tmp10_ = _tmp9_;
		_tmp11_ = g_strconcat (_tmp10_, "\\", NULL);
		_tmp12_ = _tmp11_;
		_tmp13_ = wixl_wix_registry_value_get_Key (reg);
		_tmp14_ = _tmp13_;
		_tmp15_ = g_strconcat (_tmp12_, _tmp14_, NULL);
		_g_free0 (reg_key);
		reg_key = _tmp15_;
		_g_free0 (_tmp12_);
		_tmp16_ = regkey;
		_tmp17_ = wixl_wix_registry_key_get_Root (_tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = g_strdup (_tmp18_);
		_g_free0 (reg_root);
		reg_root = _tmp19_;
		_g_object_unref0 (regkey);
	} else {
		WixlWixElement* _tmp20_;
		_tmp20_ = ((WixlWixNode*) reg)->parent;
		if (WIXL_IS_WIX_COMPONENT (_tmp20_)) {
			WixlWixElement* _tmp21_;
			WixlWixComponent* _tmp22_;
			const gchar* _tmp23_;
			const gchar* _tmp24_;
			gchar* _tmp25_;
			_tmp21_ = ((WixlWixNode*) reg)->parent;
			_tmp22_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp21_) ? ((WixlWixComponent*) _tmp21_) : NULL);
			_g_object_unref0 (comp);
			comp = _tmp22_;
			_tmp23_ = wixl_wix_registry_value_get_Key (reg);
			_tmp24_ = _tmp23_;
			_tmp25_ = g_strdup (_tmp24_);
			_g_free0 (reg_key);
			reg_key = _tmp25_;
		} else {
			g_warning ("builder.vala:613: unhandled parent kind");
			_g_free0 (reg_root);
			_g_free0 (reg_key);
			_g_object_unref0 (comp);
			return;
		}
	}
	_tmp26_ = wixl_wix_registry_value_get_Root (reg);
	_tmp27_ = _tmp26_;
	if (_tmp27_ != NULL) {
		const gchar* _tmp28_;
		const gchar* _tmp29_;
		gchar* _tmp30_;
		_tmp28_ = wixl_wix_registry_value_get_Root (reg);
		_tmp29_ = _tmp28_;
		_tmp30_ = g_strdup (_tmp29_);
		_g_free0 (reg_root);
		reg_root = _tmp30_;
	}
	_tmp31_ = wixl_wix_registry_value_get_Value (reg);
	_tmp32_ = _tmp31_;
	_tmp33_ = g_strdup (_tmp32_);
	value = _tmp33_;
	_tmp34_ = wixl_wix_registry_value_get_Type (reg);
	_tmp35_ = _tmp34_;
	t = wixl_wix_builder_registry_value_type_from_string (_tmp35_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (value);
		_g_free0 (reg_root);
		_g_free0 (reg_key);
		_g_object_unref0 (comp);
		return;
	}
	_tmp36_ = reg_root;
	_tmp37_ = g_utf8_strdown (_tmp36_, (gssize) -1);
	_tmp38_ = _tmp37_;
	_tmp39_ = wixl_wix_builder_registry_root_from_string (_tmp38_, &_inner_error0_);
	_g_free0 (_tmp38_);
	r = _tmp39_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (value);
		_g_free0 (reg_root);
		_g_free0 (reg_key);
		_g_object_unref0 (comp);
		return;
	}
	_tmp40_ = wixl_wix_element_get_Id ((WixlWixElement*) reg);
	_tmp41_ = _tmp40_;
	if (_tmp41_ == NULL) {
		gchar* _tmp42_ = NULL;
		const gchar* _tmp43_;
		const gchar* _tmp44_;
		WixlWixComponent* _tmp48_;
		const gchar* _tmp49_;
		const gchar* _tmp50_;
		const gchar* _tmp51_;
		const gchar* _tmp52_;
		gchar* _tmp53_;
		gchar* _tmp54_;
		_tmp43_ = wixl_wix_registry_value_get_Name (reg);
		_tmp44_ = _tmp43_;
		if (_tmp44_ != NULL) {
			const gchar* _tmp45_;
			const gchar* _tmp46_;
			gchar* _tmp47_;
			_tmp45_ = wixl_wix_registry_value_get_Name (reg);
			_tmp46_ = _tmp45_;
			_tmp47_ = g_utf8_strdown (_tmp46_, (gssize) -1);
			_g_free0 (_tmp42_);
			_tmp42_ = _tmp47_;
		} else {
			_g_free0 (_tmp42_);
			_tmp42_ = NULL;
		}
		_tmp48_ = comp;
		_tmp49_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp48_);
		_tmp50_ = _tmp49_;
		_tmp51_ = reg_root;
		_tmp52_ = reg_key;
		_tmp53_ = wixl_generate_id ("reg", (guint) 4, _tmp50_, _tmp51_, _tmp52_, _tmp42_, NULL);
		_tmp54_ = _tmp53_;
		wixl_wix_element_set_Id ((WixlWixElement*) reg, _tmp54_);
		_g_free0 (_tmp54_);
		_g_free0 (_tmp42_);
	}
	_tmp55_ = t;
	switch (_tmp55_) {
		case WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_INTEGER:
		{
			const gchar* _tmp56_;
			gchar* _tmp57_;
			_tmp56_ = value;
			_tmp57_ = g_strconcat ("#", _tmp56_, NULL);
			_g_free0 (value);
			value = _tmp57_;
			break;
		}
		case WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_STRING:
		{
			gchar* _tmp58_ = NULL;
			const gchar* _tmp59_;
			gchar* _tmp64_;
			_tmp59_ = value;
			if (string_get (_tmp59_, (glong) 0) == '#') {
				const gchar* _tmp60_;
				gchar* _tmp61_;
				_tmp60_ = value;
				_tmp61_ = g_strconcat ("#", _tmp60_, NULL);
				_g_free0 (_tmp58_);
				_tmp58_ = _tmp61_;
			} else {
				const gchar* _tmp62_;
				gchar* _tmp63_;
				_tmp62_ = value;
				_tmp63_ = g_strdup (_tmp62_);
				_g_free0 (_tmp58_);
				_tmp58_ = _tmp63_;
			}
			_tmp64_ = g_strdup (_tmp58_);
			_g_free0 (value);
			value = _tmp64_;
			_g_free0 (_tmp58_);
			break;
		}
		default:
		break;
	}
	_tmp65_ = self->priv->db;
	_tmp66_ = _tmp65_->table_registry;
	_tmp67_ = wixl_wix_element_get_Id ((WixlWixElement*) reg);
	_tmp68_ = _tmp67_;
	_tmp69_ = r;
	_tmp70_ = reg_key;
	_tmp71_ = comp;
	_tmp72_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp71_);
	_tmp73_ = _tmp72_;
	_tmp74_ = wixl_wix_registry_value_get_Name (reg);
	_tmp75_ = _tmp74_;
	_tmp76_ = value;
	wixl_msi_table_registry_add (_tmp66_, _tmp68_, (gint) _tmp69_, _tmp70_, _tmp73_, _tmp75_, _tmp76_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (value);
		_g_free0 (reg_root);
		_g_free0 (reg_key);
		_g_object_unref0 (comp);
		return;
	}
	_tmp77_ = comp;
	wixl_wix_builder_visit_key_element (self, (WixlWixKeyElement*) reg, _tmp77_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (value);
		_g_free0 (reg_root);
		_g_free0 (reg_key);
		_g_object_unref0 (comp);
		return;
	}
	_g_free0 (value);
	_g_free0 (reg_root);
	_g_free0 (reg_key);
	_g_object_unref0 (comp);
}

static gpointer
_g_error_copy0 (gpointer self)
{
	return self ? g_error_copy (self) : NULL;
}

static GFile*
wixl_wix_builder_find_file (WixlWixBuilder* self,
                            const gchar* name,
                            GFileInfo* * info,
                            GError** error)
{
	GFileInfo* _vala_info = NULL;
	GList* _tmp0_;
	GError* _tmp12_;
	GError* _inner_error0_ = NULL;
	GFile* result = NULL;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (name != NULL, NULL);
	_g_object_unref0 (_vala_info);
	_vala_info = NULL;
	_tmp0_ = self->priv->path;
	{
		GList* p_collection = NULL;
		GList* p_it = NULL;
		p_collection = _tmp0_;
		for (p_it = p_collection; p_it != NULL; p_it = p_it->next) {
			GFile* _tmp1_;
			GFile* p = NULL;
			_tmp1_ = _g_object_ref0 ((GFile*) p_it->data);
			p = _tmp1_;
			{
				GFile* file = NULL;
				GFile* _tmp2_;
				GFile* _tmp3_;
				_tmp2_ = p;
				_tmp3_ = g_file_get_child (_tmp2_, name);
				file = _tmp3_;
				{
					GFileInfo* _tmp4_ = NULL;
					GFile* _tmp5_;
					GFileInfo* _tmp6_;
					GFileInfo* _tmp7_;
					GFileInfo* _tmp8_;
					_tmp5_ = file;
					_tmp6_ = g_file_query_info (_tmp5_, "standard::*", 0, NULL, &_inner_error0_);
					_tmp4_ = _tmp6_;
					if (G_UNLIKELY (_inner_error0_ != NULL)) {
						if (_inner_error0_->domain == G_IO_ERROR) {
							goto __catch1_g_io_error;
						}
						goto __finally1;
					}
					_tmp7_ = _tmp4_;
					_tmp4_ = NULL;
					_g_object_unref0 (_vala_info);
					_vala_info = _tmp7_;
					_tmp8_ = _vala_info;
					if (_tmp8_ != NULL) {
						result = file;
						_g_object_unref0 (_tmp4_);
						_g_object_unref0 (p);
						if (info) {
							*info = _vala_info;
						} else {
							_g_object_unref0 (_vala_info);
						}
						return result;
					}
					_g_object_unref0 (_tmp4_);
				}
				goto __finally1;
				__catch1_g_io_error:
				{
					GError* _error_ = NULL;
					GError* _tmp9_;
					GError* _tmp10_;
					GError* _tmp11_;
					_error_ = _inner_error0_;
					_inner_error0_ = NULL;
					_tmp9_ = _error_;
					if (g_error_matches (_tmp9_, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) {
						_g_error_free0 (_error_);
						_g_object_unref0 (file);
						_g_object_unref0 (p);
						continue;
					}
					_tmp10_ = _error_;
					_tmp11_ = _g_error_copy0 (_tmp10_);
					_inner_error0_ = _tmp11_;
					_g_error_free0 (_error_);
					goto __finally1;
				}
				__finally1:
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (file);
					_g_object_unref0 (p);
					return NULL;
				}
				_g_object_unref0 (file);
				_g_object_unref0 (p);
			}
		}
	}
	_tmp12_ = g_error_new (WIXL_ERROR, WIXL_ERROR_FAILED, "Couldn't find file %s", name);
	_inner_error0_ = _tmp12_;
	g_propagate_error (error, _inner_error0_);
	return NULL;
}

static void
wixl_wix_builder_real_visit_file (WixlWixNodeVisitor* base,
                                  WixlWixFile* file,
                                  GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	gchar* name = NULL;
	gchar* _tmp5_;
	const gchar* _tmp6_ = NULL;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	gchar* source = NULL;
	gchar* _tmp10_;
	WixlWixComponent* comp = NULL;
	WixlWixElement* _tmp11_;
	WixlWixComponent* _tmp12_;
	GFileInfo* info = NULL;
	GFile* _tmp13_ = NULL;
	const gchar* _tmp14_;
	GFileInfo* _tmp15_ = NULL;
	GFile* _tmp16_;
	GFile* _tmp17_;
	WixlWixBuilderFileAttribute attr = 0U;
	LibmsiRecord* rec = NULL;
	WixlMsiDatabase* _tmp18_;
	WixlMsiTableFile* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	WixlWixComponent* _tmp22_;
	const gchar* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	GFileInfo* _tmp26_;
	WixlWixBuilderFileAttribute _tmp27_;
	LibmsiRecord* _tmp28_;
	LibmsiRecord* _tmp29_;
	WixlWixFile* _tmp30_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (file != NULL);
	_tmp1_ = wixl_wix_file_get_DiskId (file);
	_tmp2_ = _tmp1_;
	_tmp0_ = _tmp2_;
	if (_tmp0_ == NULL) {
		_tmp0_ = "1";
	}
	wixl_wix_file_set_DiskId (file, _tmp0_);
	_tmp3_ = wixl_wix_file_get_DiskId (file);
	_tmp4_ = _tmp3_;
	g_return_if_fail (g_strcmp0 (_tmp4_, "1") == 0);
	_tmp5_ = wixl_wix_key_element_path_name ((WixlWixKeyElement*) file, &_inner_error0_);
	name = _tmp5_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
	_tmp7_ = wixl_wix_file_get_Source (file);
	_tmp8_ = _tmp7_;
	_tmp6_ = _tmp8_;
	if (_tmp6_ == NULL) {
		const gchar* _tmp9_;
		_tmp9_ = name;
		_tmp6_ = _tmp9_;
	}
	_tmp10_ = g_strdup (_tmp6_);
	source = _tmp10_;
	_tmp11_ = ((WixlWixNode*) file)->parent;
	_tmp12_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp11_) ? ((WixlWixComponent*) _tmp11_) : NULL);
	comp = _tmp12_;
	_tmp14_ = source;
	_tmp16_ = wixl_wix_builder_find_file (self, _tmp14_, &_tmp15_, &_inner_error0_);
	_g_object_unref0 (info);
	info = _tmp15_;
	_tmp13_ = _tmp16_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (info);
		_g_object_unref0 (comp);
		_g_free0 (source);
		_g_free0 (name);
		return;
	}
	_tmp17_ = _tmp13_;
	_tmp13_ = NULL;
	_g_object_unref0 (file->file);
	file->file = _tmp17_;
	attr = WIXL_WIX_BUILDER_FILE_ATTRIBUTE_VITAL;
	_tmp18_ = self->priv->db;
	_tmp19_ = _tmp18_->table_file;
	_tmp20_ = wixl_wix_element_get_Id ((WixlWixElement*) file);
	_tmp21_ = _tmp20_;
	_tmp22_ = comp;
	_tmp23_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp22_);
	_tmp24_ = _tmp23_;
	_tmp25_ = name;
	_tmp26_ = info;
	_tmp27_ = attr;
	_tmp28_ = wixl_msi_table_file_add (_tmp19_, _tmp21_, _tmp24_, _tmp25_, (gint) g_file_info_get_size (_tmp26_), (gint) _tmp27_, 1, &_inner_error0_);
	rec = _tmp28_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (_tmp13_);
		_g_object_unref0 (info);
		_g_object_unref0 (comp);
		_g_free0 (source);
		_g_free0 (name);
		return;
	}
	_tmp29_ = rec;
	_tmp30_ = _g_object_ref0 (file);
	g_object_set_data_full ((GObject*) _tmp29_, "wixfile", _tmp30_, g_object_unref);
	wixl_wix_builder_visit_key_element (self, (WixlWixKeyElement*) file, NULL, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (rec);
		_g_object_unref0 (_tmp13_);
		_g_object_unref0 (info);
		_g_object_unref0 (comp);
		_g_free0 (source);
		_g_free0 (name);
		return;
	}
	_g_object_unref0 (rec);
	_g_object_unref0 (_tmp13_);
	_g_object_unref0 (info);
	_g_object_unref0 (comp);
	_g_free0 (source);
	_g_free0 (name);
}

static void
wixl_wix_builder_real_visit_shortcut (WixlWixNodeVisitor* base,
                                      WixlWixShortcut* shortcut,
                                      GError** error)
{
	WixlWixBuilder * self;
	gchar* directory = NULL;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	WixlWixComponent* component = NULL;
	WixlWixComponent* _tmp5_;
	gboolean _tmp6_ = FALSE;
	const gchar* _tmp7_;
	LibmsiRecord* rec = NULL;
	WixlMsiDatabase* _tmp16_;
	WixlMsiTableShortcut* _tmp17_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	WixlWixComponent* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	LibmsiRecord* _tmp26_;
	LibmsiRecord* _tmp27_;
	LibmsiRecord* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	const gchar* _tmp39_;
	const gchar* _tmp40_;
	const gchar* _tmp44_;
	const gchar* _tmp45_;
	const gchar* _tmp49_;
	const gchar* _tmp50_;
	const gchar* _tmp54_;
	const gchar* _tmp55_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (shortcut != NULL);
	_tmp0_ = wixl_wix_shortcut_get_Directory (shortcut);
	_tmp1_ = _tmp0_;
	_tmp2_ = g_strdup (_tmp1_);
	directory = _tmp2_;
	_tmp3_ = wixl_wix_shortcut_get_Advertise (shortcut);
	_tmp4_ = _tmp3_;
	if (!wixl_parse_yesno (_tmp4_, TRUE)) {
		g_message ("builder.vala:697: unimplemented");
	}
	_tmp5_ = wixl_wix_shortcut_get_component (shortcut);
	component = _tmp5_;
	_tmp7_ = directory;
	if (_tmp7_ == NULL) {
		WixlWixElement* _tmp8_;
		_tmp8_ = ((WixlWixNode*) shortcut)->parent;
		_tmp6_ = WIXL_IS_WIX_COMPONENT (_tmp8_);
	} else {
		_tmp6_ = FALSE;
	}
	if (_tmp6_) {
		WixlWixDirectory* dir = NULL;
		WixlWixComponent* _tmp9_;
		WixlWixElement* _tmp10_;
		gpointer _tmp11_;
		WixlWixDirectory* _tmp12_;
		const gchar* _tmp13_;
		const gchar* _tmp14_;
		gchar* _tmp15_;
		_tmp9_ = component;
		_tmp10_ = ((WixlWixNode*) _tmp9_)->parent;
		_tmp11_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIRECTORY, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp10_, &_inner_error0_);
		dir = (WixlWixDirectory*) _tmp11_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
		_tmp12_ = dir;
		_tmp13_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp12_);
		_tmp14_ = _tmp13_;
		_tmp15_ = g_strdup (_tmp14_);
		_g_free0 (directory);
		directory = _tmp15_;
		_g_object_unref0 (dir);
	}
	_tmp16_ = self->priv->db;
	_tmp17_ = _tmp16_->table_shortcut;
	_tmp18_ = wixl_wix_element_get_Id ((WixlWixElement*) shortcut);
	_tmp19_ = _tmp18_;
	_tmp20_ = directory;
	_tmp21_ = wixl_wix_shortcut_get_Name (shortcut);
	_tmp22_ = _tmp21_;
	_tmp23_ = component;
	_tmp24_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = wixl_msi_table_shortcut_add (_tmp17_, _tmp19_, _tmp20_, _tmp22_, _tmp25_, &_inner_error0_);
	rec = _tmp26_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (component);
		_g_free0 (directory);
		return;
	}
	_tmp27_ = rec;
	_tmp28_ = _g_object_ref0 (_tmp27_);
	_g_object_unref0 (shortcut->record);
	shortcut->record = _tmp28_;
	_tmp29_ = wixl_wix_shortcut_get_Icon (shortcut);
	_tmp30_ = _tmp29_;
	if (_tmp30_ != NULL) {
		LibmsiRecord* _tmp31_;
		const gchar* _tmp32_;
		const gchar* _tmp33_;
		_tmp31_ = rec;
		_tmp32_ = wixl_wix_shortcut_get_Icon (shortcut);
		_tmp33_ = _tmp32_;
		wixl_msi_table_shortcut_set_icon (_tmp31_, _tmp33_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp34_ = wixl_wix_shortcut_get_IconIndex (shortcut);
	_tmp35_ = _tmp34_;
	if (_tmp35_ != NULL) {
		LibmsiRecord* _tmp36_;
		const gchar* _tmp37_;
		const gchar* _tmp38_;
		_tmp36_ = rec;
		_tmp37_ = wixl_wix_shortcut_get_IconIndex (shortcut);
		_tmp38_ = _tmp37_;
		wixl_msi_table_shortcut_set_icon_index (_tmp36_, atoi (_tmp38_), &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp39_ = wixl_wix_shortcut_get_WorkingDirectory (shortcut);
	_tmp40_ = _tmp39_;
	if (_tmp40_ != NULL) {
		LibmsiRecord* _tmp41_;
		const gchar* _tmp42_;
		const gchar* _tmp43_;
		_tmp41_ = rec;
		_tmp42_ = wixl_wix_shortcut_get_WorkingDirectory (shortcut);
		_tmp43_ = _tmp42_;
		wixl_msi_table_shortcut_set_working_dir (_tmp41_, _tmp43_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp44_ = wixl_wix_shortcut_get_Target (shortcut);
	_tmp45_ = _tmp44_;
	if (_tmp45_ != NULL) {
		LibmsiRecord* _tmp46_;
		const gchar* _tmp47_;
		const gchar* _tmp48_;
		_tmp46_ = rec;
		_tmp47_ = wixl_wix_shortcut_get_Target (shortcut);
		_tmp48_ = _tmp47_;
		wixl_msi_table_shortcut_set_target (_tmp46_, _tmp48_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp49_ = wixl_wix_shortcut_get_Description (shortcut);
	_tmp50_ = _tmp49_;
	if (_tmp50_ != NULL) {
		LibmsiRecord* _tmp51_;
		const gchar* _tmp52_;
		const gchar* _tmp53_;
		_tmp51_ = rec;
		_tmp52_ = wixl_wix_shortcut_get_Description (shortcut);
		_tmp53_ = _tmp52_;
		wixl_msi_table_shortcut_set_description (_tmp51_, _tmp53_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp54_ = wixl_wix_shortcut_get_Arguments (shortcut);
	_tmp55_ = _tmp54_;
	if (_tmp55_ != NULL) {
		LibmsiRecord* _tmp56_;
		const gchar* _tmp57_;
		const gchar* _tmp58_;
		_tmp56_ = rec;
		_tmp57_ = wixl_wix_shortcut_get_Arguments (shortcut);
		_tmp58_ = _tmp57_;
		wixl_msi_table_shortcut_set_arguments (_tmp56_, _tmp58_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_g_object_unref0 (rec);
	_g_object_unref0 (component);
	_g_free0 (directory);
}

static void
wixl_wix_builder_real_visit_sequence (WixlWixNodeVisitor* base,
                                      WixlWixSequence* sequence,
                                      GError** error)
{
	WixlWixBuilder * self;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (sequence != NULL);
}

static void
wixl_wix_builder_real_visit_condition (WixlWixNodeVisitor* base,
                                       WixlWixCondition* condition,
                                       GError** error)
{
	WixlWixBuilder * self;
	GList* _tmp0_;
	WixlWixText* text = NULL;
	GList* _tmp1_;
	GList* _tmp2_;
	gconstpointer _tmp3_;
	WixlWixNode* _tmp4_;
	WixlWixText* _tmp5_;
	WixlMsiDatabase* _tmp6_;
	WixlMsiTableLaunchCondition* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (condition != NULL);
	_tmp0_ = ((WixlWixElement*) condition)->children;
	g_return_if_fail (g_list_length (_tmp0_) == ((guint) 1));
	_tmp1_ = ((WixlWixElement*) condition)->children;
	_tmp2_ = g_list_first (_tmp1_);
	_tmp3_ = _tmp2_->data;
	_tmp4_ = (WixlWixNode*) _tmp3_;
	_tmp5_ = _g_object_ref0 (WIXL_IS_WIX_TEXT (_tmp4_) ? ((WixlWixText*) _tmp4_) : NULL);
	text = _tmp5_;
	_tmp6_ = self->priv->db;
	_tmp7_ = _tmp6_->table_launch_condition;
	_tmp8_ = text->Text;
	_tmp9_ = wixl_wix_condition_get_Message (condition);
	_tmp10_ = _tmp9_;
	wixl_msi_table_launch_condition_add (_tmp7_, _tmp8_, _tmp10_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (text);
		return;
	}
	_g_object_unref0 (text);
}

static void
wixl_wix_builder_real_visit_upgrade (WixlWixNodeVisitor* base,
                                     WixlWixUpgrade* upgrade,
                                     GError** error)
{
	WixlWixBuilder * self;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (upgrade != NULL);
}

static void
_vala_array_add1 (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
wixl_wix_builder_real_visit_upgrade_version (WixlWixNodeVisitor* base,
                                             WixlWixUpgradeVersion* version,
                                             GError** error)
{
	WixlWixBuilder * self;
	WixlWixUpgrade* upgrade = NULL;
	WixlWixElement* _tmp0_;
	WixlWixUpgrade* _tmp1_;
	WixlWixBuilderUpgradeAttribute attributes = 0U;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	gchar* _tmp8_ = NULL;
	WixlWixUpgrade* _tmp9_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	gchar* _tmp12_;
	gchar* _tmp13_;
	WixlMsiDatabase* _tmp14_;
	WixlMsiTableUpgrade* _tmp15_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	WixlWixBuilderUpgradeAttribute _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	gchar** _tmp23_;
	gint _tmp23__length1;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	gchar* _tmp26_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (version != NULL);
	_tmp0_ = ((WixlWixNode*) version)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_UPGRADE (_tmp0_) ? ((WixlWixUpgrade*) _tmp0_) : NULL);
	upgrade = _tmp1_;
	attributes = 0;
	_tmp2_ = wixl_wix_upgrade_version_get_OnlyDetect (version);
	_tmp3_ = _tmp2_;
	if (wixl_parse_yesno (_tmp3_, FALSE)) {
		WixlWixBuilderUpgradeAttribute _tmp4_;
		_tmp4_ = attributes;
		attributes = _tmp4_ | WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_ONLY_DETECT;
	}
	_tmp5_ = wixl_wix_upgrade_version_get_IncludeMinimum (version);
	_tmp6_ = _tmp5_;
	if (wixl_parse_yesno (_tmp6_, TRUE)) {
		WixlWixBuilderUpgradeAttribute _tmp7_;
		_tmp7_ = attributes;
		attributes = _tmp7_ | WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MIN_INCLUSIVE;
	}
	_tmp9_ = upgrade;
	_tmp10_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = g_strdup (_tmp11_);
	_tmp13_ = wixl_get_uuid (_tmp12_, &_inner_error0_);
	_tmp8_ = _tmp13_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (upgrade);
		return;
	}
	_tmp14_ = self->priv->db;
	_tmp15_ = _tmp14_->table_upgrade;
	_tmp16_ = wixl_wix_upgrade_version_get_Minimum (version);
	_tmp17_ = _tmp16_;
	_tmp18_ = wixl_wix_upgrade_version_get_Maximum (version);
	_tmp19_ = _tmp18_;
	_tmp20_ = attributes;
	_tmp21_ = wixl_wix_upgrade_version_get_Property (version);
	_tmp22_ = _tmp21_;
	wixl_msi_table_upgrade_add (_tmp15_, _tmp8_, _tmp17_, _tmp19_, (gint) _tmp20_, _tmp22_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp8_);
		_g_object_unref0 (upgrade);
		return;
	}
	_tmp23_ = self->priv->secureProperties;
	_tmp23__length1 = self->priv->secureProperties_length1;
	_tmp24_ = wixl_wix_upgrade_version_get_Property (version);
	_tmp25_ = _tmp24_;
	_tmp26_ = g_strdup (_tmp25_);
	_vala_array_add1 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp26_);
	_g_free0 (_tmp8_);
	_g_object_unref0 (upgrade);
}

static void
wixl_wix_builder_real_visit_action (WixlWixNodeVisitor* base,
                                    WixlWixAction* action,
                                    GError** error)
{
	WixlWixBuilder * self;
	WixlWixSequence* parent = NULL;
	WixlWixElement* _tmp0_;
	WixlWixSequence* _tmp1_;
	WixlMsiTableSequence* table = NULL;
	WixlMsiDatabase* _tmp2_;
	GHashTable* _tmp3_;
	WixlWixSequence* _tmp4_;
	const gchar* _tmp5_;
	gconstpointer _tmp6_;
	WixlMsiTable* _tmp7_;
	WixlMsiTableSequence* _tmp8_;
	const gchar* _tmp9_;
	WixlMsiTableSequenceAction* node = NULL;
	WixlMsiTableSequence* _tmp13_;
	const gchar* _tmp14_;
	WixlMsiTableSequenceAction* _tmp15_;
	WixlMsiTableSequenceAction* _tmp16_;
	WixlWixAction* _tmp17_;
	WixlMsiTableSequenceAction* _tmp18_;
	WixlWixAction* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp25_;
	const gchar* _tmp26_;
	const gchar* _tmp33_;
	const gchar* _tmp34_;
	GList* _tmp41_;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (action != NULL);
	_tmp0_ = ((WixlWixNode*) action)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_SEQUENCE (_tmp0_) ? ((WixlWixSequence*) _tmp0_) : NULL);
	parent = _tmp1_;
	_tmp2_ = self->priv->db;
	_tmp3_ = _tmp2_->tables;
	_tmp4_ = parent;
	_tmp5_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp4_))->name;
	_tmp6_ = g_hash_table_lookup (_tmp3_, _tmp5_);
	_tmp7_ = (WixlMsiTable*) _tmp6_;
	_tmp8_ = _g_object_ref0 (WIXL_IS_MSI_TABLE_SEQUENCE (_tmp7_) ? ((WixlMsiTableSequence*) _tmp7_) : NULL);
	table = _tmp8_;
	_tmp9_ = action->name;
	if (g_strcmp0 (_tmp9_, "Custom") == 0) {
		const gchar* _tmp10_;
		const gchar* _tmp11_;
		gchar* _tmp12_;
		_tmp10_ = wixl_wix_action_get_Action (action);
		_tmp11_ = _tmp10_;
		_tmp12_ = g_strdup (_tmp11_);
		_g_free0 (action->name);
		action->name = _tmp12_;
	}
	_tmp13_ = table;
	_tmp14_ = action->name;
	_tmp15_ = wixl_msi_table_sequence_get_action (_tmp13_, _tmp14_);
	node = _tmp15_;
	_tmp16_ = node;
	_tmp17_ = _tmp16_->action;
	g_warn_if_fail (_tmp17_ == NULL);
	_tmp18_ = node;
	_tmp19_ = _g_object_ref0 (action);
	_g_object_unref0 (_tmp18_->action);
	_tmp18_->action = _tmp19_;
	_tmp20_ = wixl_wix_action_get_Sequence (action);
	_tmp21_ = _tmp20_;
	if (_tmp21_ != NULL) {
		WixlMsiTableSequenceAction* _tmp22_;
		const gchar* _tmp23_;
		const gchar* _tmp24_;
		_tmp22_ = node;
		_tmp23_ = wixl_wix_action_get_Sequence (action);
		_tmp24_ = _tmp23_;
		_tmp22_->sequence = atoi (_tmp24_);
	}
	_tmp25_ = wixl_wix_action_get_After (action);
	_tmp26_ = _tmp25_;
	if (_tmp26_ != NULL) {
		WixlMsiTableSequenceAction* _tmp27_;
		WixlMsiTableSequence* _tmp28_;
		const gchar* _tmp29_;
		const gchar* _tmp30_;
		WixlMsiTableSequenceAction* _tmp31_;
		WixlMsiTableSequenceAction* _tmp32_;
		_tmp27_ = node;
		_tmp28_ = table;
		_tmp29_ = wixl_wix_action_get_After (action);
		_tmp30_ = _tmp29_;
		_tmp31_ = wixl_msi_table_sequence_get_action (_tmp28_, _tmp30_);
		_tmp32_ = _tmp31_;
		wixl_msi_table_sequence_action_add_dep (_tmp27_, _tmp32_);
		_wixl_msi_table_sequence_action_unref0 (_tmp32_);
	}
	_tmp33_ = wixl_wix_action_get_Before (action);
	_tmp34_ = _tmp33_;
	if (_tmp34_ != NULL) {
		WixlMsiTableSequenceAction* before = NULL;
		WixlMsiTableSequence* _tmp35_;
		const gchar* _tmp36_;
		const gchar* _tmp37_;
		WixlMsiTableSequenceAction* _tmp38_;
		WixlMsiTableSequenceAction* _tmp39_;
		WixlMsiTableSequenceAction* _tmp40_;
		_tmp35_ = table;
		_tmp36_ = wixl_wix_action_get_Before (action);
		_tmp37_ = _tmp36_;
		_tmp38_ = wixl_msi_table_sequence_get_action (_tmp35_, _tmp37_);
		before = _tmp38_;
		_tmp39_ = before;
		_tmp40_ = node;
		wixl_msi_table_sequence_action_add_dep (_tmp39_, _tmp40_);
		_wixl_msi_table_sequence_action_unref0 (before);
	}
	_tmp41_ = ((WixlWixElement*) action)->children;
	if (g_list_length (_tmp41_) > ((guint) 0)) {
		GList* _tmp42_;
		WixlWixText* text = NULL;
		GList* _tmp43_;
		GList* _tmp44_;
		gconstpointer _tmp45_;
		WixlWixNode* _tmp46_;
		WixlWixText* _tmp47_;
		WixlMsiTableSequenceAction* _tmp48_;
		WixlWixText* _tmp49_;
		const gchar* _tmp50_;
		gchar* _tmp51_;
		_tmp42_ = ((WixlWixElement*) action)->children;
		g_return_if_fail (g_list_length (_tmp42_) == ((guint) 1));
		_tmp43_ = ((WixlWixElement*) action)->children;
		_tmp44_ = g_list_first (_tmp43_);
		_tmp45_ = _tmp44_->data;
		_tmp46_ = (WixlWixNode*) _tmp45_;
		_tmp47_ = _g_object_ref0 (WIXL_IS_WIX_TEXT (_tmp46_) ? ((WixlWixText*) _tmp46_) : NULL);
		text = _tmp47_;
		_tmp48_ = node;
		_tmp49_ = text;
		_tmp50_ = _tmp49_->Text;
		_tmp51_ = g_strdup (_tmp50_);
		_g_free0 (_tmp48_->condition);
		_tmp48_->condition = _tmp51_;
		_g_object_unref0 (text);
	}
	_wixl_msi_table_sequence_action_unref0 (node);
	_g_object_unref0 (table);
	_g_object_unref0 (parent);
}

static void
wixl_wix_builder_real_visit_progid (WixlWixNodeVisitor* base,
                                    WixlWixProgId* progid,
                                    GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	WixlWixComponent* comp = NULL;
	WixlWixElement* _tmp2_;
	WixlWixComponent* _tmp3_;
	gchar* regid = NULL;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	gchar* _tmp8_;
	WixlMsiDatabase* _tmp9_;
	WixlMsiTableRegistry* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (progid != NULL);
	_tmp0_ = wixl_wix_prog_id_get_Advertise (progid);
	_tmp1_ = _tmp0_;
	g_return_if_fail (!wixl_parse_yesno (_tmp1_, FALSE));
	_tmp2_ = ((WixlWixNode*) progid)->parent;
	_tmp3_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp2_) ? ((WixlWixComponent*) _tmp2_) : NULL);
	comp = _tmp3_;
	_tmp4_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp5_ = _tmp4_;
	_tmp6_ = wixl_wix_element_get_Id ((WixlWixElement*) progid);
	_tmp7_ = _tmp6_;
	_tmp8_ = wixl_generate_id ("reg", (guint) 2, _tmp5_, _tmp7_, NULL);
	regid = _tmp8_;
	_tmp9_ = self->priv->db;
	_tmp10_ = _tmp9_->table_registry;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) progid);
	_tmp12_ = _tmp11_;
	_tmp13_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp14_ = _tmp13_;
	_tmp15_ = wixl_wix_prog_id_get_Description (progid);
	_tmp16_ = _tmp15_;
	wixl_msi_table_registry_add (_tmp10_, regid, 0, _tmp12_, _tmp14_, NULL, _tmp16_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (regid);
		_g_object_unref0 (comp);
		return;
	}
	_g_free0 (regid);
	_g_object_unref0 (comp);
}

static void
wixl_wix_builder_real_visit_extension (WixlWixNodeVisitor* base,
                                       WixlWixExtension* ext,
                                       GError** error)
{
	WixlWixBuilder * self;
	WixlWixProgId* progid = NULL;
	WixlWixElement* _tmp0_;
	WixlWixProgId* _tmp1_;
	WixlWixComponent* comp = NULL;
	WixlWixProgId* _tmp2_;
	WixlWixElement* _tmp3_;
	WixlWixComponent* _tmp4_;
	WixlWixProgId* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	gchar* regid = NULL;
	WixlWixComponent* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	gchar* _tmp13_;
	WixlMsiDatabase* _tmp14_;
	WixlMsiTableRegistry* _tmp15_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	const gchar* _tmp18_;
	gchar* _tmp19_;
	gchar* _tmp20_;
	WixlWixComponent* _tmp21_;
	const gchar* _tmp22_;
	const gchar* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	WixlWixComponent* _tmp26_;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	gchar* _tmp31_;
	WixlMsiDatabase* _tmp32_;
	WixlMsiTableRegistry* _tmp33_;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	const gchar* _tmp36_;
	gchar* _tmp37_;
	gchar* _tmp38_;
	WixlWixComponent* _tmp39_;
	const gchar* _tmp40_;
	const gchar* _tmp41_;
	WixlWixProgId* _tmp42_;
	const gchar* _tmp43_;
	const gchar* _tmp44_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ext != NULL);
	_tmp0_ = ((WixlWixNode*) ext)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_PROG_ID (_tmp0_) ? ((WixlWixProgId*) _tmp0_) : NULL);
	progid = _tmp1_;
	_tmp2_ = progid;
	_tmp3_ = ((WixlWixNode*) _tmp2_)->parent;
	_tmp4_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp3_) ? ((WixlWixComponent*) _tmp3_) : NULL);
	comp = _tmp4_;
	_tmp5_ = progid;
	_tmp6_ = wixl_wix_prog_id_get_Advertise (_tmp5_);
	_tmp7_ = _tmp6_;
	g_return_if_fail (!wixl_parse_yesno (_tmp7_, FALSE));
	_tmp8_ = comp;
	_tmp9_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) ext);
	_tmp12_ = _tmp11_;
	_tmp13_ = wixl_generate_id ("reg", (guint) 3, _tmp10_, _tmp12_, "Content Type", NULL);
	regid = _tmp13_;
	_tmp14_ = self->priv->db;
	_tmp15_ = _tmp14_->table_registry;
	_tmp16_ = regid;
	_tmp17_ = wixl_wix_element_get_Id ((WixlWixElement*) ext);
	_tmp18_ = _tmp17_;
	_tmp19_ = g_strconcat (".", _tmp18_, NULL);
	_tmp20_ = _tmp19_;
	_tmp21_ = comp;
	_tmp22_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = wixl_wix_extension_get_ContentType (ext);
	_tmp25_ = _tmp24_;
	wixl_msi_table_registry_add (_tmp15_, _tmp16_, 0, _tmp20_, _tmp23_, "Content Type", _tmp25_, &_inner_error0_);
	_g_free0 (_tmp20_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (regid);
		_g_object_unref0 (comp);
		_g_object_unref0 (progid);
		return;
	}
	_tmp26_ = comp;
	_tmp27_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp26_);
	_tmp28_ = _tmp27_;
	_tmp29_ = wixl_wix_element_get_Id ((WixlWixElement*) ext);
	_tmp30_ = _tmp29_;
	_tmp31_ = wixl_generate_id ("reg", (guint) 2, _tmp28_, _tmp30_, NULL);
	_g_free0 (regid);
	regid = _tmp31_;
	_tmp32_ = self->priv->db;
	_tmp33_ = _tmp32_->table_registry;
	_tmp34_ = regid;
	_tmp35_ = wixl_wix_element_get_Id ((WixlWixElement*) ext);
	_tmp36_ = _tmp35_;
	_tmp37_ = g_strconcat (".", _tmp36_, NULL);
	_tmp38_ = _tmp37_;
	_tmp39_ = comp;
	_tmp40_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = progid;
	_tmp43_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp42_);
	_tmp44_ = _tmp43_;
	wixl_msi_table_registry_add (_tmp33_, _tmp34_, 0, _tmp38_, _tmp41_, NULL, _tmp44_, &_inner_error0_);
	_g_free0 (_tmp38_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (regid);
		_g_object_unref0 (comp);
		_g_object_unref0 (progid);
		return;
	}
	_g_free0 (regid);
	_g_object_unref0 (comp);
	_g_object_unref0 (progid);
}

static void
wixl_wix_builder_real_visit_verb (WixlWixNodeVisitor* base,
                                  WixlWixVerb* verb,
                                  GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	WixlWixExtension* ext = NULL;
	WixlWixElement* _tmp2_;
	WixlWixExtension* _tmp3_;
	WixlWixProgId* progid = NULL;
	WixlWixExtension* _tmp4_;
	WixlWixElement* _tmp5_;
	WixlWixProgId* _tmp6_;
	WixlWixComponent* comp = NULL;
	WixlWixProgId* _tmp7_;
	WixlWixElement* _tmp8_;
	WixlWixComponent* _tmp9_;
	gchar* key = NULL;
	WixlWixProgId* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	gchar* _tmp13_;
	gchar* regid = NULL;
	WixlWixComponent* _tmp14_;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	gchar* _tmp18_;
	WixlMsiDatabase* _tmp19_;
	WixlMsiTableRegistry* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	WixlWixComponent* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	const gchar* _tmp26_;
	gchar* _tmp27_;
	WixlWixComponent* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	const gchar* _tmp31_;
	gchar* _tmp32_;
	WixlMsiDatabase* _tmp33_;
	WixlMsiTableRegistry* _tmp34_;
	const gchar* _tmp35_;
	const gchar* _tmp36_;
	WixlWixComponent* _tmp37_;
	const gchar* _tmp38_;
	const gchar* _tmp39_;
	const gchar* _tmp40_;
	const gchar* _tmp41_;
	const gchar* _tmp42_;
	const gchar* _tmp43_;
	gchar* _tmp44_;
	gchar* _tmp45_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (verb != NULL);
	_tmp0_ = wixl_wix_element_get_Id ((WixlWixElement*) verb);
	_tmp1_ = _tmp0_;
	g_return_if_fail (g_strcmp0 (_tmp1_, "open") == 0);
	_tmp2_ = ((WixlWixNode*) verb)->parent;
	_tmp3_ = _g_object_ref0 (WIXL_IS_WIX_EXTENSION (_tmp2_) ? ((WixlWixExtension*) _tmp2_) : NULL);
	ext = _tmp3_;
	_tmp4_ = ext;
	_tmp5_ = ((WixlWixNode*) _tmp4_)->parent;
	_tmp6_ = _g_object_ref0 (WIXL_IS_WIX_PROG_ID (_tmp5_) ? ((WixlWixProgId*) _tmp5_) : NULL);
	progid = _tmp6_;
	_tmp7_ = progid;
	_tmp8_ = ((WixlWixNode*) _tmp7_)->parent;
	_tmp9_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp8_) ? ((WixlWixComponent*) _tmp8_) : NULL);
	comp = _tmp9_;
	_tmp10_ = progid;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strconcat (_tmp12_, "\\shell\\open", NULL);
	key = _tmp13_;
	_tmp14_ = comp;
	_tmp15_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = key;
	_tmp18_ = wixl_generate_id ("reg", (guint) 2, _tmp16_, _tmp17_, NULL);
	regid = _tmp18_;
	_tmp19_ = self->priv->db;
	_tmp20_ = _tmp19_->table_registry;
	_tmp21_ = regid;
	_tmp22_ = key;
	_tmp23_ = comp;
	_tmp24_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp23_);
	_tmp25_ = _tmp24_;
	wixl_msi_table_registry_add (_tmp20_, _tmp21_, 0, _tmp22_, _tmp25_, NULL, "Open", &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (regid);
		_g_free0 (key);
		_g_object_unref0 (comp);
		_g_object_unref0 (progid);
		_g_object_unref0 (ext);
		return;
	}
	_tmp26_ = key;
	_tmp27_ = g_strconcat (_tmp26_, "\\command", NULL);
	_g_free0 (key);
	key = _tmp27_;
	_tmp28_ = comp;
	_tmp29_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = key;
	_tmp32_ = wixl_generate_id ("reg", (guint) 2, _tmp30_, _tmp31_, NULL);
	_g_free0 (regid);
	regid = _tmp32_;
	_tmp33_ = self->priv->db;
	_tmp34_ = _tmp33_->table_registry;
	_tmp35_ = regid;
	_tmp36_ = key;
	_tmp37_ = comp;
	_tmp38_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp37_);
	_tmp39_ = _tmp38_;
	_tmp40_ = wixl_wix_verb_get_TargetFile (verb);
	_tmp41_ = _tmp40_;
	_tmp42_ = wixl_wix_verb_get_Argument (verb);
	_tmp43_ = _tmp42_;
	_tmp44_ = g_strdup_printf ("\"[#%s]\" %s", _tmp41_, _tmp43_);
	_tmp45_ = _tmp44_;
	wixl_msi_table_registry_add (_tmp34_, _tmp35_, 0, _tmp36_, _tmp39_, NULL, _tmp45_, &_inner_error0_);
	_g_free0 (_tmp45_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (regid);
		_g_free0 (key);
		_g_object_unref0 (comp);
		_g_object_unref0 (progid);
		_g_object_unref0 (ext);
		return;
	}
	_g_free0 (regid);
	_g_free0 (key);
	_g_object_unref0 (comp);
	_g_object_unref0 (progid);
	_g_object_unref0 (ext);
}

static void
wixl_wix_builder_real_visit_mime (WixlWixNodeVisitor* base,
                                  WixlWixMIME* mime,
                                  GError** error)
{
	WixlWixBuilder * self;
	WixlWixExtension* ext = NULL;
	WixlWixElement* _tmp0_;
	WixlWixExtension* _tmp1_;
	WixlWixProgId* progid = NULL;
	WixlWixElement* _tmp2_;
	WixlWixProgId* _tmp3_;
	WixlWixComponent* comp = NULL;
	WixlWixElement* _tmp4_;
	WixlWixComponent* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	gchar* key = NULL;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	gchar* _tmp10_;
	gchar* regid = NULL;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	gchar* _tmp13_;
	WixlMsiDatabase* _tmp14_;
	WixlMsiTableRegistry* _tmp15_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	gchar* _tmp20_;
	gchar* _tmp21_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (mime != NULL);
	_tmp0_ = ((WixlWixNode*) mime)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_EXTENSION (_tmp0_) ? ((WixlWixExtension*) _tmp0_) : NULL);
	ext = _tmp1_;
	_tmp2_ = ((WixlWixNode*) ext)->parent;
	_tmp3_ = _g_object_ref0 (WIXL_IS_WIX_PROG_ID (_tmp2_) ? ((WixlWixProgId*) _tmp2_) : NULL);
	progid = _tmp3_;
	_tmp4_ = ((WixlWixNode*) progid)->parent;
	_tmp5_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp4_) ? ((WixlWixComponent*) _tmp4_) : NULL);
	comp = _tmp5_;
	_tmp6_ = wixl_wix_prog_id_get_Advertise (progid);
	_tmp7_ = _tmp6_;
	g_return_if_fail (!wixl_parse_yesno (_tmp7_, FALSE));
	_tmp8_ = wixl_wix_mime_get_ContentType (mime);
	_tmp9_ = _tmp8_;
	_tmp10_ = g_strconcat ("MIME\\Database\\Content Type\\", _tmp9_, NULL);
	key = _tmp10_;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp12_ = _tmp11_;
	_tmp13_ = wixl_generate_id ("reg", (guint) 3, _tmp12_, key, "Extension", NULL);
	regid = _tmp13_;
	_tmp14_ = self->priv->db;
	_tmp15_ = _tmp14_->table_registry;
	_tmp16_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp17_ = _tmp16_;
	_tmp18_ = wixl_wix_element_get_Id ((WixlWixElement*) ext);
	_tmp19_ = _tmp18_;
	_tmp20_ = g_strconcat (".", _tmp19_, NULL);
	_tmp21_ = _tmp20_;
	wixl_msi_table_registry_add (_tmp15_, regid, 0, key, _tmp17_, "Extension", _tmp21_, &_inner_error0_);
	_g_free0 (_tmp21_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (regid);
		_g_free0 (key);
		_g_object_unref0 (comp);
		_g_object_unref0 (progid);
		_g_object_unref0 (ext);
		return;
	}
	_g_free0 (regid);
	_g_free0 (key);
	_g_object_unref0 (comp);
	_g_object_unref0 (progid);
	_g_object_unref0 (ext);
}

static void
wixl_wix_builder_real_visit_create_folder (WixlWixNodeVisitor* base,
                                           WixlWixCreateFolder* folder,
                                           GError** error)
{
	WixlWixBuilder * self;
	WixlWixComponent* component = NULL;
	WixlWixElement* _tmp0_;
	WixlWixComponent* _tmp1_;
	WixlWixDirectory* dir = NULL;
	WixlWixComponent* _tmp2_;
	WixlWixDirectory* _tmp3_;
	WixlMsiDatabase* _tmp4_;
	WixlMsiTableCreateFolder* _tmp5_;
	WixlWixDirectory* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	WixlWixComponent* _tmp9_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (folder != NULL);
	_tmp0_ = ((WixlWixNode*) folder)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp0_) ? ((WixlWixComponent*) _tmp0_) : NULL);
	component = _tmp1_;
	_tmp2_ = component;
	_tmp3_ = wixl_wix_builder_get_directory (self, _tmp2_, &_inner_error0_);
	dir = _tmp3_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (component);
		return;
	}
	_tmp4_ = self->priv->db;
	_tmp5_ = _tmp4_->table_create_folder;
	_tmp6_ = dir;
	_tmp7_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = component;
	_tmp10_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp9_);
	_tmp11_ = _tmp10_;
	wixl_msi_table_create_folder_add (_tmp5_, _tmp8_, _tmp11_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (dir);
		_g_object_unref0 (component);
		return;
	}
	_g_object_unref0 (dir);
	_g_object_unref0 (component);
}

static void
wixl_wix_builder_real_visit_fragment (WixlWixNodeVisitor* base,
                                      WixlWixFragment* fragment,
                                      GError** error)
{
	WixlWixBuilder * self;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (fragment != NULL);
}

static void
wixl_wix_builder_real_visit_text (WixlWixNodeVisitor* base,
                                  WixlWixText* text,
                                  GError** error)
{
	WixlWixBuilder * self;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (text != NULL);
}

static gint
wixl_wix_builder_install_mode_to_event (WixlWixBuilder* self,
                                        const gchar* modeString,
                                        WixlWixBuilderServiceControlEvent install,
                                        WixlWixBuilderServiceControlEvent uninstall,
                                        GError** error)
{
	WixlWixBuilderInstallMode mode = 0;
	gint event = 0;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	GError* _inner_error0_ = NULL;
	gint result = 0;
	g_return_val_if_fail (self != NULL, 0);
	g_return_val_if_fail (modeString != NULL, 0);
	mode = wixl_wix_builder_install_mode_from_string (modeString, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		gint _tmp0_ = -1;
		g_propagate_error (error, _inner_error0_);
		return _tmp0_;
	}
	event = 0;
	if (mode == WIXL_WIX_BUILDER_INSTALL_MODE_INSTALL) {
		_tmp1_ = TRUE;
	} else {
		_tmp1_ = mode == WIXL_WIX_BUILDER_INSTALL_MODE_BOTH;
	}
	if (_tmp1_) {
		event = event | install;
	}
	if (mode == WIXL_WIX_BUILDER_INSTALL_MODE_UNINSTALL) {
		_tmp2_ = TRUE;
	} else {
		_tmp2_ = mode == WIXL_WIX_BUILDER_INSTALL_MODE_BOTH;
	}
	if (_tmp2_) {
		event = event | uninstall;
	}
	result = event;
	return result;
}

static void
wixl_wix_builder_real_visit_service_argument (WixlWixNodeVisitor* base,
                                              WixlWixServiceArgument* service_argument,
                                              GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp4_;
	gchar* _tmp5_;
	gchar* _tmp6_;
	gchar* _tmp7_;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_argument != NULL);
	_tmp0_ = self->priv->ServiceArguments;
	if (_tmp0_ == NULL) {
		gchar* _tmp1_;
		_tmp1_ = g_strdup ("");
		_g_free0 (self->priv->ServiceArguments);
		self->priv->ServiceArguments = _tmp1_;
	} else {
		const gchar* _tmp2_;
		gchar* _tmp3_;
		_tmp2_ = self->priv->ServiceArguments;
		_tmp3_ = g_strconcat (_tmp2_, "[~]", NULL);
		_g_free0 (self->priv->ServiceArguments);
		self->priv->ServiceArguments = _tmp3_;
	}
	_tmp4_ = self->priv->ServiceArguments;
	_tmp5_ = wixl_wix_service_argument_get_text (service_argument);
	_tmp6_ = _tmp5_;
	_tmp7_ = g_strconcat (_tmp4_, _tmp6_, NULL);
	_g_free0 (self->priv->ServiceArguments);
	self->priv->ServiceArguments = _tmp7_;
	_g_free0 (_tmp6_);
}

static gboolean*
_bool_dup (gboolean* self)
{
	gboolean* dup;
	dup = g_new0 (gboolean, 1);
	memcpy (dup, self, sizeof (gboolean));
	return dup;
}

static gpointer
__bool_dup0 (gpointer self)
{
	return self ? _bool_dup (self) : NULL;
}

static void
wixl_wix_builder_real_visit_service_control (WixlWixNodeVisitor* base,
                                             WixlWixServiceControl* service_control,
                                             WixlVisitState state,
                                             GError** error)
{
	WixlWixBuilder * self;
	WixlWixComponent* comp = NULL;
	WixlWixElement* _tmp0_;
	WixlWixComponent* _tmp1_;
	gboolean* Wait = NULL;
	gint event = 0;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gint _tmp8_ = 0;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	gint _tmp11_ = 0;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	gint _tmp14_ = 0;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	WixlMsiDatabase* _tmp17_;
	WixlMsiTableServiceControl* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	const gchar* _tmp23_;
	gboolean* _tmp24_;
	WixlWixComponent* _tmp25_;
	const gchar* _tmp26_;
	const gchar* _tmp27_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_control != NULL);
	_tmp0_ = ((WixlWixNode*) service_control)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp0_) ? ((WixlWixComponent*) _tmp0_) : NULL);
	comp = _tmp1_;
	Wait = NULL;
	event = 0;
	if (state == WIXL_VISIT_STATE_ENTER) {
		_g_free0 (self->priv->ServiceArguments);
		self->priv->ServiceArguments = NULL;
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	_tmp2_ = wixl_wix_service_control_get_Wait (service_control);
	_tmp3_ = _tmp2_;
	if (_tmp3_ != NULL) {
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		gboolean _tmp6_;
		gboolean* _tmp7_;
		_tmp4_ = wixl_wix_service_control_get_Wait (service_control);
		_tmp5_ = _tmp4_;
		_tmp6_ = wixl_parse_yesno (_tmp5_, FALSE);
		_tmp7_ = __bool_dup0 (&_tmp6_);
		_g_free0 (Wait);
		Wait = _tmp7_;
	}
	_tmp9_ = wixl_wix_service_control_get_Start (service_control);
	_tmp10_ = _tmp9_;
	_tmp8_ = wixl_wix_builder_install_mode_to_event (self, _tmp10_, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_START, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_START, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	event = event | _tmp8_;
	_tmp12_ = wixl_wix_service_control_get_Stop (service_control);
	_tmp13_ = _tmp12_;
	_tmp11_ = wixl_wix_builder_install_mode_to_event (self, _tmp13_, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_STOP, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_STOP, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	event = event | _tmp11_;
	_tmp15_ = wixl_wix_service_control_get_Remove (service_control);
	_tmp16_ = _tmp15_;
	_tmp14_ = wixl_wix_builder_install_mode_to_event (self, _tmp16_, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_DELETE, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_DELETE, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	event = event | _tmp14_;
	_tmp17_ = self->priv->db;
	_tmp18_ = _tmp17_->table_service_control;
	_tmp19_ = wixl_wix_element_get_Id ((WixlWixElement*) service_control);
	_tmp20_ = _tmp19_;
	_tmp21_ = wixl_wix_service_control_get_Name (service_control);
	_tmp22_ = _tmp21_;
	_tmp23_ = self->priv->ServiceArguments;
	_tmp24_ = Wait;
	_tmp25_ = comp;
	_tmp26_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp25_);
	_tmp27_ = _tmp26_;
	wixl_msi_table_service_control_add (_tmp18_, _tmp20_, _tmp22_, event, _tmp23_, _tmp24_, _tmp27_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	_g_free0 (Wait);
	_g_object_unref0 (comp);
}

static void
wixl_wix_builder_real_visit_service_dependency (WixlWixNodeVisitor* base,
                                                WixlWixServiceDependency* service_dependency,
                                                GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp12_;
	gchar* _tmp13_;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_dependency != NULL);
	_tmp0_ = wixl_wix_service_dependency_get_Group (service_dependency);
	_tmp1_ = _tmp0_;
	if (wixl_parse_yesno (_tmp1_, FALSE)) {
		const gchar* _tmp2_;
		const gchar* _tmp3_;
		const gchar* _tmp4_;
		gchar* _tmp5_;
		gchar* _tmp6_;
		gchar* _tmp7_;
		_tmp2_ = self->priv->ServiceDependencies;
		_tmp3_ = wixl_wix_element_get_Id ((WixlWixElement*) service_dependency);
		_tmp4_ = _tmp3_;
		_tmp5_ = g_strconcat ("+", _tmp4_, NULL);
		_tmp6_ = _tmp5_;
		_tmp7_ = g_strconcat (_tmp2_, _tmp6_, NULL);
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp7_;
		_g_free0 (_tmp6_);
	} else {
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		const gchar* _tmp10_;
		gchar* _tmp11_;
		_tmp8_ = self->priv->ServiceDependencies;
		_tmp9_ = wixl_wix_element_get_Id ((WixlWixElement*) service_dependency);
		_tmp10_ = _tmp9_;
		_tmp11_ = g_strconcat (_tmp8_, _tmp10_, NULL);
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp11_;
	}
	_tmp12_ = self->priv->ServiceDependencies;
	_tmp13_ = g_strconcat (_tmp12_, "[~]", NULL);
	_g_free0 (self->priv->ServiceDependencies);
	self->priv->ServiceDependencies = _tmp13_;
}

static void
wixl_wix_builder_real_visit_service_install (WixlWixNodeVisitor* base,
                                             WixlWixServiceInstall* service_install,
                                             WixlVisitState state,
                                             GError** error)
{
	WixlWixBuilder * self;
	WixlWixComponent* comp = NULL;
	WixlWixElement* _tmp0_;
	WixlWixComponent* _tmp1_;
	gint ServiceType = 0;
	gint StartType = 0;
	gint ErrorControl = 0;
	gchar* Description = NULL;
	WixlWixBuilderStartTypeAttribute _tmp3_ = 0;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	WixlWixBuilderErrorControlAttribute _tmp6_ = 0;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	WixlWixBuilderServiceTypeAttribute _tmp9_ = 0;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	const gchar* _tmp17_;
	const gchar* _tmp18_;
	gchar* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	WixlMsiDatabase* _tmp23_;
	WixlMsiTableServiceInstall* _tmp24_;
	const gchar* _tmp25_;
	const gchar* _tmp26_;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	const gchar* _tmp31_;
	const gchar* _tmp32_;
	const gchar* _tmp33_;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	const gchar* _tmp36_;
	const gchar* _tmp37_;
	const gchar* _tmp38_;
	const gchar* _tmp39_;
	WixlWixComponent* _tmp40_;
	const gchar* _tmp41_;
	const gchar* _tmp42_;
	const gchar* _tmp43_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_install != NULL);
	_tmp0_ = ((WixlWixNode*) service_install)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp0_) ? ((WixlWixComponent*) _tmp0_) : NULL);
	comp = _tmp1_;
	if (state == WIXL_VISIT_STATE_ENTER) {
		gchar* _tmp2_;
		_tmp2_ = g_strdup ("");
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp2_;
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	_tmp4_ = wixl_wix_service_install_get_Start (service_install);
	_tmp5_ = _tmp4_;
	_tmp3_ = wixl_wix_builder_start_type_attribute_from_string (_tmp5_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	StartType = (gint) _tmp3_;
	_tmp7_ = wixl_wix_service_install_get_ErrorControl (service_install);
	_tmp8_ = _tmp7_;
	_tmp6_ = wixl_wix_builder_error_control_attribute_from_string (_tmp8_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	ErrorControl = (gint) _tmp6_;
	_tmp10_ = wixl_wix_service_install_get_Type (service_install);
	_tmp11_ = _tmp10_;
	_tmp9_ = wixl_wix_builder_service_type_attribute_from_string (_tmp11_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	ServiceType = (gint) _tmp9_;
	_tmp12_ = wixl_wix_service_install_get_Interactive (service_install);
	_tmp13_ = _tmp12_;
	if (wixl_parse_yesno (_tmp13_, FALSE)) {
		ServiceType = ServiceType | (1 << 8);
	}
	_tmp14_ = self->priv->ServiceDependencies;
	if (g_strcmp0 (_tmp14_, "") == 0) {
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = NULL;
	} else {
		const gchar* _tmp15_;
		gchar* _tmp16_;
		_tmp15_ = self->priv->ServiceDependencies;
		_tmp16_ = g_strconcat (_tmp15_, "[~]", NULL);
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp16_;
	}
	_tmp17_ = wixl_wix_service_install_get_Description (service_install);
	_tmp18_ = _tmp17_;
	_tmp19_ = g_strdup (_tmp18_);
	_g_free0 (Description);
	Description = _tmp19_;
	_tmp20_ = wixl_wix_service_install_get_EraseDescription (service_install);
	_tmp21_ = _tmp20_;
	if (wixl_parse_yesno (_tmp21_, FALSE)) {
		gchar* _tmp22_;
		_tmp22_ = g_strdup ("[~]");
		_g_free0 (Description);
		Description = _tmp22_;
	}
	_tmp23_ = self->priv->db;
	_tmp24_ = _tmp23_->table_service_install;
	_tmp25_ = wixl_wix_element_get_Id ((WixlWixElement*) service_install);
	_tmp26_ = _tmp25_;
	_tmp27_ = wixl_wix_service_install_get_Name (service_install);
	_tmp28_ = _tmp27_;
	_tmp29_ = wixl_wix_service_install_get_DisplayName (service_install);
	_tmp30_ = _tmp29_;
	_tmp31_ = wixl_wix_service_install_get_LoadOrderGroup (service_install);
	_tmp32_ = _tmp31_;
	_tmp33_ = self->priv->ServiceDependencies;
	_tmp34_ = wixl_wix_service_install_get_Account (service_install);
	_tmp35_ = _tmp34_;
	_tmp36_ = wixl_wix_service_install_get_Password (service_install);
	_tmp37_ = _tmp36_;
	_tmp38_ = wixl_wix_service_install_get_Arguments (service_install);
	_tmp39_ = _tmp38_;
	_tmp40_ = comp;
	_tmp41_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp40_);
	_tmp42_ = _tmp41_;
	_tmp43_ = Description;
	wixl_msi_table_service_install_add (_tmp24_, _tmp26_, _tmp28_, _tmp30_, ServiceType, StartType, ErrorControl, _tmp32_, _tmp33_, _tmp35_, _tmp37_, _tmp39_, _tmp42_, _tmp43_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	_g_free0 (Description);
	_g_object_unref0 (comp);
}

static void
wixl_wix_builder_real_visit_registry_search (WixlWixNodeVisitor* base,
                                             WixlWixRegistrySearch* search,
                                             GError** error)
{
	WixlWixBuilder * self;
	WixlWixProperty* property = NULL;
	WixlWixElement* _tmp0_;
	WixlWixProperty* _tmp1_;
	WixlWixBuilderRegistryRoot root = 0;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gchar* _tmp5_;
	WixlWixBuilderRegistryRoot _tmp6_;
	WixlWixBuilderRegistryType type = 0;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	gchar* _tmp9_;
	gchar* _tmp10_;
	WixlWixBuilderRegistryType _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	WixlMsiDatabase* _tmp15_;
	WixlMsiTableAppSearch* _tmp16_;
	WixlWixProperty* _tmp17_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	WixlMsiDatabase* _tmp22_;
	WixlMsiTableRegLocator* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	WixlWixBuilderRegistryRoot _tmp26_;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	WixlWixBuilderRegistryType _tmp31_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (search != NULL);
	_tmp0_ = ((WixlWixNode*) search)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_PROPERTY (_tmp0_) ? ((WixlWixProperty*) _tmp0_) : NULL);
	property = _tmp1_;
	_tmp2_ = wixl_wix_registry_search_get_Root (search);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_utf8_strdown (_tmp3_, (gssize) -1);
	_tmp5_ = _tmp4_;
	_tmp6_ = wixl_wix_builder_registry_root_from_string (_tmp5_, &_inner_error0_);
	_g_free0 (_tmp5_);
	root = _tmp6_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (property);
		return;
	}
	_tmp7_ = wixl_wix_registry_search_get_Type (search);
	_tmp8_ = _tmp7_;
	_tmp9_ = g_utf8_strdown (_tmp8_, (gssize) -1);
	_tmp10_ = _tmp9_;
	_tmp11_ = wixl_wix_builder_registry_type_from_string (_tmp10_, &_inner_error0_);
	_g_free0 (_tmp10_);
	type = _tmp11_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (property);
		return;
	}
	_tmp12_ = wixl_wix_registry_search_get_Win64 (search);
	_tmp13_ = _tmp12_;
	if (wixl_parse_yesno (_tmp13_, FALSE)) {
		WixlWixBuilderRegistryType _tmp14_;
		_tmp14_ = type;
		type = _tmp14_ | WIXL_WIX_BUILDER_REGISTRY_TYPE_64BIT;
	}
	_tmp15_ = self->priv->db;
	_tmp16_ = _tmp15_->table_app_search;
	_tmp17_ = property;
	_tmp18_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = wixl_wix_element_get_Id ((WixlWixElement*) search);
	_tmp21_ = _tmp20_;
	wixl_msi_table_app_search_add (_tmp16_, _tmp19_, _tmp21_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (property);
		return;
	}
	_tmp22_ = self->priv->db;
	_tmp23_ = _tmp22_->table_reg_locator;
	_tmp24_ = wixl_wix_element_get_Id ((WixlWixElement*) search);
	_tmp25_ = _tmp24_;
	_tmp26_ = root;
	_tmp27_ = wixl_wix_registry_search_get_Key (search);
	_tmp28_ = _tmp27_;
	_tmp29_ = wixl_wix_registry_search_get_Name (search);
	_tmp30_ = _tmp29_;
	_tmp31_ = type;
	wixl_msi_table_reg_locator_add (_tmp23_, _tmp25_, (gint) _tmp26_, _tmp28_, _tmp30_, (gint) _tmp31_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (property);
		return;
	}
	_g_object_unref0 (property);
}

static void
wixl_wix_builder_real_visit_custom_action (WixlWixNodeVisitor* base,
                                           WixlWixCustomAction* action,
                                           GError** error)
{
	WixlWixBuilder * self;
	WixlWixBuilderCustomActionType type = 0U;
	gchar* source = NULL;
	gchar* target = NULL;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp46_;
	const gchar* _tmp47_;
	const gchar* _tmp49_;
	const gchar* _tmp50_;
	const gchar* _tmp52_;
	const gchar* _tmp53_;
	WixlMsiDatabase* _tmp55_;
	WixlMsiTableCustomAction* _tmp56_;
	const gchar* _tmp57_;
	const gchar* _tmp58_;
	WixlWixBuilderCustomActionType _tmp59_;
	const gchar* _tmp60_;
	const gchar* _tmp61_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (action != NULL);
	_tmp0_ = wixl_wix_custom_action_get_DllEntry (action);
	_tmp1_ = _tmp0_;
	if (_tmp1_ != NULL) {
		const gchar* _tmp2_;
		const gchar* _tmp3_;
		gchar* _tmp4_;
		const gchar* _tmp5_;
		const gchar* _tmp6_;
		gchar* _tmp7_;
		type = WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_BINARY;
		_tmp2_ = wixl_wix_custom_action_get_BinaryKey (action);
		_tmp3_ = _tmp2_;
		_tmp4_ = g_strdup (_tmp3_);
		_g_free0 (source);
		source = _tmp4_;
		_tmp5_ = wixl_wix_custom_action_get_DllEntry (action);
		_tmp6_ = _tmp5_;
		_tmp7_ = g_strdup (_tmp6_);
		_g_free0 (target);
		target = _tmp7_;
	} else {
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		_tmp8_ = wixl_wix_custom_action_get_JScriptCall (action);
		_tmp9_ = _tmp8_;
		if (_tmp9_ != NULL) {
			const gchar* _tmp10_;
			const gchar* _tmp11_;
			gchar* _tmp12_;
			const gchar* _tmp13_;
			const gchar* _tmp14_;
			gchar* _tmp15_;
			type = WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_BINARY;
			_tmp10_ = wixl_wix_custom_action_get_BinaryKey (action);
			_tmp11_ = _tmp10_;
			_tmp12_ = g_strdup (_tmp11_);
			_g_free0 (source);
			source = _tmp12_;
			_tmp13_ = wixl_wix_custom_action_get_JScriptCall (action);
			_tmp14_ = _tmp13_;
			_tmp15_ = g_strdup (_tmp14_);
			_g_free0 (target);
			target = _tmp15_;
		} else {
			gboolean _tmp16_ = FALSE;
			const gchar* _tmp17_;
			const gchar* _tmp18_;
			_tmp17_ = wixl_wix_custom_action_get_ExeCommand (action);
			_tmp18_ = _tmp17_;
			if (_tmp18_ != NULL) {
				const gchar* _tmp19_;
				const gchar* _tmp20_;
				_tmp19_ = wixl_wix_custom_action_get_FileKey (action);
				_tmp20_ = _tmp19_;
				_tmp16_ = _tmp20_ == NULL;
			} else {
				_tmp16_ = FALSE;
			}
			if (_tmp16_) {
				const gchar* _tmp21_;
				const gchar* _tmp22_;
				gchar* _tmp23_;
				const gchar* _tmp24_;
				const gchar* _tmp25_;
				gchar* _tmp26_;
				type = WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_PROPERTY;
				_tmp21_ = wixl_wix_custom_action_get_Property (action);
				_tmp22_ = _tmp21_;
				_tmp23_ = g_strdup (_tmp22_);
				_g_free0 (source);
				source = _tmp23_;
				_tmp24_ = wixl_wix_custom_action_get_ExeCommand (action);
				_tmp25_ = _tmp24_;
				_tmp26_ = g_strdup (_tmp25_);
				_g_free0 (target);
				target = _tmp26_;
			} else {
				gboolean _tmp27_ = FALSE;
				const gchar* _tmp28_;
				const gchar* _tmp29_;
				_tmp28_ = wixl_wix_custom_action_get_ExeCommand (action);
				_tmp29_ = _tmp28_;
				if (_tmp29_ != NULL) {
					const gchar* _tmp30_;
					const gchar* _tmp31_;
					_tmp30_ = wixl_wix_custom_action_get_FileKey (action);
					_tmp31_ = _tmp30_;
					_tmp27_ = _tmp31_ != NULL;
				} else {
					_tmp27_ = FALSE;
				}
				if (_tmp27_) {
					const gchar* _tmp32_;
					const gchar* _tmp33_;
					gpointer _tmp34_;
					WixlWixFile* _tmp35_;
					gboolean _tmp36_;
					const gchar* _tmp39_;
					const gchar* _tmp40_;
					gchar* _tmp41_;
					const gchar* _tmp42_;
					const gchar* _tmp43_;
					gchar* _tmp44_;
					_tmp32_ = wixl_wix_custom_action_get_FileKey (action);
					_tmp33_ = _tmp32_;
					_tmp34_ = wixl_wix_resolver_find_element ((WixlWixResolver*) self, WIXL_TYPE_WIX_FILE, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp33_);
					_tmp35_ = (WixlWixFile*) _tmp34_;
					_tmp36_ = _tmp35_ == NULL;
					_g_object_unref0 (_tmp35_);
					if (_tmp36_) {
						const gchar* _tmp37_;
						const gchar* _tmp38_;
						_tmp37_ = wixl_wix_custom_action_get_FileKey (action);
						_tmp38_ = _tmp37_;
						g_error ("builder.vala:1076: file reference '%s' not defined", _tmp38_);
					}
					type = WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_FILE;
					_tmp39_ = wixl_wix_custom_action_get_FileKey (action);
					_tmp40_ = _tmp39_;
					_tmp41_ = g_strdup (_tmp40_);
					_g_free0 (source);
					source = _tmp41_;
					_tmp42_ = wixl_wix_custom_action_get_ExeCommand (action);
					_tmp43_ = _tmp42_;
					_tmp44_ = g_strdup (_tmp43_);
					_g_free0 (target);
					target = _tmp44_;
				} else {
					GError* _tmp45_;
					_tmp45_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Unsupported CustomAction");
					_inner_error0_ = _tmp45_;
					g_propagate_error (error, _inner_error0_);
					_g_free0 (target);
					_g_free0 (source);
					return;
				}
			}
		}
	}
	_tmp46_ = wixl_wix_custom_action_get_Return (action);
	_tmp47_ = _tmp46_;
	if (g_strcmp0 (_tmp47_, "ignore") == 0) {
		WixlWixBuilderCustomActionType _tmp48_;
		_tmp48_ = type;
		type = _tmp48_ | WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CONTINUE;
	}
	_tmp49_ = wixl_wix_custom_action_get_Execute (action);
	_tmp50_ = _tmp49_;
	if (g_strcmp0 (_tmp50_, "deferred") == 0) {
		WixlWixBuilderCustomActionType _tmp51_;
		_tmp51_ = type;
		type = _tmp51_ | WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_IN_SCRIPT;
	}
	_tmp52_ = wixl_wix_custom_action_get_Impersonate (action);
	_tmp53_ = _tmp52_;
	if (!wixl_parse_yesno (_tmp53_, FALSE)) {
		WixlWixBuilderCustomActionType _tmp54_;
		_tmp54_ = type;
		type = _tmp54_ | WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_NO_IMPERSONATE;
	}
	_tmp55_ = self->priv->db;
	_tmp56_ = _tmp55_->table_custom_action;
	_tmp57_ = wixl_wix_element_get_Id ((WixlWixElement*) action);
	_tmp58_ = _tmp57_;
	_tmp59_ = type;
	_tmp60_ = source;
	_tmp61_ = target;
	wixl_msi_table_custom_action_add (_tmp56_, _tmp58_, (gint) _tmp59_, _tmp60_, _tmp61_, NULL, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (target);
		_g_free0 (source);
		return;
	}
	_g_free0 (target);
	_g_free0 (source);
}

static void
wixl_wix_builder_real_visit_binary (WixlWixNodeVisitor* base,
                                    WixlWixBinary* binary,
                                    GError** error)
{
	WixlWixBuilder * self;
	GFileInfo* info = NULL;
	GFile* _tmp0_ = NULL;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	GFileInfo* _tmp3_ = NULL;
	GFile* _tmp4_;
	GFile* _tmp5_;
	WixlMsiDatabase* _tmp6_;
	WixlMsiTableBinary* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	GFile* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (binary != NULL);
	_tmp1_ = wixl_wix_binary_get_SourceFile (binary);
	_tmp2_ = _tmp1_;
	_tmp4_ = wixl_wix_builder_find_file (self, _tmp2_, &_tmp3_, &_inner_error0_);
	_g_object_unref0 (info);
	info = _tmp3_;
	_tmp0_ = _tmp4_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (info);
		return;
	}
	_tmp5_ = _tmp0_;
	_tmp0_ = NULL;
	_g_object_unref0 (binary->file);
	binary->file = _tmp5_;
	_tmp6_ = self->priv->db;
	_tmp7_ = _tmp6_->table_binary;
	_tmp8_ = wixl_wix_element_get_Id ((WixlWixElement*) binary);
	_tmp9_ = _tmp8_;
	_tmp10_ = binary->file;
	_tmp11_ = g_file_get_path (_tmp10_);
	_tmp12_ = _tmp11_;
	wixl_msi_table_binary_add (_tmp7_, _tmp9_, _tmp12_, &_inner_error0_);
	_g_free0 (_tmp12_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (_tmp0_);
		_g_object_unref0 (info);
		return;
	}
	_g_object_unref0 (_tmp0_);
	_g_object_unref0 (info);
}

static void
_vala_array_add2 (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_add3 (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
wixl_wix_builder_real_visit_major_upgrade (WixlWixNodeVisitor* base,
                                           WixlWixMajorUpgrade* major,
                                           GError** error)
{
	WixlWixBuilder * self;
	WixlWixProduct* product = NULL;
	WixlWixElement* _tmp0_;
	WixlWixProduct* _tmp1_;
	gchar* property = NULL;
	gchar* _tmp2_;
	gchar* _tmp3_ = NULL;
	WixlWixProduct* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	gchar* _tmp7_;
	gchar* _tmp8_;
	WixlMsiDatabase* _tmp9_;
	WixlMsiTableUpgrade* _tmp10_;
	WixlWixProduct* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	gchar** _tmp15_;
	gint _tmp15__length1;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* _tmp18_;
	gchar* _tmp19_ = NULL;
	WixlWixProduct* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	gchar* _tmp23_;
	gchar* _tmp24_;
	WixlMsiDatabase* _tmp25_;
	WixlMsiTableUpgrade* _tmp26_;
	WixlWixProduct* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	gchar** _tmp31_;
	gint _tmp31__length1;
	const gchar* _tmp32_;
	gchar* _tmp33_;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	WixlMsiTableInstallExecuteSequence* table = NULL;
	WixlMsiDatabase* _tmp40_;
	WixlMsiTableInstallExecuteSequence* _tmp41_;
	WixlMsiTableInstallExecuteSequence* _tmp42_;
	WixlMsiTableSequenceAction* node = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp43_;
	WixlMsiTableSequenceAction* _tmp44_;
	WixlMsiTableSequenceAction* _tmp45_;
	WixlWixAction* _tmp46_;
	WixlMsiTableSequenceAction* _tmp47_;
	WixlMsiTableInstallExecuteSequence* _tmp48_;
	WixlMsiTableSequenceAction* _tmp49_;
	WixlMsiTableSequenceAction* _tmp50_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (major != NULL);
	_tmp0_ = ((WixlWixNode*) major)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_PRODUCT (_tmp0_) ? ((WixlWixProduct*) _tmp0_) : NULL);
	product = _tmp1_;
	_tmp2_ = g_strdup ("WIX_DOWNGRADE_DETECTED");
	property = _tmp2_;
	_tmp4_ = product;
	_tmp5_ = wixl_wix_product_get_UpgradeCode (_tmp4_);
	_tmp6_ = _tmp5_;
	_tmp7_ = g_strdup (_tmp6_);
	_tmp8_ = wixl_get_uuid (_tmp7_, &_inner_error0_);
	_tmp3_ = _tmp8_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp9_ = self->priv->db;
	_tmp10_ = _tmp9_->table_upgrade;
	_tmp11_ = product;
	_tmp12_ = wixl_wix_product_get_Version (_tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = property;
	wixl_msi_table_upgrade_add (_tmp10_, _tmp3_, _tmp13_, "", 2, _tmp14_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp3_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp15_ = self->priv->secureProperties;
	_tmp15__length1 = self->priv->secureProperties_length1;
	_tmp16_ = property;
	_tmp17_ = g_strdup (_tmp16_);
	_vala_array_add2 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp17_);
	_tmp18_ = g_strdup ("WIX_UPGRADE_DETECTED");
	_g_free0 (property);
	property = _tmp18_;
	_tmp20_ = product;
	_tmp21_ = wixl_wix_product_get_UpgradeCode (_tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = g_strdup (_tmp22_);
	_tmp24_ = wixl_get_uuid (_tmp23_, &_inner_error0_);
	_tmp19_ = _tmp24_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp3_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp25_ = self->priv->db;
	_tmp26_ = _tmp25_->table_upgrade;
	_tmp27_ = product;
	_tmp28_ = wixl_wix_product_get_Version (_tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = property;
	wixl_msi_table_upgrade_add (_tmp26_, _tmp19_, "", _tmp29_, 1, _tmp30_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp19_);
		_g_free0 (_tmp3_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp31_ = self->priv->secureProperties;
	_tmp31__length1 = self->priv->secureProperties_length1;
	_tmp32_ = property;
	_tmp33_ = g_strdup (_tmp32_);
	_vala_array_add3 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp33_);
	_tmp34_ = wixl_wix_major_upgrade_get_DowngradeErrorMessage (major);
	_tmp35_ = _tmp34_;
	if (_tmp35_ != NULL) {
		WixlMsiDatabase* _tmp36_;
		WixlMsiTableLaunchCondition* _tmp37_;
		const gchar* _tmp38_;
		const gchar* _tmp39_;
		_tmp36_ = self->priv->db;
		_tmp37_ = _tmp36_->table_launch_condition;
		_tmp38_ = wixl_wix_major_upgrade_get_DowngradeErrorMessage (major);
		_tmp39_ = _tmp38_;
		wixl_msi_table_launch_condition_add (_tmp37_, "NOT WIX_DOWNGRADE_DETECTED", _tmp39_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (_tmp19_);
			_g_free0 (_tmp3_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
	}
	_tmp40_ = self->priv->db;
	_tmp41_ = _tmp40_->table_install_execute_sequence;
	_tmp42_ = _g_object_ref0 (_tmp41_);
	table = _tmp42_;
	_tmp43_ = table;
	_tmp44_ = wixl_msi_table_sequence_get_action ((WixlMsiTableSequence*) _tmp43_, "RemoveExistingProducts");
	node = _tmp44_;
	_tmp45_ = node;
	_tmp46_ = _tmp45_->action;
	g_warn_if_fail (_tmp46_ == NULL);
	_tmp47_ = node;
	_tmp48_ = table;
	_tmp49_ = wixl_msi_table_sequence_get_action ((WixlMsiTableSequence*) _tmp48_, "InstallValidate");
	_tmp50_ = _tmp49_;
	wixl_msi_table_sequence_action_add_dep (_tmp47_, _tmp50_);
	_wixl_msi_table_sequence_action_unref0 (_tmp50_);
	_wixl_msi_table_sequence_action_unref0 (node);
	_g_object_unref0 (table);
	_g_free0 (_tmp19_);
	_g_free0 (_tmp3_);
	_g_free0 (property);
	_g_object_unref0 (product);
}

static void
wixl_wix_builder_real_visit_media_template (WixlWixNodeVisitor* base,
                                            WixlWixMediaTemplate* tmpl,
                                            GError** error)
{
	WixlWixBuilder * self;
	WixlWixMedia* media = NULL;
	WixlWixMedia* _tmp0_;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (tmpl != NULL);
	_tmp0_ = wixl_wix_media_new ();
	media = _tmp0_;
	_tmp1_ = wixl_wix_media_template_get_EmbedCab (tmpl);
	_tmp2_ = _tmp1_;
	wixl_wix_media_set_EmbedCab (media, _tmp2_);
	wixl_wix_media_set_Cabinet (media, "cab1.cab");
	wixl_wix_element_set_Id ((WixlWixElement*) media, "1");
	wixl_wix_node_visitor_visit_media ((WixlWixNodeVisitor*) self, media, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (media);
		return;
	}
	_g_object_unref0 (media);
}

static void
_g_free0_ (gpointer var)
{
	var = (g_free (var), NULL);
}

static GObject *
wixl_wix_builder_constructor (GType type,
                              guint n_construct_properties,
                              GObjectConstructParam * construct_properties)
{
	GObject * obj;
	GObjectClass * parent_class;
	WixlWixBuilder * self;
	GHashFunc _tmp0_;
	GEqualFunc _tmp1_;
	GHashTable* _tmp2_;
	parent_class = G_OBJECT_CLASS (wixl_wix_builder_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_WIX_BUILDER, WixlWixBuilder);
	_tmp0_ = g_str_hash;
	_tmp1_ = g_str_equal;
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, _g_free0_);
	_g_hash_table_unref0 (self->priv->variables);
	self->priv->variables = _tmp2_;
	return obj;
}

static void
wixl_wix_builder_class_init (WixlWixBuilderClass * klass,
                             gpointer klass_data)
{
	wixl_wix_builder_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &WixlWixBuilder_private_offset);
	((WixlWixNodeVisitorClass *) klass)->visit_product = (void (*) (WixlWixNodeVisitor*, WixlWixProduct*, GError**)) wixl_wix_builder_real_visit_product;
	((WixlWixNodeVisitorClass *) klass)->visit_package = (void (*) (WixlWixNodeVisitor*, WixlWixPackage*, GError**)) wixl_wix_builder_real_visit_package;
	((WixlWixNodeVisitorClass *) klass)->visit_icon = (void (*) (WixlWixNodeVisitor*, WixlWixIcon*, GError**)) wixl_wix_builder_real_visit_icon;
	((WixlWixNodeVisitorClass *) klass)->visit_property = (void (*) (WixlWixNodeVisitor*, WixlWixProperty*, GError**)) wixl_wix_builder_real_visit_property;
	((WixlWixNodeVisitorClass *) klass)->visit_media = (void (*) (WixlWixNodeVisitor*, WixlWixMedia*, GError**)) wixl_wix_builder_real_visit_media;
	((WixlWixNodeVisitorClass *) klass)->visit_directory = (void (*) (WixlWixNodeVisitor*, WixlWixDirectory*, GError**)) wixl_wix_builder_real_visit_directory;
	((WixlWixNodeVisitorClass *) klass)->visit_component = (void (*) (WixlWixNodeVisitor*, WixlWixComponent*, WixlVisitState, GError**)) wixl_wix_builder_real_visit_component;
	((WixlWixNodeVisitorClass *) klass)->visit_feature = (void (*) (WixlWixNodeVisitor*, WixlWixFeature*, WixlVisitState, GError**)) wixl_wix_builder_real_visit_feature;
	((WixlWixNodeVisitorClass *) klass)->visit_component_ref = (void (*) (WixlWixNodeVisitor*, WixlWixComponentRef*, GError**)) wixl_wix_builder_real_visit_component_ref;
	((WixlWixNodeVisitorClass *) klass)->visit_component_group_ref = (void (*) (WixlWixNodeVisitor*, WixlWixComponentGroupRef*, GError**)) wixl_wix_builder_real_visit_component_group_ref;
	((WixlWixNodeVisitorClass *) klass)->visit_remove_folder = (void (*) (WixlWixNodeVisitor*, WixlWixRemoveFolder*, GError**)) wixl_wix_builder_real_visit_remove_folder;
	((WixlWixNodeVisitorClass *) klass)->visit_registry_value = (void (*) (WixlWixNodeVisitor*, WixlWixRegistryValue*, GError**)) wixl_wix_builder_real_visit_registry_value;
	((WixlWixNodeVisitorClass *) klass)->visit_file = (void (*) (WixlWixNodeVisitor*, WixlWixFile*, GError**)) wixl_wix_builder_real_visit_file;
	((WixlWixNodeVisitorClass *) klass)->visit_shortcut = (void (*) (WixlWixNodeVisitor*, WixlWixShortcut*, GError**)) wixl_wix_builder_real_visit_shortcut;
	((WixlWixNodeVisitorClass *) klass)->visit_sequence = (void (*) (WixlWixNodeVisitor*, WixlWixSequence*, GError**)) wixl_wix_builder_real_visit_sequence;
	((WixlWixNodeVisitorClass *) klass)->visit_condition = (void (*) (WixlWixNodeVisitor*, WixlWixCondition*, GError**)) wixl_wix_builder_real_visit_condition;
	((WixlWixNodeVisitorClass *) klass)->visit_upgrade = (void (*) (WixlWixNodeVisitor*, WixlWixUpgrade*, GError**)) wixl_wix_builder_real_visit_upgrade;
	((WixlWixNodeVisitorClass *) klass)->visit_upgrade_version = (void (*) (WixlWixNodeVisitor*, WixlWixUpgradeVersion*, GError**)) wixl_wix_builder_real_visit_upgrade_version;
	((WixlWixNodeVisitorClass *) klass)->visit_action = (void (*) (WixlWixNodeVisitor*, WixlWixAction*, GError**)) wixl_wix_builder_real_visit_action;
	((WixlWixNodeVisitorClass *) klass)->visit_progid = (void (*) (WixlWixNodeVisitor*, WixlWixProgId*, GError**)) wixl_wix_builder_real_visit_progid;
	((WixlWixNodeVisitorClass *) klass)->visit_extension = (void (*) (WixlWixNodeVisitor*, WixlWixExtension*, GError**)) wixl_wix_builder_real_visit_extension;
	((WixlWixNodeVisitorClass *) klass)->visit_verb = (void (*) (WixlWixNodeVisitor*, WixlWixVerb*, GError**)) wixl_wix_builder_real_visit_verb;
	((WixlWixNodeVisitorClass *) klass)->visit_mime = (void (*) (WixlWixNodeVisitor*, WixlWixMIME*, GError**)) wixl_wix_builder_real_visit_mime;
	((WixlWixNodeVisitorClass *) klass)->visit_create_folder = (void (*) (WixlWixNodeVisitor*, WixlWixCreateFolder*, GError**)) wixl_wix_builder_real_visit_create_folder;
	((WixlWixNodeVisitorClass *) klass)->visit_fragment = (void (*) (WixlWixNodeVisitor*, WixlWixFragment*, GError**)) wixl_wix_builder_real_visit_fragment;
	((WixlWixNodeVisitorClass *) klass)->visit_text = (void (*) (WixlWixNodeVisitor*, WixlWixText*, GError**)) wixl_wix_builder_real_visit_text;
	((WixlWixNodeVisitorClass *) klass)->visit_service_argument = (void (*) (WixlWixNodeVisitor*, WixlWixServiceArgument*, GError**)) wixl_wix_builder_real_visit_service_argument;
	((WixlWixNodeVisitorClass *) klass)->visit_service_control = (void (*) (WixlWixNodeVisitor*, WixlWixServiceControl*, WixlVisitState, GError**)) wixl_wix_builder_real_visit_service_control;
	((WixlWixNodeVisitorClass *) klass)->visit_service_dependency = (void (*) (WixlWixNodeVisitor*, WixlWixServiceDependency*, GError**)) wixl_wix_builder_real_visit_service_dependency;
	((WixlWixNodeVisitorClass *) klass)->visit_service_install = (void (*) (WixlWixNodeVisitor*, WixlWixServiceInstall*, WixlVisitState, GError**)) wixl_wix_builder_real_visit_service_install;
	((WixlWixNodeVisitorClass *) klass)->visit_registry_search = (void (*) (WixlWixNodeVisitor*, WixlWixRegistrySearch*, GError**)) wixl_wix_builder_real_visit_registry_search;
	((WixlWixNodeVisitorClass *) klass)->visit_custom_action = (void (*) (WixlWixNodeVisitor*, WixlWixCustomAction*, GError**)) wixl_wix_builder_real_visit_custom_action;
	((WixlWixNodeVisitorClass *) klass)->visit_binary = (void (*) (WixlWixNodeVisitor*, WixlWixBinary*, GError**)) wixl_wix_builder_real_visit_binary;
	((WixlWixNodeVisitorClass *) klass)->visit_major_upgrade = (void (*) (WixlWixNodeVisitor*, WixlWixMajorUpgrade*, GError**)) wixl_wix_builder_real_visit_major_upgrade;
	((WixlWixNodeVisitorClass *) klass)->visit_media_template = (void (*) (WixlWixNodeVisitor*, WixlWixMediaTemplate*, GError**)) wixl_wix_builder_real_visit_media_template;
	G_OBJECT_CLASS (klass)->constructor = wixl_wix_builder_constructor;
	G_OBJECT_CLASS (klass)->finalize = wixl_wix_builder_finalize;
}

static void
wixl_wix_builder_wixl_wix_resolver_interface_init (WixlWixResolverIface * iface,
                                                   gpointer iface_data)
{
	wixl_wix_builder_wixl_wix_resolver_parent_iface = g_type_interface_peek_parent (iface);
	iface->find_element = (gpointer (*) (WixlWixResolver*, GType, GBoxedCopyFunc, GDestroyNotify, const gchar*)) wixl_wix_builder_real_find_element;
}

static void
wixl_wix_builder_instance_init (WixlWixBuilder * self,
                                gpointer klass)
{
	self->priv = wixl_wix_builder_get_instance_private (self);
	self->priv->component_default_key = NULL;
}

static void
wixl_wix_builder_finalize (GObject * obj)
{
	WixlWixBuilder * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, WIXL_TYPE_WIX_BUILDER, WixlWixBuilder);
	_g_object_unref0 (self->priv->root);
	_g_object_unref0 (self->priv->db);
	_g_hash_table_unref0 (self->priv->variables);
	(self->priv->includedirs == NULL) ? NULL : (self->priv->includedirs = (_g_list_free__g_object_unref0_ (self->priv->includedirs), NULL));
	(self->priv->path == NULL) ? NULL : (self->priv->path = (_g_list_free__g_object_unref0_ (self->priv->path), NULL));
	(self->priv->roots == NULL) ? NULL : (self->priv->roots = (_g_list_free__g_object_unref0_ (self->priv->roots), NULL));
	(self->priv->medias == NULL) ? NULL : (self->priv->medias = (_g_list_free__g_object_unref0_ (self->priv->medias), NULL));
	self->priv->secureProperties = (_vala_array_free (self->priv->secureProperties, self->priv->secureProperties_length1, (GDestroyNotify) g_free), NULL);
	_g_object_unref0 (self->priv->component_default_key);
	_g_object_unref0 (self->priv->feature_root);
	_g_free0 (self->priv->ServiceArguments);
	_g_free0 (self->priv->ServiceDependencies);
	G_OBJECT_CLASS (wixl_wix_builder_parent_class)->finalize (obj);
}

GType
wixl_wix_builder_get_type (void)
{
	static volatile gsize wixl_wix_builder_type_id__volatile = 0;
	if (g_once_init_enter (&wixl_wix_builder_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (WixlWixBuilderClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) wixl_wix_builder_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (WixlWixBuilder), 0, (GInstanceInitFunc) wixl_wix_builder_instance_init, NULL };
		static const GInterfaceInfo wixl_wix_resolver_info = { (GInterfaceInitFunc) wixl_wix_builder_wixl_wix_resolver_interface_init, (GInterfaceFinalizeFunc) NULL, NULL};
		GType wixl_wix_builder_type_id;
		wixl_wix_builder_type_id = g_type_register_static (WIXL_TYPE_WIX_NODE_VISITOR, "WixlWixBuilder", &g_define_type_info, 0);
		g_type_add_interface_static (wixl_wix_builder_type_id, WIXL_TYPE_WIX_RESOLVER, &wixl_wix_resolver_info);
		WixlWixBuilder_private_offset = g_type_add_instance_private (wixl_wix_builder_type_id, sizeof (WixlWixBuilderPrivate));
		g_once_init_leave (&wixl_wix_builder_type_id__volatile, wixl_wix_builder_type_id);
	}
	return wixl_wix_builder_type_id__volatile;
}

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

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

