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


#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.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>


#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;

#define WIXL_WIX_BUILDER_TYPE_SOURCE_FLAGS (wixl_wix_builder_source_flags_get_type ())

#define WIXL_WIX_BUILDER_TYPE_COMPONENT_ATTRIBUTE (wixl_wix_builder_component_attribute_get_type ())

#define WIXL_WIX_BUILDER_TYPE_FEATURE_DISPLAY (wixl_wix_builder_feature_display_get_type ())

#define WIXL_WIX_BUILDER_TYPE_INSTALL_MODE (wixl_wix_builder_install_mode_get_type ())

#define WIXL_WIX_BUILDER_TYPE_REGISTRY_VALUE_TYPE (wixl_wix_builder_registry_value_type_get_type ())

#define WIXL_WIX_BUILDER_TYPE_REGISTRY_ROOT (wixl_wix_builder_registry_root_get_type ())

#define WIXL_WIX_BUILDER_TYPE_FILE_ATTRIBUTE (wixl_wix_builder_file_attribute_get_type ())

#define WIXL_WIX_BUILDER_TYPE_UPGRADE_ATTRIBUTE (wixl_wix_builder_upgrade_attribute_get_type ())

#define WIXL_WIX_BUILDER_TYPE_SERVICE_CONTROL_EVENT (wixl_wix_builder_service_control_event_get_type ())

#define WIXL_WIX_BUILDER_TYPE_SERVICE_TYPE_ATTRIBUTE (wixl_wix_builder_service_type_attribute_get_type ())

#define WIXL_WIX_BUILDER_TYPE_START_TYPE_ATTRIBUTE (wixl_wix_builder_start_type_attribute_get_type ())

#define WIXL_WIX_BUILDER_TYPE_ERROR_CONTROL_ATTRIBUTE (wixl_wix_builder_error_control_attribute_get_type ())

#define WIXL_WIX_BUILDER_TYPE_REGISTRY_TYPE (wixl_wix_builder_registry_type_get_type ())

#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_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (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 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)))

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

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;
};

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;

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;

typedef enum  {
	WIXL_WIX_BUILDER_FEATURE_DISPLAY_HIDDEN = 0,
	WIXL_WIX_BUILDER_FEATURE_DISPLAY_EXPAND,
	WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE
} WixlWixBuilderFeatureDisplay;

typedef enum  {
	WIXL_WIX_BUILDER_INSTALL_MODE_INSTALL = 1,
	WIXL_WIX_BUILDER_INSTALL_MODE_UNINSTALL,
	WIXL_WIX_BUILDER_INSTALL_MODE_BOTH
} WixlWixBuilderInstallMode;

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;

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;

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;

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;

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;

typedef enum  {
	WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_OWN_PROCESS = 1 << 4,
	WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_SHARE_PROCESS = 1 << 5
} WixlWixBuilderServiceTypeAttribute;

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;

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;

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;

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;

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

typedef void (*WixlWixBuilderAddDefaultAction) (WixlMSIDefaultAction action, void* user_data, GError** error);
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 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;
#define WIXL_WIX_BUILDER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), WIXL_TYPE_WIX_BUILDER, WixlWixBuilderPrivate))
enum  {
	WIXL_WIX_BUILDER_DUMMY_PROPERTY
};
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 void _g_list_free__g_object_unref0_ (GList* self);
WixlWixBuilder* wixl_wix_builder_new (gchar** includedirs, int includedirs_length1, WixlArch arch);
WixlWixBuilder* wixl_wix_builder_construct (GType object_type, gchar** includedirs, int 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, int* 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);
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 result = 0;
	WixlArch _tmp0_ = 0;
	const gchar* _tmp1_ = NULL;
	gpointer _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = s;
	_tmp2_ = wixl_enum_from_string (WIXL_TYPE_ARCH, NULL, NULL, _tmp1_, &_inner_error_);
	_tmp0_ = (WixlArch) ((gintptr) _tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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 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 result = 0;
	WixlWixBuilderFeatureDisplay _tmp0_ = 0;
	const gchar* _tmp1_ = NULL;
	gpointer _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = s;
	_tmp2_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_FEATURE_DISPLAY, NULL, NULL, _tmp1_, &_inner_error_);
	_tmp0_ = (WixlWixBuilderFeatureDisplay) ((gintptr) _tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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 result = 0;
	WixlWixBuilderInstallMode _tmp0_ = 0;
	const gchar* _tmp1_ = NULL;
	gpointer _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = s;
	_tmp2_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_INSTALL_MODE, NULL, NULL, _tmp1_, &_inner_error_);
	_tmp0_ = (WixlWixBuilderInstallMode) ((gintptr) _tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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) {
	WixlWixBuilderRegistryValueType result = 0;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	GError* _tmp5_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp0_ = s;
	if (g_strcmp0 (_tmp0_, "string") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_STRING;
		return result;
	}
	_tmp1_ = s;
	if (g_strcmp0 (_tmp1_, "integer") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_INTEGER;
		return result;
	}
	_tmp2_ = s;
	if (g_strcmp0 (_tmp2_, "binary") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_BINARY;
		return result;
	}
	_tmp3_ = s;
	if (g_strcmp0 (_tmp3_, "expandable") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_EXPANDABLE;
		return result;
	}
	_tmp4_ = s;
	if (g_strcmp0 (_tmp4_, "multistring") == 0) {
		result = WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_MULTI_STRING;
		return result;
	}
	_tmp5_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Can't convert string to enum");
	_inner_error_ = _tmp5_;
	g_propagate_error (error, _inner_error_);
	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 result = 0;
	WixlWixBuilderRegistryRoot _tmp0_ = 0;
	const gchar* _tmp1_ = NULL;
	gpointer _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = s;
	_tmp2_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_REGISTRY_ROOT, NULL, NULL, _tmp1_, &_inner_error_);
	_tmp0_ = (WixlWixBuilderRegistryRoot) ((gintptr) _tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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) {
	WixlWixBuilderServiceTypeAttribute result = 0;
	const gchar* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	GError* _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp0_ = s;
	if (g_strcmp0 (_tmp0_, "ownProcess") == 0) {
		result = WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_OWN_PROCESS;
		return result;
	}
	_tmp1_ = s;
	if (g_strcmp0 (_tmp1_, "shareProcess") == 0) {
		result = WIXL_WIX_BUILDER_SERVICE_TYPE_ATTRIBUTE_SHARE_PROCESS;
		return result;
	}
	_tmp2_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Can't convert string to enum");
	_inner_error_ = _tmp2_;
	g_propagate_error (error, _inner_error_);
	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 result = 0;
	WixlWixBuilderStartTypeAttribute _tmp0_ = 0;
	const gchar* _tmp1_ = NULL;
	gpointer _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = s;
	_tmp2_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_START_TYPE_ATTRIBUTE, NULL, NULL, _tmp1_, &_inner_error_);
	_tmp0_ = (WixlWixBuilderStartTypeAttribute) ((gintptr) _tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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 result = 0;
	WixlWixBuilderErrorControlAttribute _tmp0_ = 0;
	const gchar* _tmp1_ = NULL;
	gpointer _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = s;
	_tmp2_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_ERROR_CONTROL_ATTRIBUTE, NULL, NULL, _tmp1_, &_inner_error_);
	_tmp0_ = (WixlWixBuilderErrorControlAttribute) ((gintptr) _tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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 result = 0;
	WixlWixBuilderRegistryType _tmp0_ = 0;
	const gchar* _tmp1_ = NULL;
	gpointer _tmp2_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (s != NULL, 0);
	_tmp1_ = s;
	_tmp2_ = wixl_enum_from_string (WIXL_WIX_BUILDER_TYPE_REGISTRY_TYPE, NULL, NULL, _tmp1_, &_inner_error_);
	_tmp0_ = (WixlWixBuilderRegistryType) ((gintptr) _tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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 void _g_list_free__g_object_unref0_ (GList* self) {
	g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
	g_list_free (self);
}


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


WixlWixBuilder* wixl_wix_builder_new (gchar** includedirs, int 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_ = NULL;
	const gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (name != NULL);
	g_return_if_fail (value != NULL);
	_tmp0_ = self->priv->variables;
	_tmp1_ = name;
	_tmp2_ = g_strdup (_tmp1_);
	_tmp3_ = value;
	_tmp4_ = g_strdup (_tmp3_);
	g_hash_table_insert (_tmp0_, _tmp2_, _tmp4_);
}


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;
	const gchar* _tmp0_ = NULL;
	GFile* _tmp1_ = NULL;
	GFile* _tmp2_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (p != NULL);
	_tmp0_ = p;
	_tmp1_ = g_file_new_for_path (_tmp0_);
	file = _tmp1_;
	_tmp2_ = _g_object_ref0 (file);
	self->priv->path = g_list_append (self->priv->path, _tmp2_);
	_g_object_unref0 (file);
}


void wixl_wix_builder_load_doc (WixlWixBuilder* self, xmlDoc* doc, GError** error) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (doc != NULL);
	{
		xmlNode* child = NULL;
		xmlDoc* _tmp0_ = NULL;
		xmlNode* _tmp1_ = NULL;
		_tmp0_ = doc;
		_tmp1_ = _tmp0_->children;
		child = _tmp1_;
		{
			gboolean _tmp2_ = FALSE;
			_tmp2_ = TRUE;
			while (TRUE) {
				xmlNode* _tmp5_ = NULL;
				xmlNode* _tmp6_ = NULL;
				xmlElementType _tmp7_ = 0;
				if (!_tmp2_) {
					xmlNode* _tmp3_ = NULL;
					xmlNode* _tmp4_ = NULL;
					_tmp3_ = child;
					_tmp4_ = _tmp3_->next;
					child = _tmp4_;
				}
				_tmp2_ = FALSE;
				_tmp5_ = child;
				if (!(_tmp5_ != NULL)) {
					break;
				}
				_tmp6_ = child;
				_tmp7_ = _tmp6_->type;
				switch (_tmp7_) {
					case XML_ELEMENT_NODE:
					{
						xmlNode* _tmp8_ = NULL;
						const gchar* _tmp9_ = NULL;
						WixlWixRoot* root = NULL;
						WixlWixRoot* _tmp12_ = NULL;
						WixlWixRoot* _tmp13_ = NULL;
						xmlNode* _tmp14_ = NULL;
						WixlWixRoot* _tmp15_ = NULL;
						WixlWixRoot* _tmp16_ = NULL;
						_tmp8_ = child;
						_tmp9_ = _tmp8_->name;
						if (g_strcmp0 (_tmp9_, "Wix") != 0) {
							xmlNode* _tmp10_ = NULL;
							const gchar* _tmp11_ = NULL;
							_tmp10_ = child;
							_tmp11_ = _tmp10_->name;
							g_warning ("builder.vala:50: unhandled node %s", _tmp11_);
						}
						_tmp12_ = wixl_wix_root_new ();
						root = _tmp12_;
						_tmp13_ = root;
						_tmp14_ = child;
						wixl_wix_element_load ((WixlWixElement*) _tmp13_, _tmp14_, &_inner_error_);
						if (G_UNLIKELY (_inner_error_ != NULL)) {
							g_propagate_error (error, _inner_error_);
							_g_object_unref0 (root);
							return;
						}
						_tmp15_ = root;
						_tmp16_ = _g_object_ref0 (_tmp15_);
						self->priv->roots = g_list_append (self->priv->roots, _tmp16_);
						_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;
	GFile* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	WixlPreprocessor* p = NULL;
	GHashTable* _tmp4_ = NULL;
	GList* _tmp5_ = NULL;
	WixlPreprocessor* _tmp6_ = NULL;
	xmlDoc* doc = NULL;
	WixlPreprocessor* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	GFile* _tmp9_ = NULL;
	xmlDoc* _tmp10_ = NULL;
	gboolean _tmp11_ = FALSE;
	xmlDoc* _tmp15_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (file != NULL);
	_tmp0_ = file;
	_tmp1_ = g_file_get_path (_tmp0_);
	_tmp2_ = _tmp1_;
	g_file_get_contents (_tmp2_, &_tmp3_, NULL, &_inner_error_);
	_g_free0 (data);
	data = _tmp3_;
	_g_free0 (_tmp2_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (data);
		return;
	}
	_tmp4_ = self->priv->variables;
	_tmp5_ = self->priv->includedirs;
	_tmp6_ = wixl_preprocessor_new (_tmp4_, _tmp5_);
	p = _tmp6_;
	_tmp7_ = p;
	_tmp8_ = data;
	_tmp9_ = file;
	_tmp10_ = wixl_preprocessor_preprocess (_tmp7_, _tmp8_, _tmp9_, &_inner_error_);
	doc = _tmp10_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (p);
		_g_free0 (data);
		return;
	}
	_tmp11_ = preproc_only;
	if (_tmp11_) {
		xmlDoc* _tmp12_ = NULL;
		FILE* _tmp13_ = NULL;
		FILE* _tmp14_ = NULL;
		_tmp12_ = doc;
		_tmp13_ = fdopen (1, "w");
		_tmp14_ = _tmp13_;
		xmlDocFormatDump (_tmp14_, _tmp12_, TRUE);
		_fclose0 (_tmp14_);
		_xmlFreeDoc0 (doc);
		_g_object_unref0 (p);
		_g_free0 (data);
		return;
	}
	_tmp15_ = doc;
	wixl_wix_builder_load_doc (self, _tmp15_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	gpointer result = NULL;
	GList* _tmp0_ = 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_ = NULL;
			WixlWixRoot* r = NULL;
			_tmp1_ = _g_object_ref0 ((WixlWixRoot*) r_it->data);
			r = _tmp1_;
			{
				gpointer e = NULL;
				WixlWixRoot* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
				gpointer _tmp4_ = NULL;
				gconstpointer _tmp5_ = NULL;
				_tmp2_ = r;
				_tmp3_ = Id;
				_tmp4_ = wixl_wix_element_find_element ((WixlWixElement*) _tmp2_, g_type, (GBoxedCopyFunc) g_dup_func, (GDestroyNotify) g_destroy_func, _tmp3_);
				e = _tmp4_;
				_tmp5_ = e;
				if (_tmp5_ != 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_ = NULL;
		_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, int* result_length1) {
	gpointer* result = NULL;
	gpointer* elems = NULL;
	gpointer* _tmp0_ = NULL;
	gint elems_length1 = 0;
	gint _elems_size_ = 0;
	GList* _tmp1_ = NULL;
	gpointer* _tmp8_ = NULL;
	gint _tmp8__length1 = 0;
	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_ = NULL;
			WixlWixRoot* r = NULL;
			_tmp2_ = _g_object_ref0 ((WixlWixRoot*) r_it->data);
			r = _tmp2_;
			{
				WixlWixRoot* _tmp3_ = NULL;
				gpointer* _tmp4_ = NULL;
				gint _tmp4__length1 = 0;
				gpointer* _tmp5_ = NULL;
				gint _tmp5__length1 = 0;
				gint _tmp6_ = 0;
				gpointer* _tmp7_ = NULL;
				_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_, _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_ = NULL;
	WixlMSIDefaultAction _tmp1_ = 0;
	self = _data1_->self;
	_tmp0_ = _data1_->table;
	_tmp1_ = action;
	wixl_msi_table_sequence_add_default_action (_tmp0_, _tmp1_);
}


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;
	void* add_target = NULL;
	GDestroyNotify add_target_destroy_notify = NULL;
	WixlMsiDatabase* _tmp0_ = NULL;
	WixlMsiTableAdminExecuteSequence* _tmp1_ = NULL;
	WixlMsiTableSequence* _tmp2_ = NULL;
	WixlWixBuilderAddDefaultAction _tmp3_ = NULL;
	void* _tmp3__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp4_ = NULL;
	void* _tmp4__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp5_ = NULL;
	void* _tmp5__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp6_ = NULL;
	void* _tmp6__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp7_ = NULL;
	void* _tmp7__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp8_ = NULL;
	void* _tmp8__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp9_ = NULL;
	void* _tmp9__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp10_ = NULL;
	void* _tmp10__target = NULL;
	WixlMsiTableSequence* _tmp11_ = NULL;
	WixlMsiDatabase* _tmp12_ = NULL;
	WixlMsiTableAdminUISequence* _tmp13_ = NULL;
	WixlMsiTableSequence* _tmp14_ = NULL;
	WixlWixBuilderAddDefaultAction _tmp15_ = NULL;
	void* _tmp15__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp16_ = NULL;
	void* _tmp16__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp17_ = NULL;
	void* _tmp17__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp18_ = NULL;
	void* _tmp18__target = NULL;
	WixlMsiTableSequence* _tmp19_ = NULL;
	WixlMsiDatabase* _tmp20_ = NULL;
	WixlMsiTableAdvtExecuteSequence* _tmp21_ = NULL;
	WixlMsiTableSequence* _tmp22_ = NULL;
	WixlWixBuilderAddDefaultAction _tmp23_ = NULL;
	void* _tmp23__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp24_ = NULL;
	void* _tmp24__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp25_ = NULL;
	void* _tmp25__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp26_ = NULL;
	void* _tmp26__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp27_ = NULL;
	void* _tmp27__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp28_ = NULL;
	void* _tmp28__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp29_ = NULL;
	void* _tmp29__target = NULL;
	WixlMsiDatabase* _tmp30_ = NULL;
	WixlMsiTableShortcut* _tmp31_ = NULL;
	GList* _tmp32_ = NULL;
	guint _tmp33_ = 0U;
	WixlMsiTableSequence* _tmp35_ = NULL;
	WixlMsiDatabase* _tmp36_ = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp37_ = NULL;
	WixlMsiTableSequence* _tmp38_ = NULL;
	WixlWixBuilderAddDefaultAction _tmp39_ = NULL;
	void* _tmp39__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp40_ = NULL;
	void* _tmp40__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp41_ = NULL;
	void* _tmp41__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp42_ = NULL;
	void* _tmp42__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp43_ = NULL;
	void* _tmp43__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp44_ = NULL;
	void* _tmp44__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp45_ = NULL;
	void* _tmp45__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp46_ = NULL;
	void* _tmp46__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp47_ = NULL;
	void* _tmp47__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp48_ = NULL;
	void* _tmp48__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp49_ = NULL;
	void* _tmp49__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp50_ = NULL;
	void* _tmp50__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp51_ = NULL;
	void* _tmp51__target = NULL;
	WixlMsiDatabase* _tmp52_ = NULL;
	WixlMsiTableUpgrade* _tmp53_ = NULL;
	GList* _tmp54_ = NULL;
	guint _tmp55_ = 0U;
	WixlMsiDatabase* _tmp58_ = NULL;
	WixlMsiTableLaunchCondition* _tmp59_ = NULL;
	GList* _tmp60_ = NULL;
	guint _tmp61_ = 0U;
	WixlMsiDatabase* _tmp63_ = NULL;
	WixlMsiTableRegistry* _tmp64_ = NULL;
	GList* _tmp65_ = NULL;
	guint _tmp66_ = 0U;
	WixlMsiDatabase* _tmp69_ = NULL;
	WixlMsiTableShortcut* _tmp70_ = NULL;
	GList* _tmp71_ = NULL;
	guint _tmp72_ = 0U;
	WixlMsiDatabase* _tmp75_ = NULL;
	WixlMsiTableFile* _tmp76_ = NULL;
	GList* _tmp77_ = NULL;
	guint _tmp78_ = 0U;
	WixlMsiDatabase* _tmp81_ = NULL;
	WixlMsiTableRemoveFile* _tmp82_ = NULL;
	GList* _tmp83_ = NULL;
	guint _tmp84_ = 0U;
	WixlMsiDatabase* _tmp86_ = NULL;
	WixlMsiTableServiceControl* _tmp87_ = NULL;
	GList* _tmp88_ = NULL;
	guint _tmp89_ = 0U;
	WixlMsiDatabase* _tmp93_ = NULL;
	WixlMsiTableServiceInstall* _tmp94_ = NULL;
	GList* _tmp95_ = NULL;
	guint _tmp96_ = 0U;
	WixlMsiDatabase* _tmp98_ = NULL;
	WixlMsiTableCreateFolder* _tmp99_ = NULL;
	GList* _tmp100_ = NULL;
	guint _tmp101_ = 0U;
	WixlMsiDatabase* _tmp104_ = NULL;
	WixlMsiTableAppSearch* _tmp105_ = NULL;
	GList* _tmp106_ = NULL;
	guint _tmp107_ = 0U;
	WixlMsiTableSequence* _tmp109_ = NULL;
	WixlMsiDatabase* _tmp110_ = NULL;
	WixlMsiTableInstallUISequence* _tmp111_ = NULL;
	WixlMsiTableSequence* _tmp112_ = NULL;
	WixlWixBuilderAddDefaultAction _tmp113_ = NULL;
	void* _tmp113__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp114_ = NULL;
	void* _tmp114__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp115_ = NULL;
	void* _tmp115__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp116_ = NULL;
	void* _tmp116__target = NULL;
	WixlWixBuilderAddDefaultAction _tmp117_ = NULL;
	void* _tmp117__target = NULL;
	WixlMsiDatabase* _tmp118_ = NULL;
	WixlMsiTableUpgrade* _tmp119_ = NULL;
	GList* _tmp120_ = NULL;
	guint _tmp121_ = 0U;
	WixlMsiDatabase* _tmp124_ = NULL;
	WixlMsiTableLaunchCondition* _tmp125_ = NULL;
	GList* _tmp126_ = NULL;
	guint _tmp127_ = 0U;
	WixlMsiDatabase* _tmp129_ = NULL;
	WixlMsiTableAppSearch* _tmp130_ = NULL;
	GList* _tmp131_ = NULL;
	guint _tmp132_ = 0U;
	WixlMsiTableSequence* _tmp134_ = NULL;
	GError * _inner_error_ = 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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	_tmp33_ = g_list_length (_tmp32_);
	if (_tmp33_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp34_ = NULL;
		void* _tmp34__target = NULL;
		_tmp34_ = add;
		_tmp34__target = add_target;
		_tmp34_ (WIXL_MSI_DEFAULT_ACTION_CreateShortcuts, _tmp34__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp35_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	}
	_tmp36_ = self->priv->db;
	_tmp37_ = _tmp36_->table_install_execute_sequence;
	_tmp38_ = _g_object_ref0 ((WixlMsiTableSequence*) _tmp37_);
	_g_object_unref0 (_data1_->table);
	_data1_->table = _tmp38_;
	_tmp39_ = add;
	_tmp39__target = add_target;
	_tmp39_ (WIXL_MSI_DEFAULT_ACTION_ValidateProductID, _tmp39__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_CostInitialize, _tmp40__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_FileCost, _tmp41__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_CostFinalize, _tmp42__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_InstallValidate, _tmp43__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_InstallInitialize, _tmp44__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_ProcessComponents, _tmp45__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_UnpublishFeatures, _tmp46__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_RegisterUser, _tmp47__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_RegisterProduct, _tmp48__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_PublishFeatures, _tmp49__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_PublishProduct, _tmp50__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_ = add;
	_tmp51__target = add_target;
	_tmp51_ (WIXL_MSI_DEFAULT_ACTION_InstallFinalize, _tmp51__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	}
	_tmp52_ = self->priv->db;
	_tmp53_ = _tmp52_->table_upgrade;
	_tmp54_ = ((WixlMsiTable*) _tmp53_)->records;
	_tmp55_ = g_list_length (_tmp54_);
	if (_tmp55_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp56_ = NULL;
		void* _tmp56__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp57_ = NULL;
		void* _tmp57__target = NULL;
		_tmp56_ = add;
		_tmp56__target = add_target;
		_tmp56_ (WIXL_MSI_DEFAULT_ACTION_FindRelatedProducts, _tmp56__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
		_tmp57_ = add;
		_tmp57__target = add_target;
		_tmp57_ (WIXL_MSI_DEFAULT_ACTION_MigrateFeatureStates, _tmp57__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp58_ = self->priv->db;
	_tmp59_ = _tmp58_->table_launch_condition;
	_tmp60_ = ((WixlMsiTable*) _tmp59_)->records;
	_tmp61_ = g_list_length (_tmp60_);
	if (_tmp61_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp62_ = NULL;
		void* _tmp62__target = NULL;
		_tmp62_ = add;
		_tmp62__target = add_target;
		_tmp62_ (WIXL_MSI_DEFAULT_ACTION_LaunchConditions, _tmp62__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp63_ = self->priv->db;
	_tmp64_ = _tmp63_->table_registry;
	_tmp65_ = ((WixlMsiTable*) _tmp64_)->records;
	_tmp66_ = g_list_length (_tmp65_);
	if (_tmp66_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp67_ = NULL;
		void* _tmp67__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp68_ = NULL;
		void* _tmp68__target = NULL;
		_tmp67_ = add;
		_tmp67__target = add_target;
		_tmp67_ (WIXL_MSI_DEFAULT_ACTION_RemoveRegistryValues, _tmp67__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
		_tmp68_ = add;
		_tmp68__target = add_target;
		_tmp68_ (WIXL_MSI_DEFAULT_ACTION_WriteRegistryValues, _tmp68__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_ = self->priv->db;
	_tmp70_ = _tmp69_->table_shortcut;
	_tmp71_ = ((WixlMsiTable*) _tmp70_)->records;
	_tmp72_ = g_list_length (_tmp71_);
	if (_tmp72_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp73_ = NULL;
		void* _tmp73__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp74_ = NULL;
		void* _tmp74__target = NULL;
		_tmp73_ = add;
		_tmp73__target = add_target;
		_tmp73_ (WIXL_MSI_DEFAULT_ACTION_RemoveShortcuts, _tmp73__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_CreateShortcuts, _tmp74__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_file;
	_tmp77_ = ((WixlMsiTable*) _tmp76_)->records;
	_tmp78_ = g_list_length (_tmp77_);
	if (_tmp78_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp79_ = NULL;
		void* _tmp79__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp80_ = NULL;
		void* _tmp80__target = NULL;
		_tmp79_ = add;
		_tmp79__target = add_target;
		_tmp79_ (WIXL_MSI_DEFAULT_ACTION_RemoveFiles, _tmp79__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
		_tmp80_ = add;
		_tmp80__target = add_target;
		_tmp80_ (WIXL_MSI_DEFAULT_ACTION_InstallFiles, _tmp80__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp81_ = self->priv->db;
	_tmp82_ = _tmp81_->table_remove_file;
	_tmp83_ = ((WixlMsiTable*) _tmp82_)->records;
	_tmp84_ = g_list_length (_tmp83_);
	if (_tmp84_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp85_ = NULL;
		void* _tmp85__target = NULL;
		_tmp85_ = add;
		_tmp85__target = add_target;
		_tmp85_ (WIXL_MSI_DEFAULT_ACTION_RemoveFiles, _tmp85__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp86_ = self->priv->db;
	_tmp87_ = _tmp86_->table_service_control;
	_tmp88_ = ((WixlMsiTable*) _tmp87_)->records;
	_tmp89_ = g_list_length (_tmp88_);
	if (_tmp89_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp90_ = NULL;
		void* _tmp90__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp91_ = NULL;
		void* _tmp91__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp92_ = NULL;
		void* _tmp92__target = NULL;
		_tmp90_ = add;
		_tmp90__target = add_target;
		_tmp90_ (WIXL_MSI_DEFAULT_ACTION_StartServices, _tmp90__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
		_tmp91_ = add;
		_tmp91__target = add_target;
		_tmp91_ (WIXL_MSI_DEFAULT_ACTION_StopServices, _tmp91__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
		_tmp92_ = add;
		_tmp92__target = add_target;
		_tmp92_ (WIXL_MSI_DEFAULT_ACTION_DeleteServices, _tmp92__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_ = self->priv->db;
	_tmp94_ = _tmp93_->table_service_install;
	_tmp95_ = ((WixlMsiTable*) _tmp94_)->records;
	_tmp96_ = g_list_length (_tmp95_);
	if (_tmp96_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp97_ = NULL;
		void* _tmp97__target = NULL;
		_tmp97_ = add;
		_tmp97__target = add_target;
		_tmp97_ (WIXL_MSI_DEFAULT_ACTION_InstallServices, _tmp97__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_ = self->priv->db;
	_tmp99_ = _tmp98_->table_create_folder;
	_tmp100_ = ((WixlMsiTable*) _tmp99_)->records;
	_tmp101_ = g_list_length (_tmp100_);
	if (_tmp101_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp102_ = NULL;
		void* _tmp102__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp103_ = NULL;
		void* _tmp103__target = NULL;
		_tmp102_ = add;
		_tmp102__target = add_target;
		_tmp102_ (WIXL_MSI_DEFAULT_ACTION_RemoveFolders, _tmp102__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_CreateFolders, _tmp103__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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_ = self->priv->db;
	_tmp105_ = _tmp104_->table_app_search;
	_tmp106_ = ((WixlMsiTable*) _tmp105_)->records;
	_tmp107_ = g_list_length (_tmp106_);
	if (_tmp107_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp108_ = NULL;
		void* _tmp108__target = NULL;
		_tmp108_ = add;
		_tmp108__target = add_target;
		_tmp108_ (WIXL_MSI_DEFAULT_ACTION_AppSearch, _tmp108__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp109_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp109_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	}
	_tmp110_ = self->priv->db;
	_tmp111_ = _tmp110_->table_install_ui_sequence;
	_tmp112_ = _g_object_ref0 ((WixlMsiTableSequence*) _tmp111_);
	_g_object_unref0 (_data1_->table);
	_data1_->table = _tmp112_;
	_tmp113_ = add;
	_tmp113__target = add_target;
	_tmp113_ (WIXL_MSI_DEFAULT_ACTION_ValidateProductID, _tmp113__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	}
	_tmp114_ = add;
	_tmp114__target = add_target;
	_tmp114_ (WIXL_MSI_DEFAULT_ACTION_CostInitialize, _tmp114__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	}
	_tmp115_ = add;
	_tmp115__target = add_target;
	_tmp115_ (WIXL_MSI_DEFAULT_ACTION_FileCost, _tmp115__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_ = add;
	_tmp116__target = add_target;
	_tmp116_ (WIXL_MSI_DEFAULT_ACTION_CostFinalize, _tmp116__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	}
	_tmp117_ = add;
	_tmp117__target = add_target;
	_tmp117_ (WIXL_MSI_DEFAULT_ACTION_ExecuteAction, _tmp117__target, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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;
	}
	_tmp118_ = self->priv->db;
	_tmp119_ = _tmp118_->table_upgrade;
	_tmp120_ = ((WixlMsiTable*) _tmp119_)->records;
	_tmp121_ = g_list_length (_tmp120_);
	if (_tmp121_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp122_ = NULL;
		void* _tmp122__target = NULL;
		WixlWixBuilderAddDefaultAction _tmp123_ = NULL;
		void* _tmp123__target = NULL;
		_tmp122_ = add;
		_tmp122__target = add_target;
		_tmp122_ (WIXL_MSI_DEFAULT_ACTION_FindRelatedProducts, _tmp122__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
		_tmp123_ = add;
		_tmp123__target = add_target;
		_tmp123_ (WIXL_MSI_DEFAULT_ACTION_MigrateFeatureStates, _tmp123__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp124_ = self->priv->db;
	_tmp125_ = _tmp124_->table_launch_condition;
	_tmp126_ = ((WixlMsiTable*) _tmp125_)->records;
	_tmp127_ = g_list_length (_tmp126_);
	if (_tmp127_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp128_ = NULL;
		void* _tmp128__target = NULL;
		_tmp128_ = add;
		_tmp128__target = add_target;
		_tmp128_ (WIXL_MSI_DEFAULT_ACTION_LaunchConditions, _tmp128__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp129_ = self->priv->db;
	_tmp130_ = _tmp129_->table_app_search;
	_tmp131_ = ((WixlMsiTable*) _tmp130_)->records;
	_tmp132_ = g_list_length (_tmp131_);
	if (_tmp132_ > ((guint) 0)) {
		WixlWixBuilderAddDefaultAction _tmp133_ = NULL;
		void* _tmp133__target = NULL;
		_tmp133_ = add;
		_tmp133__target = add_target;
		_tmp133_ (WIXL_MSI_DEFAULT_ACTION_AppSearch, _tmp133__target, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			(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;
		}
	}
	_tmp134_ = _data1_->table;
	wixl_msi_table_sequence_add_sorted_actions (_tmp134_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		(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_ = NULL;
	WixlMsiTableFile* _tmp1_ = NULL;
	GList* _tmp2_ = NULL;
	GError * _inner_error_ = 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_ = NULL;
			LibmsiRecord* rec = NULL;
			_tmp3_ = _g_object_ref0 ((LibmsiRecord*) rec_it->data);
			rec = _tmp3_;
			{
				WixlWixFile* f = NULL;
				LibmsiRecord* _tmp4_ = NULL;
				gconstpointer _tmp5_ = NULL;
				WixlWixFile* _tmp6_ = NULL;
				WixlWixComponent* component = NULL;
				WixlWixFile* _tmp7_ = NULL;
				WixlWixElement* _tmp8_ = NULL;
				WixlWixComponent* _tmp9_ = NULL;
				WixlWixComponent* _tmp10_ = NULL;
				GList* _tmp11_ = NULL;
				guint _tmp12_ = 0U;
				WixlMsiDatabase* _tmp13_ = NULL;
				WixlMsiTableFileHash* _tmp14_ = NULL;
				WixlWixFile* _tmp15_ = NULL;
				const gchar* _tmp16_ = NULL;
				const gchar* _tmp17_ = NULL;
				WixlWixFile* _tmp18_ = NULL;
				GFile* _tmp19_ = NULL;
				_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 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp8_) : NULL);
				component = _tmp9_;
				_tmp10_ = component;
				_tmp11_ = _tmp10_->in_feature;
				_tmp12_ = g_list_length (_tmp11_);
				if (_tmp12_ == ((guint) 0)) {
					_g_object_unref0 (component);
					_g_object_unref0 (f);
					_g_object_unref0 (rec);
					continue;
				}
				_tmp13_ = self->priv->db;
				_tmp14_ = _tmp13_->table_file_hash;
				_tmp15_ = f;
				_tmp16_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp15_);
				_tmp17_ = _tmp16_;
				_tmp18_ = f;
				_tmp19_ = _tmp18_->file;
				wixl_msi_table_file_hash_add_with_file (_tmp14_, _tmp17_, _tmp19_, &_inner_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_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_ = NULL;
	GError * _inner_error_ = 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_ = NULL;
			WixlWixMedia* m = NULL;
			_tmp1_ = _g_object_ref0 ((WixlWixMedia*) m_it->data);
			m = _tmp1_;
			{
				GCabFolder* folder = NULL;
				GCabFolder* _tmp2_ = NULL;
				WixlMsiDatabase* _tmp3_ = NULL;
				WixlMsiTableFile* _tmp4_ = NULL;
				GList* _tmp5_ = NULL;
				GCabCabinet* cab = NULL;
				GCabCabinet* _tmp33_ = NULL;
				GCabCabinet* _tmp34_ = NULL;
				GCabFolder* _tmp35_ = NULL;
				GMemoryOutputStream* output = NULL;
				GMemoryOutputStream* _tmp36_ = NULL;
				GCabCabinet* _tmp37_ = NULL;
				GMemoryOutputStream* _tmp38_ = NULL;
				GMemoryInputStream* input = NULL;
				GMemoryOutputStream* _tmp39_ = NULL;
				guint8* _tmp40_ = NULL;
				GMemoryOutputStream* _tmp41_ = NULL;
				gulong _tmp42_ = 0UL;
				gulong _tmp43_ = 0UL;
				guint8* _tmp44_ = NULL;
				gint _tmp44__length1 = 0;
				GMemoryInputStream* _tmp45_ = NULL;
				WixlWixMedia* _tmp46_ = NULL;
				const gchar* _tmp47_ = NULL;
				const gchar* _tmp48_ = NULL;
				gboolean _tmp49_ = FALSE;
				WixlMsiDatabase* _tmp59_ = NULL;
				WixlMsiTableMedia* _tmp60_ = NULL;
				WixlWixMedia* _tmp61_ = NULL;
				LibmsiRecord* _tmp62_ = NULL;
				gint _tmp63_ = 0;
				_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_ = NULL;
						LibmsiRecord* rec = NULL;
						_tmp6_ = _g_object_ref0 ((LibmsiRecord*) rec_it->data);
						rec = _tmp6_;
						{
							WixlWixFile* f = NULL;
							LibmsiRecord* _tmp7_ = NULL;
							gconstpointer _tmp8_ = NULL;
							WixlWixFile* _tmp9_ = NULL;
							WixlWixFile* _tmp10_ = NULL;
							const gchar* _tmp11_ = NULL;
							const gchar* _tmp12_ = NULL;
							WixlWixMedia* _tmp13_ = NULL;
							const gchar* _tmp14_ = NULL;
							const gchar* _tmp15_ = NULL;
							WixlWixComponent* component = NULL;
							WixlWixFile* _tmp16_ = NULL;
							WixlWixElement* _tmp17_ = NULL;
							WixlWixComponent* _tmp18_ = NULL;
							WixlWixComponent* _tmp19_ = NULL;
							GList* _tmp20_ = NULL;
							guint _tmp21_ = 0U;
							GCabFolder* _tmp22_ = NULL;
							WixlWixFile* _tmp23_ = NULL;
							const gchar* _tmp24_ = NULL;
							const gchar* _tmp25_ = NULL;
							WixlWixFile* _tmp26_ = NULL;
							GFile* _tmp27_ = NULL;
							GCabFile* _tmp28_ = NULL;
							GCabFile* _tmp29_ = NULL;
							gint _tmp30_ = 0;
							LibmsiRecord* _tmp31_ = NULL;
							gint _tmp32_ = 0;
							_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 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp17_) : NULL);
							component = _tmp18_;
							_tmp19_ = component;
							_tmp20_ = _tmp19_->in_feature;
							_tmp21_ = g_list_length (_tmp20_);
							if (_tmp21_ == ((guint) 0)) {
								_g_object_unref0 (component);
								_g_object_unref0 (f);
								_g_object_unref0 (rec);
								continue;
							}
							_tmp22_ = folder;
							_tmp23_ = f;
							_tmp24_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp23_);
							_tmp25_ = _tmp24_;
							_tmp26_ = f;
							_tmp27_ = _tmp26_->file;
							_tmp28_ = gcab_file_new_with_file (_tmp25_, _tmp27_);
							_tmp29_ = _tmp28_;
							gcab_folder_add_file (_tmp22_, _tmp29_, FALSE, NULL, &_inner_error_);
							_g_object_unref0 (_tmp29_);
							if (G_UNLIKELY (_inner_error_ != NULL)) {
								g_propagate_error (error, _inner_error_);
								_g_object_unref0 (component);
								_g_object_unref0 (f);
								_g_object_unref0 (rec);
								_g_object_unref0 (folder);
								_g_object_unref0 (m);
								return;
							}
							_tmp30_ = sequence;
							sequence = _tmp30_ + 1;
							_tmp31_ = rec;
							_tmp32_ = sequence;
							wixl_msi_table_file_set_sequence (_tmp31_, _tmp32_);
							_g_object_unref0 (component);
							_g_object_unref0 (f);
							_g_object_unref0 (rec);
						}
					}
				}
				_tmp33_ = gcab_cabinet_new ();
				cab = _tmp33_;
				_tmp34_ = cab;
				_tmp35_ = folder;
				gcab_cabinet_add_folder (_tmp34_, _tmp35_, &_inner_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_g_object_unref0 (cab);
					_g_object_unref0 (folder);
					_g_object_unref0 (m);
					return;
				}
				_tmp36_ = (GMemoryOutputStream*) g_memory_output_stream_new (NULL, 0, _g_realloc_grealloc_func, _g_free_gdestroy_notify);
				output = _tmp36_;
				_tmp37_ = cab;
				_tmp38_ = output;
				gcab_cabinet_write (_tmp37_, (GOutputStream*) _tmp38_, NULL, NULL, NULL, NULL, &_inner_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_g_object_unref0 (output);
					_g_object_unref0 (cab);
					_g_object_unref0 (folder);
					_g_object_unref0 (m);
					return;
				}
				_tmp39_ = output;
				_tmp40_ = g_memory_output_stream_get_data (_tmp39_);
				_tmp41_ = output;
				_tmp42_ = g_memory_output_stream_get_data_size (_tmp41_);
				_tmp43_ = _tmp42_;
				_tmp44_ = ((_tmp40_ + 0) != NULL) ? _vala_array_dup2 (_tmp40_ + 0, ((gint) _tmp43_) - 0) : ((gpointer) (_tmp40_ + 0));
				_tmp44__length1 = ((gint) _tmp43_) - 0;
				_tmp45_ = (GMemoryInputStream*) g_memory_input_stream_new_from_data (_tmp44_, _tmp44__length1, NULL);
				input = _tmp45_;
				_tmp46_ = m;
				_tmp47_ = wixl_wix_media_get_EmbedCab (_tmp46_);
				_tmp48_ = _tmp47_;
				_tmp49_ = wixl_parse_yesno (_tmp48_, FALSE);
				if (_tmp49_) {
					WixlMsiDatabase* _tmp50_ = NULL;
					WixlMsiTableStreams* _tmp51_ = NULL;
					WixlWixMedia* _tmp52_ = NULL;
					const gchar* _tmp53_ = NULL;
					const gchar* _tmp54_ = NULL;
					GMemoryInputStream* _tmp55_ = NULL;
					GMemoryOutputStream* _tmp56_ = NULL;
					gulong _tmp57_ = 0UL;
					gulong _tmp58_ = 0UL;
					_tmp50_ = self->priv->db;
					_tmp51_ = _tmp50_->table_streams;
					_tmp52_ = m;
					_tmp53_ = wixl_wix_media_get_Cabinet (_tmp52_);
					_tmp54_ = _tmp53_;
					_tmp55_ = input;
					_tmp56_ = output;
					_tmp57_ = g_memory_output_stream_get_data_size (_tmp56_);
					_tmp58_ = _tmp57_;
					wixl_msi_table_streams_add (_tmp51_, _tmp54_, (GInputStream*) _tmp55_, (gsize) _tmp58_, &_inner_error_);
					if (G_UNLIKELY (_inner_error_ != NULL)) {
						g_propagate_error (error, _inner_error_);
						_g_object_unref0 (input);
						_g_object_unref0 (output);
						_g_object_unref0 (cab);
						_g_object_unref0 (folder);
						_g_object_unref0 (m);
						return;
					}
				}
				_tmp59_ = self->priv->db;
				_tmp60_ = _tmp59_->table_media;
				_tmp61_ = m;
				_tmp62_ = _tmp61_->record;
				_tmp63_ = sequence;
				wixl_msi_table_media_set_last_sequence (_tmp60_, _tmp62_, _tmp63_);
				_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_ = NULL;
	gint shortcuts_length1 = 0;
	gint _shortcuts_size_ = 0;
	WixlWixShortcut** _tmp2_ = NULL;
	gint _tmp2__length1 = 0;
	GError * _inner_error_ = 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 < _tmp2__length1; sc_it = sc_it + 1) {
			WixlWixShortcut* _tmp3_ = NULL;
			WixlWixShortcut* sc = NULL;
			_tmp3_ = _g_object_ref0 (sc_collection[sc_it]);
			sc = _tmp3_;
			{
				WixlWixShortcut* _tmp4_ = NULL;
				const gchar* _tmp5_ = NULL;
				const gchar* _tmp6_ = NULL;
				WixlWixComponent* component = NULL;
				WixlWixShortcut* _tmp7_ = NULL;
				WixlWixComponent* _tmp8_ = NULL;
				WixlWixFeature* feature = NULL;
				WixlWixComponent* _tmp9_ = NULL;
				GList* _tmp10_ = NULL;
				GList* _tmp11_ = NULL;
				gconstpointer _tmp12_ = NULL;
				WixlWixFeature* _tmp13_ = NULL;
				WixlWixShortcut* _tmp14_ = NULL;
				LibmsiRecord* _tmp15_ = NULL;
				WixlWixFeature* _tmp16_ = NULL;
				const gchar* _tmp17_ = NULL;
				const gchar* _tmp18_ = NULL;
				_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_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_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, int str_array_length1) {
	gchar* result = NULL;
	const gchar* _tmp0_ = NULL;
	gboolean _tmp1_ = FALSE;
	gboolean _tmp2_ = FALSE;
	gchar** _tmp3_ = NULL;
	gint _tmp3__length1 = 0;
	_tmp0_ = separator;
	if (_tmp0_ == NULL) {
		separator = "";
	}
	_tmp3_ = str_array;
	_tmp3__length1 = str_array_length1;
	if (_tmp3_ != NULL) {
		_tmp2_ = TRUE;
	} else {
		gchar** _tmp4_ = NULL;
		gint _tmp4__length1 = 0;
		_tmp4_ = str_array;
		_tmp4__length1 = str_array_length1;
		_tmp2_ = _tmp4__length1 > 0;
	}
	if (_tmp2_) {
		_tmp1_ = TRUE;
	} else {
		gboolean _tmp5_ = FALSE;
		gchar** _tmp6_ = NULL;
		gint _tmp6__length1 = 0;
		_tmp6_ = str_array;
		_tmp6__length1 = str_array_length1;
		if (_tmp6__length1 == -1) {
			gchar** _tmp7_ = NULL;
			gint _tmp7__length1 = 0;
			const gchar* _tmp8_ = NULL;
			_tmp7_ = str_array;
			_tmp7__length1 = str_array_length1;
			_tmp8_ = _tmp7_[0];
			_tmp5_ = _tmp8_ != NULL;
		} else {
			_tmp5_ = FALSE;
		}
		_tmp1_ = _tmp5_;
	}
	if (_tmp1_) {
		gint i = 0;
		gsize len = 0UL;
		gint _tmp31_ = 0;
		gint _tmp33_ = 0;
		gint _tmp34_ = 0;
		gsize _tmp35_ = 0UL;
		const gchar* _tmp36_ = NULL;
		gint _tmp37_ = 0;
		gint _tmp38_ = 0;
		gint _tmp39_ = 0;
		const gchar* res = NULL;
		gsize _tmp40_ = 0UL;
		void* _tmp41_ = NULL;
		void* ptr = NULL;
		const gchar* _tmp42_ = NULL;
		gchar** _tmp43_ = NULL;
		gint _tmp43__length1 = 0;
		const gchar* _tmp44_ = NULL;
		void* _tmp45_ = NULL;
		const gchar* _tmp62_ = NULL;
		len = (gsize) 1;
		{
			gboolean _tmp9_ = FALSE;
			i = 0;
			_tmp9_ = TRUE;
			while (TRUE) {
				gboolean _tmp11_ = FALSE;
				gboolean _tmp12_ = FALSE;
				gchar** _tmp13_ = NULL;
				gint _tmp13__length1 = 0;
				gint _tmp21_ = 0;
				gchar** _tmp22_ = NULL;
				gint _tmp22__length1 = 0;
				gint _tmp23_ = 0;
				const gchar* _tmp24_ = NULL;
				gsize _tmp30_ = 0UL;
				if (!_tmp9_) {
					gint _tmp10_ = 0;
					_tmp10_ = i;
					i = _tmp10_ + 1;
				}
				_tmp9_ = FALSE;
				_tmp13_ = str_array;
				_tmp13__length1 = str_array_length1;
				if (_tmp13__length1 != -1) {
					gint _tmp14_ = 0;
					gchar** _tmp15_ = NULL;
					gint _tmp15__length1 = 0;
					_tmp14_ = i;
					_tmp15_ = str_array;
					_tmp15__length1 = str_array_length1;
					_tmp12_ = _tmp14_ < _tmp15__length1;
				} else {
					_tmp12_ = FALSE;
				}
				if (_tmp12_) {
					_tmp11_ = TRUE;
				} else {
					gboolean _tmp16_ = FALSE;
					gchar** _tmp17_ = NULL;
					gint _tmp17__length1 = 0;
					_tmp17_ = str_array;
					_tmp17__length1 = str_array_length1;
					if (_tmp17__length1 == -1) {
						gchar** _tmp18_ = NULL;
						gint _tmp18__length1 = 0;
						gint _tmp19_ = 0;
						const gchar* _tmp20_ = NULL;
						_tmp18_ = str_array;
						_tmp18__length1 = str_array_length1;
						_tmp19_ = i;
						_tmp20_ = _tmp18_[_tmp19_];
						_tmp16_ = _tmp20_ != NULL;
					} else {
						_tmp16_ = FALSE;
					}
					_tmp11_ = _tmp16_;
				}
				if (!_tmp11_) {
					break;
				}
				_tmp22_ = str_array;
				_tmp22__length1 = str_array_length1;
				_tmp23_ = i;
				_tmp24_ = _tmp22_[_tmp23_];
				if (_tmp24_ != NULL) {
					gchar** _tmp25_ = NULL;
					gint _tmp25__length1 = 0;
					gint _tmp26_ = 0;
					const gchar* _tmp27_ = NULL;
					gint _tmp28_ = 0;
					gint _tmp29_ = 0;
					_tmp25_ = str_array;
					_tmp25__length1 = str_array_length1;
					_tmp26_ = i;
					_tmp27_ = _tmp25_[_tmp26_];
					_tmp28_ = strlen ((const gchar*) _tmp27_);
					_tmp29_ = _tmp28_;
					_tmp21_ = _tmp29_;
				} else {
					_tmp21_ = 0;
				}
				_tmp30_ = len;
				len = _tmp30_ + _tmp21_;
			}
		}
		_tmp31_ = i;
		if (_tmp31_ == 0) {
			gchar* _tmp32_ = NULL;
			_tmp32_ = g_strdup ("");
			result = _tmp32_;
			return result;
		}
		_tmp33_ = i;
		str_array_length1 = _tmp33_;
		_tmp34_ = str_array_length1;
		_tmp35_ = len;
		_tmp36_ = separator;
		_tmp37_ = strlen ((const gchar*) _tmp36_);
		_tmp38_ = _tmp37_;
		_tmp39_ = i;
		len = _tmp35_ + (_tmp38_ * (_tmp39_ - 1));
		_tmp40_ = len;
		_tmp41_ = g_malloc (_tmp40_);
		res = _tmp41_;
		_tmp42_ = res;
		_tmp43_ = str_array;
		_tmp43__length1 = str_array_length1;
		_tmp44_ = _tmp43_[0];
		_tmp45_ = g_stpcpy ((void*) _tmp42_, (const gchar*) _tmp44_);
		ptr = _tmp45_;
		{
			gboolean _tmp46_ = FALSE;
			i = 1;
			_tmp46_ = TRUE;
			while (TRUE) {
				gint _tmp48_ = 0;
				gchar** _tmp49_ = NULL;
				gint _tmp49__length1 = 0;
				void* _tmp50_ = NULL;
				const gchar* _tmp51_ = NULL;
				void* _tmp52_ = NULL;
				const gchar* _tmp53_ = NULL;
				gchar** _tmp54_ = NULL;
				gint _tmp54__length1 = 0;
				gint _tmp55_ = 0;
				const gchar* _tmp56_ = NULL;
				void* _tmp60_ = NULL;
				void* _tmp61_ = NULL;
				if (!_tmp46_) {
					gint _tmp47_ = 0;
					_tmp47_ = i;
					i = _tmp47_ + 1;
				}
				_tmp46_ = FALSE;
				_tmp48_ = i;
				_tmp49_ = str_array;
				_tmp49__length1 = str_array_length1;
				if (!(_tmp48_ < _tmp49__length1)) {
					break;
				}
				_tmp50_ = ptr;
				_tmp51_ = separator;
				_tmp52_ = g_stpcpy (_tmp50_, (const gchar*) _tmp51_);
				ptr = _tmp52_;
				_tmp54_ = str_array;
				_tmp54__length1 = str_array_length1;
				_tmp55_ = i;
				_tmp56_ = _tmp54_[_tmp55_];
				if (_tmp56_ != NULL) {
					gchar** _tmp57_ = NULL;
					gint _tmp57__length1 = 0;
					gint _tmp58_ = 0;
					const gchar* _tmp59_ = NULL;
					_tmp57_ = str_array;
					_tmp57__length1 = str_array_length1;
					_tmp58_ = i;
					_tmp59_ = _tmp57_[_tmp58_];
					_tmp53_ = (const gchar*) _tmp59_;
				} else {
					_tmp53_ = "";
				}
				_tmp60_ = ptr;
				_tmp61_ = g_stpcpy (_tmp60_, _tmp53_);
				ptr = _tmp61_;
			}
		}
		_tmp62_ = res;
		res = NULL;
		result = (gchar*) _tmp62_;
		return result;
	} else {
		gchar* _tmp63_ = NULL;
		_tmp63_ = g_strdup ("");
		result = _tmp63_;
		return result;
	}
}


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


WixlMsiDatabase* wixl_wix_builder_build (WixlWixBuilder* self, GError** error) {
	WixlMsiDatabase* result = NULL;
	WixlArch _tmp0_ = 0;
	WixlMsiDatabase* _tmp1_ = NULL;
	GList* _tmp2_ = NULL;
	WixlMsiDatabase* _tmp7_ = NULL;
	WixlMsiDatabase* _tmp8_ = NULL;
	GError * _inner_error_ = 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_ = NULL;
			WixlWixRoot* r = NULL;
			_tmp3_ = _g_object_ref0 ((WixlWixRoot*) r_it->data);
			r = _tmp3_;
			{
				WixlWixRoot* _tmp4_ = NULL;
				WixlWixRoot* _tmp5_ = NULL;
				WixlWixRoot* _tmp6_ = NULL;
				_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_error_);
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return NULL;
	}
	wixl_wix_builder_shortcut_target (self, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return NULL;
	}
	wixl_wix_builder_sequence_actions (self, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return NULL;
	}
	wixl_wix_builder_hash_files (self, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return NULL;
	}
	wixl_wix_builder_build_cabinet (self, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		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;
	WixlWixProduct* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gboolean _tmp9_ = FALSE;
	WixlWixProduct* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	WixlMsiDatabase* _tmp22_ = NULL;
	WixlMsiSummaryInfo* _tmp23_ = NULL;
	WixlWixProduct* _tmp24_ = NULL;
	const gchar* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	WixlMsiDatabase* _tmp27_ = NULL;
	WixlMsiSummaryInfo* _tmp28_ = NULL;
	gchar* _tmp29_ = NULL;
	gchar* _tmp30_ = NULL;
	gboolean _tmp31_ = FALSE;
	WixlMsiDatabase* _tmp39_ = NULL;
	WixlMsiTableProperty* _tmp40_ = NULL;
	WixlWixProduct* _tmp41_ = NULL;
	const gchar* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	WixlMsiDatabase* _tmp44_ = NULL;
	WixlMsiTableProperty* _tmp45_ = NULL;
	WixlWixProduct* _tmp46_ = NULL;
	const gchar* _tmp47_ = NULL;
	const gchar* _tmp48_ = NULL;
	gchar* _tmp49_ = NULL;
	WixlWixProduct* _tmp50_ = NULL;
	const gchar* _tmp51_ = NULL;
	const gchar* _tmp52_ = NULL;
	gchar* _tmp53_ = NULL;
	gchar* _tmp54_ = NULL;
	WixlMsiDatabase* _tmp55_ = NULL;
	WixlMsiTableProperty* _tmp56_ = NULL;
	WixlMsiDatabase* _tmp57_ = NULL;
	WixlMsiTableProperty* _tmp58_ = NULL;
	WixlWixProduct* _tmp59_ = NULL;
	const gchar* _tmp60_ = NULL;
	const gchar* _tmp61_ = NULL;
	WixlMsiDatabase* _tmp62_ = NULL;
	WixlMsiTableProperty* _tmp63_ = NULL;
	WixlWixProduct* _tmp64_ = NULL;
	const gchar* _tmp65_ = NULL;
	const gchar* _tmp66_ = NULL;
	WixlMsiDatabase* _tmp67_ = NULL;
	WixlMsiTableProperty* _tmp68_ = NULL;
	WixlWixProduct* _tmp69_ = NULL;
	const gchar* _tmp70_ = NULL;
	const gchar* _tmp71_ = NULL;
	gchar* _tmp72_ = NULL;
	gchar* _tmp73_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (product != NULL);
	_tmp0_ = product;
	_tmp1_ = wixl_wix_product_get_Codepage (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != NULL) {
		WixlMsiDatabase* _tmp3_ = NULL;
		WixlMsiSummaryInfo* _tmp4_ = NULL;
		WixlWixProduct* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		const gchar* _tmp7_ = NULL;
		gint _tmp8_ = 0;
		_tmp3_ = self->priv->db;
		_tmp4_ = _tmp3_->info;
		_tmp5_ = product;
		_tmp6_ = wixl_wix_product_get_Codepage (_tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = atoi (_tmp7_);
		wixl_msi_summary_info_set_codepage (_tmp4_, _tmp8_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			return;
		}
	}
	_tmp10_ = product;
	_tmp11_ = wixl_wix_product_get_Name (_tmp10_);
	_tmp12_ = _tmp11_;
	if (_tmp12_ != NULL) {
		WixlMsiDatabase* _tmp13_ = NULL;
		WixlMsiSummaryInfo* _tmp14_ = NULL;
		gchar* _tmp15_ = NULL;
		gchar* _tmp16_ = NULL;
		_tmp13_ = self->priv->db;
		_tmp14_ = _tmp13_->info;
		_tmp15_ = wixl_msi_summary_info_get_subject (_tmp14_);
		_tmp16_ = _tmp15_;
		_tmp9_ = _tmp16_ == NULL;
		_g_free0 (_tmp16_);
	} else {
		_tmp9_ = FALSE;
	}
	if (_tmp9_) {
		WixlMsiDatabase* _tmp17_ = NULL;
		WixlMsiSummaryInfo* _tmp18_ = NULL;
		WixlWixProduct* _tmp19_ = NULL;
		const gchar* _tmp20_ = NULL;
		const gchar* _tmp21_ = NULL;
		_tmp17_ = self->priv->db;
		_tmp18_ = _tmp17_->info;
		_tmp19_ = product;
		_tmp20_ = wixl_wix_product_get_Name (_tmp19_);
		_tmp21_ = _tmp20_;
		wixl_msi_summary_info_set_subject (_tmp18_, _tmp21_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			return;
		}
	}
	_tmp22_ = self->priv->db;
	_tmp23_ = _tmp22_->info;
	_tmp24_ = product;
	_tmp25_ = wixl_wix_product_get_Manufacturer (_tmp24_);
	_tmp26_ = _tmp25_;
	wixl_msi_summary_info_set_author (_tmp23_, _tmp26_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp27_ = self->priv->db;
	_tmp28_ = _tmp27_->info;
	_tmp29_ = wixl_msi_summary_info_get_comments (_tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = _tmp30_ == NULL;
	_g_free0 (_tmp30_);
	if (_tmp31_) {
		WixlMsiDatabase* _tmp32_ = NULL;
		WixlMsiSummaryInfo* _tmp33_ = NULL;
		WixlWixProduct* _tmp34_ = NULL;
		const gchar* _tmp35_ = NULL;
		const gchar* _tmp36_ = NULL;
		gchar* _tmp37_ = NULL;
		gchar* _tmp38_ = NULL;
		_tmp32_ = self->priv->db;
		_tmp33_ = _tmp32_->info;
		_tmp34_ = product;
		_tmp35_ = wixl_wix_product_get_Name (_tmp34_);
		_tmp36_ = _tmp35_;
		_tmp37_ = g_strdup_printf ("This installer database contains the logic and data required to instal" \
"l %s.", _tmp36_);
		_tmp38_ = _tmp37_;
		wixl_msi_summary_info_set_comments (_tmp33_, _tmp38_, &_inner_error_);
		_g_free0 (_tmp38_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			return;
		}
	}
	_tmp39_ = self->priv->db;
	_tmp40_ = _tmp39_->table_property;
	_tmp41_ = product;
	_tmp42_ = wixl_wix_product_get_Manufacturer (_tmp41_);
	_tmp43_ = _tmp42_;
	wixl_msi_table_property_add (_tmp40_, "Manufacturer", _tmp43_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp44_ = self->priv->db;
	_tmp45_ = _tmp44_->table_property;
	_tmp46_ = product;
	_tmp47_ = wixl_wix_product_get_Language (_tmp46_);
	_tmp48_ = _tmp47_;
	wixl_msi_table_property_add (_tmp45_, "ProductLanguage", _tmp48_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp50_ = product;
	_tmp51_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp50_);
	_tmp52_ = _tmp51_;
	_tmp53_ = g_strdup (_tmp52_);
	_tmp54_ = wixl_get_uuid (_tmp53_, &_inner_error_);
	_tmp49_ = _tmp54_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp55_ = self->priv->db;
	_tmp56_ = _tmp55_->table_property;
	wixl_msi_table_property_add (_tmp56_, "ProductCode", _tmp49_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp49_);
		return;
	}
	_tmp57_ = self->priv->db;
	_tmp58_ = _tmp57_->table_property;
	_tmp59_ = product;
	_tmp60_ = wixl_wix_product_get_Name (_tmp59_);
	_tmp61_ = _tmp60_;
	wixl_msi_table_property_add (_tmp58_, "ProductName", _tmp61_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp49_);
		return;
	}
	_tmp62_ = self->priv->db;
	_tmp63_ = _tmp62_->table_property;
	_tmp64_ = product;
	_tmp65_ = wixl_wix_product_get_Version (_tmp64_);
	_tmp66_ = _tmp65_;
	wixl_msi_table_property_add (_tmp63_, "ProductVersion", _tmp66_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp49_);
		return;
	}
	_tmp67_ = self->priv->db;
	_tmp68_ = _tmp67_->table_property;
	_tmp69_ = product;
	_tmp70_ = wixl_wix_product_get_UpgradeCode (_tmp69_);
	_tmp71_ = _tmp70_;
	_tmp72_ = wixl_add_braces (_tmp71_);
	_tmp73_ = _tmp72_;
	wixl_msi_table_property_add (_tmp68_, "UpgradeCode", _tmp73_, &_inner_error_);
	_g_free0 (_tmp73_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp49_);
		return;
	}
	_g_free0 (_tmp49_);
}


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


static void wixl_wix_builder_real_visit_icon (WixlWixNodeVisitor* base, WixlWixIcon* icon, GError** error) {
	WixlWixBuilder * self;
	GFileInfo* info = NULL;
	GFile* _tmp0_ = NULL;
	WixlWixIcon* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	GFileInfo* _tmp4_ = NULL;
	GFile* _tmp5_ = NULL;
	WixlWixIcon* _tmp6_ = NULL;
	GFile* _tmp7_ = NULL;
	WixlMsiDatabase* _tmp8_ = NULL;
	WixlMsiTableIcon* _tmp9_ = NULL;
	WixlWixIcon* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	WixlWixIcon* _tmp13_ = NULL;
	GFile* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	gchar* _tmp16_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (icon != NULL);
	_tmp1_ = icon;
	_tmp2_ = wixl_wix_icon_get_SourceFile (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp5_ = wixl_wix_builder_find_file (self, _tmp3_, &_tmp4_, &_inner_error_);
	_g_object_unref0 (info);
	info = _tmp4_;
	_tmp0_ = _tmp5_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (info);
		return;
	}
	_tmp6_ = icon;
	_tmp7_ = _tmp0_;
	_tmp0_ = NULL;
	_g_object_unref0 (_tmp6_->file);
	_tmp6_->file = _tmp7_;
	_tmp8_ = self->priv->db;
	_tmp9_ = _tmp8_->table_icon;
	_tmp10_ = icon;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = icon;
	_tmp14_ = _tmp13_->file;
	_tmp15_ = g_file_get_path (_tmp14_);
	_tmp16_ = _tmp15_;
	wixl_msi_table_icon_add (_tmp9_, _tmp12_, _tmp16_, &_inner_error_);
	_g_free0 (_tmp16_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixProperty* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	WixlMsiDatabase* _tmp3_ = NULL;
	WixlMsiTableProperty* _tmp4_ = NULL;
	WixlWixProperty* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	WixlWixProperty* _tmp8_ = NULL;
	const gchar* _tmp9_ = NULL;
	const gchar* _tmp10_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (prop != NULL);
	_tmp0_ = prop;
	_tmp1_ = wixl_wix_property_get_Value (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ == NULL) {
		return;
	}
	_tmp3_ = self->priv->db;
	_tmp4_ = _tmp3_->table_property;
	_tmp5_ = prop;
	_tmp6_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = prop;
	_tmp9_ = wixl_wix_property_get_Value (_tmp8_);
	_tmp10_ = _tmp9_;
	wixl_msi_table_property_add (_tmp4_, _tmp7_, _tmp10_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
}


static void wixl_wix_builder_real_visit_media (WixlWixNodeVisitor* base, WixlWixMedia* media, GError** error) {
	WixlWixBuilder * self;
	gchar* cabinet = NULL;
	WixlWixMedia* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	WixlWixMedia* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	LibmsiRecord* rec = NULL;
	WixlMsiDatabase* _tmp10_ = NULL;
	WixlMsiTableMedia* _tmp11_ = NULL;
	WixlWixMedia* _tmp12_ = NULL;
	const gchar* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	WixlWixMedia* _tmp15_ = NULL;
	const gchar* _tmp16_ = NULL;
	const gchar* _tmp17_ = NULL;
	const gchar* _tmp18_ = NULL;
	LibmsiRecord* _tmp19_ = NULL;
	WixlWixMedia* _tmp20_ = NULL;
	LibmsiRecord* _tmp21_ = NULL;
	WixlWixMedia* _tmp22_ = NULL;
	WixlWixMedia* _tmp23_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (media != NULL);
	_tmp0_ = media;
	_tmp1_ = wixl_wix_media_get_Cabinet (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup (_tmp2_);
	cabinet = _tmp3_;
	_tmp4_ = media;
	_tmp5_ = wixl_wix_media_get_EmbedCab (_tmp4_);
	_tmp6_ = _tmp5_;
	_tmp7_ = wixl_parse_yesno (_tmp6_, FALSE);
	if (_tmp7_) {
		const gchar* _tmp8_ = NULL;
		gchar* _tmp9_ = NULL;
		_tmp8_ = cabinet;
		_tmp9_ = g_strconcat ("#", _tmp8_, NULL);
		_g_free0 (cabinet);
		cabinet = _tmp9_;
	}
	_tmp10_ = self->priv->db;
	_tmp11_ = _tmp10_->table_media;
	_tmp12_ = media;
	_tmp13_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = media;
	_tmp16_ = wixl_wix_media_get_DiskPrompt (_tmp15_);
	_tmp17_ = _tmp16_;
	_tmp18_ = cabinet;
	_tmp19_ = wixl_msi_table_media_add (_tmp11_, _tmp14_, _tmp17_, _tmp18_, &_inner_error_);
	rec = _tmp19_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (cabinet);
		return;
	}
	_tmp20_ = media;
	_tmp21_ = _g_object_ref0 (rec);
	_g_object_unref0 (_tmp20_->record);
	_tmp20_->record = _tmp21_;
	_tmp22_ = media;
	_tmp23_ = _g_object_ref0 (_tmp22_);
	self->priv->medias = g_list_append (self->priv->medias, _tmp23_);
	_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;
	WixlWixDirectory* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	gchar* defaultdir = NULL;
	gchar* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
	WixlWixDirectory* _tmp6_ = NULL;
	WixlWixElement* _tmp7_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (dir != NULL);
	_tmp1_ = dir;
	_tmp2_ = wixl_wix_directory_get_Name (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp0_ = _tmp3_;
	if (_tmp0_ == NULL) {
		_tmp0_ = ".";
	}
	_tmp4_ = g_strdup (_tmp0_);
	defaultdir = _tmp4_;
	_tmp6_ = dir;
	_tmp7_ = ((WixlWixNode*) _tmp6_)->parent;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, WIXL_TYPE_WIX_PRODUCT)) {
		_tmp5_ = TRUE;
	} else {
		WixlWixDirectory* _tmp8_ = NULL;
		WixlWixElement* _tmp9_ = NULL;
		_tmp8_ = dir;
		_tmp9_ = ((WixlWixNode*) _tmp8_)->parent;
		_tmp5_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, WIXL_TYPE_WIX_FRAGMENT);
	}
	if (_tmp5_) {
		WixlWixDirectory* _tmp10_ = NULL;
		const gchar* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
		WixlMsiDatabase* _tmp14_ = NULL;
		WixlMsiTableDirectory* _tmp15_ = NULL;
		WixlWixDirectory* _tmp16_ = NULL;
		const gchar* _tmp17_ = NULL;
		const gchar* _tmp18_ = NULL;
		const gchar* _tmp19_ = NULL;
		_tmp10_ = dir;
		_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp10_);
		_tmp12_ = _tmp11_;
		if (g_strcmp0 (_tmp12_, "TARGETDIR") != 0) {
			GError* _tmp13_ = NULL;
			_tmp13_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Invalid root directory");
			_inner_error_ = _tmp13_;
			g_propagate_error (error, _inner_error_);
			_g_free0 (defaultdir);
			return;
		}
		_tmp14_ = self->priv->db;
		_tmp15_ = _tmp14_->table_directory;
		_tmp16_ = dir;
		_tmp17_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp16_);
		_tmp18_ = _tmp17_;
		_tmp19_ = defaultdir;
		wixl_msi_table_directory_add (_tmp15_, _tmp18_, NULL, _tmp19_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_free0 (defaultdir);
			return;
		}
	} else {
		gboolean _tmp20_ = FALSE;
		WixlWixDirectory* _tmp21_ = NULL;
		WixlWixElement* _tmp22_ = NULL;
		_tmp21_ = dir;
		_tmp22_ = ((WixlWixNode*) _tmp21_)->parent;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp22_, WIXL_TYPE_WIX_DIRECTORY)) {
			_tmp20_ = TRUE;
		} else {
			WixlWixDirectory* _tmp23_ = NULL;
			WixlWixElement* _tmp24_ = NULL;
			_tmp23_ = dir;
			_tmp24_ = ((WixlWixNode*) _tmp23_)->parent;
			_tmp20_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, WIXL_TYPE_WIX_DIRECTORY_REF);
		}
		if (_tmp20_) {
			WixlWixDirectory* parent = NULL;
			WixlWixDirectory* _tmp25_ = NULL;
			WixlWixElement* _tmp26_ = NULL;
			gpointer _tmp27_ = NULL;
			WixlMsiDatabase* _tmp28_ = NULL;
			WixlMsiTableDirectory* _tmp29_ = NULL;
			WixlWixDirectory* _tmp30_ = NULL;
			const gchar* _tmp31_ = NULL;
			const gchar* _tmp32_ = NULL;
			WixlWixDirectory* _tmp33_ = NULL;
			const gchar* _tmp34_ = NULL;
			const gchar* _tmp35_ = NULL;
			const gchar* _tmp36_ = NULL;
			_tmp25_ = dir;
			_tmp26_ = ((WixlWixNode*) _tmp25_)->parent;
			_tmp27_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIRECTORY, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp26_, &_inner_error_);
			parent = (WixlWixDirectory*) _tmp27_;
			if (G_UNLIKELY (_inner_error_ != NULL)) {
				g_propagate_error (error, _inner_error_);
				_g_free0 (defaultdir);
				return;
			}
			_tmp28_ = self->priv->db;
			_tmp29_ = _tmp28_->table_directory;
			_tmp30_ = dir;
			_tmp31_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp30_);
			_tmp32_ = _tmp31_;
			_tmp33_ = parent;
			_tmp34_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp33_);
			_tmp35_ = _tmp34_;
			_tmp36_ = defaultdir;
			wixl_msi_table_directory_add (_tmp29_, _tmp32_, _tmp35_, _tmp36_, &_inner_error_);
			if (G_UNLIKELY (_inner_error_ != NULL)) {
				g_propagate_error (error, _inner_error_);
				_g_object_unref0 (parent);
				_g_free0 (defaultdir);
				return;
			}
			_g_object_unref0 (parent);
		} else {
			WixlWixDirectory* _tmp37_ = NULL;
			WixlWixElement* _tmp38_ = NULL;
			const gchar* _tmp39_ = NULL;
			_tmp37_ = dir;
			_tmp38_ = ((WixlWixNode*) _tmp37_)->parent;
			_tmp39_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp38_))->name;
			g_warning ("builder.vala:377: unhandled parent type %s", _tmp39_);
		}
	}
	_g_free0 (defaultdir);
}


static void wixl_wix_builder_real_visit_component (WixlWixNodeVisitor* base, WixlWixComponent* comp, WixlVisitState state, GError** error) {
	WixlWixBuilder * self;
	gint attr = 0;
	WixlVisitState _tmp0_ = 0;
	gboolean _tmp1_ = FALSE;
	WixlWixComponent* _tmp2_ = NULL;
	WixlWixKeyElement* _tmp3_ = NULL;
	WixlWixComponent* _tmp8_ = NULL;
	WixlWixKeyElement* _tmp9_ = NULL;
	WixlWixDirectory* dir = NULL;
	WixlWixComponent* _tmp11_ = NULL;
	WixlWixDirectory* _tmp12_ = NULL;
	gchar* uuid = NULL;
	WixlWixComponent* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	WixlWixComponent* _tmp27_ = NULL;
	const gchar* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	gboolean _tmp30_ = FALSE;
	const gchar* _tmp32_ = NULL;
	WixlWixComponent* _tmp33_ = NULL;
	WixlWixKeyElement* _tmp34_ = NULL;
	WixlMsiDatabase* _tmp39_ = NULL;
	WixlMsiTableComponent* _tmp40_ = NULL;
	WixlWixComponent* _tmp41_ = NULL;
	const gchar* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	const gchar* _tmp44_ = NULL;
	WixlWixDirectory* _tmp45_ = NULL;
	const gchar* _tmp46_ = NULL;
	const gchar* _tmp47_ = NULL;
	gint _tmp48_ = 0;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (comp != NULL);
	attr = 0;
	_tmp0_ = state;
	if (_tmp0_ == 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;
	}
	_tmp2_ = comp;
	_tmp3_ = _tmp2_->key;
	if (_tmp3_ == NULL) {
		WixlWixKeyElement* _tmp4_ = NULL;
		_tmp4_ = self->priv->component_default_key;
		_tmp1_ = _tmp4_ != NULL;
	} else {
		_tmp1_ = FALSE;
	}
	if (_tmp1_) {
		WixlWixComponent* _tmp5_ = NULL;
		WixlWixKeyElement* _tmp6_ = NULL;
		WixlWixKeyElement* _tmp7_ = NULL;
		_tmp5_ = comp;
		_tmp6_ = self->priv->component_default_key;
		_tmp7_ = _g_object_ref0 (_tmp6_);
		_g_object_unref0 (_tmp5_->key);
		_tmp5_->key = _tmp7_;
	}
	_tmp8_ = comp;
	_tmp9_ = _tmp8_->key;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp9_, WIXL_TYPE_WIX_REGISTRY_VALUE)) {
		gint _tmp10_ = 0;
		_tmp10_ = attr;
		attr = _tmp10_ | WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_REGISTRY_KEY_PATH;
	}
	_tmp11_ = comp;
	_tmp12_ = wixl_wix_builder_get_directory (self, _tmp11_, &_inner_error_);
	dir = _tmp12_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp13_ = comp;
	_tmp14_ = wixl_wix_component_get_Guid (_tmp13_);
	_tmp15_ = _tmp14_;
	if (g_strcmp0 (_tmp15_, "*") == 0) {
		gchar* _tmp16_ = NULL;
		WixlWixComponent* _tmp17_ = NULL;
		gchar* _tmp18_ = NULL;
		gchar* _tmp19_ = NULL;
		_tmp17_ = comp;
		_tmp18_ = wixl_wix_element_full_path ((WixlWixElement*) _tmp17_, (WixlWixResolver*) self, &_inner_error_);
		_tmp16_ = _tmp18_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_free0 (uuid);
			_g_object_unref0 (dir);
			return;
		}
		_tmp19_ = wixl_uuid_from_name (_tmp16_);
		_g_free0 (uuid);
		uuid = _tmp19_;
		_g_free0 (_tmp16_);
	} else {
		gchar* _tmp20_ = NULL;
		WixlWixComponent* _tmp21_ = NULL;
		const gchar* _tmp22_ = NULL;
		const gchar* _tmp23_ = NULL;
		gchar* _tmp24_ = NULL;
		gchar* _tmp25_ = NULL;
		gchar* _tmp26_ = NULL;
		_tmp21_ = comp;
		_tmp22_ = wixl_wix_component_get_Guid (_tmp21_);
		_tmp23_ = _tmp22_;
		_tmp24_ = g_strdup (_tmp23_);
		_tmp25_ = wixl_get_uuid (_tmp24_, &_inner_error_);
		_tmp20_ = _tmp25_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_free0 (uuid);
			_g_object_unref0 (dir);
			return;
		}
		_tmp26_ = _tmp20_;
		_tmp20_ = NULL;
		_g_free0 (uuid);
		uuid = _tmp26_;
		_g_free0 (_tmp20_);
	}
	_tmp27_ = comp;
	_tmp28_ = wixl_wix_component_get_Win64 (_tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = wixl_parse_yesno (_tmp29_, FALSE);
	if (_tmp30_) {
		gint _tmp31_ = 0;
		_tmp31_ = attr;
		attr = _tmp31_ | WIXL_WIX_BUILDER_COMPONENT_ATTRIBUTE_64BIT;
	}
	_tmp33_ = comp;
	_tmp34_ = _tmp33_->key;
	if (_tmp34_ != NULL) {
		WixlWixComponent* _tmp35_ = NULL;
		WixlWixKeyElement* _tmp36_ = NULL;
		const gchar* _tmp37_ = NULL;
		const gchar* _tmp38_ = NULL;
		_tmp35_ = comp;
		_tmp36_ = _tmp35_->key;
		_tmp37_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp36_);
		_tmp38_ = _tmp37_;
		_tmp32_ = _tmp38_;
	} else {
		_tmp32_ = NULL;
	}
	_tmp39_ = self->priv->db;
	_tmp40_ = _tmp39_->table_component;
	_tmp41_ = comp;
	_tmp42_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp41_);
	_tmp43_ = _tmp42_;
	_tmp44_ = uuid;
	_tmp45_ = dir;
	_tmp46_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp45_);
	_tmp47_ = _tmp46_;
	_tmp48_ = attr;
	wixl_msi_table_component_add (_tmp40_, _tmp43_, _tmp44_, _tmp47_, _tmp48_, _tmp32_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlVisitState _tmp1_ = 0;
	WixlVisitState _tmp9_ = 0;
	gint display = 0;
	WixlWixFeature* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	gint _tmp24_ = 0;
	const gchar* _tmp29_ = NULL;
	WixlWixFeature* _tmp30_ = NULL;
	WixlWixElement* _tmp31_ = NULL;
	gchar* parent = NULL;
	gchar* _tmp36_ = NULL;
	WixlMsiDatabase* _tmp37_ = NULL;
	WixlMsiTableFeature* _tmp38_ = NULL;
	WixlWixFeature* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	const gchar* _tmp41_ = NULL;
	gint _tmp42_ = 0;
	WixlWixFeature* _tmp43_ = NULL;
	const gchar* _tmp44_ = NULL;
	const gchar* _tmp45_ = NULL;
	gint _tmp46_ = 0;
	const gchar* _tmp47_ = NULL;
	WixlWixFeature* _tmp48_ = NULL;
	const gchar* _tmp49_ = NULL;
	const gchar* _tmp50_ = NULL;
	WixlWixFeature* _tmp51_ = NULL;
	const gchar* _tmp52_ = NULL;
	const gchar* _tmp53_ = NULL;
	WixlWixFeature* _tmp54_ = NULL;
	const gchar* _tmp55_ = NULL;
	const gchar* _tmp56_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (feature != NULL);
	_tmp1_ = state;
	if (_tmp1_ == WIXL_VISIT_STATE_ENTER) {
		WixlWixFeature* _tmp2_ = NULL;
		_tmp2_ = self->priv->feature_root;
		_tmp0_ = _tmp2_ == NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		WixlWixFeature* _tmp3_ = NULL;
		WixlWixFeature* _tmp4_ = NULL;
		self->priv->feature_display = 0;
		_tmp3_ = feature;
		_tmp4_ = _g_object_ref0 (_tmp3_);
		_g_object_unref0 (self->priv->feature_root);
		self->priv->feature_root = _tmp4_;
	} else {
		gboolean _tmp5_ = FALSE;
		WixlVisitState _tmp6_ = 0;
		_tmp6_ = state;
		if (_tmp6_ == WIXL_VISIT_STATE_LEAVE) {
			WixlWixFeature* _tmp7_ = NULL;
			WixlWixFeature* _tmp8_ = NULL;
			_tmp7_ = self->priv->feature_root;
			_tmp8_ = feature;
			_tmp5_ = _tmp7_ == _tmp8_;
		} else {
			_tmp5_ = FALSE;
		}
		if (_tmp5_) {
			_g_object_unref0 (self->priv->feature_root);
			self->priv->feature_root = NULL;
		}
	}
	_tmp9_ = state;
	if (_tmp9_ != WIXL_VISIT_STATE_ENTER) {
		return;
	}
	display = (gint) WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE;
	_tmp10_ = feature;
	_tmp11_ = wixl_wix_feature_get_Display (_tmp10_);
	_tmp12_ = _tmp11_;
	if (_tmp12_ != NULL) {
		{
			WixlWixBuilderFeatureDisplay _tmp13_ = 0;
			WixlWixFeature* _tmp14_ = NULL;
			const gchar* _tmp15_ = NULL;
			const gchar* _tmp16_ = NULL;
			WixlWixBuilderFeatureDisplay _tmp17_ = 0;
			_tmp14_ = feature;
			_tmp15_ = wixl_wix_feature_get_Display (_tmp14_);
			_tmp16_ = _tmp15_;
			_tmp17_ = wixl_wix_builder_feature_display_from_string (_tmp16_, &_inner_error_);
			_tmp13_ = _tmp17_;
			if (G_UNLIKELY (_inner_error_ != NULL)) {
				goto __catch0_g_error;
			}
			display = (gint) _tmp13_;
		}
		goto __finally0;
		__catch0_g_error:
		{
			GError* _error_ = NULL;
			WixlWixFeature* _tmp18_ = NULL;
			const gchar* _tmp19_ = NULL;
			const gchar* _tmp20_ = NULL;
			gint _tmp21_ = 0;
			gint _tmp22_ = 0;
			_error_ = _inner_error_;
			_inner_error_ = NULL;
			_tmp18_ = feature;
			_tmp19_ = wixl_wix_feature_get_Display (_tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = atoi (_tmp20_);
			display = _tmp21_;
			_tmp22_ = display;
			if (_tmp22_ != 0) {
				gint _tmp23_ = 0;
				_tmp23_ = display;
				self->priv->feature_display = _tmp23_;
			}
			_g_error_free0 (_error_);
		}
		__finally0:
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			return;
		}
	}
	_tmp24_ = display;
	switch (_tmp24_) {
		case WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE:
		{
			gint _tmp25_ = 0;
			gint _tmp26_ = 0;
			_tmp25_ = self->priv->feature_display;
			self->priv->feature_display = (_tmp25_ | 1) + 1;
			_tmp26_ = self->priv->feature_display;
			display = _tmp26_;
			break;
		}
		case WIXL_WIX_BUILDER_FEATURE_DISPLAY_EXPAND:
		{
			gint _tmp27_ = 0;
			gint _tmp28_ = 0;
			_tmp27_ = self->priv->feature_display;
			self->priv->feature_display = (_tmp27_ + 1) | 1;
			_tmp28_ = self->priv->feature_display;
			display = _tmp28_;
			break;
		}
		default:
		break;
	}
	_tmp30_ = feature;
	_tmp31_ = ((WixlWixNode*) _tmp30_)->parent;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp31_, WIXL_TYPE_WIX_FEATURE)) {
		WixlWixFeature* _tmp32_ = NULL;
		WixlWixElement* _tmp33_ = NULL;
		const gchar* _tmp34_ = NULL;
		const gchar* _tmp35_ = NULL;
		_tmp32_ = feature;
		_tmp33_ = ((WixlWixNode*) _tmp32_)->parent;
		_tmp34_ = wixl_wix_element_get_Id (_tmp33_);
		_tmp35_ = _tmp34_;
		_tmp29_ = _tmp35_;
	} else {
		_tmp29_ = NULL;
	}
	_tmp36_ = g_strdup (_tmp29_);
	parent = _tmp36_;
	_tmp37_ = self->priv->db;
	_tmp38_ = _tmp37_->table_feature;
	_tmp39_ = feature;
	_tmp40_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = display;
	_tmp43_ = feature;
	_tmp44_ = wixl_wix_feature_get_Level (_tmp43_);
	_tmp45_ = _tmp44_;
	_tmp46_ = atoi (_tmp45_);
	_tmp47_ = parent;
	_tmp48_ = feature;
	_tmp49_ = wixl_wix_feature_get_Title (_tmp48_);
	_tmp50_ = _tmp49_;
	_tmp51_ = feature;
	_tmp52_ = wixl_wix_feature_get_Description (_tmp51_);
	_tmp53_ = _tmp52_;
	_tmp54_ = feature;
	_tmp55_ = wixl_wix_feature_get_ConfigurableDirectory (_tmp54_);
	_tmp56_ = _tmp55_;
	wixl_msi_table_feature_add (_tmp38_, _tmp41_, _tmp42_, _tmp46_, 0, _tmp47_, _tmp50_, _tmp53_, _tmp56_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (parent);
		return;
	}
	_g_free0 (parent);
}


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


static void wixl_wix_builder_feature_add_component_group (WixlWixBuilder* self, WixlWixFeature* feature, WixlWixComponentGroup* group, GError** error) {
	WixlWixComponentGroup* _tmp0_ = NULL;
	GList* _tmp1_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (feature != NULL);
	g_return_if_fail (group != NULL);
	_tmp0_ = group;
	_tmp1_ = ((WixlWixElement*) _tmp0_)->children;
	{
		GList* node_collection = NULL;
		GList* node_it = NULL;
		node_collection = _tmp1_;
		for (node_it = node_collection; node_it != NULL; node_it = node_it->next) {
			WixlWixNode* _tmp2_ = NULL;
			WixlWixNode* node = NULL;
			_tmp2_ = _g_object_ref0 ((WixlWixNode*) node_it->data);
			node = _tmp2_;
			{
				WixlWixElement* child = NULL;
				WixlWixNode* _tmp3_ = NULL;
				WixlWixElement* _tmp4_ = NULL;
				WixlWixElement* _tmp5_ = NULL;
				_tmp3_ = node;
				_tmp4_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, WIXL_TYPE_WIX_ELEMENT) ? ((WixlWixElement*) _tmp3_) : NULL);
				child = _tmp4_;
				_tmp5_ = child;
				if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, WIXL_TYPE_WIX_COMPONENT_GROUP_REF)) {
					WixlWixComponentGroup* _tmp6_ = NULL;
					WixlWixElement* _tmp7_ = NULL;
					gpointer _tmp8_ = NULL;
					WixlWixFeature* _tmp9_ = NULL;
					_tmp7_ = child;
					_tmp8_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT_GROUP, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp7_, &_inner_error_);
					_tmp6_ = (WixlWixComponentGroup*) _tmp8_;
					if (G_UNLIKELY (_inner_error_ != NULL)) {
						g_propagate_error (error, _inner_error_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					_tmp9_ = feature;
					wixl_wix_builder_feature_add_component_group (self, _tmp9_, _tmp6_, &_inner_error_);
					if (G_UNLIKELY (_inner_error_ != NULL)) {
						g_propagate_error (error, _inner_error_);
						_g_object_unref0 (_tmp6_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					_g_object_unref0 (_tmp6_);
				} else {
					WixlWixComponent* _tmp10_ = NULL;
					WixlWixElement* _tmp11_ = NULL;
					gpointer _tmp12_ = NULL;
					WixlWixFeature* _tmp13_ = NULL;
					_tmp11_ = child;
					_tmp12_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp11_, &_inner_error_);
					_tmp10_ = (WixlWixComponent*) _tmp12_;
					if (G_UNLIKELY (_inner_error_ != NULL)) {
						g_propagate_error (error, _inner_error_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					_tmp13_ = feature;
					wixl_wix_builder_feature_add_component (self, _tmp13_, _tmp10_, &_inner_error_);
					if (G_UNLIKELY (_inner_error_ != NULL)) {
						g_propagate_error (error, _inner_error_);
						_g_object_unref0 (_tmp10_);
						_g_object_unref0 (child);
						_g_object_unref0 (node);
						return;
					}
					_g_object_unref0 (_tmp10_);
				}
				_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;
	WixlWixComponentRef* _tmp0_ = NULL;
	gpointer _tmp1_ = NULL;
	WixlWixComponentRef* _tmp2_ = NULL;
	WixlWixElement* _tmp3_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ref != NULL);
	_tmp0_ = ref;
	_tmp1_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, (WixlWixElement*) _tmp0_, &_inner_error_);
	component = (WixlWixComponent*) _tmp1_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp2_ = ref;
	_tmp3_ = ((WixlWixNode*) _tmp2_)->parent;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, WIXL_TYPE_WIX_FEATURE)) {
		WixlWixComponentRef* _tmp4_ = NULL;
		WixlWixElement* _tmp5_ = NULL;
		WixlWixComponent* _tmp6_ = NULL;
		_tmp4_ = ref;
		_tmp5_ = ((WixlWixNode*) _tmp4_)->parent;
		_tmp6_ = component;
		wixl_wix_builder_feature_add_component (self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, WIXL_TYPE_WIX_FEATURE) ? ((WixlWixFeature*) _tmp5_) : NULL, _tmp6_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (component);
			return;
		}
	} else {
		WixlWixComponentRef* _tmp7_ = NULL;
		WixlWixElement* _tmp8_ = NULL;
		_tmp7_ = ref;
		_tmp8_ = ((WixlWixNode*) _tmp7_)->parent;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, WIXL_TYPE_WIX_COMPONENT_GROUP)) {
		} else {
			WixlWixComponentRef* _tmp9_ = NULL;
			WixlWixElement* _tmp10_ = NULL;
			const gchar* _tmp11_ = NULL;
			_tmp9_ = ref;
			_tmp10_ = ((WixlWixNode*) _tmp9_)->parent;
			_tmp11_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp10_))->name;
			g_warning ("builder.vala:505: unhandled parent type %s", _tmp11_);
		}
	}
	_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;
	WixlWixComponentGroupRef* _tmp0_ = NULL;
	gpointer _tmp1_ = NULL;
	WixlWixComponentGroupRef* _tmp2_ = NULL;
	WixlWixElement* _tmp3_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ref != NULL);
	_tmp0_ = ref;
	_tmp1_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_COMPONENT_GROUP, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, (WixlWixElement*) _tmp0_, &_inner_error_);
	group = (WixlWixComponentGroup*) _tmp1_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp2_ = ref;
	_tmp3_ = ((WixlWixNode*) _tmp2_)->parent;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, WIXL_TYPE_WIX_FEATURE)) {
		WixlWixFeature* feature = NULL;
		WixlWixComponentGroupRef* _tmp4_ = NULL;
		WixlWixElement* _tmp5_ = NULL;
		WixlWixFeature* _tmp6_ = NULL;
		WixlWixFeature* _tmp7_ = NULL;
		WixlWixComponentGroup* _tmp8_ = NULL;
		_tmp4_ = ref;
		_tmp5_ = ((WixlWixNode*) _tmp4_)->parent;
		_tmp6_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, WIXL_TYPE_WIX_FEATURE) ? ((WixlWixFeature*) _tmp5_) : NULL);
		feature = _tmp6_;
		_tmp7_ = feature;
		_tmp8_ = group;
		wixl_wix_builder_feature_add_component_group (self, _tmp7_, _tmp8_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (feature);
			_g_object_unref0 (group);
			return;
		}
		_g_object_unref0 (feature);
	} else {
		WixlWixComponentGroupRef* _tmp9_ = NULL;
		WixlWixElement* _tmp10_ = NULL;
		_tmp9_ = ref;
		_tmp10_ = ((WixlWixNode*) _tmp9_)->parent;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, WIXL_TYPE_WIX_COMPONENT_GROUP)) {
		} else {
			WixlWixComponentGroupRef* _tmp11_ = NULL;
			WixlWixElement* _tmp12_ = NULL;
			const gchar* _tmp13_ = NULL;
			_tmp11_ = ref;
			_tmp12_ = ((WixlWixNode*) _tmp11_)->parent;
			_tmp13_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp12_))->name;
			g_warning ("builder.vala:517: unhandled parent type %s", _tmp13_);
		}
	}
	_g_object_unref0 (group);
}


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


static void wixl_wix_builder_real_visit_remove_folder (WixlWixNodeVisitor* base, WixlWixRemoveFolder* rm, GError** error) {
	WixlWixBuilder * self;
	WixlWixBuilderInstallMode on = 0;
	WixlWixRemoveFolder* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	WixlWixBuilderInstallMode _tmp3_ = 0;
	WixlWixComponent* comp = NULL;
	WixlWixRemoveFolder* _tmp4_ = NULL;
	WixlWixElement* _tmp5_ = NULL;
	WixlWixComponent* _tmp6_ = NULL;
	WixlWixDirectory* dir = NULL;
	WixlWixComponent* _tmp7_ = NULL;
	WixlWixDirectory* _tmp8_ = NULL;
	WixlMsiDatabase* _tmp9_ = NULL;
	WixlMsiTableRemoveFile* _tmp10_ = NULL;
	WixlWixRemoveFolder* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	const gchar* _tmp13_ = NULL;
	WixlWixComponent* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	const gchar* _tmp16_ = NULL;
	WixlWixDirectory* _tmp17_ = NULL;
	const gchar* _tmp18_ = NULL;
	const gchar* _tmp19_ = NULL;
	WixlWixBuilderInstallMode _tmp20_ = 0;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (rm != NULL);
	_tmp0_ = rm;
	_tmp1_ = wixl_wix_remove_folder_get_On (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = wixl_wix_builder_install_mode_from_string (_tmp2_, &_inner_error_);
	on = _tmp3_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp4_ = rm;
	_tmp5_ = ((WixlWixNode*) _tmp4_)->parent;
	_tmp6_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp5_) : NULL);
	comp = _tmp6_;
	_tmp7_ = comp;
	_tmp8_ = wixl_wix_builder_get_directory (self, _tmp7_, &_inner_error_);
	dir = _tmp8_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (comp);
		return;
	}
	_tmp9_ = self->priv->db;
	_tmp10_ = _tmp9_->table_remove_file;
	_tmp11_ = rm;
	_tmp12_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = comp;
	_tmp15_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = dir;
	_tmp18_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = on;
	wixl_msi_table_remove_file_add (_tmp10_, _tmp13_, _tmp16_, _tmp19_, (gint) _tmp20_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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) {
	WixlWixComponent* _tmp0_ = NULL;
	WixlWixComponent* _tmp3_ = NULL;
	gint _tmp4_ = 0;
	WixlWixKeyElement* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	const gchar* _tmp9_ = NULL;
	gboolean _tmp10_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (key != NULL);
	_tmp0_ = component;
	if (_tmp0_ == NULL) {
		WixlWixKeyElement* _tmp1_ = NULL;
		WixlWixElement* _tmp2_ = NULL;
		_tmp1_ = key;
		_tmp2_ = ((WixlWixNode*) _tmp1_)->parent;
		component = G_TYPE_CHECK_INSTANCE_TYPE (_tmp2_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp2_) : NULL;
	}
	_tmp3_ = component;
	g_return_if_fail (_tmp3_ != NULL);
	_tmp4_ = self->priv->component_children_count;
	self->priv->component_children_count = _tmp4_ + 1;
	if (_tmp4_ == 0) {
		WixlWixKeyElement* _tmp5_ = NULL;
		WixlWixKeyElement* _tmp6_ = NULL;
		_tmp5_ = key;
		_tmp6_ = _g_object_ref0 (_tmp5_);
		_g_object_unref0 (self->priv->component_default_key);
		self->priv->component_default_key = _tmp6_;
	}
	_tmp7_ = key;
	_tmp8_ = wixl_wix_key_element_get_KeyPath (_tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = wixl_parse_yesno (_tmp9_, FALSE);
	if (_tmp10_) {
		WixlWixComponent* _tmp11_ = NULL;
		WixlWixKeyElement* _tmp12_ = NULL;
		WixlWixComponent* _tmp14_ = NULL;
		WixlWixKeyElement* _tmp15_ = NULL;
		WixlWixKeyElement* _tmp16_ = NULL;
		_g_object_unref0 (self->priv->component_default_key);
		self->priv->component_default_key = NULL;
		_tmp11_ = component;
		_tmp12_ = _tmp11_->key;
		if (_tmp12_ != NULL) {
			GError* _tmp13_ = NULL;
			_tmp13_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "multiple elements have keyPath='yes'");
			_inner_error_ = _tmp13_;
			g_propagate_error (error, _inner_error_);
			return;
		}
		_tmp14_ = component;
		_tmp15_ = key;
		_tmp16_ = _g_object_ref0 (_tmp15_);
		_g_object_unref0 (_tmp14_->key);
		_tmp14_->key = _tmp16_;
	}
}


static gchar string_get (const gchar* self, glong index) {
	gchar result = '\0';
	glong _tmp0_ = 0L;
	gchar _tmp1_ = '\0';
	g_return_val_if_fail (self != NULL, '\0');
	_tmp0_ = index;
	_tmp1_ = ((gchar*) self)[_tmp0_];
	result = _tmp1_;
	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_ = NULL;
	gchar* reg_root = NULL;
	gchar* _tmp1_ = NULL;
	WixlWixRegistryValue* _tmp2_ = NULL;
	WixlWixElement* _tmp3_ = NULL;
	WixlWixRegistryValue* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	const gchar* _tmp34_ = NULL;
	gchar* value = NULL;
	WixlWixRegistryValue* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	const gchar* _tmp41_ = NULL;
	gchar* _tmp42_ = NULL;
	WixlWixBuilderRegistryValueType t = 0;
	WixlWixRegistryValue* _tmp43_ = NULL;
	const gchar* _tmp44_ = NULL;
	const gchar* _tmp45_ = NULL;
	WixlWixBuilderRegistryValueType _tmp46_ = 0;
	WixlWixBuilderRegistryRoot r = 0;
	const gchar* _tmp47_ = NULL;
	gchar* _tmp48_ = NULL;
	gchar* _tmp49_ = NULL;
	WixlWixBuilderRegistryRoot _tmp50_ = 0;
	WixlWixBuilderRegistryRoot _tmp51_ = 0;
	WixlWixRegistryValue* _tmp52_ = NULL;
	const gchar* _tmp53_ = NULL;
	const gchar* _tmp54_ = NULL;
	WixlWixBuilderRegistryValueType _tmp71_ = 0;
	WixlMsiDatabase* _tmp82_ = NULL;
	WixlMsiTableRegistry* _tmp83_ = NULL;
	WixlWixRegistryValue* _tmp84_ = NULL;
	const gchar* _tmp85_ = NULL;
	const gchar* _tmp86_ = NULL;
	WixlWixBuilderRegistryRoot _tmp87_ = 0;
	const gchar* _tmp88_ = NULL;
	WixlWixComponent* _tmp89_ = NULL;
	const gchar* _tmp90_ = NULL;
	const gchar* _tmp91_ = NULL;
	WixlWixRegistryValue* _tmp92_ = NULL;
	const gchar* _tmp93_ = NULL;
	const gchar* _tmp94_ = NULL;
	const gchar* _tmp95_ = NULL;
	WixlWixRegistryValue* _tmp96_ = NULL;
	WixlWixComponent* _tmp97_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (reg != NULL);
	_tmp0_ = g_strdup ("");
	reg_key = _tmp0_;
	_tmp1_ = g_strdup ("");
	reg_root = _tmp1_;
	_tmp2_ = reg;
	_tmp3_ = ((WixlWixNode*) _tmp2_)->parent;
	if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, WIXL_TYPE_WIX_REGISTRY_KEY)) {
		WixlWixRegistryKey* regkey = NULL;
		WixlWixRegistryValue* _tmp4_ = NULL;
		WixlWixElement* _tmp5_ = NULL;
		WixlWixRegistryKey* _tmp6_ = NULL;
		WixlWixRegistryKey* _tmp7_ = NULL;
		WixlWixElement* _tmp8_ = NULL;
		WixlWixComponent* _tmp9_ = NULL;
		WixlWixRegistryKey* _tmp10_ = NULL;
		const gchar* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
		gchar* _tmp13_ = NULL;
		gchar* _tmp14_ = NULL;
		WixlWixRegistryValue* _tmp15_ = NULL;
		const gchar* _tmp16_ = NULL;
		const gchar* _tmp17_ = NULL;
		gchar* _tmp18_ = NULL;
		WixlWixRegistryKey* _tmp19_ = NULL;
		const gchar* _tmp20_ = NULL;
		const gchar* _tmp21_ = NULL;
		gchar* _tmp22_ = NULL;
		_tmp4_ = reg;
		_tmp5_ = ((WixlWixNode*) _tmp4_)->parent;
		_tmp6_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, WIXL_TYPE_WIX_REGISTRY_KEY) ? ((WixlWixRegistryKey*) _tmp5_) : NULL);
		regkey = _tmp6_;
		_tmp7_ = regkey;
		_tmp8_ = ((WixlWixNode*) _tmp7_)->parent;
		_tmp9_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp8_) : NULL);
		_g_object_unref0 (comp);
		comp = _tmp9_;
		_tmp10_ = regkey;
		_tmp11_ = wixl_wix_registry_key_get_Key (_tmp10_);
		_tmp12_ = _tmp11_;
		_tmp13_ = g_strconcat (_tmp12_, "\\", NULL);
		_tmp14_ = _tmp13_;
		_tmp15_ = reg;
		_tmp16_ = wixl_wix_registry_value_get_Key (_tmp15_);
		_tmp17_ = _tmp16_;
		_tmp18_ = g_strconcat (_tmp14_, _tmp17_, NULL);
		_g_free0 (reg_key);
		reg_key = _tmp18_;
		_g_free0 (_tmp14_);
		_tmp19_ = regkey;
		_tmp20_ = wixl_wix_registry_key_get_Root (_tmp19_);
		_tmp21_ = _tmp20_;
		_tmp22_ = g_strdup (_tmp21_);
		_g_free0 (reg_root);
		reg_root = _tmp22_;
		_g_object_unref0 (regkey);
	} else {
		WixlWixRegistryValue* _tmp23_ = NULL;
		WixlWixElement* _tmp24_ = NULL;
		_tmp23_ = reg;
		_tmp24_ = ((WixlWixNode*) _tmp23_)->parent;
		if (G_TYPE_CHECK_INSTANCE_TYPE (_tmp24_, WIXL_TYPE_WIX_COMPONENT)) {
			WixlWixRegistryValue* _tmp25_ = NULL;
			WixlWixElement* _tmp26_ = NULL;
			WixlWixComponent* _tmp27_ = NULL;
			WixlWixRegistryValue* _tmp28_ = NULL;
			const gchar* _tmp29_ = NULL;
			const gchar* _tmp30_ = NULL;
			gchar* _tmp31_ = NULL;
			_tmp25_ = reg;
			_tmp26_ = ((WixlWixNode*) _tmp25_)->parent;
			_tmp27_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp26_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp26_) : NULL);
			_g_object_unref0 (comp);
			comp = _tmp27_;
			_tmp28_ = reg;
			_tmp29_ = wixl_wix_registry_value_get_Key (_tmp28_);
			_tmp30_ = _tmp29_;
			_tmp31_ = g_strdup (_tmp30_);
			_g_free0 (reg_key);
			reg_key = _tmp31_;
		} else {
			g_warning ("builder.vala:612: unhandled parent kind");
			_g_free0 (reg_root);
			_g_free0 (reg_key);
			_g_object_unref0 (comp);
			return;
		}
	}
	_tmp32_ = reg;
	_tmp33_ = wixl_wix_registry_value_get_Root (_tmp32_);
	_tmp34_ = _tmp33_;
	if (_tmp34_ != NULL) {
		WixlWixRegistryValue* _tmp35_ = NULL;
		const gchar* _tmp36_ = NULL;
		const gchar* _tmp37_ = NULL;
		gchar* _tmp38_ = NULL;
		_tmp35_ = reg;
		_tmp36_ = wixl_wix_registry_value_get_Root (_tmp35_);
		_tmp37_ = _tmp36_;
		_tmp38_ = g_strdup (_tmp37_);
		_g_free0 (reg_root);
		reg_root = _tmp38_;
	}
	_tmp39_ = reg;
	_tmp40_ = wixl_wix_registry_value_get_Value (_tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = g_strdup (_tmp41_);
	value = _tmp42_;
	_tmp43_ = reg;
	_tmp44_ = wixl_wix_registry_value_get_Type (_tmp43_);
	_tmp45_ = _tmp44_;
	_tmp46_ = wixl_wix_builder_registry_value_type_from_string (_tmp45_, &_inner_error_);
	t = _tmp46_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (value);
		_g_free0 (reg_root);
		_g_free0 (reg_key);
		_g_object_unref0 (comp);
		return;
	}
	_tmp47_ = reg_root;
	_tmp48_ = g_utf8_strdown (_tmp47_, (gssize) -1);
	_tmp49_ = _tmp48_;
	_tmp50_ = wixl_wix_builder_registry_root_from_string (_tmp49_, &_inner_error_);
	_tmp51_ = _tmp50_;
	_g_free0 (_tmp49_);
	r = _tmp51_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (value);
		_g_free0 (reg_root);
		_g_free0 (reg_key);
		_g_object_unref0 (comp);
		return;
	}
	_tmp52_ = reg;
	_tmp53_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp52_);
	_tmp54_ = _tmp53_;
	if (_tmp54_ == NULL) {
		gchar* _tmp55_ = NULL;
		WixlWixRegistryValue* _tmp56_ = NULL;
		const gchar* _tmp57_ = NULL;
		const gchar* _tmp58_ = NULL;
		WixlWixRegistryValue* _tmp63_ = NULL;
		WixlWixComponent* _tmp64_ = NULL;
		const gchar* _tmp65_ = NULL;
		const gchar* _tmp66_ = NULL;
		const gchar* _tmp67_ = NULL;
		const gchar* _tmp68_ = NULL;
		gchar* _tmp69_ = NULL;
		gchar* _tmp70_ = NULL;
		_tmp56_ = reg;
		_tmp57_ = wixl_wix_registry_value_get_Name (_tmp56_);
		_tmp58_ = _tmp57_;
		if (_tmp58_ != NULL) {
			WixlWixRegistryValue* _tmp59_ = NULL;
			const gchar* _tmp60_ = NULL;
			const gchar* _tmp61_ = NULL;
			gchar* _tmp62_ = NULL;
			_tmp59_ = reg;
			_tmp60_ = wixl_wix_registry_value_get_Name (_tmp59_);
			_tmp61_ = _tmp60_;
			_tmp62_ = g_utf8_strdown (_tmp61_, (gssize) -1);
			_g_free0 (_tmp55_);
			_tmp55_ = _tmp62_;
		} else {
			_g_free0 (_tmp55_);
			_tmp55_ = NULL;
		}
		_tmp63_ = reg;
		_tmp64_ = comp;
		_tmp65_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp64_);
		_tmp66_ = _tmp65_;
		_tmp67_ = reg_root;
		_tmp68_ = reg_key;
		_tmp69_ = wixl_generate_id ("reg", (guint) 4, _tmp66_, _tmp67_, _tmp68_, _tmp55_, NULL);
		_tmp70_ = _tmp69_;
		wixl_wix_element_set_Id ((WixlWixElement*) _tmp63_, _tmp70_);
		_g_free0 (_tmp70_);
		_g_free0 (_tmp55_);
	}
	_tmp71_ = t;
	switch (_tmp71_) {
		case WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_INTEGER:
		{
			const gchar* _tmp72_ = NULL;
			gchar* _tmp73_ = NULL;
			_tmp72_ = value;
			_tmp73_ = g_strconcat ("#", _tmp72_, NULL);
			_g_free0 (value);
			value = _tmp73_;
			break;
		}
		case WIXL_WIX_BUILDER_REGISTRY_VALUE_TYPE_STRING:
		{
			gchar* _tmp74_ = NULL;
			const gchar* _tmp75_ = NULL;
			gchar _tmp76_ = '\0';
			gchar* _tmp81_ = NULL;
			_tmp75_ = value;
			_tmp76_ = string_get (_tmp75_, (glong) 0);
			if (_tmp76_ == '#') {
				const gchar* _tmp77_ = NULL;
				gchar* _tmp78_ = NULL;
				_tmp77_ = value;
				_tmp78_ = g_strconcat ("#", _tmp77_, NULL);
				_g_free0 (_tmp74_);
				_tmp74_ = _tmp78_;
			} else {
				const gchar* _tmp79_ = NULL;
				gchar* _tmp80_ = NULL;
				_tmp79_ = value;
				_tmp80_ = g_strdup (_tmp79_);
				_g_free0 (_tmp74_);
				_tmp74_ = _tmp80_;
			}
			_tmp81_ = g_strdup (_tmp74_);
			_g_free0 (value);
			value = _tmp81_;
			_g_free0 (_tmp74_);
			break;
		}
		default:
		break;
	}
	_tmp82_ = self->priv->db;
	_tmp83_ = _tmp82_->table_registry;
	_tmp84_ = reg;
	_tmp85_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp84_);
	_tmp86_ = _tmp85_;
	_tmp87_ = r;
	_tmp88_ = reg_key;
	_tmp89_ = comp;
	_tmp90_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp89_);
	_tmp91_ = _tmp90_;
	_tmp92_ = reg;
	_tmp93_ = wixl_wix_registry_value_get_Name (_tmp92_);
	_tmp94_ = _tmp93_;
	_tmp95_ = value;
	wixl_msi_table_registry_add (_tmp83_, _tmp86_, (gint) _tmp87_, _tmp88_, _tmp91_, _tmp94_, _tmp95_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (value);
		_g_free0 (reg_root);
		_g_free0 (reg_key);
		_g_object_unref0 (comp);
		return;
	}
	_tmp96_ = reg;
	_tmp97_ = comp;
	wixl_wix_builder_visit_key_element (self, (WixlWixKeyElement*) _tmp96_, _tmp97_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	GFile* result = NULL;
	GList* _tmp0_ = NULL;
	const gchar* _tmp13_ = NULL;
	GError* _tmp14_ = NULL;
	GError * _inner_error_ = 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_ = NULL;
			GFile* p = NULL;
			_tmp1_ = _g_object_ref0 ((GFile*) p_it->data);
			p = _tmp1_;
			{
				GFile* file = NULL;
				GFile* _tmp2_ = NULL;
				const gchar* _tmp3_ = NULL;
				GFile* _tmp4_ = NULL;
				_tmp2_ = p;
				_tmp3_ = name;
				_tmp4_ = g_file_get_child (_tmp2_, _tmp3_);
				file = _tmp4_;
				{
					GFileInfo* _tmp5_ = NULL;
					GFile* _tmp6_ = NULL;
					GFileInfo* _tmp7_ = NULL;
					GFileInfo* _tmp8_ = NULL;
					GFileInfo* _tmp9_ = NULL;
					_tmp6_ = file;
					_tmp7_ = g_file_query_info (_tmp6_, "standard::*", 0, NULL, &_inner_error_);
					_tmp5_ = _tmp7_;
					if (G_UNLIKELY (_inner_error_ != NULL)) {
						if (_inner_error_->domain == G_IO_ERROR) {
							goto __catch1_g_io_error;
						}
						goto __finally1;
					}
					_tmp8_ = _tmp5_;
					_tmp5_ = NULL;
					_g_object_unref0 (_vala_info);
					_vala_info = _tmp8_;
					_tmp9_ = _vala_info;
					if (_tmp9_ != NULL) {
						result = file;
						_g_object_unref0 (_tmp5_);
						_g_object_unref0 (p);
						if (info) {
							*info = _vala_info;
						} else {
							_g_object_unref0 (_vala_info);
						}
						return result;
					}
					_g_object_unref0 (_tmp5_);
				}
				goto __finally1;
				__catch1_g_io_error:
				{
					GError* _error_ = NULL;
					GError* _tmp10_ = NULL;
					GError* _tmp11_ = NULL;
					GError* _tmp12_ = NULL;
					_error_ = _inner_error_;
					_inner_error_ = NULL;
					_tmp10_ = _error_;
					if (g_error_matches (_tmp10_, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) {
						_g_error_free0 (_error_);
						_g_object_unref0 (file);
						_g_object_unref0 (p);
						continue;
					}
					_tmp11_ = _error_;
					_tmp12_ = _g_error_copy0 (_tmp11_);
					_inner_error_ = _tmp12_;
					_g_error_free0 (_error_);
					goto __finally1;
				}
				__finally1:
				if (G_UNLIKELY (_inner_error_ != NULL)) {
					g_propagate_error (error, _inner_error_);
					_g_object_unref0 (file);
					_g_object_unref0 (p);
					return NULL;
				}
				_g_object_unref0 (file);
				_g_object_unref0 (p);
			}
		}
	}
	_tmp13_ = name;
	_tmp14_ = g_error_new (WIXL_ERROR, WIXL_ERROR_FAILED, "Couldn't find file %s", _tmp13_);
	_inner_error_ = _tmp14_;
	g_propagate_error (error, _inner_error_);
	return NULL;
}


static void wixl_wix_builder_real_visit_file (WixlWixNodeVisitor* base, WixlWixFile* file, GError** error) {
	WixlWixBuilder * self;
	const gchar* _tmp0_ = NULL;
	WixlWixFile* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	WixlWixFile* _tmp4_ = NULL;
	WixlWixFile* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gchar* name = NULL;
	WixlWixFile* _tmp8_ = NULL;
	gchar* _tmp9_ = NULL;
	const gchar* _tmp10_ = NULL;
	WixlWixFile* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	const gchar* _tmp13_ = NULL;
	gchar* source = NULL;
	gchar* _tmp15_ = NULL;
	WixlWixComponent* comp = NULL;
	WixlWixFile* _tmp16_ = NULL;
	WixlWixElement* _tmp17_ = NULL;
	WixlWixComponent* _tmp18_ = NULL;
	GFileInfo* info = NULL;
	GFile* _tmp19_ = NULL;
	const gchar* _tmp20_ = NULL;
	GFileInfo* _tmp21_ = NULL;
	GFile* _tmp22_ = NULL;
	WixlWixFile* _tmp23_ = NULL;
	GFile* _tmp24_ = NULL;
	WixlWixBuilderFileAttribute attr = 0;
	LibmsiRecord* rec = NULL;
	WixlMsiDatabase* _tmp25_ = NULL;
	WixlMsiTableFile* _tmp26_ = NULL;
	WixlWixFile* _tmp27_ = NULL;
	const gchar* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	WixlWixComponent* _tmp30_ = NULL;
	const gchar* _tmp31_ = NULL;
	const gchar* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	GFileInfo* _tmp34_ = NULL;
	gint64 _tmp35_ = 0LL;
	WixlWixBuilderFileAttribute _tmp36_ = 0;
	LibmsiRecord* _tmp37_ = NULL;
	LibmsiRecord* _tmp38_ = NULL;
	WixlWixFile* _tmp39_ = NULL;
	WixlWixFile* _tmp40_ = NULL;
	WixlWixFile* _tmp41_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (file != NULL);
	_tmp1_ = file;
	_tmp2_ = wixl_wix_file_get_DiskId (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp0_ = _tmp3_;
	if (_tmp0_ == NULL) {
		_tmp0_ = "1";
	}
	_tmp4_ = file;
	wixl_wix_file_set_DiskId (_tmp4_, _tmp0_);
	_tmp5_ = file;
	_tmp6_ = wixl_wix_file_get_DiskId (_tmp5_);
	_tmp7_ = _tmp6_;
	g_return_if_fail (g_strcmp0 (_tmp7_, "1") == 0);
	_tmp8_ = file;
	_tmp9_ = wixl_wix_key_element_path_name ((WixlWixKeyElement*) _tmp8_, &_inner_error_);
	name = _tmp9_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		return;
	}
	_tmp11_ = file;
	_tmp12_ = wixl_wix_file_get_Source (_tmp11_);
	_tmp13_ = _tmp12_;
	_tmp10_ = _tmp13_;
	if (_tmp10_ == NULL) {
		const gchar* _tmp14_ = NULL;
		_tmp14_ = name;
		_tmp10_ = _tmp14_;
	}
	_tmp15_ = g_strdup (_tmp10_);
	source = _tmp15_;
	_tmp16_ = file;
	_tmp17_ = ((WixlWixNode*) _tmp16_)->parent;
	_tmp18_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp17_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp17_) : NULL);
	comp = _tmp18_;
	_tmp20_ = source;
	_tmp22_ = wixl_wix_builder_find_file (self, _tmp20_, &_tmp21_, &_inner_error_);
	_g_object_unref0 (info);
	info = _tmp21_;
	_tmp19_ = _tmp22_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (info);
		_g_object_unref0 (comp);
		_g_free0 (source);
		_g_free0 (name);
		return;
	}
	_tmp23_ = file;
	_tmp24_ = _tmp19_;
	_tmp19_ = NULL;
	_g_object_unref0 (_tmp23_->file);
	_tmp23_->file = _tmp24_;
	attr = WIXL_WIX_BUILDER_FILE_ATTRIBUTE_VITAL;
	_tmp25_ = self->priv->db;
	_tmp26_ = _tmp25_->table_file;
	_tmp27_ = file;
	_tmp28_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = comp;
	_tmp31_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp30_);
	_tmp32_ = _tmp31_;
	_tmp33_ = name;
	_tmp34_ = info;
	_tmp35_ = g_file_info_get_size (_tmp34_);
	_tmp36_ = attr;
	_tmp37_ = wixl_msi_table_file_add (_tmp26_, _tmp29_, _tmp32_, _tmp33_, (gint) _tmp35_, (gint) _tmp36_, 1, &_inner_error_);
	rec = _tmp37_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (_tmp19_);
		_g_object_unref0 (info);
		_g_object_unref0 (comp);
		_g_free0 (source);
		_g_free0 (name);
		return;
	}
	_tmp38_ = rec;
	_tmp39_ = file;
	_tmp40_ = _g_object_ref0 (_tmp39_);
	g_object_set_data_full ((GObject*) _tmp38_, "wixfile", _tmp40_, g_object_unref);
	_tmp41_ = file;
	wixl_wix_builder_visit_key_element (self, (WixlWixKeyElement*) _tmp41_, NULL, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (rec);
		_g_object_unref0 (_tmp19_);
		_g_object_unref0 (info);
		_g_object_unref0 (comp);
		_g_free0 (source);
		_g_free0 (name);
		return;
	}
	_g_object_unref0 (rec);
	_g_object_unref0 (_tmp19_);
	_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;
	WixlWixShortcut* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gchar* _tmp3_ = NULL;
	WixlWixShortcut* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gboolean _tmp7_ = FALSE;
	WixlWixComponent* component = NULL;
	WixlWixShortcut* _tmp8_ = NULL;
	WixlWixComponent* _tmp9_ = NULL;
	gboolean _tmp10_ = FALSE;
	const gchar* _tmp11_ = NULL;
	LibmsiRecord* rec = NULL;
	WixlMsiDatabase* _tmp21_ = NULL;
	WixlMsiTableShortcut* _tmp22_ = NULL;
	WixlWixShortcut* _tmp23_ = NULL;
	const gchar* _tmp24_ = NULL;
	const gchar* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	WixlWixShortcut* _tmp27_ = NULL;
	const gchar* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	WixlWixComponent* _tmp30_ = NULL;
	const gchar* _tmp31_ = NULL;
	const gchar* _tmp32_ = NULL;
	LibmsiRecord* _tmp33_ = NULL;
	WixlWixShortcut* _tmp34_ = NULL;
	LibmsiRecord* _tmp35_ = NULL;
	LibmsiRecord* _tmp36_ = NULL;
	WixlWixShortcut* _tmp37_ = NULL;
	const gchar* _tmp38_ = NULL;
	const gchar* _tmp39_ = NULL;
	WixlWixShortcut* _tmp44_ = NULL;
	const gchar* _tmp45_ = NULL;
	const gchar* _tmp46_ = NULL;
	WixlWixShortcut* _tmp52_ = NULL;
	const gchar* _tmp53_ = NULL;
	const gchar* _tmp54_ = NULL;
	WixlWixShortcut* _tmp59_ = NULL;
	const gchar* _tmp60_ = NULL;
	const gchar* _tmp61_ = NULL;
	WixlWixShortcut* _tmp66_ = NULL;
	const gchar* _tmp67_ = NULL;
	const gchar* _tmp68_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (shortcut != NULL);
	_tmp0_ = shortcut;
	_tmp1_ = wixl_wix_shortcut_get_Directory (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = g_strdup (_tmp2_);
	directory = _tmp3_;
	_tmp4_ = shortcut;
	_tmp5_ = wixl_wix_shortcut_get_Advertise (_tmp4_);
	_tmp6_ = _tmp5_;
	_tmp7_ = wixl_parse_yesno (_tmp6_, TRUE);
	if (!_tmp7_) {
		g_message ("builder.vala:696: unimplemented");
	}
	_tmp8_ = shortcut;
	_tmp9_ = wixl_wix_shortcut_get_component (_tmp8_);
	component = _tmp9_;
	_tmp11_ = directory;
	if (_tmp11_ == NULL) {
		WixlWixShortcut* _tmp12_ = NULL;
		WixlWixElement* _tmp13_ = NULL;
		_tmp12_ = shortcut;
		_tmp13_ = ((WixlWixNode*) _tmp12_)->parent;
		_tmp10_ = G_TYPE_CHECK_INSTANCE_TYPE (_tmp13_, WIXL_TYPE_WIX_COMPONENT);
	} else {
		_tmp10_ = FALSE;
	}
	if (_tmp10_) {
		WixlWixDirectory* dir = NULL;
		WixlWixComponent* _tmp14_ = NULL;
		WixlWixElement* _tmp15_ = NULL;
		gpointer _tmp16_ = NULL;
		WixlWixDirectory* _tmp17_ = NULL;
		const gchar* _tmp18_ = NULL;
		const gchar* _tmp19_ = NULL;
		gchar* _tmp20_ = NULL;
		_tmp14_ = component;
		_tmp15_ = ((WixlWixNode*) _tmp14_)->parent;
		_tmp16_ = wixl_wix_resolver_resolve ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIRECTORY, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp15_, &_inner_error_);
		dir = (WixlWixDirectory*) _tmp16_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
		_tmp17_ = dir;
		_tmp18_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp17_);
		_tmp19_ = _tmp18_;
		_tmp20_ = g_strdup (_tmp19_);
		_g_free0 (directory);
		directory = _tmp20_;
		_g_object_unref0 (dir);
	}
	_tmp21_ = self->priv->db;
	_tmp22_ = _tmp21_->table_shortcut;
	_tmp23_ = shortcut;
	_tmp24_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp23_);
	_tmp25_ = _tmp24_;
	_tmp26_ = directory;
	_tmp27_ = shortcut;
	_tmp28_ = wixl_wix_shortcut_get_Name (_tmp27_);
	_tmp29_ = _tmp28_;
	_tmp30_ = component;
	_tmp31_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp30_);
	_tmp32_ = _tmp31_;
	_tmp33_ = wixl_msi_table_shortcut_add (_tmp22_, _tmp25_, _tmp26_, _tmp29_, _tmp32_, &_inner_error_);
	rec = _tmp33_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (component);
		_g_free0 (directory);
		return;
	}
	_tmp34_ = shortcut;
	_tmp35_ = rec;
	_tmp36_ = _g_object_ref0 (_tmp35_);
	_g_object_unref0 (_tmp34_->record);
	_tmp34_->record = _tmp36_;
	_tmp37_ = shortcut;
	_tmp38_ = wixl_wix_shortcut_get_Icon (_tmp37_);
	_tmp39_ = _tmp38_;
	if (_tmp39_ != NULL) {
		LibmsiRecord* _tmp40_ = NULL;
		WixlWixShortcut* _tmp41_ = NULL;
		const gchar* _tmp42_ = NULL;
		const gchar* _tmp43_ = NULL;
		_tmp40_ = rec;
		_tmp41_ = shortcut;
		_tmp42_ = wixl_wix_shortcut_get_Icon (_tmp41_);
		_tmp43_ = _tmp42_;
		wixl_msi_table_shortcut_set_icon (_tmp40_, _tmp43_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp44_ = shortcut;
	_tmp45_ = wixl_wix_shortcut_get_IconIndex (_tmp44_);
	_tmp46_ = _tmp45_;
	if (_tmp46_ != NULL) {
		LibmsiRecord* _tmp47_ = NULL;
		WixlWixShortcut* _tmp48_ = NULL;
		const gchar* _tmp49_ = NULL;
		const gchar* _tmp50_ = NULL;
		gint _tmp51_ = 0;
		_tmp47_ = rec;
		_tmp48_ = shortcut;
		_tmp49_ = wixl_wix_shortcut_get_IconIndex (_tmp48_);
		_tmp50_ = _tmp49_;
		_tmp51_ = atoi (_tmp50_);
		wixl_msi_table_shortcut_set_icon_index (_tmp47_, _tmp51_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp52_ = shortcut;
	_tmp53_ = wixl_wix_shortcut_get_WorkingDirectory (_tmp52_);
	_tmp54_ = _tmp53_;
	if (_tmp54_ != NULL) {
		LibmsiRecord* _tmp55_ = NULL;
		WixlWixShortcut* _tmp56_ = NULL;
		const gchar* _tmp57_ = NULL;
		const gchar* _tmp58_ = NULL;
		_tmp55_ = rec;
		_tmp56_ = shortcut;
		_tmp57_ = wixl_wix_shortcut_get_WorkingDirectory (_tmp56_);
		_tmp58_ = _tmp57_;
		wixl_msi_table_shortcut_set_working_dir (_tmp55_, _tmp58_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp59_ = shortcut;
	_tmp60_ = wixl_wix_shortcut_get_Target (_tmp59_);
	_tmp61_ = _tmp60_;
	if (_tmp61_ != NULL) {
		LibmsiRecord* _tmp62_ = NULL;
		WixlWixShortcut* _tmp63_ = NULL;
		const gchar* _tmp64_ = NULL;
		const gchar* _tmp65_ = NULL;
		_tmp62_ = rec;
		_tmp63_ = shortcut;
		_tmp64_ = wixl_wix_shortcut_get_Target (_tmp63_);
		_tmp65_ = _tmp64_;
		wixl_msi_table_shortcut_set_target (_tmp62_, _tmp65_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_object_unref0 (rec);
			_g_object_unref0 (component);
			_g_free0 (directory);
			return;
		}
	}
	_tmp66_ = shortcut;
	_tmp67_ = wixl_wix_shortcut_get_Description (_tmp66_);
	_tmp68_ = _tmp67_;
	if (_tmp68_ != NULL) {
		LibmsiRecord* _tmp69_ = NULL;
		WixlWixShortcut* _tmp70_ = NULL;
		const gchar* _tmp71_ = NULL;
		const gchar* _tmp72_ = NULL;
		_tmp69_ = rec;
		_tmp70_ = shortcut;
		_tmp71_ = wixl_wix_shortcut_get_Description (_tmp70_);
		_tmp72_ = _tmp71_;
		wixl_msi_table_shortcut_set_description (_tmp69_, _tmp72_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_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;
	WixlWixCondition* _tmp0_ = NULL;
	GList* _tmp1_ = NULL;
	guint _tmp2_ = 0U;
	WixlWixText* text = NULL;
	WixlWixCondition* _tmp3_ = NULL;
	GList* _tmp4_ = NULL;
	GList* _tmp5_ = NULL;
	gconstpointer _tmp6_ = NULL;
	WixlWixNode* _tmp7_ = NULL;
	WixlWixText* _tmp8_ = NULL;
	WixlMsiDatabase* _tmp9_ = NULL;
	WixlMsiTableLaunchCondition* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	WixlWixCondition* _tmp12_ = NULL;
	const gchar* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (condition != NULL);
	_tmp0_ = condition;
	_tmp1_ = ((WixlWixElement*) _tmp0_)->children;
	_tmp2_ = g_list_length (_tmp1_);
	g_return_if_fail (_tmp2_ == ((guint) 1));
	_tmp3_ = condition;
	_tmp4_ = ((WixlWixElement*) _tmp3_)->children;
	_tmp5_ = g_list_first (_tmp4_);
	_tmp6_ = _tmp5_->data;
	_tmp7_ = (WixlWixNode*) _tmp6_;
	_tmp8_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, WIXL_TYPE_WIX_TEXT) ? ((WixlWixText*) _tmp7_) : NULL);
	text = _tmp8_;
	_tmp9_ = self->priv->db;
	_tmp10_ = _tmp9_->table_launch_condition;
	_tmp11_ = text->Text;
	_tmp12_ = condition;
	_tmp13_ = wixl_wix_condition_get_Message (_tmp12_);
	_tmp14_ = _tmp13_;
	wixl_msi_table_launch_condition_add (_tmp10_, _tmp11_, _tmp14_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixUpgradeVersion* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixUpgrade* _tmp2_ = NULL;
	WixlWixBuilderUpgradeAttribute attributes = 0;
	WixlWixUpgradeVersion* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	gboolean _tmp6_ = FALSE;
	WixlWixUpgradeVersion* _tmp8_ = NULL;
	const gchar* _tmp9_ = NULL;
	const gchar* _tmp10_ = NULL;
	gboolean _tmp11_ = FALSE;
	gchar* _tmp13_ = NULL;
	WixlWixUpgrade* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	const gchar* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	WixlMsiDatabase* _tmp19_ = NULL;
	WixlMsiTableUpgrade* _tmp20_ = NULL;
	WixlWixUpgradeVersion* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	const gchar* _tmp23_ = NULL;
	WixlWixUpgradeVersion* _tmp24_ = NULL;
	const gchar* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	WixlWixBuilderUpgradeAttribute _tmp27_ = 0;
	WixlWixUpgradeVersion* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	const gchar* _tmp30_ = NULL;
	gchar** _tmp31_ = NULL;
	gint _tmp31__length1 = 0;
	WixlWixUpgradeVersion* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	const gchar* _tmp34_ = NULL;
	gchar* _tmp35_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (version != NULL);
	_tmp0_ = version;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_UPGRADE) ? ((WixlWixUpgrade*) _tmp1_) : NULL);
	upgrade = _tmp2_;
	attributes = 0;
	_tmp3_ = version;
	_tmp4_ = wixl_wix_upgrade_version_get_OnlyDetect (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = wixl_parse_yesno (_tmp5_, FALSE);
	if (_tmp6_) {
		WixlWixBuilderUpgradeAttribute _tmp7_ = 0;
		_tmp7_ = attributes;
		attributes = _tmp7_ | WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_ONLY_DETECT;
	}
	_tmp8_ = version;
	_tmp9_ = wixl_wix_upgrade_version_get_IncludeMinimum (_tmp8_);
	_tmp10_ = _tmp9_;
	_tmp11_ = wixl_parse_yesno (_tmp10_, TRUE);
	if (_tmp11_) {
		WixlWixBuilderUpgradeAttribute _tmp12_ = 0;
		_tmp12_ = attributes;
		attributes = _tmp12_ | WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MIN_INCLUSIVE;
	}
	_tmp14_ = upgrade;
	_tmp15_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp14_);
	_tmp16_ = _tmp15_;
	_tmp17_ = g_strdup (_tmp16_);
	_tmp18_ = wixl_get_uuid (_tmp17_, &_inner_error_);
	_tmp13_ = _tmp18_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (upgrade);
		return;
	}
	_tmp19_ = self->priv->db;
	_tmp20_ = _tmp19_->table_upgrade;
	_tmp21_ = version;
	_tmp22_ = wixl_wix_upgrade_version_get_Minimum (_tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = version;
	_tmp25_ = wixl_wix_upgrade_version_get_Maximum (_tmp24_);
	_tmp26_ = _tmp25_;
	_tmp27_ = attributes;
	_tmp28_ = version;
	_tmp29_ = wixl_wix_upgrade_version_get_Property (_tmp28_);
	_tmp30_ = _tmp29_;
	wixl_msi_table_upgrade_add (_tmp20_, _tmp13_, _tmp23_, _tmp26_, (gint) _tmp27_, _tmp30_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp13_);
		_g_object_unref0 (upgrade);
		return;
	}
	_tmp31_ = self->priv->secureProperties;
	_tmp31__length1 = self->priv->secureProperties_length1;
	_tmp32_ = version;
	_tmp33_ = wixl_wix_upgrade_version_get_Property (_tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = g_strdup (_tmp34_);
	_vala_array_add1 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp35_);
	_g_free0 (_tmp13_);
	_g_object_unref0 (upgrade);
}


static void wixl_wix_builder_real_visit_action (WixlWixNodeVisitor* base, WixlWixAction* action, GError** error) {
	WixlWixBuilder * self;
	WixlWixSequence* parent = NULL;
	WixlWixAction* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixSequence* _tmp2_ = NULL;
	WixlMsiTableSequence* table = NULL;
	WixlMsiDatabase* _tmp3_ = NULL;
	GHashTable* _tmp4_ = NULL;
	WixlWixSequence* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gconstpointer _tmp7_ = NULL;
	WixlMsiTable* _tmp8_ = NULL;
	WixlMsiTableSequence* _tmp9_ = NULL;
	WixlWixAction* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	WixlMsiTableSequenceAction* node = NULL;
	WixlMsiTableSequence* _tmp17_ = NULL;
	WixlWixAction* _tmp18_ = NULL;
	const gchar* _tmp19_ = NULL;
	WixlMsiTableSequenceAction* _tmp20_ = NULL;
	WixlMsiTableSequenceAction* _tmp21_ = NULL;
	WixlWixAction* _tmp22_ = NULL;
	WixlMsiTableSequenceAction* _tmp23_ = NULL;
	WixlWixAction* _tmp24_ = NULL;
	WixlWixAction* _tmp25_ = NULL;
	WixlWixAction* _tmp26_ = NULL;
	const gchar* _tmp27_ = NULL;
	const gchar* _tmp28_ = NULL;
	WixlWixAction* _tmp34_ = NULL;
	const gchar* _tmp35_ = NULL;
	const gchar* _tmp36_ = NULL;
	WixlWixAction* _tmp44_ = NULL;
	const gchar* _tmp45_ = NULL;
	const gchar* _tmp46_ = NULL;
	WixlWixAction* _tmp54_ = NULL;
	GList* _tmp55_ = NULL;
	guint _tmp56_ = 0U;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (action != NULL);
	_tmp0_ = action;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_SEQUENCE) ? ((WixlWixSequence*) _tmp1_) : NULL);
	parent = _tmp2_;
	_tmp3_ = self->priv->db;
	_tmp4_ = _tmp3_->tables;
	_tmp5_ = parent;
	_tmp6_ = WIXL_WIX_ELEMENT_CLASS (G_OBJECT_GET_CLASS (_tmp5_))->name;
	_tmp7_ = g_hash_table_lookup (_tmp4_, _tmp6_);
	_tmp8_ = (WixlMsiTable*) _tmp7_;
	_tmp9_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp8_, WIXL_TYPE_MSI_TABLE_SEQUENCE) ? ((WixlMsiTableSequence*) _tmp8_) : NULL);
	table = _tmp9_;
	_tmp10_ = action;
	_tmp11_ = _tmp10_->name;
	if (g_strcmp0 (_tmp11_, "Custom") == 0) {
		WixlWixAction* _tmp12_ = NULL;
		WixlWixAction* _tmp13_ = NULL;
		const gchar* _tmp14_ = NULL;
		const gchar* _tmp15_ = NULL;
		gchar* _tmp16_ = NULL;
		_tmp12_ = action;
		_tmp13_ = action;
		_tmp14_ = wixl_wix_action_get_Action (_tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = g_strdup (_tmp15_);
		_g_free0 (_tmp12_->name);
		_tmp12_->name = _tmp16_;
	}
	_tmp17_ = table;
	_tmp18_ = action;
	_tmp19_ = _tmp18_->name;
	_tmp20_ = wixl_msi_table_sequence_get_action (_tmp17_, _tmp19_);
	node = _tmp20_;
	_tmp21_ = node;
	_tmp22_ = _tmp21_->action;
	g_warn_if_fail (_tmp22_ == NULL);
	_tmp23_ = node;
	_tmp24_ = action;
	_tmp25_ = _g_object_ref0 (_tmp24_);
	_g_object_unref0 (_tmp23_->action);
	_tmp23_->action = _tmp25_;
	_tmp26_ = action;
	_tmp27_ = wixl_wix_action_get_Sequence (_tmp26_);
	_tmp28_ = _tmp27_;
	if (_tmp28_ != NULL) {
		WixlMsiTableSequenceAction* _tmp29_ = NULL;
		WixlWixAction* _tmp30_ = NULL;
		const gchar* _tmp31_ = NULL;
		const gchar* _tmp32_ = NULL;
		gint _tmp33_ = 0;
		_tmp29_ = node;
		_tmp30_ = action;
		_tmp31_ = wixl_wix_action_get_Sequence (_tmp30_);
		_tmp32_ = _tmp31_;
		_tmp33_ = atoi (_tmp32_);
		_tmp29_->sequence = _tmp33_;
	}
	_tmp34_ = action;
	_tmp35_ = wixl_wix_action_get_After (_tmp34_);
	_tmp36_ = _tmp35_;
	if (_tmp36_ != NULL) {
		WixlMsiTableSequenceAction* _tmp37_ = NULL;
		WixlMsiTableSequence* _tmp38_ = NULL;
		WixlWixAction* _tmp39_ = NULL;
		const gchar* _tmp40_ = NULL;
		const gchar* _tmp41_ = NULL;
		WixlMsiTableSequenceAction* _tmp42_ = NULL;
		WixlMsiTableSequenceAction* _tmp43_ = NULL;
		_tmp37_ = node;
		_tmp38_ = table;
		_tmp39_ = action;
		_tmp40_ = wixl_wix_action_get_After (_tmp39_);
		_tmp41_ = _tmp40_;
		_tmp42_ = wixl_msi_table_sequence_get_action (_tmp38_, _tmp41_);
		_tmp43_ = _tmp42_;
		wixl_msi_table_sequence_action_add_dep (_tmp37_, _tmp43_);
		_wixl_msi_table_sequence_action_unref0 (_tmp43_);
	}
	_tmp44_ = action;
	_tmp45_ = wixl_wix_action_get_Before (_tmp44_);
	_tmp46_ = _tmp45_;
	if (_tmp46_ != NULL) {
		WixlMsiTableSequenceAction* before = NULL;
		WixlMsiTableSequence* _tmp47_ = NULL;
		WixlWixAction* _tmp48_ = NULL;
		const gchar* _tmp49_ = NULL;
		const gchar* _tmp50_ = NULL;
		WixlMsiTableSequenceAction* _tmp51_ = NULL;
		WixlMsiTableSequenceAction* _tmp52_ = NULL;
		WixlMsiTableSequenceAction* _tmp53_ = NULL;
		_tmp47_ = table;
		_tmp48_ = action;
		_tmp49_ = wixl_wix_action_get_Before (_tmp48_);
		_tmp50_ = _tmp49_;
		_tmp51_ = wixl_msi_table_sequence_get_action (_tmp47_, _tmp50_);
		before = _tmp51_;
		_tmp52_ = before;
		_tmp53_ = node;
		wixl_msi_table_sequence_action_add_dep (_tmp52_, _tmp53_);
		_wixl_msi_table_sequence_action_unref0 (before);
	}
	_tmp54_ = action;
	_tmp55_ = ((WixlWixElement*) _tmp54_)->children;
	_tmp56_ = g_list_length (_tmp55_);
	if (_tmp56_ > ((guint) 0)) {
		WixlWixAction* _tmp57_ = NULL;
		GList* _tmp58_ = NULL;
		guint _tmp59_ = 0U;
		WixlWixText* text = NULL;
		WixlWixAction* _tmp60_ = NULL;
		GList* _tmp61_ = NULL;
		GList* _tmp62_ = NULL;
		gconstpointer _tmp63_ = NULL;
		WixlWixNode* _tmp64_ = NULL;
		WixlWixText* _tmp65_ = NULL;
		WixlMsiTableSequenceAction* _tmp66_ = NULL;
		WixlWixText* _tmp67_ = NULL;
		const gchar* _tmp68_ = NULL;
		gchar* _tmp69_ = NULL;
		_tmp57_ = action;
		_tmp58_ = ((WixlWixElement*) _tmp57_)->children;
		_tmp59_ = g_list_length (_tmp58_);
		g_return_if_fail (_tmp59_ == ((guint) 1));
		_tmp60_ = action;
		_tmp61_ = ((WixlWixElement*) _tmp60_)->children;
		_tmp62_ = g_list_first (_tmp61_);
		_tmp63_ = _tmp62_->data;
		_tmp64_ = (WixlWixNode*) _tmp63_;
		_tmp65_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp64_, WIXL_TYPE_WIX_TEXT) ? ((WixlWixText*) _tmp64_) : NULL);
		text = _tmp65_;
		_tmp66_ = node;
		_tmp67_ = text;
		_tmp68_ = _tmp67_->Text;
		_tmp69_ = g_strdup (_tmp68_);
		_g_free0 (_tmp66_->condition);
		_tmp66_->condition = _tmp69_;
		_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;
	WixlWixProgId* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	WixlWixComponent* comp = NULL;
	WixlWixProgId* _tmp4_ = NULL;
	WixlWixElement* _tmp5_ = NULL;
	WixlWixComponent* _tmp6_ = NULL;
	gchar* regid = NULL;
	const gchar* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	WixlWixProgId* _tmp9_ = NULL;
	const gchar* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	gchar* _tmp12_ = NULL;
	WixlMsiDatabase* _tmp13_ = NULL;
	WixlMsiTableRegistry* _tmp14_ = NULL;
	WixlWixProgId* _tmp15_ = NULL;
	const gchar* _tmp16_ = NULL;
	const gchar* _tmp17_ = NULL;
	const gchar* _tmp18_ = NULL;
	const gchar* _tmp19_ = NULL;
	WixlWixProgId* _tmp20_ = NULL;
	const gchar* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (progid != NULL);
	_tmp0_ = progid;
	_tmp1_ = wixl_wix_prog_id_get_Advertise (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = wixl_parse_yesno (_tmp2_, FALSE);
	g_return_if_fail (!_tmp3_);
	_tmp4_ = progid;
	_tmp5_ = ((WixlWixNode*) _tmp4_)->parent;
	_tmp6_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp5_) : NULL);
	comp = _tmp6_;
	_tmp7_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp8_ = _tmp7_;
	_tmp9_ = progid;
	_tmp10_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp9_);
	_tmp11_ = _tmp10_;
	_tmp12_ = wixl_generate_id ("reg", (guint) 2, _tmp8_, _tmp11_, NULL);
	regid = _tmp12_;
	_tmp13_ = self->priv->db;
	_tmp14_ = _tmp13_->table_registry;
	_tmp15_ = progid;
	_tmp16_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp15_);
	_tmp17_ = _tmp16_;
	_tmp18_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp19_ = _tmp18_;
	_tmp20_ = progid;
	_tmp21_ = wixl_wix_prog_id_get_Description (_tmp20_);
	_tmp22_ = _tmp21_;
	wixl_msi_table_registry_add (_tmp14_, regid, 0, _tmp17_, _tmp19_, NULL, _tmp22_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixExtension* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixProgId* _tmp2_ = NULL;
	WixlWixComponent* comp = NULL;
	WixlWixProgId* _tmp3_ = NULL;
	WixlWixElement* _tmp4_ = NULL;
	WixlWixComponent* _tmp5_ = NULL;
	WixlWixProgId* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	gboolean _tmp9_ = FALSE;
	gchar* regid = NULL;
	WixlWixComponent* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	WixlWixExtension* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	gchar* _tmp16_ = NULL;
	WixlMsiDatabase* _tmp17_ = NULL;
	WixlMsiTableRegistry* _tmp18_ = NULL;
	const gchar* _tmp19_ = NULL;
	WixlWixExtension* _tmp20_ = NULL;
	const gchar* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	gchar* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	WixlWixComponent* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	const gchar* _tmp27_ = NULL;
	WixlWixExtension* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	const gchar* _tmp30_ = NULL;
	WixlWixComponent* _tmp31_ = NULL;
	const gchar* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	WixlWixExtension* _tmp34_ = NULL;
	const gchar* _tmp35_ = NULL;
	const gchar* _tmp36_ = NULL;
	gchar* _tmp37_ = NULL;
	WixlMsiDatabase* _tmp38_ = NULL;
	WixlMsiTableRegistry* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	WixlWixExtension* _tmp41_ = NULL;
	const gchar* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	gchar* _tmp44_ = NULL;
	gchar* _tmp45_ = NULL;
	WixlWixComponent* _tmp46_ = NULL;
	const gchar* _tmp47_ = NULL;
	const gchar* _tmp48_ = NULL;
	WixlWixProgId* _tmp49_ = NULL;
	const gchar* _tmp50_ = NULL;
	const gchar* _tmp51_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ext != NULL);
	_tmp0_ = ext;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_PROG_ID) ? ((WixlWixProgId*) _tmp1_) : NULL);
	progid = _tmp2_;
	_tmp3_ = progid;
	_tmp4_ = ((WixlWixNode*) _tmp3_)->parent;
	_tmp5_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp4_) : NULL);
	comp = _tmp5_;
	_tmp6_ = progid;
	_tmp7_ = wixl_wix_prog_id_get_Advertise (_tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = wixl_parse_yesno (_tmp8_, FALSE);
	g_return_if_fail (!_tmp9_);
	_tmp10_ = comp;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = ext;
	_tmp14_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = wixl_generate_id ("reg", (guint) 3, _tmp12_, _tmp15_, "Content Type", NULL);
	regid = _tmp16_;
	_tmp17_ = self->priv->db;
	_tmp18_ = _tmp17_->table_registry;
	_tmp19_ = regid;
	_tmp20_ = ext;
	_tmp21_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = g_strconcat (".", _tmp22_, NULL);
	_tmp24_ = _tmp23_;
	_tmp25_ = comp;
	_tmp26_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp25_);
	_tmp27_ = _tmp26_;
	_tmp28_ = ext;
	_tmp29_ = wixl_wix_extension_get_ContentType (_tmp28_);
	_tmp30_ = _tmp29_;
	wixl_msi_table_registry_add (_tmp18_, _tmp19_, 0, _tmp24_, _tmp27_, "Content Type", _tmp30_, &_inner_error_);
	_g_free0 (_tmp24_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (regid);
		_g_object_unref0 (comp);
		_g_object_unref0 (progid);
		return;
	}
	_tmp31_ = comp;
	_tmp32_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp34_ = ext;
	_tmp35_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp34_);
	_tmp36_ = _tmp35_;
	_tmp37_ = wixl_generate_id ("reg", (guint) 2, _tmp33_, _tmp36_, NULL);
	_g_free0 (regid);
	regid = _tmp37_;
	_tmp38_ = self->priv->db;
	_tmp39_ = _tmp38_->table_registry;
	_tmp40_ = regid;
	_tmp41_ = ext;
	_tmp42_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp41_);
	_tmp43_ = _tmp42_;
	_tmp44_ = g_strconcat (".", _tmp43_, NULL);
	_tmp45_ = _tmp44_;
	_tmp46_ = comp;
	_tmp47_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp46_);
	_tmp48_ = _tmp47_;
	_tmp49_ = progid;
	_tmp50_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp49_);
	_tmp51_ = _tmp50_;
	wixl_msi_table_registry_add (_tmp39_, _tmp40_, 0, _tmp45_, _tmp48_, NULL, _tmp51_, &_inner_error_);
	_g_free0 (_tmp45_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixVerb* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	WixlWixExtension* ext = NULL;
	WixlWixVerb* _tmp3_ = NULL;
	WixlWixElement* _tmp4_ = NULL;
	WixlWixExtension* _tmp5_ = NULL;
	WixlWixProgId* progid = NULL;
	WixlWixExtension* _tmp6_ = NULL;
	WixlWixElement* _tmp7_ = NULL;
	WixlWixProgId* _tmp8_ = NULL;
	WixlWixComponent* comp = NULL;
	WixlWixProgId* _tmp9_ = NULL;
	WixlWixElement* _tmp10_ = NULL;
	WixlWixComponent* _tmp11_ = NULL;
	gchar* key = NULL;
	WixlWixProgId* _tmp12_ = NULL;
	const gchar* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	gchar* regid = NULL;
	WixlWixComponent* _tmp16_ = NULL;
	const gchar* _tmp17_ = NULL;
	const gchar* _tmp18_ = NULL;
	const gchar* _tmp19_ = NULL;
	gchar* _tmp20_ = NULL;
	WixlMsiDatabase* _tmp21_ = NULL;
	WixlMsiTableRegistry* _tmp22_ = NULL;
	const gchar* _tmp23_ = NULL;
	const gchar* _tmp24_ = NULL;
	WixlWixComponent* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	const gchar* _tmp27_ = NULL;
	const gchar* _tmp28_ = NULL;
	gchar* _tmp29_ = NULL;
	WixlWixComponent* _tmp30_ = NULL;
	const gchar* _tmp31_ = NULL;
	const gchar* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	WixlMsiDatabase* _tmp35_ = NULL;
	WixlMsiTableRegistry* _tmp36_ = NULL;
	const gchar* _tmp37_ = NULL;
	const gchar* _tmp38_ = NULL;
	WixlWixComponent* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	const gchar* _tmp41_ = NULL;
	WixlWixVerb* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	const gchar* _tmp44_ = NULL;
	WixlWixVerb* _tmp45_ = NULL;
	const gchar* _tmp46_ = NULL;
	const gchar* _tmp47_ = NULL;
	gchar* _tmp48_ = NULL;
	gchar* _tmp49_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (verb != NULL);
	_tmp0_ = verb;
	_tmp1_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp0_);
	_tmp2_ = _tmp1_;
	g_return_if_fail (g_strcmp0 (_tmp2_, "open") == 0);
	_tmp3_ = verb;
	_tmp4_ = ((WixlWixNode*) _tmp3_)->parent;
	_tmp5_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp4_, WIXL_TYPE_WIX_EXTENSION) ? ((WixlWixExtension*) _tmp4_) : NULL);
	ext = _tmp5_;
	_tmp6_ = ext;
	_tmp7_ = ((WixlWixNode*) _tmp6_)->parent;
	_tmp8_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp7_, WIXL_TYPE_WIX_PROG_ID) ? ((WixlWixProgId*) _tmp7_) : NULL);
	progid = _tmp8_;
	_tmp9_ = progid;
	_tmp10_ = ((WixlWixNode*) _tmp9_)->parent;
	_tmp11_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp10_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp10_) : NULL);
	comp = _tmp11_;
	_tmp12_ = progid;
	_tmp13_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = g_strconcat (_tmp14_, "\\shell\\open", NULL);
	key = _tmp15_;
	_tmp16_ = comp;
	_tmp17_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = key;
	_tmp20_ = wixl_generate_id ("reg", (guint) 2, _tmp18_, _tmp19_, NULL);
	regid = _tmp20_;
	_tmp21_ = self->priv->db;
	_tmp22_ = _tmp21_->table_registry;
	_tmp23_ = regid;
	_tmp24_ = key;
	_tmp25_ = comp;
	_tmp26_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp25_);
	_tmp27_ = _tmp26_;
	wixl_msi_table_registry_add (_tmp22_, _tmp23_, 0, _tmp24_, _tmp27_, NULL, "Open", &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (regid);
		_g_free0 (key);
		_g_object_unref0 (comp);
		_g_object_unref0 (progid);
		_g_object_unref0 (ext);
		return;
	}
	_tmp28_ = key;
	_tmp29_ = g_strconcat (_tmp28_, "\\command", NULL);
	_g_free0 (key);
	key = _tmp29_;
	_tmp30_ = comp;
	_tmp31_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp30_);
	_tmp32_ = _tmp31_;
	_tmp33_ = key;
	_tmp34_ = wixl_generate_id ("reg", (guint) 2, _tmp32_, _tmp33_, NULL);
	_g_free0 (regid);
	regid = _tmp34_;
	_tmp35_ = self->priv->db;
	_tmp36_ = _tmp35_->table_registry;
	_tmp37_ = regid;
	_tmp38_ = key;
	_tmp39_ = comp;
	_tmp40_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = verb;
	_tmp43_ = wixl_wix_verb_get_TargetFile (_tmp42_);
	_tmp44_ = _tmp43_;
	_tmp45_ = verb;
	_tmp46_ = wixl_wix_verb_get_Argument (_tmp45_);
	_tmp47_ = _tmp46_;
	_tmp48_ = g_strdup_printf ("\"[#%s]\" %s", _tmp44_, _tmp47_);
	_tmp49_ = _tmp48_;
	wixl_msi_table_registry_add (_tmp36_, _tmp37_, 0, _tmp38_, _tmp41_, NULL, _tmp49_, &_inner_error_);
	_g_free0 (_tmp49_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixMIME* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixExtension* _tmp2_ = NULL;
	WixlWixProgId* progid = NULL;
	WixlWixElement* _tmp3_ = NULL;
	WixlWixProgId* _tmp4_ = NULL;
	WixlWixComponent* comp = NULL;
	WixlWixElement* _tmp5_ = NULL;
	WixlWixComponent* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	gboolean _tmp9_ = FALSE;
	gchar* key = NULL;
	WixlWixMIME* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* regid = NULL;
	const gchar* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	gchar* _tmp16_ = NULL;
	WixlMsiDatabase* _tmp17_ = NULL;
	WixlMsiTableRegistry* _tmp18_ = NULL;
	const gchar* _tmp19_ = NULL;
	const gchar* _tmp20_ = NULL;
	const gchar* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	gchar* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (mime != NULL);
	_tmp0_ = mime;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_EXTENSION) ? ((WixlWixExtension*) _tmp1_) : NULL);
	ext = _tmp2_;
	_tmp3_ = ((WixlWixNode*) ext)->parent;
	_tmp4_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp3_, WIXL_TYPE_WIX_PROG_ID) ? ((WixlWixProgId*) _tmp3_) : NULL);
	progid = _tmp4_;
	_tmp5_ = ((WixlWixNode*) progid)->parent;
	_tmp6_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp5_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp5_) : NULL);
	comp = _tmp6_;
	_tmp7_ = wixl_wix_prog_id_get_Advertise (progid);
	_tmp8_ = _tmp7_;
	_tmp9_ = wixl_parse_yesno (_tmp8_, FALSE);
	g_return_if_fail (!_tmp9_);
	_tmp10_ = mime;
	_tmp11_ = wixl_wix_mime_get_ContentType (_tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_strconcat ("MIME\\Database\\Content Type\\", _tmp12_, NULL);
	key = _tmp13_;
	_tmp14_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp15_ = _tmp14_;
	_tmp16_ = wixl_generate_id ("reg", (guint) 3, _tmp15_, key, "Extension", NULL);
	regid = _tmp16_;
	_tmp17_ = self->priv->db;
	_tmp18_ = _tmp17_->table_registry;
	_tmp19_ = wixl_wix_element_get_Id ((WixlWixElement*) comp);
	_tmp20_ = _tmp19_;
	_tmp21_ = wixl_wix_element_get_Id ((WixlWixElement*) ext);
	_tmp22_ = _tmp21_;
	_tmp23_ = g_strconcat (".", _tmp22_, NULL);
	_tmp24_ = _tmp23_;
	wixl_msi_table_registry_add (_tmp18_, regid, 0, key, _tmp20_, "Extension", _tmp24_, &_inner_error_);
	_g_free0 (_tmp24_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixCreateFolder* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixComponent* _tmp2_ = NULL;
	WixlWixDirectory* dir = NULL;
	WixlWixComponent* _tmp3_ = NULL;
	WixlWixDirectory* _tmp4_ = NULL;
	WixlMsiDatabase* _tmp5_ = NULL;
	WixlMsiTableCreateFolder* _tmp6_ = NULL;
	WixlWixDirectory* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	const gchar* _tmp9_ = NULL;
	WixlWixComponent* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (folder != NULL);
	_tmp0_ = folder;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp1_) : NULL);
	component = _tmp2_;
	_tmp3_ = component;
	_tmp4_ = wixl_wix_builder_get_directory (self, _tmp3_, &_inner_error_);
	dir = _tmp4_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (component);
		return;
	}
	_tmp5_ = self->priv->db;
	_tmp6_ = _tmp5_->table_create_folder;
	_tmp7_ = dir;
	_tmp8_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp7_);
	_tmp9_ = _tmp8_;
	_tmp10_ = component;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp10_);
	_tmp12_ = _tmp11_;
	wixl_msi_table_create_folder_add (_tmp6_, _tmp9_, _tmp12_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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) {
	gint result = 0;
	WixlWixBuilderInstallMode mode = 0;
	const gchar* _tmp0_ = NULL;
	WixlWixBuilderInstallMode _tmp1_ = 0;
	gint event = 0;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp6_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_val_if_fail (self != NULL, 0);
	g_return_val_if_fail (modeString != NULL, 0);
	_tmp0_ = modeString;
	_tmp1_ = wixl_wix_builder_install_mode_from_string (_tmp0_, &_inner_error_);
	mode = _tmp1_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		gint _tmp2_ = 0;
		g_propagate_error (error, _inner_error_);
		return _tmp2_;
	}
	event = 0;
	if (mode == WIXL_WIX_BUILDER_INSTALL_MODE_INSTALL) {
		_tmp3_ = TRUE;
	} else {
		_tmp3_ = mode == WIXL_WIX_BUILDER_INSTALL_MODE_BOTH;
	}
	if (_tmp3_) {
		gint _tmp4_ = 0;
		WixlWixBuilderServiceControlEvent _tmp5_ = 0;
		_tmp4_ = event;
		_tmp5_ = install;
		event = _tmp4_ | _tmp5_;
	}
	if (mode == WIXL_WIX_BUILDER_INSTALL_MODE_UNINSTALL) {
		_tmp6_ = TRUE;
	} else {
		_tmp6_ = mode == WIXL_WIX_BUILDER_INSTALL_MODE_BOTH;
	}
	if (_tmp6_) {
		gint _tmp7_ = 0;
		WixlWixBuilderServiceControlEvent _tmp8_ = 0;
		_tmp7_ = event;
		_tmp8_ = uninstall;
		event = _tmp7_ | _tmp8_;
	}
	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_ = NULL;
	const gchar* _tmp4_ = NULL;
	WixlWixServiceArgument* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_argument != NULL);
	_tmp0_ = self->priv->ServiceArguments;
	if (_tmp0_ == NULL) {
		gchar* _tmp1_ = NULL;
		_tmp1_ = g_strdup ("");
		_g_free0 (self->priv->ServiceArguments);
		self->priv->ServiceArguments = _tmp1_;
	} else {
		const gchar* _tmp2_ = NULL;
		gchar* _tmp3_ = NULL;
		_tmp2_ = self->priv->ServiceArguments;
		_tmp3_ = g_strconcat (_tmp2_, "[~]", NULL);
		_g_free0 (self->priv->ServiceArguments);
		self->priv->ServiceArguments = _tmp3_;
	}
	_tmp4_ = self->priv->ServiceArguments;
	_tmp5_ = service_argument;
	_tmp6_ = wixl_wix_service_argument_get_text (_tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = g_strconcat (_tmp4_, _tmp7_, NULL);
	_g_free0 (self->priv->ServiceArguments);
	self->priv->ServiceArguments = _tmp8_;
	_g_free0 (_tmp7_);
}


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;
	WixlWixServiceControl* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixComponent* _tmp2_ = NULL;
	gboolean* Wait = NULL;
	gint event = 0;
	WixlVisitState _tmp3_ = 0;
	WixlWixServiceControl* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	gint _tmp12_ = 0;
	WixlWixServiceControl* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	gint _tmp16_ = 0;
	gint _tmp17_ = 0;
	gint _tmp18_ = 0;
	WixlWixServiceControl* _tmp19_ = NULL;
	const gchar* _tmp20_ = NULL;
	const gchar* _tmp21_ = NULL;
	gint _tmp22_ = 0;
	gint _tmp23_ = 0;
	gint _tmp24_ = 0;
	WixlWixServiceControl* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	const gchar* _tmp27_ = NULL;
	gint _tmp28_ = 0;
	gint _tmp29_ = 0;
	WixlMsiDatabase* _tmp30_ = NULL;
	WixlMsiTableServiceControl* _tmp31_ = NULL;
	WixlWixServiceControl* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	const gchar* _tmp34_ = NULL;
	WixlWixServiceControl* _tmp35_ = NULL;
	const gchar* _tmp36_ = NULL;
	const gchar* _tmp37_ = NULL;
	gint _tmp38_ = 0;
	const gchar* _tmp39_ = NULL;
	gboolean* _tmp40_ = NULL;
	WixlWixComponent* _tmp41_ = NULL;
	const gchar* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_control != NULL);
	_tmp0_ = service_control;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp1_) : NULL);
	comp = _tmp2_;
	Wait = NULL;
	event = 0;
	_tmp3_ = state;
	if (_tmp3_ == WIXL_VISIT_STATE_ENTER) {
		_g_free0 (self->priv->ServiceArguments);
		self->priv->ServiceArguments = NULL;
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	_tmp4_ = service_control;
	_tmp5_ = wixl_wix_service_control_get_Wait (_tmp4_);
	_tmp6_ = _tmp5_;
	if (_tmp6_ != NULL) {
		WixlWixServiceControl* _tmp7_ = NULL;
		const gchar* _tmp8_ = NULL;
		const gchar* _tmp9_ = NULL;
		gboolean _tmp10_ = FALSE;
		gboolean* _tmp11_ = NULL;
		_tmp7_ = service_control;
		_tmp8_ = wixl_wix_service_control_get_Wait (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = wixl_parse_yesno (_tmp9_, FALSE);
		_tmp11_ = __bool_dup0 (&_tmp10_);
		_g_free0 (Wait);
		Wait = _tmp11_;
	}
	_tmp13_ = service_control;
	_tmp14_ = wixl_wix_service_control_get_Start (_tmp13_);
	_tmp15_ = _tmp14_;
	_tmp16_ = wixl_wix_builder_install_mode_to_event (self, _tmp15_, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_START, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_START, &_inner_error_);
	_tmp12_ = _tmp16_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	_tmp17_ = event;
	event = _tmp17_ | _tmp12_;
	_tmp19_ = service_control;
	_tmp20_ = wixl_wix_service_control_get_Stop (_tmp19_);
	_tmp21_ = _tmp20_;
	_tmp22_ = wixl_wix_builder_install_mode_to_event (self, _tmp21_, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_STOP, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_STOP, &_inner_error_);
	_tmp18_ = _tmp22_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	_tmp23_ = event;
	event = _tmp23_ | _tmp18_;
	_tmp25_ = service_control;
	_tmp26_ = wixl_wix_service_control_get_Remove (_tmp25_);
	_tmp27_ = _tmp26_;
	_tmp28_ = wixl_wix_builder_install_mode_to_event (self, _tmp27_, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_INSTALL_DELETE, WIXL_WIX_BUILDER_SERVICE_CONTROL_EVENT_UNINSTALL_DELETE, &_inner_error_);
	_tmp24_ = _tmp28_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (Wait);
		_g_object_unref0 (comp);
		return;
	}
	_tmp29_ = event;
	event = _tmp29_ | _tmp24_;
	_tmp30_ = self->priv->db;
	_tmp31_ = _tmp30_->table_service_control;
	_tmp32_ = service_control;
	_tmp33_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = service_control;
	_tmp36_ = wixl_wix_service_control_get_Name (_tmp35_);
	_tmp37_ = _tmp36_;
	_tmp38_ = event;
	_tmp39_ = self->priv->ServiceArguments;
	_tmp40_ = Wait;
	_tmp41_ = comp;
	_tmp42_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp41_);
	_tmp43_ = _tmp42_;
	wixl_msi_table_service_control_add (_tmp31_, _tmp34_, _tmp37_, _tmp38_, _tmp39_, _tmp40_, _tmp43_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixServiceDependency* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	const gchar* _tmp16_ = NULL;
	gchar* _tmp17_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_dependency != NULL);
	_tmp0_ = service_dependency;
	_tmp1_ = wixl_wix_service_dependency_get_Group (_tmp0_);
	_tmp2_ = _tmp1_;
	_tmp3_ = wixl_parse_yesno (_tmp2_, FALSE);
	if (_tmp3_) {
		const gchar* _tmp4_ = NULL;
		WixlWixServiceDependency* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		const gchar* _tmp7_ = NULL;
		gchar* _tmp8_ = NULL;
		gchar* _tmp9_ = NULL;
		gchar* _tmp10_ = NULL;
		_tmp4_ = self->priv->ServiceDependencies;
		_tmp5_ = service_dependency;
		_tmp6_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp5_);
		_tmp7_ = _tmp6_;
		_tmp8_ = g_strconcat ("+", _tmp7_, NULL);
		_tmp9_ = _tmp8_;
		_tmp10_ = g_strconcat (_tmp4_, _tmp9_, NULL);
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp10_;
		_g_free0 (_tmp9_);
	} else {
		const gchar* _tmp11_ = NULL;
		WixlWixServiceDependency* _tmp12_ = NULL;
		const gchar* _tmp13_ = NULL;
		const gchar* _tmp14_ = NULL;
		gchar* _tmp15_ = NULL;
		_tmp11_ = self->priv->ServiceDependencies;
		_tmp12_ = service_dependency;
		_tmp13_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp12_);
		_tmp14_ = _tmp13_;
		_tmp15_ = g_strconcat (_tmp11_, _tmp14_, NULL);
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp15_;
	}
	_tmp16_ = self->priv->ServiceDependencies;
	_tmp17_ = g_strconcat (_tmp16_, "[~]", NULL);
	_g_free0 (self->priv->ServiceDependencies);
	self->priv->ServiceDependencies = _tmp17_;
}


static void wixl_wix_builder_real_visit_service_install (WixlWixNodeVisitor* base, WixlWixServiceInstall* service_install, WixlVisitState state, GError** error) {
	WixlWixBuilder * self;
	WixlWixComponent* comp = NULL;
	WixlWixServiceInstall* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixComponent* _tmp2_ = NULL;
	gint ServiceType = 0;
	gint StartType = 0;
	gint ErrorControl = 0;
	gchar* Description = NULL;
	WixlVisitState _tmp3_ = 0;
	WixlWixBuilderStartTypeAttribute _tmp5_ = 0;
	WixlWixServiceInstall* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	WixlWixBuilderStartTypeAttribute _tmp9_ = 0;
	WixlWixBuilderErrorControlAttribute _tmp10_ = 0;
	WixlWixServiceInstall* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	const gchar* _tmp13_ = NULL;
	WixlWixBuilderErrorControlAttribute _tmp14_ = 0;
	WixlWixBuilderServiceTypeAttribute _tmp15_ = 0;
	WixlWixServiceInstall* _tmp16_ = NULL;
	const gchar* _tmp17_ = NULL;
	const gchar* _tmp18_ = NULL;
	WixlWixBuilderServiceTypeAttribute _tmp19_ = 0;
	WixlWixServiceInstall* _tmp20_ = NULL;
	const gchar* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	gboolean _tmp23_ = FALSE;
	const gchar* _tmp25_ = NULL;
	WixlWixServiceInstall* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	const gchar* _tmp30_ = NULL;
	gchar* _tmp31_ = NULL;
	WixlWixServiceInstall* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	const gchar* _tmp34_ = NULL;
	gboolean _tmp35_ = FALSE;
	WixlMsiDatabase* _tmp37_ = NULL;
	WixlMsiTableServiceInstall* _tmp38_ = NULL;
	WixlWixServiceInstall* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	const gchar* _tmp41_ = NULL;
	WixlWixServiceInstall* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	const gchar* _tmp44_ = NULL;
	WixlWixServiceInstall* _tmp45_ = NULL;
	const gchar* _tmp46_ = NULL;
	const gchar* _tmp47_ = NULL;
	gint _tmp48_ = 0;
	gint _tmp49_ = 0;
	gint _tmp50_ = 0;
	WixlWixServiceInstall* _tmp51_ = NULL;
	const gchar* _tmp52_ = NULL;
	const gchar* _tmp53_ = NULL;
	const gchar* _tmp54_ = NULL;
	WixlWixServiceInstall* _tmp55_ = NULL;
	const gchar* _tmp56_ = NULL;
	const gchar* _tmp57_ = NULL;
	WixlWixServiceInstall* _tmp58_ = NULL;
	const gchar* _tmp59_ = NULL;
	const gchar* _tmp60_ = NULL;
	WixlWixServiceInstall* _tmp61_ = NULL;
	const gchar* _tmp62_ = NULL;
	const gchar* _tmp63_ = NULL;
	WixlWixComponent* _tmp64_ = NULL;
	const gchar* _tmp65_ = NULL;
	const gchar* _tmp66_ = NULL;
	const gchar* _tmp67_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (service_install != NULL);
	_tmp0_ = service_install;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_COMPONENT) ? ((WixlWixComponent*) _tmp1_) : NULL);
	comp = _tmp2_;
	_tmp3_ = state;
	if (_tmp3_ == WIXL_VISIT_STATE_ENTER) {
		gchar* _tmp4_ = NULL;
		_tmp4_ = g_strdup ("");
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp4_;
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	_tmp6_ = service_install;
	_tmp7_ = wixl_wix_service_install_get_Start (_tmp6_);
	_tmp8_ = _tmp7_;
	_tmp9_ = wixl_wix_builder_start_type_attribute_from_string (_tmp8_, &_inner_error_);
	_tmp5_ = _tmp9_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	StartType = (gint) _tmp5_;
	_tmp11_ = service_install;
	_tmp12_ = wixl_wix_service_install_get_ErrorControl (_tmp11_);
	_tmp13_ = _tmp12_;
	_tmp14_ = wixl_wix_builder_error_control_attribute_from_string (_tmp13_, &_inner_error_);
	_tmp10_ = _tmp14_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	ErrorControl = (gint) _tmp10_;
	_tmp16_ = service_install;
	_tmp17_ = wixl_wix_service_install_get_Type (_tmp16_);
	_tmp18_ = _tmp17_;
	_tmp19_ = wixl_wix_builder_service_type_attribute_from_string (_tmp18_, &_inner_error_);
	_tmp15_ = _tmp19_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (Description);
		_g_object_unref0 (comp);
		return;
	}
	ServiceType = (gint) _tmp15_;
	_tmp20_ = service_install;
	_tmp21_ = wixl_wix_service_install_get_Interactive (_tmp20_);
	_tmp22_ = _tmp21_;
	_tmp23_ = wixl_parse_yesno (_tmp22_, FALSE);
	if (_tmp23_) {
		gint _tmp24_ = 0;
		_tmp24_ = ServiceType;
		ServiceType = _tmp24_ | (1 << 8);
	}
	_tmp25_ = self->priv->ServiceDependencies;
	if (g_strcmp0 (_tmp25_, "") == 0) {
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = NULL;
	} else {
		const gchar* _tmp26_ = NULL;
		gchar* _tmp27_ = NULL;
		_tmp26_ = self->priv->ServiceDependencies;
		_tmp27_ = g_strconcat (_tmp26_, "[~]", NULL);
		_g_free0 (self->priv->ServiceDependencies);
		self->priv->ServiceDependencies = _tmp27_;
	}
	_tmp28_ = service_install;
	_tmp29_ = wixl_wix_service_install_get_Description (_tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = g_strdup (_tmp30_);
	_g_free0 (Description);
	Description = _tmp31_;
	_tmp32_ = service_install;
	_tmp33_ = wixl_wix_service_install_get_EraseDescription (_tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = wixl_parse_yesno (_tmp34_, FALSE);
	if (_tmp35_) {
		gchar* _tmp36_ = NULL;
		_tmp36_ = g_strdup ("[~]");
		_g_free0 (Description);
		Description = _tmp36_;
	}
	_tmp37_ = self->priv->db;
	_tmp38_ = _tmp37_->table_service_install;
	_tmp39_ = service_install;
	_tmp40_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = service_install;
	_tmp43_ = wixl_wix_service_install_get_Name (_tmp42_);
	_tmp44_ = _tmp43_;
	_tmp45_ = service_install;
	_tmp46_ = wixl_wix_service_install_get_DisplayName (_tmp45_);
	_tmp47_ = _tmp46_;
	_tmp48_ = ServiceType;
	_tmp49_ = StartType;
	_tmp50_ = ErrorControl;
	_tmp51_ = service_install;
	_tmp52_ = wixl_wix_service_install_get_LoadOrderGroup (_tmp51_);
	_tmp53_ = _tmp52_;
	_tmp54_ = self->priv->ServiceDependencies;
	_tmp55_ = service_install;
	_tmp56_ = wixl_wix_service_install_get_Account (_tmp55_);
	_tmp57_ = _tmp56_;
	_tmp58_ = service_install;
	_tmp59_ = wixl_wix_service_install_get_Password (_tmp58_);
	_tmp60_ = _tmp59_;
	_tmp61_ = service_install;
	_tmp62_ = wixl_wix_service_install_get_Arguments (_tmp61_);
	_tmp63_ = _tmp62_;
	_tmp64_ = comp;
	_tmp65_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp64_);
	_tmp66_ = _tmp65_;
	_tmp67_ = Description;
	wixl_msi_table_service_install_add (_tmp38_, _tmp41_, _tmp44_, _tmp47_, _tmp48_, _tmp49_, _tmp50_, _tmp53_, _tmp54_, _tmp57_, _tmp60_, _tmp63_, _tmp66_, _tmp67_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixRegistrySearch* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixProperty* _tmp2_ = NULL;
	WixlWixBuilderRegistryRoot root = 0;
	WixlWixRegistrySearch* _tmp3_ = NULL;
	const gchar* _tmp4_ = NULL;
	const gchar* _tmp5_ = NULL;
	gchar* _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	WixlWixBuilderRegistryRoot _tmp8_ = 0;
	WixlWixBuilderRegistryRoot _tmp9_ = 0;
	WixlWixBuilderRegistryType type = 0;
	WixlWixRegistrySearch* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	gchar* _tmp13_ = NULL;
	gchar* _tmp14_ = NULL;
	WixlWixBuilderRegistryType _tmp15_ = 0;
	WixlWixBuilderRegistryType _tmp16_ = 0;
	WixlWixRegistrySearch* _tmp17_ = NULL;
	const gchar* _tmp18_ = NULL;
	const gchar* _tmp19_ = NULL;
	gboolean _tmp20_ = FALSE;
	WixlMsiDatabase* _tmp22_ = NULL;
	WixlMsiTableAppSearch* _tmp23_ = NULL;
	WixlWixProperty* _tmp24_ = NULL;
	const gchar* _tmp25_ = NULL;
	const gchar* _tmp26_ = NULL;
	WixlWixRegistrySearch* _tmp27_ = NULL;
	const gchar* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	WixlMsiDatabase* _tmp30_ = NULL;
	WixlMsiTableRegLocator* _tmp31_ = NULL;
	WixlWixRegistrySearch* _tmp32_ = NULL;
	const gchar* _tmp33_ = NULL;
	const gchar* _tmp34_ = NULL;
	WixlWixBuilderRegistryRoot _tmp35_ = 0;
	WixlWixRegistrySearch* _tmp36_ = NULL;
	const gchar* _tmp37_ = NULL;
	const gchar* _tmp38_ = NULL;
	WixlWixRegistrySearch* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	const gchar* _tmp41_ = NULL;
	WixlWixBuilderRegistryType _tmp42_ = 0;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (search != NULL);
	_tmp0_ = search;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_PROPERTY) ? ((WixlWixProperty*) _tmp1_) : NULL);
	property = _tmp2_;
	_tmp3_ = search;
	_tmp4_ = wixl_wix_registry_search_get_Root (_tmp3_);
	_tmp5_ = _tmp4_;
	_tmp6_ = g_utf8_strdown (_tmp5_, (gssize) -1);
	_tmp7_ = _tmp6_;
	_tmp8_ = wixl_wix_builder_registry_root_from_string (_tmp7_, &_inner_error_);
	_tmp9_ = _tmp8_;
	_g_free0 (_tmp7_);
	root = _tmp9_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (property);
		return;
	}
	_tmp10_ = search;
	_tmp11_ = wixl_wix_registry_search_get_Type (_tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = g_utf8_strdown (_tmp12_, (gssize) -1);
	_tmp14_ = _tmp13_;
	_tmp15_ = wixl_wix_builder_registry_type_from_string (_tmp14_, &_inner_error_);
	_tmp16_ = _tmp15_;
	_g_free0 (_tmp14_);
	type = _tmp16_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (property);
		return;
	}
	_tmp17_ = search;
	_tmp18_ = wixl_wix_registry_search_get_Win64 (_tmp17_);
	_tmp19_ = _tmp18_;
	_tmp20_ = wixl_parse_yesno (_tmp19_, FALSE);
	if (_tmp20_) {
		WixlWixBuilderRegistryType _tmp21_ = 0;
		_tmp21_ = type;
		type = _tmp21_ | WIXL_WIX_BUILDER_REGISTRY_TYPE_64BIT;
	}
	_tmp22_ = self->priv->db;
	_tmp23_ = _tmp22_->table_app_search;
	_tmp24_ = property;
	_tmp25_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp24_);
	_tmp26_ = _tmp25_;
	_tmp27_ = search;
	_tmp28_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp27_);
	_tmp29_ = _tmp28_;
	wixl_msi_table_app_search_add (_tmp23_, _tmp26_, _tmp29_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (property);
		return;
	}
	_tmp30_ = self->priv->db;
	_tmp31_ = _tmp30_->table_reg_locator;
	_tmp32_ = search;
	_tmp33_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp32_);
	_tmp34_ = _tmp33_;
	_tmp35_ = root;
	_tmp36_ = search;
	_tmp37_ = wixl_wix_registry_search_get_Key (_tmp36_);
	_tmp38_ = _tmp37_;
	_tmp39_ = search;
	_tmp40_ = wixl_wix_registry_search_get_Name (_tmp39_);
	_tmp41_ = _tmp40_;
	_tmp42_ = type;
	wixl_msi_table_reg_locator_add (_tmp31_, _tmp34_, (gint) _tmp35_, _tmp38_, _tmp41_, (gint) _tmp42_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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 = 0;
	gchar* source = NULL;
	gchar* target = NULL;
	WixlWixCustomAction* _tmp0_ = NULL;
	const gchar* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	WixlWixCustomAction* _tmp34_ = NULL;
	const gchar* _tmp35_ = NULL;
	const gchar* _tmp36_ = NULL;
	WixlWixCustomAction* _tmp38_ = NULL;
	const gchar* _tmp39_ = NULL;
	const gchar* _tmp40_ = NULL;
	WixlWixCustomAction* _tmp42_ = NULL;
	const gchar* _tmp43_ = NULL;
	const gchar* _tmp44_ = NULL;
	gboolean _tmp45_ = FALSE;
	WixlMsiDatabase* _tmp47_ = NULL;
	WixlMsiTableCustomAction* _tmp48_ = NULL;
	WixlWixCustomAction* _tmp49_ = NULL;
	const gchar* _tmp50_ = NULL;
	const gchar* _tmp51_ = NULL;
	WixlWixBuilderCustomActionType _tmp52_ = 0;
	const gchar* _tmp53_ = NULL;
	const gchar* _tmp54_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (action != NULL);
	_tmp0_ = action;
	_tmp1_ = wixl_wix_custom_action_get_DllEntry (_tmp0_);
	_tmp2_ = _tmp1_;
	if (_tmp2_ != NULL) {
		WixlWixCustomAction* _tmp3_ = NULL;
		const gchar* _tmp4_ = NULL;
		const gchar* _tmp5_ = NULL;
		gchar* _tmp6_ = NULL;
		WixlWixCustomAction* _tmp7_ = NULL;
		const gchar* _tmp8_ = NULL;
		const gchar* _tmp9_ = NULL;
		gchar* _tmp10_ = NULL;
		type = WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_DLL_BINARY;
		_tmp3_ = action;
		_tmp4_ = wixl_wix_custom_action_get_BinaryKey (_tmp3_);
		_tmp5_ = _tmp4_;
		_tmp6_ = g_strdup (_tmp5_);
		_g_free0 (source);
		source = _tmp6_;
		_tmp7_ = action;
		_tmp8_ = wixl_wix_custom_action_get_DllEntry (_tmp7_);
		_tmp9_ = _tmp8_;
		_tmp10_ = g_strdup (_tmp9_);
		_g_free0 (target);
		target = _tmp10_;
	} else {
		WixlWixCustomAction* _tmp11_ = NULL;
		const gchar* _tmp12_ = NULL;
		const gchar* _tmp13_ = NULL;
		_tmp11_ = action;
		_tmp12_ = wixl_wix_custom_action_get_JScriptCall (_tmp11_);
		_tmp13_ = _tmp12_;
		if (_tmp13_ != NULL) {
			WixlWixCustomAction* _tmp14_ = NULL;
			const gchar* _tmp15_ = NULL;
			const gchar* _tmp16_ = NULL;
			gchar* _tmp17_ = NULL;
			WixlWixCustomAction* _tmp18_ = NULL;
			const gchar* _tmp19_ = NULL;
			const gchar* _tmp20_ = NULL;
			gchar* _tmp21_ = NULL;
			type = WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_JSCRIPT_BINARY;
			_tmp14_ = action;
			_tmp15_ = wixl_wix_custom_action_get_BinaryKey (_tmp14_);
			_tmp16_ = _tmp15_;
			_tmp17_ = g_strdup (_tmp16_);
			_g_free0 (source);
			source = _tmp17_;
			_tmp18_ = action;
			_tmp19_ = wixl_wix_custom_action_get_JScriptCall (_tmp18_);
			_tmp20_ = _tmp19_;
			_tmp21_ = g_strdup (_tmp20_);
			_g_free0 (target);
			target = _tmp21_;
		} else {
			WixlWixCustomAction* _tmp22_ = NULL;
			const gchar* _tmp23_ = NULL;
			const gchar* _tmp24_ = NULL;
			_tmp22_ = action;
			_tmp23_ = wixl_wix_custom_action_get_ExeCommand (_tmp22_);
			_tmp24_ = _tmp23_;
			if (_tmp24_ != NULL) {
				WixlWixCustomAction* _tmp25_ = NULL;
				const gchar* _tmp26_ = NULL;
				const gchar* _tmp27_ = NULL;
				gchar* _tmp28_ = NULL;
				WixlWixCustomAction* _tmp29_ = NULL;
				const gchar* _tmp30_ = NULL;
				const gchar* _tmp31_ = NULL;
				gchar* _tmp32_ = NULL;
				type = WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_EXE_PROPERTY;
				_tmp25_ = action;
				_tmp26_ = wixl_wix_custom_action_get_Property (_tmp25_);
				_tmp27_ = _tmp26_;
				_tmp28_ = g_strdup (_tmp27_);
				_g_free0 (source);
				source = _tmp28_;
				_tmp29_ = action;
				_tmp30_ = wixl_wix_custom_action_get_ExeCommand (_tmp29_);
				_tmp31_ = _tmp30_;
				_tmp32_ = g_strdup (_tmp31_);
				_g_free0 (target);
				target = _tmp32_;
			} else {
				GError* _tmp33_ = NULL;
				_tmp33_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Unsupported CustomAction");
				_inner_error_ = _tmp33_;
				g_propagate_error (error, _inner_error_);
				_g_free0 (target);
				_g_free0 (source);
				return;
			}
		}
	}
	_tmp34_ = action;
	_tmp35_ = wixl_wix_custom_action_get_Return (_tmp34_);
	_tmp36_ = _tmp35_;
	if (g_strcmp0 (_tmp36_, "ignore") == 0) {
		WixlWixBuilderCustomActionType _tmp37_ = 0;
		_tmp37_ = type;
		type = _tmp37_ | WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_CONTINUE;
	}
	_tmp38_ = action;
	_tmp39_ = wixl_wix_custom_action_get_Execute (_tmp38_);
	_tmp40_ = _tmp39_;
	if (g_strcmp0 (_tmp40_, "deferred") == 0) {
		WixlWixBuilderCustomActionType _tmp41_ = 0;
		_tmp41_ = type;
		type = _tmp41_ | WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_IN_SCRIPT;
	}
	_tmp42_ = action;
	_tmp43_ = wixl_wix_custom_action_get_Impersonate (_tmp42_);
	_tmp44_ = _tmp43_;
	_tmp45_ = wixl_parse_yesno (_tmp44_, FALSE);
	if (!_tmp45_) {
		WixlWixBuilderCustomActionType _tmp46_ = 0;
		_tmp46_ = type;
		type = _tmp46_ | WIXL_WIX_BUILDER_CUSTOM_ACTION_TYPE_NO_IMPERSONATE;
	}
	_tmp47_ = self->priv->db;
	_tmp48_ = _tmp47_->table_custom_action;
	_tmp49_ = action;
	_tmp50_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp49_);
	_tmp51_ = _tmp50_;
	_tmp52_ = type;
	_tmp53_ = source;
	_tmp54_ = target;
	wixl_msi_table_custom_action_add (_tmp48_, _tmp51_, (gint) _tmp52_, _tmp53_, _tmp54_, NULL, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixBinary* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	GFileInfo* _tmp4_ = NULL;
	GFile* _tmp5_ = NULL;
	WixlWixBinary* _tmp6_ = NULL;
	GFile* _tmp7_ = NULL;
	WixlMsiDatabase* _tmp8_ = NULL;
	WixlMsiTableBinary* _tmp9_ = NULL;
	WixlWixBinary* _tmp10_ = NULL;
	const gchar* _tmp11_ = NULL;
	const gchar* _tmp12_ = NULL;
	WixlWixBinary* _tmp13_ = NULL;
	GFile* _tmp14_ = NULL;
	gchar* _tmp15_ = NULL;
	gchar* _tmp16_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (binary != NULL);
	_tmp1_ = binary;
	_tmp2_ = wixl_wix_binary_get_SourceFile (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp5_ = wixl_wix_builder_find_file (self, _tmp3_, &_tmp4_, &_inner_error_);
	_g_object_unref0 (info);
	info = _tmp4_;
	_tmp0_ = _tmp5_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_object_unref0 (info);
		return;
	}
	_tmp6_ = binary;
	_tmp7_ = _tmp0_;
	_tmp0_ = NULL;
	_g_object_unref0 (_tmp6_->file);
	_tmp6_->file = _tmp7_;
	_tmp8_ = self->priv->db;
	_tmp9_ = _tmp8_->table_binary;
	_tmp10_ = binary;
	_tmp11_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = binary;
	_tmp14_ = _tmp13_->file;
	_tmp15_ = g_file_get_path (_tmp14_);
	_tmp16_ = _tmp15_;
	wixl_msi_table_binary_add (_tmp9_, _tmp12_, _tmp16_, &_inner_error_);
	_g_free0 (_tmp16_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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;
	WixlWixMajorUpgrade* _tmp0_ = NULL;
	WixlWixElement* _tmp1_ = NULL;
	WixlWixProduct* _tmp2_ = NULL;
	gchar* property = NULL;
	gchar* _tmp3_ = NULL;
	gchar* _tmp4_ = NULL;
	WixlWixProduct* _tmp5_ = NULL;
	const gchar* _tmp6_ = NULL;
	const gchar* _tmp7_ = NULL;
	gchar* _tmp8_ = NULL;
	gchar* _tmp9_ = NULL;
	WixlMsiDatabase* _tmp10_ = NULL;
	WixlMsiTableUpgrade* _tmp11_ = NULL;
	WixlWixProduct* _tmp12_ = NULL;
	const gchar* _tmp13_ = NULL;
	const gchar* _tmp14_ = NULL;
	const gchar* _tmp15_ = NULL;
	gchar** _tmp16_ = NULL;
	gint _tmp16__length1 = 0;
	const gchar* _tmp17_ = NULL;
	gchar* _tmp18_ = NULL;
	gchar* _tmp19_ = NULL;
	gchar* _tmp20_ = NULL;
	WixlWixProduct* _tmp21_ = NULL;
	const gchar* _tmp22_ = NULL;
	const gchar* _tmp23_ = NULL;
	gchar* _tmp24_ = NULL;
	gchar* _tmp25_ = NULL;
	WixlMsiDatabase* _tmp26_ = NULL;
	WixlMsiTableUpgrade* _tmp27_ = NULL;
	WixlWixProduct* _tmp28_ = NULL;
	const gchar* _tmp29_ = NULL;
	const gchar* _tmp30_ = NULL;
	const gchar* _tmp31_ = NULL;
	gchar** _tmp32_ = NULL;
	gint _tmp32__length1 = 0;
	const gchar* _tmp33_ = NULL;
	gchar* _tmp34_ = NULL;
	WixlWixMajorUpgrade* _tmp35_ = NULL;
	const gchar* _tmp36_ = NULL;
	const gchar* _tmp37_ = NULL;
	WixlMsiTableInstallExecuteSequence* table = NULL;
	WixlMsiDatabase* _tmp43_ = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp44_ = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp45_ = NULL;
	WixlMsiTableSequenceAction* node = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp46_ = NULL;
	WixlMsiTableSequenceAction* _tmp47_ = NULL;
	WixlMsiTableSequenceAction* _tmp48_ = NULL;
	WixlWixAction* _tmp49_ = NULL;
	WixlMsiTableSequenceAction* _tmp50_ = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp51_ = NULL;
	WixlMsiTableSequenceAction* _tmp52_ = NULL;
	WixlMsiTableSequenceAction* _tmp53_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (major != NULL);
	_tmp0_ = major;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, WIXL_TYPE_WIX_PRODUCT) ? ((WixlWixProduct*) _tmp1_) : NULL);
	product = _tmp2_;
	_tmp3_ = g_strdup ("WIX_DOWNGRADE_DETECTED");
	property = _tmp3_;
	_tmp5_ = product;
	_tmp6_ = wixl_wix_product_get_UpgradeCode (_tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = g_strdup (_tmp7_);
	_tmp9_ = wixl_get_uuid (_tmp8_, &_inner_error_);
	_tmp4_ = _tmp9_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp10_ = self->priv->db;
	_tmp11_ = _tmp10_->table_upgrade;
	_tmp12_ = product;
	_tmp13_ = wixl_wix_product_get_Version (_tmp12_);
	_tmp14_ = _tmp13_;
	_tmp15_ = property;
	wixl_msi_table_upgrade_add (_tmp11_, _tmp4_, _tmp14_, "", 2, _tmp15_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp4_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp16_ = self->priv->secureProperties;
	_tmp16__length1 = self->priv->secureProperties_length1;
	_tmp17_ = property;
	_tmp18_ = g_strdup (_tmp17_);
	_vala_array_add2 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp18_);
	_tmp19_ = g_strdup ("WIX_UPGRADE_DETECTED");
	_g_free0 (property);
	property = _tmp19_;
	_tmp21_ = product;
	_tmp22_ = wixl_wix_product_get_UpgradeCode (_tmp21_);
	_tmp23_ = _tmp22_;
	_tmp24_ = g_strdup (_tmp23_);
	_tmp25_ = wixl_get_uuid (_tmp24_, &_inner_error_);
	_tmp20_ = _tmp25_;
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp4_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp26_ = self->priv->db;
	_tmp27_ = _tmp26_->table_upgrade;
	_tmp28_ = product;
	_tmp29_ = wixl_wix_product_get_Version (_tmp28_);
	_tmp30_ = _tmp29_;
	_tmp31_ = property;
	wixl_msi_table_upgrade_add (_tmp27_, _tmp20_, "", _tmp30_, 1, _tmp31_, &_inner_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_g_free0 (_tmp20_);
		_g_free0 (_tmp4_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp32_ = self->priv->secureProperties;
	_tmp32__length1 = self->priv->secureProperties_length1;
	_tmp33_ = property;
	_tmp34_ = g_strdup (_tmp33_);
	_vala_array_add3 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp34_);
	_tmp35_ = major;
	_tmp36_ = wixl_wix_major_upgrade_get_DowngradeErrorMessage (_tmp35_);
	_tmp37_ = _tmp36_;
	if (_tmp37_ != NULL) {
		WixlMsiDatabase* _tmp38_ = NULL;
		WixlMsiTableLaunchCondition* _tmp39_ = NULL;
		WixlWixMajorUpgrade* _tmp40_ = NULL;
		const gchar* _tmp41_ = NULL;
		const gchar* _tmp42_ = NULL;
		_tmp38_ = self->priv->db;
		_tmp39_ = _tmp38_->table_launch_condition;
		_tmp40_ = major;
		_tmp41_ = wixl_wix_major_upgrade_get_DowngradeErrorMessage (_tmp40_);
		_tmp42_ = _tmp41_;
		wixl_msi_table_launch_condition_add (_tmp39_, "NOT WIX_DOWNGRADE_DETECTED", _tmp42_, &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			g_propagate_error (error, _inner_error_);
			_g_free0 (_tmp20_);
			_g_free0 (_tmp4_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
	}
	_tmp43_ = self->priv->db;
	_tmp44_ = _tmp43_->table_install_execute_sequence;
	_tmp45_ = _g_object_ref0 (_tmp44_);
	table = _tmp45_;
	_tmp46_ = table;
	_tmp47_ = wixl_msi_table_sequence_get_action ((WixlMsiTableSequence*) _tmp46_, "RemoveExistingProducts");
	node = _tmp47_;
	_tmp48_ = node;
	_tmp49_ = _tmp48_->action;
	g_warn_if_fail (_tmp49_ == NULL);
	_tmp50_ = node;
	_tmp51_ = table;
	_tmp52_ = wixl_msi_table_sequence_get_action ((WixlMsiTableSequence*) _tmp51_, "InstallValidate");
	_tmp53_ = _tmp52_;
	wixl_msi_table_sequence_action_add_dep (_tmp50_, _tmp53_);
	_wixl_msi_table_sequence_action_unref0 (_tmp53_);
	_wixl_msi_table_sequence_action_unref0 (node);
	_g_object_unref0 (table);
	_g_free0 (_tmp20_);
	_g_free0 (_tmp4_);
	_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_ = NULL;
	WixlWixMediaTemplate* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	const gchar* _tmp3_ = NULL;
	GError * _inner_error_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (tmpl != NULL);
	_tmp0_ = wixl_wix_media_new ();
	media = _tmp0_;
	_tmp1_ = tmpl;
	_tmp2_ = wixl_wix_media_template_get_EmbedCab (_tmp1_);
	_tmp3_ = _tmp2_;
	wixl_wix_media_set_EmbedCab (media, _tmp3_);
	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_error_);
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_propagate_error (error, _inner_error_);
		_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_ = NULL;
	GEqualFunc _tmp1_ = NULL;
	GHashTable* _tmp2_ = NULL;
	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) {
	wixl_wix_builder_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (WixlWixBuilderPrivate));
	((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) {
	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) {
	self->priv = WIXL_WIX_BUILDER_GET_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);
	__g_list_free__g_object_unref0_0 (self->priv->includedirs);
	__g_list_free__g_object_unref0_0 (self->priv->path);
	__g_list_free__g_object_unref0_0 (self->priv->roots);
	__g_list_free__g_object_unref0_0 (self->priv->medias);
	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);
		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);
}



