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

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

#if !defined(VALA_STRICT_C)
#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
#elif defined(__clang__) && (__clang_major__ >= 16)
#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
#endif
#endif

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

#define WIXL_TYPE_ARCH (wixl_arch_get_type ())
typedef enum  {
	WIXL_EXTENSION_UI = 0
} WixlExtension;

#define WIXL_TYPE_EXTENSION (wixl_extension_get_type ())

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

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

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

typedef struct _WixlWixRoot WixlWixRoot;
typedef struct _WixlWixRootClass WixlWixRootClass;

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

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

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

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

#define WIXL_WIX_BUILDER_TYPE_FEATURE_DISPLAY (wixl_wix_builder_feature_display_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_ABSENT_VALUE_Allow = 0,
	WIXL_WIX_BUILDER_ABSENT_VALUE_Disallow
} WixlWixBuilderAbsentValue;

#define WIXL_WIX_BUILDER_TYPE_ABSENT_VALUE (wixl_wix_builder_absent_value_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_No = 0,
	WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_System,
	WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_Yes
} WixlWixBuilderAllowAdvertiseValue;

#define WIXL_WIX_BUILDER_TYPE_ALLOW_ADVERTISE_VALUE (wixl_wix_builder_allow_advertise_value_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_FollowParent = 0,
	WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Local,
	WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Source
} WixlWixBuilderInstallDefaultValue;

#define WIXL_WIX_BUILDER_TYPE_INSTALL_DEFAULT_VALUE (wixl_wix_builder_install_default_value_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Advertise = 0,
	WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Install
} WixlWixBuilderTypicalDefaultValue;

#define WIXL_WIX_BUILDER_TYPE_TYPICAL_DEFAULT_VALUE (wixl_wix_builder_typical_default_value_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_NONE = 0,
	WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORSOURCE = 1,
	WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FOLLOWPARENT = 2,
	WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORADVERTISE = 4,
	WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_DISALLOWADVERTISE = 8,
	WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_UIDISALLOWABSENT = 16,
	WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_NOUNSUPPORTEDADVERTISE = 32
} WixlWixBuilderFeatureAttributes;

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

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

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

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

#define WIXL_WIX_BUILDER_TYPE_FILE_ATTRIBUTE (wixl_wix_builder_file_attribute_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_INI_FILE_ACTION_addLine = 0,
	WIXL_WIX_BUILDER_INI_FILE_ACTION_createLine = 1,
	WIXL_WIX_BUILDER_INI_FILE_ACTION_removeLine = 2,
	WIXL_WIX_BUILDER_INI_FILE_ACTION_addTag = 3,
	WIXL_WIX_BUILDER_INI_FILE_ACTION_removeTag = 4
} WixlWixBuilderIniFileAction;

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

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

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

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

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

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

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

#define WIXL_WIX_BUILDER_TYPE_CUSTOM_ACTION_TYPE (wixl_wix_builder_custom_action_type_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_TEXT_STYLE_BITS_BOLD = 1 << 0,
	WIXL_WIX_BUILDER_TEXT_STYLE_BITS_ITALIC = 1 << 1,
	WIXL_WIX_BUILDER_TEXT_STYLE_BITS_UNDERLINE = 1 << 2,
	WIXL_WIX_BUILDER_TEXT_STYLE_BITS_STRIKE = 1 << 3
} WixlWixBuilderTextStyleBits;

#define WIXL_WIX_BUILDER_TYPE_TEXT_STYLE_BITS (wixl_wix_builder_text_style_bits_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_VISIBLE = 1 << 0,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MODAL = 1 << 1,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MINIMIZE = 1 << 2,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_SYS_MODAL = 1 << 3,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_KEEP_MODELESS = 1 << 4,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_TRACK_DISK_SPACE = 1 << 5,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_USE_CUSTOM_PALETTE = 1 << 6,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RTLRO = 1 << 7,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RIGHT_ALIGNED = 1 << 8,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_LEFT_SCROLL = 1 << 9,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_BIDI = (WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RTLRO | WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RIGHT_ALIGNED) | WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_LEFT_SCROLL,
	WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_ERROR = 1 << 16
} WixlWixBuilderDialogStyleBits;

#define WIXL_WIX_BUILDER_TYPE_DIALOG_STYLE_BITS (wixl_wix_builder_dialog_style_bits_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_BIDI = 0xE0,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ENABLED = 0x02,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_INDIRECT = 0x08,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_INTEGER_CONTROL = 0x10,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_LEFT_SCROLL = 0x80,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_RIGHT_ALIGNED = 0x40,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_RTLRO = 0x20,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SUNKEN = 0x04,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_VISIBLE = 0x01,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FORMAT_SIZE = 0x080000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_NO_PREFIX = 0x020000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_NO_WRAP = 0x040000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_PASSWORD = 0x200000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_TRANSPARENT = 0x010000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_USERS_LANGUAGE = 0x100000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_PROGRESS_95 = 0x010000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_VOLUME = 0x020000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_REMOTE_VOLUME = 0x040000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_BITMAP = 0x040000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_SIZE = 0x100000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON = 0x080000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_16 = 0x200000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_32 = 0x400000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_48 = 0x600000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ELEVATION_SHIELD = 0x800000,
	WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SHOW_ROLLBACK_COST = 0x00400000
} WixlWixBuilderControlAttributes;

#define WIXL_WIX_BUILDER_TYPE_CONTROL_ATTRIBUTES (wixl_wix_builder_control_attributes_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_CREATE,
	WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_SET,
	WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_REMOVE
} WixlWixBuilderEnvironmentAction;

#define WIXL_WIX_BUILDER_TYPE_ENVIRONMENT_ACTION (wixl_wix_builder_environment_action_get_type ())
typedef enum  {
	WIXL_WIX_BUILDER_ENVIRONMENT_PART_ALL,
	WIXL_WIX_BUILDER_ENVIRONMENT_PART_FIRST,
	WIXL_WIX_BUILDER_ENVIRONMENT_PART_LAST
} WixlWixBuilderEnvironmentPart;

#define WIXL_WIX_BUILDER_TYPE_ENVIRONMENT_PART (wixl_wix_builder_environment_part_get_type ())
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _g_free0(var) (var = (g_free (var), NULL))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_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)))
typedef struct _Block1Data Block1Data;
typedef void (*WixlWixBuilderAddDefaultAction) (WixlMSIDefaultAction action, gpointer user_data, GError** error);
typedef struct _WixlMsiDatabasePrivate WixlMsiDatabasePrivate;

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

typedef struct _WixlMsiSummaryInfo WixlMsiSummaryInfo;
typedef struct _WixlMsiSummaryInfoClass WixlMsiSummaryInfoClass;

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

typedef struct _WixlMsiTableProperty WixlMsiTableProperty;
typedef struct _WixlMsiTablePropertyClass WixlMsiTablePropertyClass;

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

typedef struct _WixlMsiTableIcon WixlMsiTableIcon;
typedef struct _WixlMsiTableIconClass WixlMsiTableIconClass;

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

typedef struct _WixlMsiTableBinary WixlMsiTableBinary;
typedef struct _WixlMsiTableBinaryClass WixlMsiTableBinaryClass;

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

typedef struct _WixlMsiTableMedia WixlMsiTableMedia;
typedef struct _WixlMsiTableMediaClass WixlMsiTableMediaClass;

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

typedef struct _WixlMsiTableDirectory WixlMsiTableDirectory;
typedef struct _WixlMsiTableDirectoryClass WixlMsiTableDirectoryClass;

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

typedef struct _WixlMsiTableComponent WixlMsiTableComponent;
typedef struct _WixlMsiTableComponentClass WixlMsiTableComponentClass;

#define WIXL_TYPE_MSI_TABLE_CONDITION (wixl_msi_table_condition_get_type ())
#define WIXL_MSI_TABLE_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONDITION, WixlMsiTableCondition))
#define WIXL_MSI_TABLE_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONDITION, WixlMsiTableConditionClass))
#define WIXL_IS_MSI_TABLE_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONDITION))
#define WIXL_IS_MSI_TABLE_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONDITION))
#define WIXL_MSI_TABLE_CONDITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONDITION, WixlMsiTableConditionClass))

typedef struct _WixlMsiTableCondition WixlMsiTableCondition;
typedef struct _WixlMsiTableConditionClass WixlMsiTableConditionClass;

#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_INI_FILE (wixl_msi_table_ini_file_get_type ())
#define WIXL_MSI_TABLE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_INI_FILE, WixlMsiTableIniFile))
#define WIXL_MSI_TABLE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_INI_FILE, WixlMsiTableIniFileClass))
#define WIXL_IS_MSI_TABLE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_INI_FILE))
#define WIXL_IS_MSI_TABLE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_INI_FILE))
#define WIXL_MSI_TABLE_INI_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_INI_FILE, WixlMsiTableIniFileClass))

typedef struct _WixlMsiTableIniFile WixlMsiTableIniFile;
typedef struct _WixlMsiTableIniFileClass WixlMsiTableIniFileClass;

#define WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE (wixl_msi_table_remove_ini_file_get_type ())
#define WIXL_MSI_TABLE_REMOVE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE, WixlMsiTableRemoveIniFile))
#define WIXL_MSI_TABLE_REMOVE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE, WixlMsiTableRemoveIniFileClass))
#define WIXL_IS_MSI_TABLE_REMOVE_INI_FILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE))
#define WIXL_IS_MSI_TABLE_REMOVE_INI_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE))
#define WIXL_MSI_TABLE_REMOVE_INI_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_REMOVE_INI_FILE, WixlMsiTableRemoveIniFileClass))

typedef struct _WixlMsiTableRemoveIniFile WixlMsiTableRemoveIniFile;
typedef struct _WixlMsiTableRemoveIniFileClass WixlMsiTableRemoveIniFileClass;

#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_ACTION_TEXT (wixl_msi_table_action_text_get_type ())
#define WIXL_MSI_TABLE_ACTION_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ACTION_TEXT, WixlMsiTableActionText))
#define WIXL_MSI_TABLE_ACTION_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ACTION_TEXT, WixlMsiTableActionTextClass))
#define WIXL_IS_MSI_TABLE_ACTION_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ACTION_TEXT))
#define WIXL_IS_MSI_TABLE_ACTION_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ACTION_TEXT))
#define WIXL_MSI_TABLE_ACTION_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ACTION_TEXT, WixlMsiTableActionTextClass))

typedef struct _WixlMsiTableActionText WixlMsiTableActionText;
typedef struct _WixlMsiTableActionTextClass WixlMsiTableActionTextClass;

#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 WIXL_TYPE_MSI_TABLE_CHECK_BOX (wixl_msi_table_check_box_get_type ())
#define WIXL_MSI_TABLE_CHECK_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CHECK_BOX, WixlMsiTableCheckBox))
#define WIXL_MSI_TABLE_CHECK_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CHECK_BOX, WixlMsiTableCheckBoxClass))
#define WIXL_IS_MSI_TABLE_CHECK_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CHECK_BOX))
#define WIXL_IS_MSI_TABLE_CHECK_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CHECK_BOX))
#define WIXL_MSI_TABLE_CHECK_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CHECK_BOX, WixlMsiTableCheckBoxClass))

typedef struct _WixlMsiTableCheckBox WixlMsiTableCheckBox;
typedef struct _WixlMsiTableCheckBoxClass WixlMsiTableCheckBoxClass;

#define WIXL_TYPE_MSI_TABLE_EVENT_MAPPING (wixl_msi_table_event_mapping_get_type ())
#define WIXL_MSI_TABLE_EVENT_MAPPING(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING, WixlMsiTableEventMapping))
#define WIXL_MSI_TABLE_EVENT_MAPPING_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING, WixlMsiTableEventMappingClass))
#define WIXL_IS_MSI_TABLE_EVENT_MAPPING(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING))
#define WIXL_IS_MSI_TABLE_EVENT_MAPPING_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING))
#define WIXL_MSI_TABLE_EVENT_MAPPING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_EVENT_MAPPING, WixlMsiTableEventMappingClass))

typedef struct _WixlMsiTableEventMapping WixlMsiTableEventMapping;
typedef struct _WixlMsiTableEventMappingClass WixlMsiTableEventMappingClass;

#define WIXL_TYPE_MSI_TABLE_CONTROL (wixl_msi_table_control_get_type ())
#define WIXL_MSI_TABLE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONTROL, WixlMsiTableControl))
#define WIXL_MSI_TABLE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONTROL, WixlMsiTableControlClass))
#define WIXL_IS_MSI_TABLE_CONTROL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONTROL))
#define WIXL_IS_MSI_TABLE_CONTROL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONTROL))
#define WIXL_MSI_TABLE_CONTROL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONTROL, WixlMsiTableControlClass))

typedef struct _WixlMsiTableControl WixlMsiTableControl;
typedef struct _WixlMsiTableControlClass WixlMsiTableControlClass;

#define WIXL_TYPE_MSI_TABLE_UI_TEXT (wixl_msi_table_ui_text_get_type ())
#define WIXL_MSI_TABLE_UI_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_UI_TEXT, WixlMsiTableUIText))
#define WIXL_MSI_TABLE_UI_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_UI_TEXT, WixlMsiTableUITextClass))
#define WIXL_IS_MSI_TABLE_UI_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_UI_TEXT))
#define WIXL_IS_MSI_TABLE_UI_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_UI_TEXT))
#define WIXL_MSI_TABLE_UI_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_UI_TEXT, WixlMsiTableUITextClass))

typedef struct _WixlMsiTableUIText WixlMsiTableUIText;
typedef struct _WixlMsiTableUITextClass WixlMsiTableUITextClass;

#define WIXL_TYPE_MSI_TABLE_TEXT_STYLE (wixl_msi_table_text_style_get_type ())
#define WIXL_MSI_TABLE_TEXT_STYLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_TEXT_STYLE, WixlMsiTableTextStyle))
#define WIXL_MSI_TABLE_TEXT_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_TEXT_STYLE, WixlMsiTableTextStyleClass))
#define WIXL_IS_MSI_TABLE_TEXT_STYLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_TEXT_STYLE))
#define WIXL_IS_MSI_TABLE_TEXT_STYLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_TEXT_STYLE))
#define WIXL_MSI_TABLE_TEXT_STYLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_TEXT_STYLE, WixlMsiTableTextStyleClass))

typedef struct _WixlMsiTableTextStyle WixlMsiTableTextStyle;
typedef struct _WixlMsiTableTextStyleClass WixlMsiTableTextStyleClass;

#define WIXL_TYPE_MSI_TABLE_DIALOG (wixl_msi_table_dialog_get_type ())
#define WIXL_MSI_TABLE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_DIALOG, WixlMsiTableDialog))
#define WIXL_MSI_TABLE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_DIALOG, WixlMsiTableDialogClass))
#define WIXL_IS_MSI_TABLE_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_DIALOG))
#define WIXL_IS_MSI_TABLE_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_DIALOG))
#define WIXL_MSI_TABLE_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_DIALOG, WixlMsiTableDialogClass))

typedef struct _WixlMsiTableDialog WixlMsiTableDialog;
typedef struct _WixlMsiTableDialogClass WixlMsiTableDialogClass;

#define WIXL_TYPE_MSI_TABLE_CONTROL_EVENT (wixl_msi_table_control_event_get_type ())
#define WIXL_MSI_TABLE_CONTROL_EVENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT, WixlMsiTableControlEvent))
#define WIXL_MSI_TABLE_CONTROL_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT, WixlMsiTableControlEventClass))
#define WIXL_IS_MSI_TABLE_CONTROL_EVENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT))
#define WIXL_IS_MSI_TABLE_CONTROL_EVENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT))
#define WIXL_MSI_TABLE_CONTROL_EVENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_EVENT, WixlMsiTableControlEventClass))

typedef struct _WixlMsiTableControlEvent WixlMsiTableControlEvent;
typedef struct _WixlMsiTableControlEventClass WixlMsiTableControlEventClass;

#define WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION (wixl_msi_table_control_condition_get_type ())
#define WIXL_MSI_TABLE_CONTROL_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION, WixlMsiTableControlCondition))
#define WIXL_MSI_TABLE_CONTROL_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION, WixlMsiTableControlConditionClass))
#define WIXL_IS_MSI_TABLE_CONTROL_CONDITION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION))
#define WIXL_IS_MSI_TABLE_CONTROL_CONDITION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION))
#define WIXL_MSI_TABLE_CONTROL_CONDITION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_CONTROL_CONDITION, WixlMsiTableControlConditionClass))

typedef struct _WixlMsiTableControlCondition WixlMsiTableControlCondition;
typedef struct _WixlMsiTableControlConditionClass WixlMsiTableControlConditionClass;

#define WIXL_TYPE_MSI_TABLE_LIST_BOX (wixl_msi_table_list_box_get_type ())
#define WIXL_MSI_TABLE_LIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_LIST_BOX, WixlMsiTableListBox))
#define WIXL_MSI_TABLE_LIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_LIST_BOX, WixlMsiTableListBoxClass))
#define WIXL_IS_MSI_TABLE_LIST_BOX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_LIST_BOX))
#define WIXL_IS_MSI_TABLE_LIST_BOX_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_LIST_BOX))
#define WIXL_MSI_TABLE_LIST_BOX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_LIST_BOX, WixlMsiTableListBoxClass))

typedef struct _WixlMsiTableListBox WixlMsiTableListBox;
typedef struct _WixlMsiTableListBoxClass WixlMsiTableListBoxClass;

#define WIXL_TYPE_MSI_TABLE_RADIO_BUTTON (wixl_msi_table_radio_button_get_type ())
#define WIXL_MSI_TABLE_RADIO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON, WixlMsiTableRadioButton))
#define WIXL_MSI_TABLE_RADIO_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON, WixlMsiTableRadioButtonClass))
#define WIXL_IS_MSI_TABLE_RADIO_BUTTON(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON))
#define WIXL_IS_MSI_TABLE_RADIO_BUTTON_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON))
#define WIXL_MSI_TABLE_RADIO_BUTTON_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_RADIO_BUTTON, WixlMsiTableRadioButtonClass))

typedef struct _WixlMsiTableRadioButton WixlMsiTableRadioButton;
typedef struct _WixlMsiTableRadioButtonClass WixlMsiTableRadioButtonClass;

#define WIXL_TYPE_MSI_TABLE_ENVIRONMENT (wixl_msi_table_environment_get_type ())
#define WIXL_MSI_TABLE_ENVIRONMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), WIXL_TYPE_MSI_TABLE_ENVIRONMENT, WixlMsiTableEnvironment))
#define WIXL_MSI_TABLE_ENVIRONMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WIXL_TYPE_MSI_TABLE_ENVIRONMENT, WixlMsiTableEnvironmentClass))
#define WIXL_IS_MSI_TABLE_ENVIRONMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), WIXL_TYPE_MSI_TABLE_ENVIRONMENT))
#define WIXL_IS_MSI_TABLE_ENVIRONMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WIXL_TYPE_MSI_TABLE_ENVIRONMENT))
#define WIXL_MSI_TABLE_ENVIRONMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WIXL_TYPE_MSI_TABLE_ENVIRONMENT, WixlMsiTableEnvironmentClass))

typedef struct _WixlMsiTableEnvironment WixlMsiTableEnvironment;
typedef struct _WixlMsiTableEnvironmentClass WixlMsiTableEnvironmentClass;
#define _wixl_msi_table_sequence_action_unref0(var) ((var == NULL) ? NULL : (var = (wixl_msi_table_sequence_action_unref (var), NULL)))

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

struct _WixlWixBuilderClass {
	WixlWixNodeVisitorClass parent_class;
};

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

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

struct _WixlMsiDatabase {
	GObject parent_instance;
	WixlMsiDatabasePrivate * priv;
	WixlArch arch;
	WixlExtension* extensions;
	gint extensions_length1;
	gint _extensions_size_;
	WixlMsiSummaryInfo* info;
	WixlMsiTableProperty* table_property;
	WixlMsiTableIcon* table_icon;
	WixlMsiTableBinary* table_binary;
	WixlMsiTableMedia* table_media;
	WixlMsiTableDirectory* table_directory;
	WixlMsiTableComponent* table_component;
	WixlMsiTableCondition* table_condition;
	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;
	WixlMsiTableIniFile* table_ini_file;
	WixlMsiTableRemoveIniFile* table_remove_ini_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;
	WixlMsiTableActionText* table_action_text;
	WixlMsiTableRegLocator* table_reg_locator;
	WixlMsiTableCreateFolder* table_create_folder;
	WixlMsiTableSignature* table_signature;
	WixlMsiTableFileHash* table_file_hash;
	WixlMsiTableCheckBox* table_check_box;
	WixlMsiTableEventMapping* table_event_mapping;
	WixlMsiTableControl* table_control;
	WixlMsiTableUIText* table_ui_text;
	WixlMsiTableTextStyle* table_text_style;
	WixlMsiTableDialog* table_dialog;
	WixlMsiTableControlEvent* table_control_event;
	WixlMsiTableControlCondition* table_control_condition;
	WixlMsiTableListBox* table_list_box;
	WixlMsiTableRadioButton* table_radio_button;
	WixlMsiTableEnvironment* table_environment;
	GHashTable* tables;
};

struct _WixlMsiDatabaseClass {
	GObjectClass parent_class;
};

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

VALA_EXTERN GType wixl_arch_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlArch wixl_arch_from_string (const gchar* s,
                                GError** error);
VALA_EXTERN gchar* wixl_arch_to_string (WixlArch self);
VALA_EXTERN GType wixl_extension_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlExtension wixl_extension_from_string (const gchar* s,
                                          GError** error);
VALA_EXTERN gchar** wixl_extension_get_files (WixlExtension self,
                                  gint* result_length1);
VALA_EXTERN gchar* wixl_extension_get_dir (WixlExtension self);
VALA_EXTERN gchar* wixl_extension_to_string (WixlExtension self);
VALA_EXTERN GType wixl_wix_builder_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_wix_root_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_database_get_type (void) G_GNUC_CONST ;
static GType wixl_wix_builder_source_flags_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GType wixl_wix_builder_component_attribute_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GType wixl_wix_builder_feature_display_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderFeatureDisplay wixl_wix_builder_feature_display_from_string (const gchar* s,
                                                                           GError** error);
static GType wixl_wix_builder_absent_value_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderAbsentValue wixl_wix_builder_absent_value_from_string (const gchar* s,
                                                                     GError** error);
static GType wixl_wix_builder_allow_advertise_value_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderAllowAdvertiseValue wixl_wix_builder_allow_advertise_value_from_string (const gchar* s,
                                                                                      GError** error);
static GType wixl_wix_builder_install_default_value_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderInstallDefaultValue wixl_wix_builder_install_default_value_from_string (const gchar* s,
                                                                                      GError** error);
static GType wixl_wix_builder_typical_default_value_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderTypicalDefaultValue wixl_wix_builder_typical_default_value_from_string (const gchar* s,
                                                                                      GError** error);
static GType wixl_wix_builder_feature_attributes_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
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_ini_file_action_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderIniFileAction wixl_wix_builder_ini_file_action_from_string (const gchar* s,
                                                                          GError** error);
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 GType wixl_wix_builder_text_style_bits_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GType wixl_wix_builder_dialog_style_bits_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GType wixl_wix_builder_control_attributes_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static GType wixl_wix_builder_environment_action_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderEnvironmentAction wixl_wix_builder_environment_action_from_string (const gchar* s,
                                                                                 GError** error);
static GType wixl_wix_builder_environment_part_get_type (void) G_GNUC_CONST  G_GNUC_UNUSED ;
static WixlWixBuilderEnvironmentPart wixl_wix_builder_environment_part_from_string (const gchar* s,
                                                                             GError** error);
static void _g_object_unref0_ (gpointer var);
static inline void _g_list_free__g_object_unref0_ (GList* self);
VALA_EXTERN WixlWixBuilder* wixl_wix_builder_new (gchar** includedirs,
                                      gint includedirs_length1,
                                      WixlArch arch,
                                      WixlExtension* extensions,
                                      gint extensions_length1,
                                      const gchar* extdir);
VALA_EXTERN WixlWixBuilder* wixl_wix_builder_construct (GType object_type,
                                            gchar** includedirs,
                                            gint includedirs_length1,
                                            WixlArch arch,
                                            WixlExtension* extensions,
                                            gint extensions_length1,
                                            const gchar* extdir);
VALA_EXTERN void wixl_wix_builder_add_path (WixlWixBuilder* self,
                                const gchar* p);
static WixlExtension* _vala_array_dup1 (WixlExtension* self,
                                 gssize length);
VALA_EXTERN void wixl_wix_builder_load_extension_file (WixlWixBuilder* self,
                                           WixlExtension ext,
                                           const gchar* name,
                                           GError** error);
VALA_EXTERN void wixl_wix_builder_define_variable (WixlWixBuilder* self,
                                       const gchar* name,
                                       const gchar* value);
VALA_EXTERN void wixl_wix_builder_load_doc (WixlWixBuilder* self,
                                xmlDoc* doc,
                                GError** error);
VALA_EXTERN WixlWixRoot* wixl_wix_root_new (void);
VALA_EXTERN WixlWixRoot* wixl_wix_root_construct (GType object_type);
static gboolean _vala_wixl_extension_array_contains (WixlExtension * stack,
                                              gssize stack_length,
                                              const WixlExtension needle);
VALA_EXTERN void wixl_wix_builder_load_file (WixlWixBuilder* self,
                                 GFile* file,
                                 gboolean preproc_only,
                                 GError** error);
VALA_EXTERN GType wixl_preprocessor_get_type (void) G_GNUC_CONST ;
VALA_EXTERN WixlPreprocessor* wixl_preprocessor_new (GHashTable* globals,
                                         GList* includedirs,
                                         WixlArch arch);
VALA_EXTERN WixlPreprocessor* wixl_preprocessor_construct (GType object_type,
                                               GHashTable* globals,
                                               GList* includedirs,
                                               WixlArch arch);
VALA_EXTERN 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);
VALA_EXTERN gpointer* wixl_wix_builder_get_elements (WixlWixBuilder* self,
                                         GType g_type,
                                         GBoxedCopyFunc g_dup_func,
                                         GDestroyNotify g_destroy_func,
                                         gint* result_length1);
static gpointer* _vala_array_dup2 (gpointer* self,
                            gssize 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);
VALA_EXTERN GType wixl_msi_summary_info_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_property_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_icon_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_binary_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_media_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_directory_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_component_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_condition_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_feature_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_feature_components_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_remove_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_registry_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_service_control_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_service_install_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_ini_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_remove_ini_file_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_admin_execute_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_admin_ui_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_advt_execute_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_install_execute_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_install_ui_sequence_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_streams_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_shortcut_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_upgrade_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_launch_condition_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_app_search_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_custom_action_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_action_text_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_reg_locator_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_create_folder_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_signature_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_file_hash_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_check_box_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_event_mapping_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_control_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_ui_text_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_text_style_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_dialog_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_control_event_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_control_condition_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_list_box_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_radio_button_get_type (void) G_GNUC_CONST ;
VALA_EXTERN GType wixl_msi_table_environment_get_type (void) G_GNUC_CONST ;
static void wixl_wix_builder_hash_files (WixlWixBuilder* self,
                                  GError** error);
VALA_EXTERN void wixl_msi_table_file_hash_add_with_file (WixlMsiTableFileHash* self,
                                             const gchar* FileId,
                                             GFile* file,
                                             GError** error);
static void wixl_wix_builder_validate_companion_files (WixlWixBuilder* self,
                                                GError** error);
static void _g_free0_ (gpointer var);
static void wixl_wix_builder_build_cabinet (WixlWixBuilder* self,
                                     GError** error);
VALA_EXTERN 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_dup3 (guint8* self,
                          gssize length);
VALA_EXTERN void wixl_msi_table_streams_add (WixlMsiTableStreams* self,
                                 const gchar* name,
                                 GInputStream* input,
                                 gsize count,
                                 GError** error);
VALA_EXTERN 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);
VALA_EXTERN void wixl_msi_table_shortcut_set_target (LibmsiRecord* rec,
                                         const gchar* Target,
                                         GError** error);
VALA_EXTERN void wixl_wix_builder_property_update (WixlWixBuilder* self,
                                       GError** error);
VALA_EXTERN void wixl_msi_table_property_add (WixlMsiTableProperty* self,
                                  const gchar* prop,
                                  const gchar* value,
                                  GError** error);
VALA_EXTERN WixlMsiDatabase* wixl_wix_builder_build (WixlWixBuilder* self,
                                         GError** error);
VALA_EXTERN WixlMsiDatabase* wixl_msi_database_new (WixlArch arch,
                                        WixlExtension* extensions,
                                        gint extensions_length1);
VALA_EXTERN WixlMsiDatabase* wixl_msi_database_construct (GType object_type,
                                              WixlArch arch,
                                              WixlExtension* extensions,
                                              gint extensions_length1);
static void wixl_wix_builder_real_visit_product (WixlWixNodeVisitor* base,
                                          WixlWixProduct* product,
                                          GError** error);
VALA_EXTERN void wixl_msi_summary_info_set_codepage (WixlMsiSummaryInfo* self,
                                         gint value,
                                         GError** error);
VALA_EXTERN gchar* wixl_msi_summary_info_get_subject (WixlMsiSummaryInfo* self);
VALA_EXTERN void wixl_msi_summary_info_set_subject (WixlMsiSummaryInfo* self,
                                        const gchar* value,
                                        GError** error);
VALA_EXTERN void wixl_msi_summary_info_set_author (WixlMsiSummaryInfo* self,
                                       const gchar* value,
                                       GError** error);
VALA_EXTERN gchar* wixl_msi_summary_info_get_comments (WixlMsiSummaryInfo* self);
VALA_EXTERN 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);
VALA_EXTERN void wixl_msi_summary_info_set_keywords (WixlMsiSummaryInfo* self,
                                         const gchar* value,
                                         GError** error);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN void wixl_msi_table_component_add (WixlMsiTableComponent* self,
                                   const gchar* Component,
                                   const gchar* ComponentId,
                                   const gchar* Directory,
                                   gint Attributes,
                                   const gchar* KeyPath,
                                   const gchar* Condition,
                                   GError** error);
static void wixl_wix_builder_real_visit_feature (WixlWixNodeVisitor* base,
                                          WixlWixFeature* feature,
                                          WixlVisitState state,
                                          GError** error);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN LibmsiRecord* wixl_msi_table_file_add (WixlMsiTableFile* self,
                                       const gchar* File,
                                       const gchar* Component,
                                       const gchar* FileName,
                                       gint FileSize,
                                       gint Attributes,
                                       const gchar* Version,
                                       gint Sequence,
                                       GError** error);
static void wixl_wix_builder_real_visit_ini_file (WixlWixNodeVisitor* base,
                                           WixlWixIniFile* inifile,
                                           GError** error);
VALA_EXTERN void wixl_msi_table_ini_file_add (WixlMsiTableIniFile* self,
                                  const gchar* IniFile,
                                  const gchar* FileName,
                                  const gchar* DirProperty,
                                  const gchar* Section,
                                  const gchar* Key,
                                  const gchar* Value,
                                  gint Action,
                                  const gchar* Component,
                                  GError** error);
VALA_EXTERN void wixl_msi_table_remove_ini_file_add (WixlMsiTableRemoveIniFile* self,
                                         const gchar* IniFile,
                                         const gchar* FileName,
                                         const gchar* DirProperty,
                                         const gchar* Section,
                                         const gchar* Key,
                                         const gchar* Value,
                                         gint Action,
                                         const gchar* Component,
                                         GError** error);
static void wixl_wix_builder_real_visit_shortcut (WixlWixNodeVisitor* base,
                                           WixlWixShortcut* shortcut,
                                           GError** error);
VALA_EXTERN LibmsiRecord* wixl_msi_table_shortcut_add (WixlMsiTableShortcut* self,
                                           const gchar* Shortcut,
                                           const gchar* Directory,
                                           const gchar* Name,
                                           const gchar* Component,
                                           GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_icon (LibmsiRecord* rec,
                                       const gchar* Icon,
                                       GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_icon_index (LibmsiRecord* rec,
                                             gint IconIndex,
                                             GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_working_dir (LibmsiRecord* rec,
                                              const gchar* WkDir,
                                              GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_description (LibmsiRecord* rec,
                                              const gchar* Description,
                                              GError** error);
VALA_EXTERN void wixl_msi_table_shortcut_set_arguments (LibmsiRecord* rec,
                                            const gchar* Arguments,
                                            GError** error);
static void wixl_wix_builder_real_visit_sequence (WixlWixNodeVisitor* base,
                                           WixlWixSequence* sequence,
                                           GError** error);
static void wixl_wix_builder_real_visit_condition (WixlWixNodeVisitor* base,
                                            WixlWixCondition* condition,
                                            GError** error);
VALA_EXTERN void wixl_msi_table_condition_add (WixlMsiTableCondition* self,
                                   const gchar* Feature,
                                   gint Level,
                                   const gchar* Condition,
                                   GError** error);
VALA_EXTERN 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);
VALA_EXTERN 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,
                       gint* length,
                       gint* 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);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN void wixl_msi_table_app_search_add (WixlMsiTableAppSearch* self,
                                    const gchar* Property,
                                    const gchar* Signature,
                                    GError** error);
VALA_EXTERN 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);
VALA_EXTERN 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);
VALA_EXTERN 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,
                       gint* length,
                       gint* size,
                       gchar* value);
static void _vala_array_add3 (gchar** * array,
                       gint* length,
                       gint* size,
                       gchar* value);
static void _vala_array_add4 (gchar** * array,
                       gint* length,
                       gint* size,
                       gchar* value);
static void wixl_wix_builder_real_visit_media_template (WixlWixNodeVisitor* base,
                                                 WixlWixMediaTemplate* tmpl,
                                                 GError** error);
static void wixl_wix_builder_real_visit_ui_ref (WixlWixNodeVisitor* base,
                                         WixlWixUIRef* ref,
                                         GError** error);
static void wixl_wix_builder_real_visit_ui_text (WixlWixNodeVisitor* base,
                                          WixlWixUIText* text,
                                          GError** error);
VALA_EXTERN void wixl_msi_table_ui_text_add (WixlMsiTableUIText* self,
                                 const gchar* key,
                                 const gchar* text,
                                 GError** error);
static void wixl_wix_builder_real_visit_text_element (WixlWixNodeVisitor* base,
                                               WixlWixTextElement* text,
                                               GError** error);
static void wixl_wix_builder_real_visit_text_style (WixlWixNodeVisitor* base,
                                             WixlWixTextStyle* style,
                                             GError** error);
static gint* _int_dup (gint* self);
VALA_EXTERN void wixl_msi_table_text_style_add (WixlMsiTableTextStyle* self,
                                    const gchar* textstyle,
                                    const gchar* facename,
                                    gint size,
                                    gint* color,
                                    gint stylebits,
                                    GError** error);
static void wixl_wix_builder_real_visit_dialog (WixlWixNodeVisitor* base,
                                         WixlWixDialog* dialog,
                                         GError** error);
VALA_EXTERN void wixl_msi_table_dialog_add (WixlMsiTableDialog* self,
                                const gchar* dialog,
                                gint hcenter,
                                gint vcenter,
                                gint width,
                                gint height,
                                gint attributes,
                                const gchar* title,
                                const gchar* first,
                                const gchar* _default_,
                                const gchar* cancel,
                                GError** error);
VALA_EXTERN gboolean wixl_msi_table_control_set_next_control (WixlMsiTableControl* self,
                                                  LibmsiRecord* rec,
                                                  const gchar* next_control);
static void wixl_wix_builder_real_visit_dialog_ref (WixlWixNodeVisitor* base,
                                             WixlWixDialogRef* ref,
                                             GError** error);
static void wixl_wix_builder_real_visit_control (WixlWixNodeVisitor* base,
                                          WixlWixControl* control,
                                          GError** error);
VALA_EXTERN void wixl_msi_table_control_condition_add (WixlMsiTableControlCondition* self,
                                           const gchar* dialog,
                                           const gchar* control,
                                           const gchar* action,
                                           const gchar* condition,
                                           GError** error);
VALA_EXTERN LibmsiRecord* wixl_msi_table_control_add (WixlMsiTableControl* self,
                                          const gchar* dialog,
                                          const gchar* control,
                                          const gchar* type,
                                          gint x,
                                          gint y,
                                          gint width,
                                          gint height,
                                          gint attributes,
                                          const gchar* property,
                                          const gchar* text,
                                          const gchar* filename,
                                          const gchar* help,
                                          GError** error);
VALA_EXTERN void wixl_msi_table_check_box_add (WixlMsiTableCheckBox* self,
                                   const gchar* property,
                                   const gchar* value,
                                   GError** error);
static void wixl_wix_builder_real_visit_publish (WixlWixNodeVisitor* base,
                                          WixlWixPublish* publish,
                                          GError** error);
VALA_EXTERN void wixl_msi_table_control_event_add (WixlMsiTableControlEvent* self,
                                       const gchar* dialog,
                                       const gchar* control,
                                       const gchar* event,
                                       const gchar* argument,
                                       const gchar* condition,
                                       gint* ordering,
                                       GError** error);
static void wixl_wix_builder_real_visit_radio_button (WixlWixNodeVisitor* base,
                                               WixlWixRadioButton* radio,
                                               GError** error);
VALA_EXTERN void wixl_msi_table_radio_button_add (WixlMsiTableRadioButton* self,
                                      const gchar* property,
                                      gint order,
                                      const gchar* value,
                                      gint x,
                                      gint y,
                                      gint width,
                                      gint height,
                                      const gchar* text,
                                      const gchar* help,
                                      GError** error);
static void wixl_wix_builder_real_visit_subscribe (WixlWixNodeVisitor* base,
                                            WixlWixSubscribe* subscribe,
                                            GError** error);
VALA_EXTERN void wixl_msi_table_event_mapping_add (WixlMsiTableEventMapping* self,
                                       const gchar* dialog,
                                       const gchar* control,
                                       const gchar* event,
                                       const gchar* attribute,
                                       GError** error);
static void wixl_wix_builder_real_visit_progress_text (WixlWixNodeVisitor* base,
                                                WixlWixProgressText* progress_text,
                                                GError** error);
VALA_EXTERN void wixl_msi_table_action_text_add (WixlMsiTableActionText* self,
                                     const gchar* Action,
                                     const gchar* Description,
                                     const gchar* Template,
                                     GError** error);
static void wixl_wix_builder_real_visit_environment (WixlWixNodeVisitor* base,
                                              WixlWixEnvironment* env,
                                              GError** error);
VALA_EXTERN LibmsiRecord* wixl_msi_table_environment_add (WixlMsiTableEnvironment* self,
                                              const gchar* Environment,
                                              const gchar* Name,
                                              const gchar* Value,
                                              const gchar* Component,
                                              GError** error);
static GObject * wixl_wix_builder_constructor (GType type,
                                        guint n_construct_properties,
                                        GObjectConstructParam * construct_properties);
static void wixl_wix_builder_finalize (GObject * obj);
static GType wixl_wix_builder_get_type_once (void);
static void _vala_array_destroy (gpointer array,
                          gssize array_length,
                          GDestroyNotify destroy_func);
static void _vala_array_free (gpointer array,
                       gssize array_length,
                       GDestroyNotify destroy_func);
static inline gpointer _vala_memdup2 (gconstpointer mem,
                        gsize byte_size);

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

gchar*
wixl_arch_to_string (WixlArch self)
{
	gchar* result;
	switch (self) {
		case WIXL_ARCH_X86:
		{
			gchar* _tmp0_;
			_tmp0_ = g_strdup ("x86");
			result = _tmp0_;
			return result;
		}
		case WIXL_ARCH_IA64:
		{
			gchar* _tmp1_;
			_tmp1_ = g_strdup ("ia64");
			result = _tmp1_;
			return result;
		}
		case WIXL_ARCH_X64:
		{
			gchar* _tmp2_;
			_tmp2_ = g_strdup ("x64");
			result = _tmp2_;
			return result;
		}
		default:
		{
			gchar* _tmp3_;
			_tmp3_ = g_strdup ("");
			result = _tmp3_;
			return result;
		}
	}
}

static GType
wixl_arch_get_type_once (void)
{
	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);
	return wixl_arch_type_id;
}

GType
wixl_arch_get_type (void)
{
	static volatile gsize wixl_arch_type_id__once = 0;
	if (g_once_init_enter (&wixl_arch_type_id__once)) {
		GType wixl_arch_type_id;
		wixl_arch_type_id = wixl_arch_get_type_once ();
		g_once_init_leave (&wixl_arch_type_id__once, wixl_arch_type_id);
	}
	return wixl_arch_type_id__once;
}

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

gchar**
wixl_extension_get_files (WixlExtension self,
                          gint* result_length1)
{
	gchar** result;
	switch (self) {
		case WIXL_EXTENSION_UI:
		{
			gchar* _tmp0_;
			gchar* _tmp1_;
			gchar** _tmp2_;
			gchar** _tmp3_;
			gint _tmp3__length1;
			_tmp0_ = g_strdup ("CancelDlg");
			_tmp1_ = g_strdup ("Common");
			_tmp2_ = g_new0 (gchar*, 2 + 1);
			_tmp2_[0] = _tmp0_;
			_tmp2_[1] = _tmp1_;
			_tmp3_ = _tmp2_;
			_tmp3__length1 = 2;
			if (result_length1) {
				*result_length1 = _tmp3__length1;
			}
			result = _tmp3_;
			return result;
		}
		default:
		{
			gchar** _tmp4_;
			gchar** _tmp5_;
			gint _tmp5__length1;
			_tmp4_ = g_new0 (gchar*, 0 + 1);
			_tmp5_ = _tmp4_;
			_tmp5__length1 = 0;
			if (result_length1) {
				*result_length1 = _tmp5__length1;
			}
			result = _tmp5_;
			return result;
		}
	}
}

gchar*
wixl_extension_get_dir (WixlExtension self)
{
	gchar* result;
	switch (self) {
		case WIXL_EXTENSION_UI:
		{
			gchar* _tmp0_;
			_tmp0_ = g_strdup ("ui");
			result = _tmp0_;
			return result;
		}
		default:
		{
			gchar* _tmp1_;
			_tmp1_ = g_strdup ("");
			result = _tmp1_;
			return result;
		}
	}
}

gchar*
wixl_extension_to_string (WixlExtension self)
{
	gchar* result;
	switch (self) {
		case WIXL_EXTENSION_UI:
		{
			gchar* _tmp0_;
			_tmp0_ = g_strdup ("ui");
			result = _tmp0_;
			return result;
		}
		default:
		{
			gchar* _tmp1_;
			_tmp1_ = g_strdup ("");
			result = _tmp1_;
			return result;
		}
	}
}

static GType
wixl_extension_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_EXTENSION_UI, "WIXL_EXTENSION_UI", "ui"}, {0, NULL, NULL}};
	GType wixl_extension_type_id;
	wixl_extension_type_id = g_enum_register_static ("WixlExtension", values);
	return wixl_extension_type_id;
}

GType
wixl_extension_get_type (void)
{
	static volatile gsize wixl_extension_type_id__once = 0;
	if (g_once_init_enter (&wixl_extension_type_id__once)) {
		GType wixl_extension_type_id;
		wixl_extension_type_id = wixl_extension_get_type_once ();
		g_once_init_leave (&wixl_extension_type_id__once, wixl_extension_type_id);
	}
	return wixl_extension_type_id__once;
}

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

static GType
wixl_wix_builder_source_flags_get_type_once (void)
{
	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);
	return wixl_wix_builder_source_flags_type_id;
}

static GType
wixl_wix_builder_source_flags_get_type (void)
{
	static volatile gsize wixl_wix_builder_source_flags_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_source_flags_type_id__once)) {
		GType wixl_wix_builder_source_flags_type_id;
		wixl_wix_builder_source_flags_type_id = wixl_wix_builder_source_flags_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_source_flags_type_id__once, wixl_wix_builder_source_flags_type_id);
	}
	return wixl_wix_builder_source_flags_type_id__once;
}

static GType
wixl_wix_builder_component_attribute_get_type_once (void)
{
	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);
	return wixl_wix_builder_component_attribute_type_id;
}

static GType
wixl_wix_builder_component_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_component_attribute_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_component_attribute_type_id__once)) {
		GType wixl_wix_builder_component_attribute_type_id;
		wixl_wix_builder_component_attribute_type_id = wixl_wix_builder_component_attribute_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_component_attribute_type_id__once, wixl_wix_builder_component_attribute_type_id);
	}
	return wixl_wix_builder_component_attribute_type_id__once;
}

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

static GType
wixl_wix_builder_feature_display_get_type_once (void)
{
	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);
	return wixl_wix_builder_feature_display_type_id;
}

static GType
wixl_wix_builder_feature_display_get_type (void)
{
	static volatile gsize wixl_wix_builder_feature_display_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_feature_display_type_id__once)) {
		GType wixl_wix_builder_feature_display_type_id;
		wixl_wix_builder_feature_display_type_id = wixl_wix_builder_feature_display_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_feature_display_type_id__once, wixl_wix_builder_feature_display_type_id);
	}
	return wixl_wix_builder_feature_display_type_id__once;
}

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

static GType
wixl_wix_builder_absent_value_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_WIX_BUILDER_ABSENT_VALUE_Allow, "WIXL_WIX_BUILDER_ABSENT_VALUE_Allow", "allow"}, {WIXL_WIX_BUILDER_ABSENT_VALUE_Disallow, "WIXL_WIX_BUILDER_ABSENT_VALUE_Disallow", "disallow"}, {0, NULL, NULL}};
	GType wixl_wix_builder_absent_value_type_id;
	wixl_wix_builder_absent_value_type_id = g_enum_register_static ("WixlWixBuilderAbsentValue", values);
	return wixl_wix_builder_absent_value_type_id;
}

static GType
wixl_wix_builder_absent_value_get_type (void)
{
	static volatile gsize wixl_wix_builder_absent_value_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_absent_value_type_id__once)) {
		GType wixl_wix_builder_absent_value_type_id;
		wixl_wix_builder_absent_value_type_id = wixl_wix_builder_absent_value_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_absent_value_type_id__once, wixl_wix_builder_absent_value_type_id);
	}
	return wixl_wix_builder_absent_value_type_id__once;
}

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

static GType
wixl_wix_builder_allow_advertise_value_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_No, "WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_No", "no"}, {WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_System, "WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_System", "system"}, {WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_Yes, "WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_Yes", "yes"}, {0, NULL, NULL}};
	GType wixl_wix_builder_allow_advertise_value_type_id;
	wixl_wix_builder_allow_advertise_value_type_id = g_enum_register_static ("WixlWixBuilderAllowAdvertiseValue", values);
	return wixl_wix_builder_allow_advertise_value_type_id;
}

static GType
wixl_wix_builder_allow_advertise_value_get_type (void)
{
	static volatile gsize wixl_wix_builder_allow_advertise_value_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_allow_advertise_value_type_id__once)) {
		GType wixl_wix_builder_allow_advertise_value_type_id;
		wixl_wix_builder_allow_advertise_value_type_id = wixl_wix_builder_allow_advertise_value_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_allow_advertise_value_type_id__once, wixl_wix_builder_allow_advertise_value_type_id);
	}
	return wixl_wix_builder_allow_advertise_value_type_id__once;
}

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

static GType
wixl_wix_builder_install_default_value_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_FollowParent, "WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_FollowParent", "followparent"}, {WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Local, "WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Local", "local"}, {WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Source, "WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Source", "source"}, {0, NULL, NULL}};
	GType wixl_wix_builder_install_default_value_type_id;
	wixl_wix_builder_install_default_value_type_id = g_enum_register_static ("WixlWixBuilderInstallDefaultValue", values);
	return wixl_wix_builder_install_default_value_type_id;
}

static GType
wixl_wix_builder_install_default_value_get_type (void)
{
	static volatile gsize wixl_wix_builder_install_default_value_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_install_default_value_type_id__once)) {
		GType wixl_wix_builder_install_default_value_type_id;
		wixl_wix_builder_install_default_value_type_id = wixl_wix_builder_install_default_value_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_install_default_value_type_id__once, wixl_wix_builder_install_default_value_type_id);
	}
	return wixl_wix_builder_install_default_value_type_id__once;
}

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

static GType
wixl_wix_builder_typical_default_value_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Advertise, "WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Advertise", "advertise"}, {WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Install, "WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Install", "install"}, {0, NULL, NULL}};
	GType wixl_wix_builder_typical_default_value_type_id;
	wixl_wix_builder_typical_default_value_type_id = g_enum_register_static ("WixlWixBuilderTypicalDefaultValue", values);
	return wixl_wix_builder_typical_default_value_type_id;
}

static GType
wixl_wix_builder_typical_default_value_get_type (void)
{
	static volatile gsize wixl_wix_builder_typical_default_value_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_typical_default_value_type_id__once)) {
		GType wixl_wix_builder_typical_default_value_type_id;
		wixl_wix_builder_typical_default_value_type_id = wixl_wix_builder_typical_default_value_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_typical_default_value_type_id__once, wixl_wix_builder_typical_default_value_type_id);
	}
	return wixl_wix_builder_typical_default_value_type_id__once;
}

static GType
wixl_wix_builder_feature_attributes_get_type_once (void)
{
	static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_NONE, "WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_NONE", "none"}, {WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORSOURCE, "WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORSOURCE", "favorsource"}, {WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FOLLOWPARENT, "WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FOLLOWPARENT", "followparent"}, {WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORADVERTISE, "WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORADVERTISE", "favoradvertise"}, {WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_DISALLOWADVERTISE, "WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_DISALLOWADVERTISE", "disallowadvertise"}, {WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_UIDISALLOWABSENT, "WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_UIDISALLOWABSENT", "uidisallowabsent"}, {WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_NOUNSUPPORTEDADVERTISE, "WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_NOUNSUPPORTEDADVERTISE", "nounsupportedadvertise"}, {0, NULL, NULL}};
	GType wixl_wix_builder_feature_attributes_type_id;
	wixl_wix_builder_feature_attributes_type_id = g_flags_register_static ("WixlWixBuilderFeatureAttributes", values);
	return wixl_wix_builder_feature_attributes_type_id;
}

static GType
wixl_wix_builder_feature_attributes_get_type (void)
{
	static volatile gsize wixl_wix_builder_feature_attributes_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_feature_attributes_type_id__once)) {
		GType wixl_wix_builder_feature_attributes_type_id;
		wixl_wix_builder_feature_attributes_type_id = wixl_wix_builder_feature_attributes_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_feature_attributes_type_id__once, wixl_wix_builder_feature_attributes_type_id);
	}
	return wixl_wix_builder_feature_attributes_type_id__once;
}

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

static GType
wixl_wix_builder_install_mode_get_type_once (void)
{
	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);
	return wixl_wix_builder_install_mode_type_id;
}

static GType
wixl_wix_builder_install_mode_get_type (void)
{
	static volatile gsize wixl_wix_builder_install_mode_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_install_mode_type_id__once)) {
		GType wixl_wix_builder_install_mode_type_id;
		wixl_wix_builder_install_mode_type_id = wixl_wix_builder_install_mode_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_install_mode_type_id__once, wixl_wix_builder_install_mode_type_id);
	}
	return wixl_wix_builder_install_mode_type_id__once;
}

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

static GType
wixl_wix_builder_registry_value_type_get_type_once (void)
{
	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);
	return wixl_wix_builder_registry_value_type_type_id;
}

static GType
wixl_wix_builder_registry_value_type_get_type (void)
{
	static volatile gsize wixl_wix_builder_registry_value_type_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_registry_value_type_type_id__once)) {
		GType wixl_wix_builder_registry_value_type_type_id;
		wixl_wix_builder_registry_value_type_type_id = wixl_wix_builder_registry_value_type_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_registry_value_type_type_id__once, wixl_wix_builder_registry_value_type_type_id);
	}
	return wixl_wix_builder_registry_value_type_type_id__once;
}

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

static GType
wixl_wix_builder_registry_root_get_type_once (void)
{
	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);
	return wixl_wix_builder_registry_root_type_id;
}

static GType
wixl_wix_builder_registry_root_get_type (void)
{
	static volatile gsize wixl_wix_builder_registry_root_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_registry_root_type_id__once)) {
		GType wixl_wix_builder_registry_root_type_id;
		wixl_wix_builder_registry_root_type_id = wixl_wix_builder_registry_root_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_registry_root_type_id__once, wixl_wix_builder_registry_root_type_id);
	}
	return wixl_wix_builder_registry_root_type_id__once;
}

static GType
wixl_wix_builder_file_attribute_get_type_once (void)
{
	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);
	return wixl_wix_builder_file_attribute_type_id;
}

static GType
wixl_wix_builder_file_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_file_attribute_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_file_attribute_type_id__once)) {
		GType wixl_wix_builder_file_attribute_type_id;
		wixl_wix_builder_file_attribute_type_id = wixl_wix_builder_file_attribute_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_file_attribute_type_id__once, wixl_wix_builder_file_attribute_type_id);
	}
	return wixl_wix_builder_file_attribute_type_id__once;
}

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

static GType
wixl_wix_builder_ini_file_action_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_WIX_BUILDER_INI_FILE_ACTION_addLine, "WIXL_WIX_BUILDER_INI_FILE_ACTION_addLine", "addLine"}, {WIXL_WIX_BUILDER_INI_FILE_ACTION_createLine, "WIXL_WIX_BUILDER_INI_FILE_ACTION_createLine", "createLine"}, {WIXL_WIX_BUILDER_INI_FILE_ACTION_removeLine, "WIXL_WIX_BUILDER_INI_FILE_ACTION_removeLine", "removeLine"}, {WIXL_WIX_BUILDER_INI_FILE_ACTION_addTag, "WIXL_WIX_BUILDER_INI_FILE_ACTION_addTag", "addTag"}, {WIXL_WIX_BUILDER_INI_FILE_ACTION_removeTag, "WIXL_WIX_BUILDER_INI_FILE_ACTION_removeTag", "removeTag"}, {0, NULL, NULL}};
	GType wixl_wix_builder_ini_file_action_type_id;
	wixl_wix_builder_ini_file_action_type_id = g_enum_register_static ("WixlWixBuilderIniFileAction", values);
	return wixl_wix_builder_ini_file_action_type_id;
}

static GType
wixl_wix_builder_ini_file_action_get_type (void)
{
	static volatile gsize wixl_wix_builder_ini_file_action_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_ini_file_action_type_id__once)) {
		GType wixl_wix_builder_ini_file_action_type_id;
		wixl_wix_builder_ini_file_action_type_id = wixl_wix_builder_ini_file_action_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_ini_file_action_type_id__once, wixl_wix_builder_ini_file_action_type_id);
	}
	return wixl_wix_builder_ini_file_action_type_id__once;
}

static GType
wixl_wix_builder_upgrade_attribute_get_type_once (void)
{
	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);
	return wixl_wix_builder_upgrade_attribute_type_id;
}

static GType
wixl_wix_builder_upgrade_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_upgrade_attribute_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_upgrade_attribute_type_id__once)) {
		GType wixl_wix_builder_upgrade_attribute_type_id;
		wixl_wix_builder_upgrade_attribute_type_id = wixl_wix_builder_upgrade_attribute_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_upgrade_attribute_type_id__once, wixl_wix_builder_upgrade_attribute_type_id);
	}
	return wixl_wix_builder_upgrade_attribute_type_id__once;
}

static GType
wixl_wix_builder_service_control_event_get_type_once (void)
{
	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);
	return wixl_wix_builder_service_control_event_type_id;
}

static GType
wixl_wix_builder_service_control_event_get_type (void)
{
	static volatile gsize wixl_wix_builder_service_control_event_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_service_control_event_type_id__once)) {
		GType wixl_wix_builder_service_control_event_type_id;
		wixl_wix_builder_service_control_event_type_id = wixl_wix_builder_service_control_event_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_service_control_event_type_id__once, wixl_wix_builder_service_control_event_type_id);
	}
	return wixl_wix_builder_service_control_event_type_id__once;
}

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

static GType
wixl_wix_builder_service_type_attribute_get_type_once (void)
{
	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);
	return wixl_wix_builder_service_type_attribute_type_id;
}

static GType
wixl_wix_builder_service_type_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_service_type_attribute_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_service_type_attribute_type_id__once)) {
		GType wixl_wix_builder_service_type_attribute_type_id;
		wixl_wix_builder_service_type_attribute_type_id = wixl_wix_builder_service_type_attribute_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_service_type_attribute_type_id__once, wixl_wix_builder_service_type_attribute_type_id);
	}
	return wixl_wix_builder_service_type_attribute_type_id__once;
}

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

static GType
wixl_wix_builder_start_type_attribute_get_type_once (void)
{
	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);
	return wixl_wix_builder_start_type_attribute_type_id;
}

static GType
wixl_wix_builder_start_type_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_start_type_attribute_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_start_type_attribute_type_id__once)) {
		GType wixl_wix_builder_start_type_attribute_type_id;
		wixl_wix_builder_start_type_attribute_type_id = wixl_wix_builder_start_type_attribute_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_start_type_attribute_type_id__once, wixl_wix_builder_start_type_attribute_type_id);
	}
	return wixl_wix_builder_start_type_attribute_type_id__once;
}

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

static GType
wixl_wix_builder_error_control_attribute_get_type_once (void)
{
	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);
	return wixl_wix_builder_error_control_attribute_type_id;
}

static GType
wixl_wix_builder_error_control_attribute_get_type (void)
{
	static volatile gsize wixl_wix_builder_error_control_attribute_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_error_control_attribute_type_id__once)) {
		GType wixl_wix_builder_error_control_attribute_type_id;
		wixl_wix_builder_error_control_attribute_type_id = wixl_wix_builder_error_control_attribute_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_error_control_attribute_type_id__once, wixl_wix_builder_error_control_attribute_type_id);
	}
	return wixl_wix_builder_error_control_attribute_type_id__once;
}

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

static GType
wixl_wix_builder_registry_type_get_type_once (void)
{
	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);
	return wixl_wix_builder_registry_type_type_id;
}

static GType
wixl_wix_builder_registry_type_get_type (void)
{
	static volatile gsize wixl_wix_builder_registry_type_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_registry_type_type_id__once)) {
		GType wixl_wix_builder_registry_type_type_id;
		wixl_wix_builder_registry_type_type_id = wixl_wix_builder_registry_type_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_registry_type_type_id__once, wixl_wix_builder_registry_type_type_id);
	}
	return wixl_wix_builder_registry_type_type_id__once;
}

static GType
wixl_wix_builder_custom_action_type_get_type_once (void)
{
	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);
	return wixl_wix_builder_custom_action_type_type_id;
}

static GType
wixl_wix_builder_custom_action_type_get_type (void)
{
	static volatile gsize wixl_wix_builder_custom_action_type_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_custom_action_type_type_id__once)) {
		GType wixl_wix_builder_custom_action_type_type_id;
		wixl_wix_builder_custom_action_type_type_id = wixl_wix_builder_custom_action_type_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_custom_action_type_type_id__once, wixl_wix_builder_custom_action_type_type_id);
	}
	return wixl_wix_builder_custom_action_type_type_id__once;
}

static GType
wixl_wix_builder_text_style_bits_get_type_once (void)
{
	static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_TEXT_STYLE_BITS_BOLD, "WIXL_WIX_BUILDER_TEXT_STYLE_BITS_BOLD", "bold"}, {WIXL_WIX_BUILDER_TEXT_STYLE_BITS_ITALIC, "WIXL_WIX_BUILDER_TEXT_STYLE_BITS_ITALIC", "italic"}, {WIXL_WIX_BUILDER_TEXT_STYLE_BITS_UNDERLINE, "WIXL_WIX_BUILDER_TEXT_STYLE_BITS_UNDERLINE", "underline"}, {WIXL_WIX_BUILDER_TEXT_STYLE_BITS_STRIKE, "WIXL_WIX_BUILDER_TEXT_STYLE_BITS_STRIKE", "strike"}, {0, NULL, NULL}};
	GType wixl_wix_builder_text_style_bits_type_id;
	wixl_wix_builder_text_style_bits_type_id = g_flags_register_static ("WixlWixBuilderTextStyleBits", values);
	return wixl_wix_builder_text_style_bits_type_id;
}

static GType
wixl_wix_builder_text_style_bits_get_type (void)
{
	static volatile gsize wixl_wix_builder_text_style_bits_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_text_style_bits_type_id__once)) {
		GType wixl_wix_builder_text_style_bits_type_id;
		wixl_wix_builder_text_style_bits_type_id = wixl_wix_builder_text_style_bits_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_text_style_bits_type_id__once, wixl_wix_builder_text_style_bits_type_id);
	}
	return wixl_wix_builder_text_style_bits_type_id__once;
}

static GType
wixl_wix_builder_dialog_style_bits_get_type_once (void)
{
	static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_VISIBLE, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_VISIBLE", "visible"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MODAL, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MODAL", "modal"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MINIMIZE, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MINIMIZE", "minimize"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_SYS_MODAL, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_SYS_MODAL", "sys-modal"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_KEEP_MODELESS, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_KEEP_MODELESS", "keep-modeless"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_TRACK_DISK_SPACE, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_TRACK_DISK_SPACE", "track-disk-space"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_USE_CUSTOM_PALETTE, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_USE_CUSTOM_PALETTE", "use-custom-palette"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RTLRO, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RTLRO", "rtlro"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RIGHT_ALIGNED, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RIGHT_ALIGNED", "right-aligned"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_LEFT_SCROLL, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_LEFT_SCROLL", "left-scroll"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_BIDI, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_BIDI", "bidi"}, {WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_ERROR, "WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_ERROR", "error"}, {0, NULL, NULL}};
	GType wixl_wix_builder_dialog_style_bits_type_id;
	wixl_wix_builder_dialog_style_bits_type_id = g_flags_register_static ("WixlWixBuilderDialogStyleBits", values);
	return wixl_wix_builder_dialog_style_bits_type_id;
}

static GType
wixl_wix_builder_dialog_style_bits_get_type (void)
{
	static volatile gsize wixl_wix_builder_dialog_style_bits_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_dialog_style_bits_type_id__once)) {
		GType wixl_wix_builder_dialog_style_bits_type_id;
		wixl_wix_builder_dialog_style_bits_type_id = wixl_wix_builder_dialog_style_bits_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_dialog_style_bits_type_id__once, wixl_wix_builder_dialog_style_bits_type_id);
	}
	return wixl_wix_builder_dialog_style_bits_type_id__once;
}

static GType
wixl_wix_builder_control_attributes_get_type_once (void)
{
	static const GFlagsValue values[] = {{WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_BIDI, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_BIDI", "bidi"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ENABLED, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ENABLED", "enabled"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_INDIRECT, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_INDIRECT", "indirect"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_INTEGER_CONTROL, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_INTEGER_CONTROL", "integer-control"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_LEFT_SCROLL, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_LEFT_SCROLL", "left-scroll"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_RIGHT_ALIGNED, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_RIGHT_ALIGNED", "right-aligned"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_RTLRO, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_RTLRO", "rtlro"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SUNKEN, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SUNKEN", "sunken"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_VISIBLE, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_VISIBLE", "visible"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FORMAT_SIZE, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FORMAT_SIZE", "format-size"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_NO_PREFIX, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_NO_PREFIX", "no-prefix"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_NO_WRAP, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_NO_WRAP", "no-wrap"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_PASSWORD, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_PASSWORD", "password"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_TRANSPARENT, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_TRANSPARENT", "transparent"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_USERS_LANGUAGE, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_USERS_LANGUAGE", "users-language"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_PROGRESS_95, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_PROGRESS_95", "progress-95"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_VOLUME, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_VOLUME", "fixed-volume"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_REMOTE_VOLUME, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_REMOTE_VOLUME", "remote-volume"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_BITMAP, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_BITMAP", "bitmap"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_SIZE, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_SIZE", "fixed-size"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON", "icon"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_16, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_16", "icon-size-16"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_32, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_32", "icon-size-32"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_48, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_48", "icon-size-48"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ELEVATION_SHIELD, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ELEVATION_SHIELD", "elevation-shield"}, {WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SHOW_ROLLBACK_COST, "WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SHOW_ROLLBACK_COST", "show-rollback-cost"}, {0, NULL, NULL}};
	GType wixl_wix_builder_control_attributes_type_id;
	wixl_wix_builder_control_attributes_type_id = g_flags_register_static ("WixlWixBuilderControlAttributes", values);
	return wixl_wix_builder_control_attributes_type_id;
}

static GType
wixl_wix_builder_control_attributes_get_type (void)
{
	static volatile gsize wixl_wix_builder_control_attributes_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_control_attributes_type_id__once)) {
		GType wixl_wix_builder_control_attributes_type_id;
		wixl_wix_builder_control_attributes_type_id = wixl_wix_builder_control_attributes_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_control_attributes_type_id__once, wixl_wix_builder_control_attributes_type_id);
	}
	return wixl_wix_builder_control_attributes_type_id__once;
}

static WixlWixBuilderEnvironmentAction
wixl_wix_builder_environment_action_from_string (const gchar* s,
                                                 GError** error)
{
	GError* _tmp0_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderEnvironmentAction result;
	g_return_val_if_fail (s != NULL, 0);
	if (g_strcmp0 (s, "create") == 0) {
		result = WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_CREATE;
		return result;
	}
	if (g_strcmp0 (s, "set") == 0) {
		result = WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_SET;
		return result;
	}
	if (g_strcmp0 (s, "remove") == 0) {
		result = WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_REMOVE;
		return result;
	}
	_tmp0_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Can't convert string to enum");
	_inner_error0_ = _tmp0_;
	g_propagate_error (error, _inner_error0_);
	return 0;
}

static GType
wixl_wix_builder_environment_action_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_CREATE, "WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_CREATE", "create"}, {WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_SET, "WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_SET", "set"}, {WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_REMOVE, "WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_REMOVE", "remove"}, {0, NULL, NULL}};
	GType wixl_wix_builder_environment_action_type_id;
	wixl_wix_builder_environment_action_type_id = g_enum_register_static ("WixlWixBuilderEnvironmentAction", values);
	return wixl_wix_builder_environment_action_type_id;
}

static GType
wixl_wix_builder_environment_action_get_type (void)
{
	static volatile gsize wixl_wix_builder_environment_action_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_environment_action_type_id__once)) {
		GType wixl_wix_builder_environment_action_type_id;
		wixl_wix_builder_environment_action_type_id = wixl_wix_builder_environment_action_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_environment_action_type_id__once, wixl_wix_builder_environment_action_type_id);
	}
	return wixl_wix_builder_environment_action_type_id__once;
}

static WixlWixBuilderEnvironmentPart
wixl_wix_builder_environment_part_from_string (const gchar* s,
                                               GError** error)
{
	gboolean _tmp0_ = FALSE;
	GError* _tmp1_;
	GError* _inner_error0_ = NULL;
	WixlWixBuilderEnvironmentPart result;
	g_return_val_if_fail (s != NULL, 0);
	if (s == NULL) {
		_tmp0_ = TRUE;
	} else {
		_tmp0_ = g_strcmp0 (s, "all") == 0;
	}
	if (_tmp0_) {
		result = WIXL_WIX_BUILDER_ENVIRONMENT_PART_ALL;
		return result;
	}
	if (g_strcmp0 (s, "first") == 0) {
		result = WIXL_WIX_BUILDER_ENVIRONMENT_PART_FIRST;
		return result;
	}
	if (g_strcmp0 (s, "last") == 0) {
		result = WIXL_WIX_BUILDER_ENVIRONMENT_PART_LAST;
		return result;
	}
	_tmp1_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "Can't convert string to enum");
	_inner_error0_ = _tmp1_;
	g_propagate_error (error, _inner_error0_);
	return 0;
}

static GType
wixl_wix_builder_environment_part_get_type_once (void)
{
	static const GEnumValue values[] = {{WIXL_WIX_BUILDER_ENVIRONMENT_PART_ALL, "WIXL_WIX_BUILDER_ENVIRONMENT_PART_ALL", "all"}, {WIXL_WIX_BUILDER_ENVIRONMENT_PART_FIRST, "WIXL_WIX_BUILDER_ENVIRONMENT_PART_FIRST", "first"}, {WIXL_WIX_BUILDER_ENVIRONMENT_PART_LAST, "WIXL_WIX_BUILDER_ENVIRONMENT_PART_LAST", "last"}, {0, NULL, NULL}};
	GType wixl_wix_builder_environment_part_type_id;
	wixl_wix_builder_environment_part_type_id = g_enum_register_static ("WixlWixBuilderEnvironmentPart", values);
	return wixl_wix_builder_environment_part_type_id;
}

static GType
wixl_wix_builder_environment_part_get_type (void)
{
	static volatile gsize wixl_wix_builder_environment_part_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_environment_part_type_id__once)) {
		GType wixl_wix_builder_environment_part_type_id;
		wixl_wix_builder_environment_part_type_id = wixl_wix_builder_environment_part_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_environment_part_type_id__once, wixl_wix_builder_environment_part_type_id);
	}
	return wixl_wix_builder_environment_part_type_id__once;
}

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

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

static WixlExtension*
_vala_array_dup1 (WixlExtension* self,
                  gssize length)
{
	if (length > 0) {
		return _vala_memdup2 (self, length * sizeof (WixlExtension));
	}
	return NULL;
}

WixlWixBuilder*
wixl_wix_builder_construct (GType object_type,
                            gchar** includedirs,
                            gint includedirs_length1,
                            WixlArch arch,
                            WixlExtension* extensions,
                            gint extensions_length1,
                            const gchar* extdir)
{
	WixlWixBuilder * self = NULL;
	WixlExtension* _tmp3_;
	gint _tmp3__length1;
	gchar* _tmp4_;
	WixlExtension* _tmp9_;
	gint _tmp9__length1;
	GError* _inner_error0_ = NULL;
	g_return_val_if_fail (extdir != NULL, NULL);
	self = (WixlWixBuilder*) wixl_wix_node_visitor_construct (object_type);
	wixl_wix_builder_add_path (self, ".");
	{
		gchar** i_collection = NULL;
		gint i_collection_length1 = 0;
		gint _i_collection_size_ = 0;
		gint i_it = 0;
		i_collection = includedirs;
		i_collection_length1 = includedirs_length1;
		for (i_it = 0; i_it < i_collection_length1; i_it = i_it + 1) {
			gchar* _tmp0_;
			gchar* i = NULL;
			_tmp0_ = g_strdup (i_collection[i_it]);
			i = _tmp0_;
			{
				const gchar* _tmp1_;
				GFile* _tmp2_;
				_tmp1_ = i;
				_tmp2_ = g_file_new_for_path (_tmp1_);
				self->priv->includedirs = g_list_append (self->priv->includedirs, _tmp2_);
				_g_free0 (i);
			}
		}
	}
	self->priv->arch = arch;
	_tmp3_ = (extensions != NULL) ? _vala_array_dup1 (extensions, extensions_length1) : extensions;
	_tmp3__length1 = extensions_length1;
	self->priv->extensions = (g_free (self->priv->extensions), NULL);
	self->priv->extensions = _tmp3_;
	self->priv->extensions_length1 = _tmp3__length1;
	self->priv->_extensions_size_ = self->priv->extensions_length1;
	_tmp4_ = g_strdup (extdir);
	_g_free0 (self->priv->extdir);
	self->priv->extdir = _tmp4_;
	if (extensions_length1 > 0) {
		GFile* _tmp5_;
		GFile* _tmp6_;
		gchar* _tmp7_;
		gchar* _tmp8_;
		_tmp5_ = g_file_new_for_path (extdir);
		_tmp6_ = _tmp5_;
		_tmp7_ = g_file_get_path (_tmp6_);
		_tmp8_ = _tmp7_;
		wixl_wix_builder_add_path (self, _tmp8_);
		_g_free0 (_tmp8_);
		_g_object_unref0 (_tmp6_);
	}
	_tmp9_ = self->priv->extensions;
	_tmp9__length1 = self->priv->extensions_length1;
	{
		WixlExtension* ext_collection = NULL;
		gint ext_collection_length1 = 0;
		gint _ext_collection_size_ = 0;
		gint ext_it = 0;
		ext_collection = _tmp9_;
		ext_collection_length1 = _tmp9__length1;
		for (ext_it = 0; ext_it < ext_collection_length1; ext_it = ext_it + 1) {
			WixlExtension ext = 0;
			ext = ext_collection[ext_it];
			{
				{
					gint _tmp10_ = 0;
					gchar** _tmp11_;
					_tmp11_ = wixl_extension_get_files (ext, &_tmp10_);
					{
						gchar** file_collection = NULL;
						gint file_collection_length1 = 0;
						gint _file_collection_size_ = 0;
						gint file_it = 0;
						file_collection = _tmp11_;
						file_collection_length1 = _tmp10_;
						for (file_it = 0; file_it < file_collection_length1; file_it = file_it + 1) {
							gchar* _tmp12_;
							gchar* file = NULL;
							_tmp12_ = g_strdup (file_collection[file_it]);
							file = _tmp12_;
							{
								const gchar* _tmp13_;
								_tmp13_ = file;
								wixl_wix_builder_load_extension_file (self, ext, _tmp13_, &_inner_error0_);
								if (G_UNLIKELY (_inner_error0_ != NULL)) {
									_g_free0 (file);
									file_collection = (_vala_array_free (file_collection, file_collection_length1, (GDestroyNotify) g_free), NULL);
									goto __catch0_g_error;
								}
								_g_free0 (file);
							}
						}
						file_collection = (_vala_array_free (file_collection, file_collection_length1, (GDestroyNotify) g_free), NULL);
					}
				}
				goto __finally0;
				__catch0_g_error:
				{
					GError* _error_ = NULL;
					GError* _tmp14_;
					const gchar* _tmp15_;
					gchar* _tmp16_;
					gchar* _tmp17_;
					_error_ = _inner_error0_;
					_inner_error0_ = NULL;
					_tmp14_ = _error_;
					_tmp15_ = _tmp14_->message;
					_tmp16_ = g_strconcat (_tmp15_, "\n", NULL);
					_tmp17_ = _tmp16_;
					g_printerr ("%s", _tmp17_);
					_g_free0 (_tmp17_);
					exit (1);
					_g_error_free0 (_error_);
				}
				__finally0:
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error0_->message, g_quark_to_string (_inner_error0_->domain), _inner_error0_->code);
					g_clear_error (&_inner_error0_);
					return NULL;
				}
			}
		}
	}
	return self;
}

WixlWixBuilder*
wixl_wix_builder_new (gchar** includedirs,
                      gint includedirs_length1,
                      WixlArch arch,
                      WixlExtension* extensions,
                      gint extensions_length1,
                      const gchar* extdir)
{
	return wixl_wix_builder_construct (WIXL_TYPE_WIX_BUILDER, includedirs, includedirs_length1, arch, extensions, extensions_length1, extdir);
}

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

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

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

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

static gboolean
_vala_wixl_extension_array_contains (WixlExtension * stack,
                                     gssize stack_length,
                                     const WixlExtension needle)
{
	gssize i;
	for (i = 0; i < stack_length; i++) {
		if (needle == stack[i]) {
			return TRUE;
		}
	}
	return FALSE;
}

void
wixl_wix_builder_load_extension_file (WixlWixBuilder* self,
                                      WixlExtension ext,
                                      const gchar* name,
                                      GError** error)
{
	WixlExtension* _tmp0_;
	gint _tmp0__length1;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (name != NULL);
	_tmp0_ = self->priv->extensions;
	_tmp0__length1 = self->priv->extensions_length1;
	if (_vala_wixl_extension_array_contains (_tmp0_, _tmp0__length1, ext)) {
		const gchar* _tmp1_;
		gchar* _tmp2_;
		gchar* _tmp3_;
		gchar* _tmp4_;
		gchar* _tmp5_;
		GFile* _tmp6_;
		GFile* _tmp7_;
		_tmp1_ = self->priv->extdir;
		_tmp2_ = wixl_extension_get_dir (ext);
		_tmp3_ = _tmp2_;
		_tmp4_ = g_strconcat (name, ".wxs", NULL);
		_tmp5_ = _tmp4_;
		_tmp6_ = g_file_new_build_filename (_tmp1_, _tmp3_, _tmp5_, NULL);
		_tmp7_ = _tmp6_;
		wixl_wix_builder_load_file (self, _tmp7_, FALSE, &_inner_error0_);
		_g_object_unref0 (_tmp7_);
		_g_free0 (_tmp5_);
		_g_free0 (_tmp3_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	} else {
		gchar* _tmp8_;
		gchar* _tmp9_;
		GError* _tmp10_;
		GError* _tmp11_;
		_tmp8_ = wixl_extension_to_string (ext);
		_tmp9_ = _tmp8_;
		_tmp10_ = g_error_new (WIXL_ERROR, WIXL_ERROR_FAILED, "Can't load '%s': extension '%s' isn't enabled", name, _tmp9_);
		_tmp11_ = _tmp10_;
		_g_free0 (_tmp9_);
		_inner_error0_ = _tmp11_;
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

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

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

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

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

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

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

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

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

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

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

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

static void
wixl_wix_builder_validate_companion_files (WixlWixBuilder* self,
                                           GError** error)
{
	GHashTable* companionByFile = NULL;
	GHashFunc _tmp0_;
	GEqualFunc _tmp1_;
	GHashTable* _tmp2_;
	WixlMsiDatabase* _tmp3_;
	WixlMsiTableFile* _tmp4_;
	GList* _tmp5_;
	GHashTable* _tmp35_;
	GList* _tmp36_;
	GError* _inner_error0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = g_str_hash;
	_tmp1_ = g_str_equal;
	_tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, _g_free0_);
	companionByFile = _tmp2_;
	_tmp3_ = self->priv->db;
	_tmp4_ = _tmp3_->table_file;
	_tmp5_ = ((WixlMsiTable*) _tmp4_)->records;
	{
		GList* rec_collection = NULL;
		GList* rec_it = NULL;
		rec_collection = _tmp5_;
		for (rec_it = rec_collection; rec_it != NULL; rec_it = rec_it->next) {
			LibmsiRecord* _tmp6_;
			LibmsiRecord* rec = NULL;
			_tmp6_ = _g_object_ref0 ((LibmsiRecord*) rec_it->data);
			rec = _tmp6_;
			{
				WixlWixFile* f = NULL;
				LibmsiRecord* _tmp7_;
				gconstpointer _tmp8_;
				WixlWixFile* _tmp9_;
				GHashTable* _tmp10_;
				WixlWixFile* _tmp11_;
				const gchar* _tmp12_;
				const gchar* _tmp13_;
				gchar* _tmp14_;
				WixlWixFile* _tmp15_;
				const gchar* _tmp16_;
				const gchar* _tmp17_;
				gchar* _tmp18_;
				WixlWixFile* _tmp19_;
				const gchar* _tmp20_;
				const gchar* _tmp21_;
				WixlWixComponent* component = NULL;
				WixlWixFile* _tmp22_;
				WixlWixElement* _tmp23_;
				WixlWixComponent* _tmp24_;
				WixlWixComponent* _tmp25_;
				WixlWixKeyElement* _tmp26_;
				WixlWixFile* _tmp27_;
				WixlWixFile* _tmp28_;
				const gchar* _tmp29_;
				const gchar* _tmp30_;
				gchar* _tmp31_;
				gchar* _tmp32_;
				GError* _tmp33_;
				GError* _tmp34_;
				_tmp7_ = rec;
				_tmp8_ = g_object_get_data ((GObject*) _tmp7_, "wixfile");
				_tmp9_ = _g_object_ref0 ((WixlWixFile*) _tmp8_);
				f = _tmp9_;
				_tmp10_ = companionByFile;
				_tmp11_ = f;
				_tmp12_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp11_);
				_tmp13_ = _tmp12_;
				_tmp14_ = g_strdup (_tmp13_);
				_tmp15_ = f;
				_tmp16_ = wixl_wix_file_get_CompanionFile (_tmp15_);
				_tmp17_ = _tmp16_;
				_tmp18_ = g_strdup (_tmp17_);
				g_hash_table_insert (_tmp10_, _tmp14_, _tmp18_);
				_tmp19_ = f;
				_tmp20_ = wixl_wix_file_get_CompanionFile (_tmp19_);
				_tmp21_ = _tmp20_;
				if (_tmp21_ == NULL) {
					_g_object_unref0 (f);
					_g_object_unref0 (rec);
					continue;
				}
				_tmp22_ = f;
				_tmp23_ = ((WixlWixNode*) _tmp22_)->parent;
				_tmp24_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp23_) ? ((WixlWixComponent*) _tmp23_) : NULL);
				component = _tmp24_;
				_tmp25_ = component;
				_tmp26_ = _tmp25_->key;
				_tmp27_ = f;
				if (_tmp26_ != G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, WIXL_TYPE_WIX_KEY_ELEMENT, WixlWixKeyElement)) {
					_g_object_unref0 (component);
					_g_object_unref0 (f);
					_g_object_unref0 (rec);
					continue;
				}
				_tmp28_ = f;
				_tmp29_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp28_);
				_tmp30_ = _tmp29_;
				_tmp31_ = g_strdup_printf ("companion file %s is key of its component", _tmp30_);
				_tmp32_ = _tmp31_;
				_tmp33_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, _tmp32_);
				_tmp34_ = _tmp33_;
				_g_free0 (_tmp32_);
				_inner_error0_ = _tmp34_;
				g_propagate_error (error, _inner_error0_);
				_g_object_unref0 (component);
				_g_object_unref0 (f);
				_g_object_unref0 (rec);
				_g_hash_table_unref0 (companionByFile);
				return;
			}
		}
	}
	_tmp35_ = companionByFile;
	_tmp36_ = g_hash_table_get_values (_tmp35_);
	{
		GList* companion_collection = NULL;
		GList* companion_it = NULL;
		companion_collection = _tmp36_;
		for (companion_it = companion_collection; companion_it != NULL; companion_it = companion_it->next) {
			const gchar* companion = NULL;
			companion = (const gchar*) companion_it->data;
			{
				gboolean _tmp37_ = FALSE;
				const gchar* _tmp38_;
				const gchar* _tmp41_;
				gchar* _tmp42_;
				gchar* _tmp43_;
				GError* _tmp44_;
				GError* _tmp45_;
				_tmp38_ = companion;
				if (_tmp38_ == NULL) {
					_tmp37_ = TRUE;
				} else {
					GHashTable* _tmp39_;
					const gchar* _tmp40_;
					_tmp39_ = companionByFile;
					_tmp40_ = companion;
					_tmp37_ = g_hash_table_contains (_tmp39_, _tmp40_);
				}
				if (_tmp37_) {
					continue;
				}
				_tmp41_ = companion;
				_tmp42_ = g_strdup_printf ("file %s referenced by CompanionFile does not exist", _tmp41_);
				_tmp43_ = _tmp42_;
				_tmp44_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, _tmp43_);
				_tmp45_ = _tmp44_;
				_g_free0 (_tmp43_);
				_inner_error0_ = _tmp45_;
				g_propagate_error (error, _inner_error0_);
				(companion_collection == NULL) ? NULL : (companion_collection = (g_list_free (companion_collection), NULL));
				_g_hash_table_unref0 (companionByFile);
				return;
			}
		}
		(companion_collection == NULL) ? NULL : (companion_collection = (g_list_free (companion_collection), NULL));
	}
	_g_hash_table_unref0 (companionByFile);
}

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_dup3 (guint8* self,
                  gssize length)
{
	if (length > 0) {
		return _vala_memdup2 (self, length * sizeof (guint8));
	}
	return NULL;
}

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

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

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

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

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

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

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

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

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

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

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

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

static void
wixl_wix_builder_real_visit_feature (WixlWixNodeVisitor* base,
                                     WixlWixFeature* feature,
                                     WixlVisitState state,
                                     GError** error)
{
	WixlWixBuilder * self;
	gboolean _tmp0_ = FALSE;
	gint display = 0;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp12_ = NULL;
	WixlWixElement* _tmp13_;
	gchar* parent = NULL;
	gchar* _tmp17_;
	gint _tmp18_ = 0;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	gint level = 0;
	gint attributes = 0;
	const gchar* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp33_;
	const gchar* _tmp34_;
	const gchar* _tmp38_;
	const gchar* _tmp39_;
	WixlMsiDatabase* _tmp44_;
	WixlMsiTableFeature* _tmp45_;
	const gchar* _tmp46_;
	const gchar* _tmp47_;
	const gchar* _tmp48_;
	const gchar* _tmp49_;
	const gchar* _tmp50_;
	const gchar* _tmp51_;
	const gchar* _tmp52_;
	const gchar* _tmp53_;
	const gchar* _tmp54_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (feature != NULL);
	if (state == WIXL_VISIT_STATE_ENTER) {
		WixlWixFeature* _tmp1_;
		_tmp1_ = self->priv->feature_root;
		_tmp0_ = _tmp1_ == NULL;
	} else {
		_tmp0_ = FALSE;
	}
	if (_tmp0_) {
		WixlWixFeature* _tmp2_;
		self->priv->feature_display = 0;
		_tmp2_ = _g_object_ref0 (feature);
		_g_object_unref0 (self->priv->feature_root);
		self->priv->feature_root = _tmp2_;
	} else {
		gboolean _tmp3_ = FALSE;
		if (state == WIXL_VISIT_STATE_LEAVE) {
			WixlWixFeature* _tmp4_;
			_tmp4_ = self->priv->feature_root;
			_tmp3_ = _tmp4_ == feature;
		} else {
			_tmp3_ = FALSE;
		}
		if (_tmp3_) {
			_g_object_unref0 (self->priv->feature_root);
			self->priv->feature_root = NULL;
		}
	}
	if (state != WIXL_VISIT_STATE_ENTER) {
		return;
	}
	display = (gint) WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE;
	_tmp5_ = wixl_wix_feature_get_Display (feature);
	_tmp6_ = _tmp5_;
	if (_tmp6_ != NULL) {
		{
			WixlWixBuilderFeatureDisplay _tmp7_ = 0;
			const gchar* _tmp8_;
			const gchar* _tmp9_;
			_tmp8_ = wixl_wix_feature_get_Display (feature);
			_tmp9_ = _tmp8_;
			_tmp7_ = wixl_wix_builder_feature_display_from_string (_tmp9_, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				goto __catch0_g_error;
			}
			display = (gint) _tmp7_;
		}
		goto __finally0;
		__catch0_g_error:
		{
			const gchar* _tmp10_;
			const gchar* _tmp11_;
			g_clear_error (&_inner_error0_);
			_tmp10_ = wixl_wix_feature_get_Display (feature);
			_tmp11_ = _tmp10_;
			display = atoi (_tmp11_);
			if (display != 0) {
				self->priv->feature_display = display;
			}
		}
		__finally0:
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
	switch (display) {
		case WIXL_WIX_BUILDER_FEATURE_DISPLAY_COLLAPSE:
		{
			self->priv->feature_display = (self->priv->feature_display | 1) + 1;
			display = self->priv->feature_display;
			break;
		}
		case WIXL_WIX_BUILDER_FEATURE_DISPLAY_EXPAND:
		{
			self->priv->feature_display = (self->priv->feature_display + 1) | 1;
			display = self->priv->feature_display;
			break;
		}
		default:
		break;
	}
	_tmp13_ = ((WixlWixNode*) feature)->parent;
	if (WIXL_IS_WIX_FEATURE (_tmp13_)) {
		WixlWixElement* _tmp14_;
		const gchar* _tmp15_;
		const gchar* _tmp16_;
		_tmp14_ = ((WixlWixNode*) feature)->parent;
		_tmp15_ = wixl_wix_element_get_Id (_tmp14_);
		_tmp16_ = _tmp15_;
		_tmp12_ = _tmp16_;
	} else {
		_tmp12_ = NULL;
	}
	_tmp17_ = g_strdup (_tmp12_);
	parent = _tmp17_;
	_tmp19_ = wixl_wix_feature_get_Level (feature);
	_tmp20_ = _tmp19_;
	if (_tmp20_ != NULL) {
		const gchar* _tmp21_;
		const gchar* _tmp22_;
		_tmp21_ = wixl_wix_feature_get_Level (feature);
		_tmp22_ = _tmp21_;
		_tmp18_ = atoi (_tmp22_);
	} else {
		_tmp18_ = 1;
	}
	level = _tmp18_;
	attributes = 0;
	_tmp23_ = wixl_wix_feature_get_InstallDefault (feature);
	_tmp24_ = _tmp23_;
	if (_tmp24_ != NULL) {
		WixlWixBuilderInstallDefaultValue _tmp25_ = 0;
		const gchar* _tmp26_;
		const gchar* _tmp27_;
		_tmp26_ = wixl_wix_feature_get_InstallDefault (feature);
		_tmp27_ = _tmp26_;
		_tmp25_ = wixl_wix_builder_install_default_value_from_string (_tmp27_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (parent);
			return;
		}
		switch (_tmp25_) {
			case WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_FollowParent:
			{
				attributes |= (gint) WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FOLLOWPARENT;
				break;
			}
			case WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Source:
			{
				attributes |= (gint) WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORSOURCE;
				break;
			}
			case WIXL_WIX_BUILDER_INSTALL_DEFAULT_VALUE_Local:
			{
				break;
			}
			default:
			break;
		}
	}
	_tmp28_ = wixl_wix_feature_get_AllowAdvertise (feature);
	_tmp29_ = _tmp28_;
	if (_tmp29_ != NULL) {
		WixlWixBuilderAllowAdvertiseValue _tmp30_ = 0;
		const gchar* _tmp31_;
		const gchar* _tmp32_;
		_tmp31_ = wixl_wix_feature_get_AllowAdvertise (feature);
		_tmp32_ = _tmp31_;
		_tmp30_ = wixl_wix_builder_allow_advertise_value_from_string (_tmp32_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (parent);
			return;
		}
		switch (_tmp30_) {
			case WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_No:
			{
				attributes |= (gint) WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_DISALLOWADVERTISE;
				break;
			}
			case WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_System:
			{
				attributes |= (gint) WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_NOUNSUPPORTEDADVERTISE;
				break;
			}
			case WIXL_WIX_BUILDER_ALLOW_ADVERTISE_VALUE_Yes:
			{
				break;
			}
			default:
			break;
		}
	}
	_tmp33_ = wixl_wix_feature_get_TypicalDefault (feature);
	_tmp34_ = _tmp33_;
	if (_tmp34_ != NULL) {
		WixlWixBuilderTypicalDefaultValue _tmp35_ = 0;
		const gchar* _tmp36_;
		const gchar* _tmp37_;
		_tmp36_ = wixl_wix_feature_get_TypicalDefault (feature);
		_tmp37_ = _tmp36_;
		_tmp35_ = wixl_wix_builder_typical_default_value_from_string (_tmp37_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (parent);
			return;
		}
		switch (_tmp35_) {
			case WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Advertise:
			{
				attributes |= (gint) WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORADVERTISE;
				break;
			}
			case WIXL_WIX_BUILDER_TYPICAL_DEFAULT_VALUE_Install:
			{
				break;
			}
			default:
			break;
		}
	}
	_tmp38_ = wixl_wix_feature_get_Absent (feature);
	_tmp39_ = _tmp38_;
	if (_tmp39_ != NULL) {
		WixlWixBuilderAbsentValue _tmp40_ = 0;
		const gchar* _tmp41_;
		const gchar* _tmp42_;
		_tmp41_ = wixl_wix_feature_get_Absent (feature);
		_tmp42_ = _tmp41_;
		_tmp40_ = wixl_wix_builder_absent_value_from_string (_tmp42_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (parent);
			return;
		}
		switch (_tmp40_) {
			case WIXL_WIX_BUILDER_ABSENT_VALUE_Disallow:
			{
				attributes |= (gint) WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_UIDISALLOWABSENT;
				break;
			}
			case WIXL_WIX_BUILDER_ABSENT_VALUE_Allow:
			{
				break;
			}
			default:
			break;
		}
	}
	if ((attributes & (WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_DISALLOWADVERTISE | WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORADVERTISE)) == ((gint) (WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_DISALLOWADVERTISE | WIXL_WIX_BUILDER_FEATURE_ATTRIBUTES_FAVORADVERTISE))) {
		GError* _tmp43_;
		_tmp43_ = g_error_new_literal (WIXL_ERROR, WIXL_ERROR_FAILED, "cannot set both Absent='disallow' and TypicalDefault='no'");
		_inner_error0_ = _tmp43_;
		g_propagate_error (error, _inner_error0_);
		_g_free0 (parent);
		return;
	}
	_tmp44_ = self->priv->db;
	_tmp45_ = _tmp44_->table_feature;
	_tmp46_ = wixl_wix_element_get_Id ((WixlWixElement*) feature);
	_tmp47_ = _tmp46_;
	_tmp48_ = parent;
	_tmp49_ = wixl_wix_feature_get_Title (feature);
	_tmp50_ = _tmp49_;
	_tmp51_ = wixl_wix_feature_get_Description (feature);
	_tmp52_ = _tmp51_;
	_tmp53_ = wixl_wix_feature_get_ConfigurableDirectory (feature);
	_tmp54_ = _tmp53_;
	wixl_msi_table_feature_add (_tmp45_, _tmp47_, display, level, attributes, _tmp48_, _tmp50_, _tmp52_, _tmp54_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (parent);
		return;
	}
	_g_free0 (parent);
}

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

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

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

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

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

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

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

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

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

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

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

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

static void
wixl_wix_builder_real_visit_ini_file (WixlWixNodeVisitor* base,
                                      WixlWixIniFile* inifile,
                                      GError** error)
{
	WixlWixBuilder * self;
	WixlWixComponent* component = NULL;
	WixlWixElement* _tmp0_;
	WixlWixComponent* _tmp1_;
	WixlWixBuilderIniFileAction action = 0;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (inifile != NULL);
	_tmp0_ = ((WixlWixNode*) inifile)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp0_) ? ((WixlWixComponent*) _tmp0_) : NULL);
	component = _tmp1_;
	_tmp2_ = wixl_wix_ini_file_get_Action (inifile);
	_tmp3_ = _tmp2_;
	action = wixl_wix_builder_ini_file_action_from_string (_tmp3_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (component);
		return;
	}
	if (action == WIXL_WIX_BUILDER_INI_FILE_ACTION_addLine) {
		_tmp5_ = TRUE;
	} else {
		_tmp5_ = action == WIXL_WIX_BUILDER_INI_FILE_ACTION_createLine;
	}
	if (_tmp5_) {
		_tmp4_ = TRUE;
	} else {
		_tmp4_ = action == WIXL_WIX_BUILDER_INI_FILE_ACTION_addTag;
	}
	if (_tmp4_) {
		WixlMsiDatabase* _tmp6_;
		WixlMsiTableIniFile* _tmp7_;
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		const gchar* _tmp10_;
		const gchar* _tmp11_;
		const gchar* _tmp12_;
		const gchar* _tmp13_;
		const gchar* _tmp14_;
		const gchar* _tmp15_;
		const gchar* _tmp16_;
		const gchar* _tmp17_;
		const gchar* _tmp18_;
		const gchar* _tmp19_;
		WixlWixComponent* _tmp20_;
		const gchar* _tmp21_;
		const gchar* _tmp22_;
		_tmp6_ = self->priv->db;
		_tmp7_ = _tmp6_->table_ini_file;
		_tmp8_ = wixl_wix_element_get_Id ((WixlWixElement*) inifile);
		_tmp9_ = _tmp8_;
		_tmp10_ = wixl_wix_ini_file_get_Name (inifile);
		_tmp11_ = _tmp10_;
		_tmp12_ = wixl_wix_ini_file_get_Directory (inifile);
		_tmp13_ = _tmp12_;
		_tmp14_ = wixl_wix_ini_file_get_Section (inifile);
		_tmp15_ = _tmp14_;
		_tmp16_ = wixl_wix_ini_file_get_Key (inifile);
		_tmp17_ = _tmp16_;
		_tmp18_ = wixl_wix_ini_file_get_Value (inifile);
		_tmp19_ = _tmp18_;
		_tmp20_ = component;
		_tmp21_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp20_);
		_tmp22_ = _tmp21_;
		wixl_msi_table_ini_file_add (_tmp7_, _tmp9_, _tmp11_, _tmp13_, _tmp15_, _tmp17_, _tmp19_, (gint) action, _tmp22_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (component);
			return;
		}
	} else {
		WixlMsiDatabase* _tmp23_;
		WixlMsiTableRemoveIniFile* _tmp24_;
		const gchar* _tmp25_;
		const gchar* _tmp26_;
		const gchar* _tmp27_;
		const gchar* _tmp28_;
		const gchar* _tmp29_;
		const gchar* _tmp30_;
		const gchar* _tmp31_;
		const gchar* _tmp32_;
		const gchar* _tmp33_;
		const gchar* _tmp34_;
		const gchar* _tmp35_;
		const gchar* _tmp36_;
		WixlWixComponent* _tmp37_;
		const gchar* _tmp38_;
		const gchar* _tmp39_;
		_tmp23_ = self->priv->db;
		_tmp24_ = _tmp23_->table_remove_ini_file;
		_tmp25_ = wixl_wix_element_get_Id ((WixlWixElement*) inifile);
		_tmp26_ = _tmp25_;
		_tmp27_ = wixl_wix_ini_file_get_Name (inifile);
		_tmp28_ = _tmp27_;
		_tmp29_ = wixl_wix_ini_file_get_Directory (inifile);
		_tmp30_ = _tmp29_;
		_tmp31_ = wixl_wix_ini_file_get_Section (inifile);
		_tmp32_ = _tmp31_;
		_tmp33_ = wixl_wix_ini_file_get_Key (inifile);
		_tmp34_ = _tmp33_;
		_tmp35_ = wixl_wix_ini_file_get_Value (inifile);
		_tmp36_ = _tmp35_;
		_tmp37_ = component;
		_tmp38_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp37_);
		_tmp39_ = _tmp38_;
		wixl_msi_table_remove_ini_file_add (_tmp24_, _tmp26_, _tmp28_, _tmp30_, _tmp32_, _tmp34_, _tmp36_, (gint) action, _tmp39_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (component);
			return;
		}
	}
	_g_object_unref0 (component);
}

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

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

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

static void
wixl_wix_builder_real_visit_condition (WixlWixNodeVisitor* base,
                                       WixlWixCondition* condition,
                                       GError** error)
{
	WixlWixBuilder * self;
	GList* _tmp0_;
	WixlWixText* text = NULL;
	GList* _tmp1_;
	GList* _tmp2_;
	gconstpointer _tmp3_;
	WixlWixNode* _tmp4_;
	WixlWixText* _tmp5_;
	WixlWixElement* _tmp6_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (condition != NULL);
	_tmp0_ = ((WixlWixElement*) condition)->children;
	g_return_if_fail (g_list_length (_tmp0_) == ((guint) 1));
	_tmp1_ = ((WixlWixElement*) condition)->children;
	_tmp2_ = g_list_first (_tmp1_);
	_tmp3_ = _tmp2_->data;
	_tmp4_ = (WixlWixNode*) _tmp3_;
	_tmp5_ = _g_object_ref0 (WIXL_IS_WIX_TEXT (_tmp4_) ? ((WixlWixText*) _tmp4_) : NULL);
	text = _tmp5_;
	_tmp6_ = ((WixlWixNode*) condition)->parent;
	if (WIXL_IS_WIX_FEATURE (_tmp6_)) {
		gint _tmp7_ = 0;
		const gchar* _tmp8_;
		const gchar* _tmp9_;
		gint level = 0;
		WixlMsiDatabase* _tmp12_;
		WixlMsiTableCondition* _tmp13_;
		WixlWixElement* _tmp14_;
		const gchar* _tmp15_;
		const gchar* _tmp16_;
		WixlWixText* _tmp17_;
		const gchar* _tmp18_;
		gchar* _tmp19_;
		gchar* _tmp20_;
		_tmp8_ = wixl_wix_condition_get_Level (condition);
		_tmp9_ = _tmp8_;
		if (_tmp9_ != NULL) {
			const gchar* _tmp10_;
			const gchar* _tmp11_;
			_tmp10_ = wixl_wix_condition_get_Level (condition);
			_tmp11_ = _tmp10_;
			_tmp7_ = atoi (_tmp11_);
		} else {
			_tmp7_ = 0;
		}
		level = _tmp7_;
		_tmp12_ = self->priv->db;
		_tmp13_ = _tmp12_->table_condition;
		_tmp14_ = ((WixlWixNode*) condition)->parent;
		_tmp15_ = wixl_wix_element_get_Id (_tmp14_);
		_tmp16_ = _tmp15_;
		_tmp17_ = text;
		_tmp18_ = _tmp17_->Text;
		_tmp19_ = string_strip (_tmp18_);
		_tmp20_ = _tmp19_;
		wixl_msi_table_condition_add (_tmp13_, _tmp16_, level, _tmp20_, &_inner_error0_);
		_g_free0 (_tmp20_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (text);
			return;
		}
	} else {
		WixlWixElement* _tmp21_;
		_tmp21_ = ((WixlWixNode*) condition)->parent;
		if (WIXL_IS_WIX_COMPONENT (_tmp21_)) {
			WixlWixElement* _tmp22_;
			WixlWixText* _tmp23_;
			const gchar* _tmp24_;
			gchar* _tmp25_;
			gchar* _tmp26_;
			_tmp22_ = ((WixlWixNode*) condition)->parent;
			_tmp23_ = text;
			_tmp24_ = _tmp23_->Text;
			_tmp25_ = string_strip (_tmp24_);
			_tmp26_ = _tmp25_;
			wixl_wix_component_set_Condition (G_TYPE_CHECK_INSTANCE_CAST (_tmp22_, WIXL_TYPE_WIX_COMPONENT, WixlWixComponent), _tmp26_);
			_g_free0 (_tmp26_);
		} else {
			WixlWixElement* _tmp27_;
			_tmp27_ = ((WixlWixNode*) condition)->parent;
			if (WIXL_IS_WIX_PRODUCT (_tmp27_)) {
				WixlMsiDatabase* _tmp28_;
				WixlMsiTableLaunchCondition* _tmp29_;
				WixlWixText* _tmp30_;
				const gchar* _tmp31_;
				gchar* _tmp32_;
				gchar* _tmp33_;
				const gchar* _tmp34_;
				const gchar* _tmp35_;
				_tmp28_ = self->priv->db;
				_tmp29_ = _tmp28_->table_launch_condition;
				_tmp30_ = text;
				_tmp31_ = _tmp30_->Text;
				_tmp32_ = string_strip (_tmp31_);
				_tmp33_ = _tmp32_;
				_tmp34_ = wixl_wix_condition_get_Message (condition);
				_tmp35_ = _tmp34_;
				wixl_msi_table_launch_condition_add (_tmp29_, _tmp33_, _tmp35_, &_inner_error0_);
				_g_free0 (_tmp33_);
				if (G_UNLIKELY (_inner_error0_ != NULL)) {
					g_propagate_error (error, _inner_error0_);
					_g_object_unref0 (text);
					return;
				}
			} else {
				WixlWixElement* _tmp36_;
				const gchar* _tmp37_;
				_tmp36_ = ((WixlWixNode*) condition)->parent;
				_tmp37_ = WIXL_WIX_ELEMENT_GET_CLASS (_tmp36_)->name;
				g_warning ("builder.vala:1002: unhandled parent type %s", _tmp37_);
			}
		}
	}
	_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,
                  gint* length,
                  gint* size,
                  gchar* value)
{
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}

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

static void
wixl_wix_builder_real_visit_action (WixlWixNodeVisitor* base,
                                    WixlWixAction* action,
                                    GError** error)
{
	WixlWixBuilder * self;
	WixlWixSequence* parent = NULL;
	WixlWixElement* _tmp0_;
	WixlWixSequence* _tmp1_;
	WixlMsiTableSequence* table = NULL;
	WixlMsiDatabase* _tmp2_;
	GHashTable* _tmp3_;
	WixlWixSequence* _tmp4_;
	const gchar* _tmp5_;
	gconstpointer _tmp6_;
	WixlMsiTable* _tmp7_;
	WixlMsiTableSequence* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp13_;
	WixlMsiTableSequenceAction* node = NULL;
	WixlMsiTableSequence* _tmp17_;
	const gchar* _tmp18_;
	WixlMsiTableSequenceAction* _tmp19_;
	WixlMsiTableSequenceAction* _tmp20_;
	WixlWixAction* _tmp21_;
	WixlMsiTableSequenceAction* _tmp22_;
	WixlWixAction* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	const gchar* _tmp59_;
	const gchar* _tmp60_;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (action != NULL);
	_tmp0_ = ((WixlWixNode*) action)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_SEQUENCE (_tmp0_) ? ((WixlWixSequence*) _tmp0_) : NULL);
	parent = _tmp1_;
	_tmp2_ = self->priv->db;
	_tmp3_ = _tmp2_->tables;
	_tmp4_ = parent;
	_tmp5_ = WIXL_WIX_ELEMENT_GET_CLASS (_tmp4_)->name;
	_tmp6_ = g_hash_table_lookup (_tmp3_, _tmp5_);
	_tmp7_ = (WixlMsiTable*) _tmp6_;
	_tmp8_ = _g_object_ref0 (WIXL_IS_MSI_TABLE_SEQUENCE (_tmp7_) ? ((WixlMsiTableSequence*) _tmp7_) : NULL);
	table = _tmp8_;
	_tmp9_ = action->name;
	if (g_strcmp0 (_tmp9_, "Custom") == 0) {
		const gchar* _tmp10_;
		const gchar* _tmp11_;
		gchar* _tmp12_;
		_tmp10_ = wixl_wix_action_get_Action (action);
		_tmp11_ = _tmp10_;
		_tmp12_ = g_strdup (_tmp11_);
		_g_free0 (action->name);
		action->name = _tmp12_;
	}
	_tmp13_ = action->name;
	if (g_strcmp0 (_tmp13_, "Show") == 0) {
		const gchar* _tmp14_;
		const gchar* _tmp15_;
		gchar* _tmp16_;
		_tmp14_ = wixl_wix_action_get_Dialog (action);
		_tmp15_ = _tmp14_;
		_tmp16_ = g_strdup (_tmp15_);
		_g_free0 (action->name);
		action->name = _tmp16_;
	}
	_tmp17_ = table;
	_tmp18_ = action->name;
	_tmp19_ = wixl_msi_table_sequence_get_action (_tmp17_, _tmp18_);
	node = _tmp19_;
	_tmp20_ = node;
	_tmp21_ = _tmp20_->action;
	if (_tmp21_ != NULL) {
		_wixl_msi_table_sequence_action_unref0 (node);
		_g_object_unref0 (table);
		_g_object_unref0 (parent);
		return;
	}
	_tmp22_ = node;
	_tmp23_ = _g_object_ref0 (action);
	_g_object_unref0 (_tmp22_->action);
	_tmp22_->action = _tmp23_;
	_tmp24_ = wixl_wix_action_get_OnExit (action);
	_tmp25_ = _tmp24_;
	if (_tmp25_ != NULL) {
		const gchar* _tmp26_;
		const gchar* _tmp27_;
		const gchar* _tmp29_;
		const gchar* _tmp30_;
		const gchar* _tmp32_;
		const gchar* _tmp33_;
		const gchar* _tmp35_;
		const gchar* _tmp36_;
		_tmp26_ = wixl_wix_action_get_OnExit (action);
		_tmp27_ = _tmp26_;
		if (g_strcmp0 (_tmp27_, "success") == 0) {
			WixlMsiTableSequenceAction* _tmp28_;
			_tmp28_ = node;
			_tmp28_->sequence = -1;
		}
		_tmp29_ = wixl_wix_action_get_OnExit (action);
		_tmp30_ = _tmp29_;
		if (g_strcmp0 (_tmp30_, "cancel") == 0) {
			WixlMsiTableSequenceAction* _tmp31_;
			_tmp31_ = node;
			_tmp31_->sequence = -2;
		}
		_tmp32_ = wixl_wix_action_get_OnExit (action);
		_tmp33_ = _tmp32_;
		if (g_strcmp0 (_tmp33_, "error") == 0) {
			WixlMsiTableSequenceAction* _tmp34_;
			_tmp34_ = node;
			_tmp34_->sequence = -3;
		}
		_tmp35_ = wixl_wix_action_get_OnExit (action);
		_tmp36_ = _tmp35_;
		if (g_strcmp0 (_tmp36_, "suspend") == 0) {
			WixlMsiTableSequenceAction* _tmp37_;
			_tmp37_ = node;
			_tmp37_->sequence = -4;
		}
	} else {
		const gchar* _tmp38_;
		const gchar* _tmp39_;
		const gchar* _tmp43_;
		const gchar* _tmp44_;
		const gchar* _tmp51_;
		const gchar* _tmp52_;
		_tmp38_ = wixl_wix_action_get_Sequence (action);
		_tmp39_ = _tmp38_;
		if (_tmp39_ != NULL) {
			WixlMsiTableSequenceAction* _tmp40_;
			const gchar* _tmp41_;
			const gchar* _tmp42_;
			_tmp40_ = node;
			_tmp41_ = wixl_wix_action_get_Sequence (action);
			_tmp42_ = _tmp41_;
			_tmp40_->sequence = atoi (_tmp42_);
		}
		_tmp43_ = wixl_wix_action_get_After (action);
		_tmp44_ = _tmp43_;
		if (_tmp44_ != NULL) {
			WixlMsiTableSequenceAction* _tmp45_;
			WixlMsiTableSequence* _tmp46_;
			const gchar* _tmp47_;
			const gchar* _tmp48_;
			WixlMsiTableSequenceAction* _tmp49_;
			WixlMsiTableSequenceAction* _tmp50_;
			_tmp45_ = node;
			_tmp46_ = table;
			_tmp47_ = wixl_wix_action_get_After (action);
			_tmp48_ = _tmp47_;
			_tmp49_ = wixl_msi_table_sequence_get_action (_tmp46_, _tmp48_);
			_tmp50_ = _tmp49_;
			wixl_msi_table_sequence_action_add_dep (_tmp45_, _tmp50_);
			_wixl_msi_table_sequence_action_unref0 (_tmp50_);
		}
		_tmp51_ = wixl_wix_action_get_Before (action);
		_tmp52_ = _tmp51_;
		if (_tmp52_ != NULL) {
			WixlMsiTableSequenceAction* before = NULL;
			WixlMsiTableSequence* _tmp53_;
			const gchar* _tmp54_;
			const gchar* _tmp55_;
			WixlMsiTableSequenceAction* _tmp56_;
			WixlMsiTableSequenceAction* _tmp57_;
			WixlMsiTableSequenceAction* _tmp58_;
			_tmp53_ = table;
			_tmp54_ = wixl_wix_action_get_Before (action);
			_tmp55_ = _tmp54_;
			_tmp56_ = wixl_msi_table_sequence_get_action (_tmp53_, _tmp55_);
			before = _tmp56_;
			_tmp57_ = before;
			_tmp58_ = node;
			wixl_msi_table_sequence_action_add_dep (_tmp57_, _tmp58_);
			_wixl_msi_table_sequence_action_unref0 (before);
		}
	}
	_tmp59_ = wixl_wix_action_get_Condition (action);
	_tmp60_ = _tmp59_;
	if (_tmp60_ != NULL) {
		WixlMsiTableSequenceAction* _tmp61_;
		const gchar* _tmp62_;
		const gchar* _tmp63_;
		gchar* _tmp64_;
		_tmp61_ = node;
		_tmp62_ = wixl_wix_action_get_Condition (action);
		_tmp63_ = _tmp62_;
		_tmp64_ = g_strdup (_tmp63_);
		_g_free0 (_tmp61_->condition);
		_tmp61_->condition = _tmp64_;
	} else {
		GList* _tmp65_;
		_tmp65_ = ((WixlWixElement*) action)->children;
		if (g_list_length (_tmp65_) > ((guint) 0)) {
			GList* _tmp66_;
			WixlWixText* text = NULL;
			GList* _tmp67_;
			GList* _tmp68_;
			gconstpointer _tmp69_;
			WixlWixNode* _tmp70_;
			WixlWixText* _tmp71_;
			WixlMsiTableSequenceAction* _tmp72_;
			WixlWixText* _tmp73_;
			const gchar* _tmp74_;
			gchar* _tmp75_;
			_tmp66_ = ((WixlWixElement*) action)->children;
			g_return_if_fail (g_list_length (_tmp66_) == ((guint) 1));
			_tmp67_ = ((WixlWixElement*) action)->children;
			_tmp68_ = g_list_first (_tmp67_);
			_tmp69_ = _tmp68_->data;
			_tmp70_ = (WixlWixNode*) _tmp69_;
			_tmp71_ = _g_object_ref0 (WIXL_IS_WIX_TEXT (_tmp70_) ? ((WixlWixText*) _tmp70_) : NULL);
			text = _tmp71_;
			_tmp72_ = node;
			_tmp73_ = text;
			_tmp74_ = _tmp73_->Text;
			_tmp75_ = string_strip (_tmp74_);
			_g_free0 (_tmp72_->condition);
			_tmp72_->condition = _tmp75_;
			_g_object_unref0 (text);
		}
	}
	_wixl_msi_table_sequence_action_unref0 (node);
	_g_object_unref0 (table);
	_g_object_unref0 (parent);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

static void
_vala_array_add2 (gchar** * array,
                  gint* length,
                  gint* 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,
                  gint* length,
                  gint* 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_add4 (gchar** * array,
                  gint* length,
                  gint* size,
                  gchar* value)
{
	if ((*length) == (*size)) {
		*size = (*size) ? (2 * (*size)) : 4;
		*array = g_renew (gchar*, *array, (*size) + 1);
	}
	(*array)[(*length)++] = value;
	(*array)[*length] = NULL;
}

static void
wixl_wix_builder_real_visit_major_upgrade (WixlWixNodeVisitor* base,
                                           WixlWixMajorUpgrade* major,
                                           GError** error)
{
	WixlWixBuilder * self;
	WixlWixProduct* product = NULL;
	WixlWixElement* _tmp0_;
	WixlWixProduct* _tmp1_;
	gchar* property = NULL;
	gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp29_;
	gchar* _tmp30_;
	const gchar* _tmp31_;
	const gchar* _tmp32_;
	gchar* _tmp51_;
	gchar* _tmp52_ = NULL;
	WixlWixProduct* _tmp53_;
	const gchar* _tmp54_;
	const gchar* _tmp55_;
	gchar* _tmp56_;
	gchar* _tmp57_;
	WixlMsiDatabase* _tmp58_;
	WixlMsiTableUpgrade* _tmp59_;
	WixlWixProduct* _tmp60_;
	const gchar* _tmp61_;
	const gchar* _tmp62_;
	const gchar* _tmp63_;
	const gchar* _tmp64_;
	gchar* _tmp65_;
	gboolean _tmp66_ = FALSE;
	const gchar* _tmp67_;
	const gchar* _tmp68_;
	WixlMsiTableInstallExecuteSequence* table = NULL;
	WixlMsiDatabase* _tmp75_;
	WixlMsiTableInstallExecuteSequence* _tmp76_;
	WixlMsiTableInstallExecuteSequence* _tmp77_;
	WixlMsiTableSequenceAction* node = NULL;
	WixlMsiTableInstallExecuteSequence* _tmp78_;
	WixlMsiTableSequenceAction* _tmp79_;
	WixlMsiTableSequenceAction* _tmp80_;
	WixlWixAction* _tmp81_;
	WixlMsiTableSequenceAction* _tmp82_;
	WixlMsiTableInstallExecuteSequence* _tmp83_;
	WixlMsiTableSequenceAction* _tmp84_;
	WixlMsiTableSequenceAction* _tmp85_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (major != NULL);
	_tmp0_ = ((WixlWixNode*) major)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_PRODUCT (_tmp0_) ? ((WixlWixProduct*) _tmp0_) : NULL);
	product = _tmp1_;
	_tmp2_ = g_strdup ("WIX_DOWNGRADE_DETECTED");
	property = _tmp2_;
	_tmp3_ = wixl_wix_major_upgrade_get_AllowDowngrades (major);
	_tmp4_ = _tmp3_;
	if (g_strcmp0 (_tmp4_, "yes") == 0) {
		gchar* _tmp5_ = NULL;
		WixlWixProduct* _tmp6_;
		const gchar* _tmp7_;
		const gchar* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_;
		WixlMsiDatabase* _tmp11_;
		WixlMsiTableUpgrade* _tmp12_;
		WixlWixProduct* _tmp13_;
		const gchar* _tmp14_;
		const gchar* _tmp15_;
		const gchar* _tmp16_;
		_tmp6_ = product;
		_tmp7_ = wixl_wix_product_get_UpgradeCode (_tmp6_);
		_tmp8_ = _tmp7_;
		_tmp9_ = g_strdup (_tmp8_);
		_tmp10_ = wixl_get_uuid (_tmp9_, &_inner_error0_);
		_tmp5_ = _tmp10_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
		_tmp11_ = self->priv->db;
		_tmp12_ = _tmp11_->table_upgrade;
		_tmp13_ = product;
		_tmp14_ = wixl_wix_product_get_Version (_tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = property;
		wixl_msi_table_upgrade_add (_tmp12_, _tmp5_, _tmp15_, "", (gint) WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_MIGRATE_FEATURES, _tmp16_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (_tmp5_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
		_g_free0 (_tmp5_);
	} else {
		gchar* _tmp17_ = NULL;
		WixlWixProduct* _tmp18_;
		const gchar* _tmp19_;
		const gchar* _tmp20_;
		gchar* _tmp21_;
		gchar* _tmp22_;
		WixlMsiDatabase* _tmp23_;
		WixlMsiTableUpgrade* _tmp24_;
		WixlWixProduct* _tmp25_;
		const gchar* _tmp26_;
		const gchar* _tmp27_;
		const gchar* _tmp28_;
		_tmp18_ = product;
		_tmp19_ = wixl_wix_product_get_UpgradeCode (_tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = g_strdup (_tmp20_);
		_tmp22_ = wixl_get_uuid (_tmp21_, &_inner_error0_);
		_tmp17_ = _tmp22_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
		_tmp23_ = self->priv->db;
		_tmp24_ = _tmp23_->table_upgrade;
		_tmp25_ = product;
		_tmp26_ = wixl_wix_product_get_Version (_tmp25_);
		_tmp27_ = _tmp26_;
		_tmp28_ = property;
		wixl_msi_table_upgrade_add (_tmp24_, _tmp17_, _tmp27_, "", (gint) WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_ONLY_DETECT, _tmp28_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (_tmp17_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
		_g_free0 (_tmp17_);
	}
	_tmp29_ = property;
	_tmp30_ = g_strdup (_tmp29_);
	_vala_array_add2 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp30_);
	_tmp31_ = wixl_wix_major_upgrade_get_AllowSameVersionUpgrades (major);
	_tmp32_ = _tmp31_;
	if (g_strcmp0 (_tmp32_, "yes") == 0) {
		gchar* _tmp33_;
		gchar* _tmp34_ = NULL;
		WixlWixProduct* _tmp35_;
		const gchar* _tmp36_;
		const gchar* _tmp37_;
		gchar* _tmp38_;
		gchar* _tmp39_;
		WixlMsiDatabase* _tmp40_;
		WixlMsiTableUpgrade* _tmp41_;
		WixlWixProduct* _tmp42_;
		const gchar* _tmp43_;
		const gchar* _tmp44_;
		WixlWixProduct* _tmp45_;
		const gchar* _tmp46_;
		const gchar* _tmp47_;
		const gchar* _tmp48_;
		const gchar* _tmp49_;
		gchar* _tmp50_;
		_tmp33_ = g_strdup ("WIX_SAME_VERSION_UPGRADE_DETECTED");
		_g_free0 (property);
		property = _tmp33_;
		_tmp35_ = product;
		_tmp36_ = wixl_wix_product_get_UpgradeCode (_tmp35_);
		_tmp37_ = _tmp36_;
		_tmp38_ = g_strdup (_tmp37_);
		_tmp39_ = wixl_get_uuid (_tmp38_, &_inner_error0_);
		_tmp34_ = _tmp39_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
		_tmp40_ = self->priv->db;
		_tmp41_ = _tmp40_->table_upgrade;
		_tmp42_ = product;
		_tmp43_ = wixl_wix_product_get_Version (_tmp42_);
		_tmp44_ = _tmp43_;
		_tmp45_ = product;
		_tmp46_ = wixl_wix_product_get_Version (_tmp45_);
		_tmp47_ = _tmp46_;
		_tmp48_ = property;
		wixl_msi_table_upgrade_add (_tmp41_, _tmp34_, _tmp44_, _tmp47_, (gint) ((WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_MIGRATE_FEATURES | WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MIN_INCLUSIVE) | WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_VERSION_MAX_INCLUSIVE), _tmp48_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (_tmp34_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
		_tmp49_ = property;
		_tmp50_ = g_strdup (_tmp49_);
		_vala_array_add3 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp50_);
		_g_free0 (_tmp34_);
	}
	_tmp51_ = g_strdup ("WIX_UPGRADE_DETECTED");
	_g_free0 (property);
	property = _tmp51_;
	_tmp53_ = product;
	_tmp54_ = wixl_wix_product_get_UpgradeCode (_tmp53_);
	_tmp55_ = _tmp54_;
	_tmp56_ = g_strdup (_tmp55_);
	_tmp57_ = wixl_get_uuid (_tmp56_, &_inner_error0_);
	_tmp52_ = _tmp57_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp58_ = self->priv->db;
	_tmp59_ = _tmp58_->table_upgrade;
	_tmp60_ = product;
	_tmp61_ = wixl_wix_product_get_Version (_tmp60_);
	_tmp62_ = _tmp61_;
	_tmp63_ = property;
	wixl_msi_table_upgrade_add (_tmp59_, _tmp52_, "", _tmp62_, (gint) WIXL_WIX_BUILDER_UPGRADE_ATTRIBUTE_MIGRATE_FEATURES, _tmp63_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (_tmp52_);
		_g_free0 (property);
		_g_object_unref0 (product);
		return;
	}
	_tmp64_ = property;
	_tmp65_ = g_strdup (_tmp64_);
	_vala_array_add4 (&self->priv->secureProperties, &self->priv->secureProperties_length1, &self->priv->_secureProperties_size_, _tmp65_);
	_tmp67_ = wixl_wix_major_upgrade_get_DowngradeErrorMessage (major);
	_tmp68_ = _tmp67_;
	if (_tmp68_ != NULL) {
		const gchar* _tmp69_;
		const gchar* _tmp70_;
		_tmp69_ = wixl_wix_major_upgrade_get_AllowDowngrades (major);
		_tmp70_ = _tmp69_;
		_tmp66_ = g_strcmp0 (_tmp70_, "yes") != 0;
	} else {
		_tmp66_ = FALSE;
	}
	if (_tmp66_) {
		WixlMsiDatabase* _tmp71_;
		WixlMsiTableLaunchCondition* _tmp72_;
		const gchar* _tmp73_;
		const gchar* _tmp74_;
		_tmp71_ = self->priv->db;
		_tmp72_ = _tmp71_->table_launch_condition;
		_tmp73_ = wixl_wix_major_upgrade_get_DowngradeErrorMessage (major);
		_tmp74_ = _tmp73_;
		wixl_msi_table_launch_condition_add (_tmp72_, "NOT WIX_DOWNGRADE_DETECTED", _tmp74_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (_tmp52_);
			_g_free0 (property);
			_g_object_unref0 (product);
			return;
		}
	}
	_tmp75_ = self->priv->db;
	_tmp76_ = _tmp75_->table_install_execute_sequence;
	_tmp77_ = _g_object_ref0 (_tmp76_);
	table = _tmp77_;
	_tmp78_ = table;
	_tmp79_ = wixl_msi_table_sequence_get_action ((WixlMsiTableSequence*) _tmp78_, "RemoveExistingProducts");
	node = _tmp79_;
	_tmp80_ = node;
	_tmp81_ = _tmp80_->action;
	g_warn_if_fail (_tmp81_ == NULL);
	_tmp82_ = node;
	_tmp83_ = table;
	_tmp84_ = wixl_msi_table_sequence_get_action ((WixlMsiTableSequence*) _tmp83_, "InstallValidate");
	_tmp85_ = _tmp84_;
	wixl_msi_table_sequence_action_add_dep (_tmp82_, _tmp85_);
	_wixl_msi_table_sequence_action_unref0 (_tmp85_);
	_wixl_msi_table_sequence_action_unref0 (node);
	_g_object_unref0 (table);
	_g_free0 (_tmp52_);
	_g_free0 (property);
	_g_object_unref0 (product);
}

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

static void
wixl_wix_builder_real_visit_ui_ref (WixlWixNodeVisitor* base,
                                    WixlWixUIRef* ref,
                                    GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gpointer _tmp2_;
	WixlWixUI* _tmp3_;
	gboolean _tmp4_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ref != NULL);
	_tmp0_ = wixl_wix_element_get_Id ((WixlWixElement*) ref);
	_tmp1_ = _tmp0_;
	_tmp2_ = wixl_wix_resolver_find_element ((WixlWixResolver*) self, WIXL_TYPE_WIX_UI, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp1_);
	_tmp3_ = (WixlWixUI*) _tmp2_;
	_tmp4_ = _tmp3_ == NULL;
	_g_object_unref0 (_tmp3_);
	if (_tmp4_) {
		const gchar* _tmp5_;
		const gchar* _tmp6_;
		_tmp5_ = wixl_wix_element_get_Id ((WixlWixElement*) ref);
		_tmp6_ = _tmp5_;
		wixl_wix_builder_load_extension_file (self, WIXL_EXTENSION_UI, _tmp6_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
}

static void
wixl_wix_builder_real_visit_ui_text (WixlWixNodeVisitor* base,
                                     WixlWixUIText* text,
                                     GError** error)
{
	WixlWixBuilder * self;
	WixlMsiDatabase* _tmp0_;
	WixlMsiTableUIText* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (text != NULL);
	_tmp0_ = self->priv->db;
	_tmp1_ = _tmp0_->table_ui_text;
	_tmp2_ = wixl_wix_element_get_Id ((WixlWixElement*) text);
	_tmp3_ = _tmp2_;
	_tmp4_ = wixl_wix_ui_text_get_Value (text);
	_tmp5_ = _tmp4_;
	wixl_msi_table_ui_text_add (_tmp1_, _tmp3_, _tmp5_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		return;
	}
}

static void
wixl_wix_builder_real_visit_text_element (WixlWixNodeVisitor* base,
                                          WixlWixTextElement* text,
                                          GError** error)
{
	WixlWixBuilder * self;
	WixlWixControl* control = NULL;
	WixlWixElement* _tmp0_;
	WixlWixControl* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (text != NULL);
	_tmp0_ = ((WixlWixNode*) text)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_CONTROL (_tmp0_) ? ((WixlWixControl*) _tmp0_) : NULL);
	control = _tmp1_;
	_tmp2_ = wixl_wix_text_element_get_SourceFile (text);
	_tmp3_ = _tmp2_;
	if (_tmp3_ != NULL) {
		gchar* data = NULL;
		GFile* file = NULL;
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		GFile* _tmp6_;
		GFile* _tmp7_;
		gchar* _tmp8_;
		gchar* _tmp9_;
		gchar* _tmp10_ = NULL;
		WixlWixControl* _tmp11_;
		const gchar* _tmp12_;
		_tmp4_ = wixl_wix_text_element_get_SourceFile (text);
		_tmp5_ = _tmp4_;
		_tmp6_ = wixl_wix_builder_find_file (self, _tmp5_, NULL, &_inner_error0_);
		file = _tmp6_;
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_free0 (data);
			_g_object_unref0 (control);
			return;
		}
		_tmp7_ = file;
		_tmp8_ = g_file_get_path (_tmp7_);
		_tmp9_ = _tmp8_;
		g_file_get_contents (_tmp9_, &_tmp10_, NULL, &_inner_error0_);
		_g_free0 (data);
		data = _tmp10_;
		_g_free0 (_tmp9_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (file);
			_g_free0 (data);
			_g_object_unref0 (control);
			return;
		}
		_tmp11_ = control;
		_tmp12_ = data;
		wixl_wix_control_set_Text (_tmp11_, _tmp12_);
		_g_object_unref0 (file);
		_g_free0 (data);
	} else {
		GList* _tmp13_;
		_tmp13_ = ((WixlWixElement*) text)->children;
		if (g_list_length (_tmp13_) > ((guint) 0)) {
			GList* _tmp14_;
			WixlWixText* node = NULL;
			GList* _tmp15_;
			GList* _tmp16_;
			gconstpointer _tmp17_;
			WixlWixNode* _tmp18_;
			WixlWixText* _tmp19_;
			WixlWixControl* _tmp20_;
			WixlWixText* _tmp21_;
			const gchar* _tmp22_;
			gchar* _tmp23_;
			gchar* _tmp24_;
			_tmp14_ = ((WixlWixElement*) text)->children;
			g_return_if_fail (g_list_length (_tmp14_) == ((guint) 1));
			_tmp15_ = ((WixlWixElement*) text)->children;
			_tmp16_ = g_list_first (_tmp15_);
			_tmp17_ = _tmp16_->data;
			_tmp18_ = (WixlWixNode*) _tmp17_;
			_tmp19_ = _g_object_ref0 (WIXL_IS_WIX_TEXT (_tmp18_) ? ((WixlWixText*) _tmp18_) : NULL);
			node = _tmp19_;
			_tmp20_ = control;
			_tmp21_ = node;
			_tmp22_ = _tmp21_->Text;
			_tmp23_ = string_strip (_tmp22_);
			_tmp24_ = _tmp23_;
			wixl_wix_control_set_Text (_tmp20_, _tmp24_);
			_g_free0 (_tmp24_);
			_g_object_unref0 (node);
		}
	}
	_g_object_unref0 (control);
}

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

static gpointer
__int_dup0 (gpointer self)
{
	return self ? _int_dup (self) : NULL;
}

static void
wixl_wix_builder_real_visit_text_style (WixlWixNodeVisitor* base,
                                        WixlWixTextStyle* style,
                                        GError** error)
{
	WixlWixBuilder * self;
	gint* color = NULL;
	WixlWixBuilderTextStyleBits bits = 0U;
	gboolean _tmp0_ = FALSE;
	gboolean _tmp1_ = FALSE;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp31_;
	const gchar* _tmp32_;
	const gchar* _tmp33_;
	const gchar* _tmp34_;
	const gchar* _tmp35_;
	const gchar* _tmp36_;
	const gchar* _tmp37_;
	const gchar* _tmp38_;
	WixlMsiDatabase* _tmp39_;
	WixlMsiTableTextStyle* _tmp40_;
	const gchar* _tmp41_;
	const gchar* _tmp42_;
	const gchar* _tmp43_;
	const gchar* _tmp44_;
	const gchar* _tmp45_;
	const gchar* _tmp46_;
	gint* _tmp47_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (style != NULL);
	color = NULL;
	bits = 0;
	_tmp2_ = wixl_wix_text_style_get_Blue (style);
	_tmp3_ = _tmp2_;
	if (_tmp3_ != NULL) {
		_tmp1_ = TRUE;
	} else {
		const gchar* _tmp4_;
		const gchar* _tmp5_;
		_tmp4_ = wixl_wix_text_style_get_Green (style);
		_tmp5_ = _tmp4_;
		_tmp1_ = _tmp5_ != NULL;
	}
	if (_tmp1_) {
		_tmp0_ = TRUE;
	} else {
		const gchar* _tmp6_;
		const gchar* _tmp7_;
		_tmp6_ = wixl_wix_text_style_get_Red (style);
		_tmp7_ = _tmp6_;
		_tmp0_ = _tmp7_ != NULL;
	}
	if (_tmp0_) {
		gint _tmp8_;
		gint* _tmp9_;
		const gchar* _tmp10_;
		const gchar* _tmp11_;
		const gchar* _tmp17_;
		const gchar* _tmp18_;
		const gchar* _tmp24_;
		const gchar* _tmp25_;
		_tmp8_ = 0;
		_tmp9_ = __int_dup0 (&_tmp8_);
		_g_free0 (color);
		color = _tmp9_;
		_tmp10_ = wixl_wix_text_style_get_Blue (style);
		_tmp11_ = _tmp10_;
		if (_tmp11_ != NULL) {
			gint* _tmp12_;
			const gchar* _tmp13_;
			const gchar* _tmp14_;
			gint _tmp15_;
			gint* _tmp16_;
			_tmp12_ = color;
			_tmp13_ = wixl_wix_text_style_get_Blue (style);
			_tmp14_ = _tmp13_;
			_tmp15_ = (*_tmp12_) + (65536 * atoi (_tmp14_));
			_tmp16_ = __int_dup0 (&_tmp15_);
			_g_free0 (color);
			color = _tmp16_;
		}
		_tmp17_ = wixl_wix_text_style_get_Green (style);
		_tmp18_ = _tmp17_;
		if (_tmp18_ != NULL) {
			gint* _tmp19_;
			const gchar* _tmp20_;
			const gchar* _tmp21_;
			gint _tmp22_;
			gint* _tmp23_;
			_tmp19_ = color;
			_tmp20_ = wixl_wix_text_style_get_Green (style);
			_tmp21_ = _tmp20_;
			_tmp22_ = (*_tmp19_) + (256 * atoi (_tmp21_));
			_tmp23_ = __int_dup0 (&_tmp22_);
			_g_free0 (color);
			color = _tmp23_;
		}
		_tmp24_ = wixl_wix_text_style_get_Red (style);
		_tmp25_ = _tmp24_;
		if (_tmp25_ != NULL) {
			gint* _tmp26_;
			const gchar* _tmp27_;
			const gchar* _tmp28_;
			gint _tmp29_;
			gint* _tmp30_;
			_tmp26_ = color;
			_tmp27_ = wixl_wix_text_style_get_Red (style);
			_tmp28_ = _tmp27_;
			_tmp29_ = (*_tmp26_) + atoi (_tmp28_);
			_tmp30_ = __int_dup0 (&_tmp29_);
			_g_free0 (color);
			color = _tmp30_;
		}
	}
	_tmp31_ = wixl_wix_text_style_get_Bold (style);
	_tmp32_ = _tmp31_;
	if (wixl_parse_yesno (_tmp32_, FALSE)) {
		bits |= WIXL_WIX_BUILDER_TEXT_STYLE_BITS_BOLD;
	}
	_tmp33_ = wixl_wix_text_style_get_Italic (style);
	_tmp34_ = _tmp33_;
	if (wixl_parse_yesno (_tmp34_, FALSE)) {
		bits |= WIXL_WIX_BUILDER_TEXT_STYLE_BITS_ITALIC;
	}
	_tmp35_ = wixl_wix_text_style_get_Underline (style);
	_tmp36_ = _tmp35_;
	if (wixl_parse_yesno (_tmp36_, FALSE)) {
		bits |= WIXL_WIX_BUILDER_TEXT_STYLE_BITS_UNDERLINE;
	}
	_tmp37_ = wixl_wix_text_style_get_Strike (style);
	_tmp38_ = _tmp37_;
	if (wixl_parse_yesno (_tmp38_, FALSE)) {
		bits |= WIXL_WIX_BUILDER_TEXT_STYLE_BITS_STRIKE;
	}
	_tmp39_ = self->priv->db;
	_tmp40_ = _tmp39_->table_text_style;
	_tmp41_ = wixl_wix_element_get_Id ((WixlWixElement*) style);
	_tmp42_ = _tmp41_;
	_tmp43_ = wixl_wix_text_style_get_FaceName (style);
	_tmp44_ = _tmp43_;
	_tmp45_ = wixl_wix_text_style_get_Size (style);
	_tmp46_ = _tmp45_;
	_tmp47_ = color;
	wixl_msi_table_text_style_add (_tmp40_, _tmp42_, _tmp44_, atoi (_tmp46_), _tmp47_, (gint) bits, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (color);
		return;
	}
	_g_free0 (color);
}

static void
wixl_wix_builder_real_visit_dialog (WixlWixNodeVisitor* base,
                                    WixlWixDialog* dialog,
                                    GError** error)
{
	WixlWixBuilder * self;
	gint hcenter = 0;
	gint vcenter = 0;
	gint attributes = 0;
	gint width = 0;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gint height = 0;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	const gchar* _tmp4_;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	const gchar* _tmp23_;
	WixlWixControl* first = NULL;
	GList* _tmp24_;
	GList* _tmp25_;
	gconstpointer _tmp26_;
	WixlWixNode* _tmp27_;
	WixlWixControl* _tmp28_;
	WixlMsiDatabase* _tmp29_;
	WixlMsiTableDialog* _tmp30_;
	const gchar* _tmp31_;
	const gchar* _tmp32_;
	const gchar* _tmp33_;
	const gchar* _tmp34_;
	WixlWixControl* _tmp35_;
	const gchar* _tmp36_;
	const gchar* _tmp37_;
	const gchar* _tmp38_;
	const gchar* _tmp39_;
	WixlWixControl* firsttab = NULL;
	WixlWixControl* prevtab = NULL;
	GList* _tmp40_;
	gboolean _tmp83_ = FALSE;
	gboolean _tmp84_ = FALSE;
	WixlWixControl* _tmp85_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (dialog != NULL);
	hcenter = 50;
	vcenter = 50;
	attributes = 0;
	_tmp0_ = wixl_wix_dialog_get_Width (dialog);
	_tmp1_ = _tmp0_;
	width = atoi (_tmp1_);
	_tmp2_ = wixl_wix_dialog_get_Height (dialog);
	_tmp3_ = _tmp2_;
	height = atoi (_tmp3_);
	_tmp4_ = wixl_wix_dialog_get_Hidden (dialog);
	_tmp5_ = _tmp4_;
	if (!wixl_parse_yesno (_tmp5_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_VISIBLE;
	}
	_tmp6_ = wixl_wix_dialog_get_Modeless (dialog);
	_tmp7_ = _tmp6_;
	if (!wixl_parse_yesno (_tmp7_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MODAL;
	}
	_tmp8_ = wixl_wix_dialog_get_NoMinimize (dialog);
	_tmp9_ = _tmp8_;
	if (!wixl_parse_yesno (_tmp9_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_MINIMIZE;
	}
	_tmp10_ = wixl_wix_dialog_get_KeepModeless (dialog);
	_tmp11_ = _tmp10_;
	if (wixl_parse_yesno (_tmp11_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_KEEP_MODELESS;
	}
	_tmp12_ = wixl_wix_dialog_get_TrackDiskSpace (dialog);
	_tmp13_ = _tmp12_;
	if (wixl_parse_yesno (_tmp13_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_TRACK_DISK_SPACE;
	}
	_tmp14_ = wixl_wix_dialog_get_CustomPalette (dialog);
	_tmp15_ = _tmp14_;
	if (wixl_parse_yesno (_tmp15_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_USE_CUSTOM_PALETTE;
	}
	_tmp16_ = wixl_wix_dialog_get_RightToLeft (dialog);
	_tmp17_ = _tmp16_;
	if (wixl_parse_yesno (_tmp17_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RTLRO;
	}
	_tmp18_ = wixl_wix_dialog_get_RightAligned (dialog);
	_tmp19_ = _tmp18_;
	if (wixl_parse_yesno (_tmp19_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_RIGHT_ALIGNED;
	}
	_tmp20_ = wixl_wix_dialog_get_LeftScroll (dialog);
	_tmp21_ = _tmp20_;
	if (wixl_parse_yesno (_tmp21_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_LEFT_SCROLL;
	}
	_tmp22_ = wixl_wix_dialog_get_ErrorDialog (dialog);
	_tmp23_ = _tmp22_;
	if (wixl_parse_yesno (_tmp23_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_DIALOG_STYLE_BITS_ERROR;
	}
	_tmp24_ = ((WixlWixElement*) dialog)->children;
	_tmp25_ = g_list_first (_tmp24_);
	_tmp26_ = _tmp25_->data;
	_tmp27_ = (WixlWixNode*) _tmp26_;
	_tmp28_ = _g_object_ref0 (WIXL_IS_WIX_CONTROL (_tmp27_) ? ((WixlWixControl*) _tmp27_) : NULL);
	first = _tmp28_;
	_tmp29_ = self->priv->db;
	_tmp30_ = _tmp29_->table_dialog;
	_tmp31_ = wixl_wix_element_get_Id ((WixlWixElement*) dialog);
	_tmp32_ = _tmp31_;
	_tmp33_ = wixl_wix_dialog_get_Title (dialog);
	_tmp34_ = _tmp33_;
	_tmp35_ = first;
	_tmp36_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp35_);
	_tmp37_ = _tmp36_;
	_tmp38_ = dialog->Default;
	_tmp39_ = dialog->Cancel;
	wixl_msi_table_dialog_add (_tmp30_, _tmp32_, hcenter, vcenter, width, height, attributes, _tmp34_, _tmp37_, _tmp38_, _tmp39_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (first);
		return;
	}
	firsttab = NULL;
	prevtab = NULL;
	_tmp40_ = ((WixlWixElement*) dialog)->children;
	{
		GList* child_collection = NULL;
		GList* child_it = NULL;
		child_collection = _tmp40_;
		for (child_it = child_collection; child_it != NULL; child_it = child_it->next) {
			WixlWixNode* _tmp41_;
			WixlWixNode* child = NULL;
			_tmp41_ = _g_object_ref0 ((WixlWixNode*) child_it->data);
			child = _tmp41_;
			{
				WixlWixControl* control = NULL;
				WixlWixNode* _tmp42_;
				WixlWixControl* _tmp43_;
				gboolean _tmp44_ = FALSE;
				gboolean _tmp45_ = FALSE;
				gboolean _tmp46_ = FALSE;
				gboolean _tmp47_ = FALSE;
				WixlWixControl* _tmp48_;
				const gchar* _tmp49_;
				const gchar* _tmp50_;
				gboolean _tmp63_ = FALSE;
				WixlWixControl* _tmp64_;
				const gchar* _tmp65_;
				const gchar* _tmp66_;
				WixlWixControl* _tmp70_;
				WixlWixControl* _tmp73_;
				WixlWixControl* _tmp81_;
				WixlWixControl* _tmp82_;
				_tmp42_ = child;
				_tmp43_ = _g_object_ref0 (WIXL_IS_WIX_CONTROL (_tmp42_) ? ((WixlWixControl*) _tmp42_) : NULL);
				control = _tmp43_;
				_tmp48_ = control;
				_tmp49_ = wixl_wix_control_get_Type (_tmp48_);
				_tmp50_ = _tmp49_;
				if (g_strcmp0 (_tmp50_, "Bitmap") != 0) {
					WixlWixControl* _tmp51_;
					const gchar* _tmp52_;
					const gchar* _tmp53_;
					_tmp51_ = control;
					_tmp52_ = wixl_wix_control_get_Type (_tmp51_);
					_tmp53_ = _tmp52_;
					_tmp47_ = g_strcmp0 (_tmp53_, "CheckBox") != 0;
				} else {
					_tmp47_ = FALSE;
				}
				if (_tmp47_) {
					WixlWixControl* _tmp54_;
					const gchar* _tmp55_;
					const gchar* _tmp56_;
					_tmp54_ = control;
					_tmp55_ = wixl_wix_control_get_Type (_tmp54_);
					_tmp56_ = _tmp55_;
					_tmp46_ = g_strcmp0 (_tmp56_, "Edit") != 0;
				} else {
					_tmp46_ = FALSE;
				}
				if (_tmp46_) {
					WixlWixControl* _tmp57_;
					const gchar* _tmp58_;
					const gchar* _tmp59_;
					_tmp57_ = control;
					_tmp58_ = wixl_wix_control_get_Type (_tmp57_);
					_tmp59_ = _tmp58_;
					_tmp45_ = g_strcmp0 (_tmp59_, "PushButton") != 0;
				} else {
					_tmp45_ = FALSE;
				}
				if (_tmp45_) {
					WixlWixControl* _tmp60_;
					const gchar* _tmp61_;
					const gchar* _tmp62_;
					_tmp60_ = control;
					_tmp61_ = wixl_wix_control_get_Type (_tmp60_);
					_tmp62_ = _tmp61_;
					_tmp44_ = g_strcmp0 (_tmp62_, "RadioButtonGroup") != 0;
				} else {
					_tmp44_ = FALSE;
				}
				if (_tmp44_) {
					_g_object_unref0 (control);
					_g_object_unref0 (child);
					continue;
				}
				_tmp64_ = control;
				_tmp65_ = wixl_wix_control_get_TabSkip (_tmp64_);
				_tmp66_ = _tmp65_;
				if (_tmp66_ != NULL) {
					WixlWixControl* _tmp67_;
					const gchar* _tmp68_;
					const gchar* _tmp69_;
					_tmp67_ = control;
					_tmp68_ = wixl_wix_control_get_TabSkip (_tmp67_);
					_tmp69_ = _tmp68_;
					_tmp63_ = wixl_parse_yesno (_tmp69_, FALSE);
				} else {
					_tmp63_ = FALSE;
				}
				if (_tmp63_) {
					_g_object_unref0 (control);
					_g_object_unref0 (child);
					continue;
				}
				_tmp70_ = firsttab;
				if (_tmp70_ == NULL) {
					WixlWixControl* _tmp71_;
					WixlWixControl* _tmp72_;
					_tmp71_ = control;
					_tmp72_ = _g_object_ref0 (_tmp71_);
					_g_object_unref0 (firsttab);
					firsttab = _tmp72_;
				}
				_tmp73_ = prevtab;
				if (_tmp73_ != NULL) {
					WixlMsiDatabase* _tmp74_;
					WixlMsiTableControl* _tmp75_;
					WixlWixControl* _tmp76_;
					LibmsiRecord* _tmp77_;
					WixlWixControl* _tmp78_;
					const gchar* _tmp79_;
					const gchar* _tmp80_;
					_tmp74_ = self->priv->db;
					_tmp75_ = _tmp74_->table_control;
					_tmp76_ = prevtab;
					_tmp77_ = _tmp76_->record;
					_tmp78_ = control;
					_tmp79_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp78_);
					_tmp80_ = _tmp79_;
					wixl_msi_table_control_set_next_control (_tmp75_, _tmp77_, _tmp80_);
				}
				_tmp81_ = control;
				_tmp82_ = _g_object_ref0 (_tmp81_);
				_g_object_unref0 (prevtab);
				prevtab = _tmp82_;
				_g_object_unref0 (control);
				_g_object_unref0 (child);
			}
		}
	}
	_tmp85_ = prevtab;
	if (_tmp85_ != NULL) {
		WixlWixControl* _tmp86_;
		_tmp86_ = firsttab;
		_tmp84_ = _tmp86_ != NULL;
	} else {
		_tmp84_ = FALSE;
	}
	if (_tmp84_) {
		WixlWixControl* _tmp87_;
		WixlWixControl* _tmp88_;
		_tmp87_ = prevtab;
		_tmp88_ = firsttab;
		_tmp83_ = _tmp87_ != _tmp88_;
	} else {
		_tmp83_ = FALSE;
	}
	if (_tmp83_) {
		WixlMsiDatabase* _tmp89_;
		WixlMsiTableControl* _tmp90_;
		WixlWixControl* _tmp91_;
		LibmsiRecord* _tmp92_;
		WixlWixControl* _tmp93_;
		const gchar* _tmp94_;
		const gchar* _tmp95_;
		_tmp89_ = self->priv->db;
		_tmp90_ = _tmp89_->table_control;
		_tmp91_ = prevtab;
		_tmp92_ = _tmp91_->record;
		_tmp93_ = firsttab;
		_tmp94_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp93_);
		_tmp95_ = _tmp94_;
		wixl_msi_table_control_set_next_control (_tmp90_, _tmp92_, _tmp95_);
	}
	_g_object_unref0 (prevtab);
	_g_object_unref0 (firsttab);
	_g_object_unref0 (first);
}

static void
wixl_wix_builder_real_visit_dialog_ref (WixlWixNodeVisitor* base,
                                        WixlWixDialogRef* ref,
                                        GError** error)
{
	WixlWixBuilder * self;
	const gchar* _tmp0_;
	const gchar* _tmp1_;
	gpointer _tmp2_;
	WixlWixDialog* _tmp3_;
	gboolean _tmp4_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (ref != NULL);
	_tmp0_ = wixl_wix_element_get_Id ((WixlWixElement*) ref);
	_tmp1_ = _tmp0_;
	_tmp2_ = wixl_wix_resolver_find_element ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIALOG, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp1_);
	_tmp3_ = (WixlWixDialog*) _tmp2_;
	_tmp4_ = _tmp3_ == NULL;
	_g_object_unref0 (_tmp3_);
	if (_tmp4_) {
		const gchar* _tmp5_;
		const gchar* _tmp6_;
		_tmp5_ = wixl_wix_element_get_Id ((WixlWixElement*) ref);
		_tmp6_ = _tmp5_;
		wixl_wix_builder_load_extension_file (self, WIXL_EXTENSION_UI, _tmp6_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			return;
		}
	}
}

static void
wixl_wix_builder_real_visit_control (WixlWixNodeVisitor* base,
                                     WixlWixControl* control,
                                     GError** error)
{
	WixlWixBuilder * self;
	gint attributes = 0;
	gint x = 0;
	gint y = 0;
	gint width = 0;
	gint height = 0;
	gchar* filename = NULL;
	gchar* help = NULL;
	WixlWixElement* _tmp0_;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	const gchar* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	const gchar* _tmp22_;
	const gchar* _tmp23_;
	const gchar* _tmp24_;
	const gchar* _tmp25_;
	const gchar* _tmp26_;
	const gchar* _tmp27_;
	const gchar* _tmp28_;
	const gchar* _tmp29_;
	const gchar* _tmp30_;
	const gchar* _tmp37_;
	const gchar* _tmp38_;
	const gchar* _tmp39_;
	const gchar* _tmp40_;
	const gchar* _tmp41_;
	const gchar* _tmp42_;
	const gchar* _tmp43_;
	const gchar* _tmp44_;
	const gchar* _tmp47_;
	const gchar* _tmp48_;
	const gchar* _tmp51_;
	const gchar* _tmp52_;
	const gchar* _tmp55_;
	const gchar* _tmp56_;
	const gchar* _tmp59_;
	const gchar* _tmp60_;
	gchar* _tmp61_;
	GFile* _tmp62_;
	gboolean _tmp65_ = FALSE;
	const gchar* _tmp66_;
	const gchar* _tmp67_;
	gboolean _tmp77_ = FALSE;
	const gchar* _tmp78_;
	const gchar* _tmp79_;
	const gchar* _tmp89_;
	const gchar* _tmp90_;
	const gchar* _tmp102_;
	const gchar* _tmp103_;
	const gchar* _tmp115_;
	const gchar* _tmp116_;
	const gchar* _tmp128_;
	const gchar* _tmp129_;
	const gchar* _tmp141_;
	const gchar* _tmp142_;
	LibmsiRecord* rec = NULL;
	WixlMsiDatabase* _tmp154_;
	WixlMsiTableControl* _tmp155_;
	WixlWixElement* _tmp156_;
	const gchar* _tmp157_;
	const gchar* _tmp158_;
	const gchar* _tmp159_;
	const gchar* _tmp160_;
	const gchar* _tmp161_;
	const gchar* _tmp162_;
	const gchar* _tmp163_;
	const gchar* _tmp164_;
	const gchar* _tmp165_;
	const gchar* _tmp166_;
	const gchar* _tmp167_;
	LibmsiRecord* _tmp168_;
	LibmsiRecord* _tmp169_;
	LibmsiRecord* _tmp170_;
	const gchar* _tmp171_;
	const gchar* _tmp172_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (control != NULL);
	attributes = 0;
	x = 100;
	y = 100;
	width = 500;
	height = 500;
	filename = NULL;
	_tmp0_ = ((WixlWixNode*) control)->parent;
	if (!WIXL_IS_WIX_DIALOG (_tmp0_)) {
		WixlWixElement* _tmp1_;
		const gchar* _tmp2_;
		_tmp1_ = ((WixlWixNode*) control)->parent;
		_tmp2_ = WIXL_WIX_ELEMENT_GET_CLASS (_tmp1_)->name;
		g_error ("builder.vala:1671: unhandled parent type %s", _tmp2_);
	}
	_tmp5_ = wixl_wix_control_get_Type (control);
	_tmp6_ = _tmp5_;
	if (g_strcmp0 (_tmp6_, "Line") != 0) {
		const gchar* _tmp7_;
		const gchar* _tmp8_;
		_tmp7_ = wixl_wix_control_get_Type (control);
		_tmp8_ = _tmp7_;
		_tmp4_ = g_strcmp0 (_tmp8_, "Bitmap") != 0;
	} else {
		_tmp4_ = FALSE;
	}
	if (_tmp4_) {
		const gchar* _tmp9_;
		const gchar* _tmp10_;
		_tmp9_ = wixl_wix_control_get_Type (control);
		_tmp10_ = _tmp9_;
		_tmp3_ = g_strcmp0 (_tmp10_, "Icon") != 0;
	} else {
		_tmp3_ = FALSE;
	}
	if (_tmp3_) {
		const gchar* _tmp11_;
		const gchar* _tmp12_;
		_tmp11_ = wixl_wix_control_get_Disabled (control);
		_tmp12_ = _tmp11_;
		if (!wixl_parse_yesno (_tmp12_, FALSE)) {
			attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ENABLED;
		}
	}
	_tmp13_ = wixl_wix_control_get_Sunken (control);
	_tmp14_ = _tmp13_;
	if (wixl_parse_yesno (_tmp14_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SUNKEN;
	}
	_tmp15_ = wixl_wix_control_get_Indirect (control);
	_tmp16_ = _tmp15_;
	if (wixl_parse_yesno (_tmp16_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_INDIRECT;
	}
	_tmp17_ = wixl_wix_control_get_Icon (control);
	_tmp18_ = _tmp17_;
	if (wixl_parse_yesno (_tmp18_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON;
	}
	_tmp19_ = wixl_wix_control_get_Hidden (control);
	_tmp20_ = _tmp19_;
	if (!wixl_parse_yesno (_tmp20_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_VISIBLE;
	}
	_tmp21_ = wixl_wix_control_get_NoPrefix (control);
	_tmp22_ = _tmp21_;
	if (wixl_parse_yesno (_tmp22_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_NO_PREFIX;
	}
	_tmp23_ = wixl_wix_control_get_Transparent (control);
	_tmp24_ = _tmp23_;
	if (wixl_parse_yesno (_tmp24_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_TRANSPARENT;
	}
	_tmp25_ = wixl_wix_control_get_ProgressBlocks (control);
	_tmp26_ = _tmp25_;
	if (wixl_parse_yesno (_tmp26_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_PROGRESS_95;
	}
	_tmp27_ = wixl_wix_control_get_Fixed (control);
	_tmp28_ = _tmp27_;
	if (wixl_parse_yesno (_tmp28_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_VOLUME;
	}
	_tmp29_ = wixl_wix_control_get_IconSize (control);
	_tmp30_ = _tmp29_;
	if (_tmp30_ != NULL) {
		const gchar* _tmp31_;
		const gchar* _tmp32_;
		_tmp31_ = wixl_wix_control_get_IconSize (control);
		_tmp32_ = _tmp31_;
		if (g_strcmp0 (_tmp32_, "16") == 0) {
			attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_16;
		} else {
			const gchar* _tmp33_;
			const gchar* _tmp34_;
			_tmp33_ = wixl_wix_control_get_IconSize (control);
			_tmp34_ = _tmp33_;
			if (g_strcmp0 (_tmp34_, "32") == 0) {
				attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_32;
			} else {
				const gchar* _tmp35_;
				const gchar* _tmp36_;
				_tmp35_ = wixl_wix_control_get_IconSize (control);
				_tmp36_ = _tmp35_;
				if (g_strcmp0 (_tmp36_, "48") == 0) {
					attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ICON_SIZE_48;
				}
			}
		}
	}
	_tmp37_ = wixl_wix_control_get_FixedSize (control);
	_tmp38_ = _tmp37_;
	if (wixl_parse_yesno (_tmp38_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_FIXED_SIZE;
	}
	_tmp39_ = wixl_wix_control_get_ElevationShield (control);
	_tmp40_ = _tmp39_;
	if (wixl_parse_yesno (_tmp40_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_ELEVATION_SHIELD;
	}
	_tmp41_ = wixl_wix_control_get_ShowRollbackCost (control);
	_tmp42_ = _tmp41_;
	if (wixl_parse_yesno (_tmp42_, FALSE)) {
		attributes |= (gint) WIXL_WIX_BUILDER_CONTROL_ATTRIBUTES_SHOW_ROLLBACK_COST;
	}
	_tmp43_ = wixl_wix_control_get_X (control);
	_tmp44_ = _tmp43_;
	if (_tmp44_ != NULL) {
		const gchar* _tmp45_;
		const gchar* _tmp46_;
		_tmp45_ = wixl_wix_control_get_X (control);
		_tmp46_ = _tmp45_;
		x = atoi (_tmp46_);
	}
	_tmp47_ = wixl_wix_control_get_Y (control);
	_tmp48_ = _tmp47_;
	if (_tmp48_ != NULL) {
		const gchar* _tmp49_;
		const gchar* _tmp50_;
		_tmp49_ = wixl_wix_control_get_Y (control);
		_tmp50_ = _tmp49_;
		y = atoi (_tmp50_);
	}
	_tmp51_ = wixl_wix_control_get_Width (control);
	_tmp52_ = _tmp51_;
	if (_tmp52_ != NULL) {
		const gchar* _tmp53_;
		const gchar* _tmp54_;
		_tmp53_ = wixl_wix_control_get_Width (control);
		_tmp54_ = _tmp53_;
		width = atoi (_tmp54_);
	}
	_tmp55_ = wixl_wix_control_get_Height (control);
	_tmp56_ = _tmp55_;
	if (_tmp56_ != NULL) {
		const gchar* _tmp57_;
		const gchar* _tmp58_;
		_tmp57_ = wixl_wix_control_get_Height (control);
		_tmp58_ = _tmp57_;
		height = atoi (_tmp58_);
	}
	_tmp59_ = wixl_wix_control_get_ToolTip (control);
	_tmp60_ = _tmp59_;
	_tmp61_ = g_strconcat (_tmp60_, "|", NULL);
	_g_free0 (help);
	help = _tmp61_;
	_tmp62_ = control->file;
	if (_tmp62_ != NULL) {
		GFile* _tmp63_;
		gchar* _tmp64_;
		_tmp63_ = control->file;
		_tmp64_ = g_file_get_path (_tmp63_);
		_g_free0 (filename);
		filename = _tmp64_;
	}
	_tmp66_ = wixl_wix_control_get_Default (control);
	_tmp67_ = _tmp66_;
	if (_tmp67_ != NULL) {
		const gchar* _tmp68_;
		const gchar* _tmp69_;
		_tmp68_ = wixl_wix_control_get_Default (control);
		_tmp69_ = _tmp68_;
		_tmp65_ = wixl_parse_yesno (_tmp69_, FALSE);
	} else {
		_tmp65_ = FALSE;
	}
	if (_tmp65_) {
		WixlWixElement* _tmp70_;
		_tmp70_ = ((WixlWixNode*) control)->parent;
		if (WIXL_IS_WIX_DIALOG (_tmp70_)) {
			WixlWixDialog* parent = NULL;
			WixlWixElement* _tmp71_;
			WixlWixDialog* _tmp72_;
			WixlWixDialog* _tmp73_;
			const gchar* _tmp74_;
			const gchar* _tmp75_;
			gchar* _tmp76_;
			_tmp71_ = ((WixlWixNode*) control)->parent;
			_tmp72_ = _g_object_ref0 (WIXL_IS_WIX_DIALOG (_tmp71_) ? ((WixlWixDialog*) _tmp71_) : NULL);
			parent = _tmp72_;
			_tmp73_ = parent;
			_tmp74_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
			_tmp75_ = _tmp74_;
			_tmp76_ = g_strdup (_tmp75_);
			_g_free0 (_tmp73_->Default);
			_tmp73_->Default = _tmp76_;
			_g_object_unref0 (parent);
		}
	}
	_tmp78_ = wixl_wix_control_get_Cancel (control);
	_tmp79_ = _tmp78_;
	if (_tmp79_ != NULL) {
		const gchar* _tmp80_;
		const gchar* _tmp81_;
		_tmp80_ = wixl_wix_control_get_Cancel (control);
		_tmp81_ = _tmp80_;
		_tmp77_ = wixl_parse_yesno (_tmp81_, FALSE);
	} else {
		_tmp77_ = FALSE;
	}
	if (_tmp77_) {
		WixlWixElement* _tmp82_;
		_tmp82_ = ((WixlWixNode*) control)->parent;
		if (WIXL_IS_WIX_DIALOG (_tmp82_)) {
			WixlWixDialog* parent = NULL;
			WixlWixElement* _tmp83_;
			WixlWixDialog* _tmp84_;
			WixlWixDialog* _tmp85_;
			const gchar* _tmp86_;
			const gchar* _tmp87_;
			gchar* _tmp88_;
			_tmp83_ = ((WixlWixNode*) control)->parent;
			_tmp84_ = _g_object_ref0 (WIXL_IS_WIX_DIALOG (_tmp83_) ? ((WixlWixDialog*) _tmp83_) : NULL);
			parent = _tmp84_;
			_tmp85_ = parent;
			_tmp86_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
			_tmp87_ = _tmp86_;
			_tmp88_ = g_strdup (_tmp87_);
			_g_free0 (_tmp85_->Cancel);
			_tmp85_->Cancel = _tmp88_;
			_g_object_unref0 (parent);
		}
	}
	_tmp89_ = wixl_wix_control_get_DefaultCondition (control);
	_tmp90_ = _tmp89_;
	if (_tmp90_ != NULL) {
		WixlWixDialog* parent = NULL;
		WixlWixElement* _tmp91_;
		WixlWixDialog* _tmp92_;
		WixlMsiDatabase* _tmp93_;
		WixlMsiTableControlCondition* _tmp94_;
		WixlWixDialog* _tmp95_;
		const gchar* _tmp96_;
		const gchar* _tmp97_;
		const gchar* _tmp98_;
		const gchar* _tmp99_;
		const gchar* _tmp100_;
		const gchar* _tmp101_;
		_tmp91_ = ((WixlWixNode*) control)->parent;
		_tmp92_ = _g_object_ref0 (WIXL_IS_WIX_DIALOG (_tmp91_) ? ((WixlWixDialog*) _tmp91_) : NULL);
		parent = _tmp92_;
		_tmp93_ = self->priv->db;
		_tmp94_ = _tmp93_->table_control_condition;
		_tmp95_ = parent;
		_tmp96_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp95_);
		_tmp97_ = _tmp96_;
		_tmp98_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
		_tmp99_ = _tmp98_;
		_tmp100_ = wixl_wix_control_get_DefaultCondition (control);
		_tmp101_ = _tmp100_;
		wixl_msi_table_control_condition_add (_tmp94_, _tmp97_, _tmp99_, "Default", _tmp101_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (parent);
			_g_free0 (help);
			_g_free0 (filename);
			return;
		}
		_g_object_unref0 (parent);
	}
	_tmp102_ = wixl_wix_control_get_DisableCondition (control);
	_tmp103_ = _tmp102_;
	if (_tmp103_ != NULL) {
		WixlWixDialog* parent = NULL;
		WixlWixElement* _tmp104_;
		WixlWixDialog* _tmp105_;
		WixlMsiDatabase* _tmp106_;
		WixlMsiTableControlCondition* _tmp107_;
		WixlWixDialog* _tmp108_;
		const gchar* _tmp109_;
		const gchar* _tmp110_;
		const gchar* _tmp111_;
		const gchar* _tmp112_;
		const gchar* _tmp113_;
		const gchar* _tmp114_;
		_tmp104_ = ((WixlWixNode*) control)->parent;
		_tmp105_ = _g_object_ref0 (WIXL_IS_WIX_DIALOG (_tmp104_) ? ((WixlWixDialog*) _tmp104_) : NULL);
		parent = _tmp105_;
		_tmp106_ = self->priv->db;
		_tmp107_ = _tmp106_->table_control_condition;
		_tmp108_ = parent;
		_tmp109_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp108_);
		_tmp110_ = _tmp109_;
		_tmp111_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
		_tmp112_ = _tmp111_;
		_tmp113_ = wixl_wix_control_get_DisableCondition (control);
		_tmp114_ = _tmp113_;
		wixl_msi_table_control_condition_add (_tmp107_, _tmp110_, _tmp112_, "Disable", _tmp114_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (parent);
			_g_free0 (help);
			_g_free0 (filename);
			return;
		}
		_g_object_unref0 (parent);
	}
	_tmp115_ = wixl_wix_control_get_EnableCondition (control);
	_tmp116_ = _tmp115_;
	if (_tmp116_ != NULL) {
		WixlWixDialog* parent = NULL;
		WixlWixElement* _tmp117_;
		WixlWixDialog* _tmp118_;
		WixlMsiDatabase* _tmp119_;
		WixlMsiTableControlCondition* _tmp120_;
		WixlWixDialog* _tmp121_;
		const gchar* _tmp122_;
		const gchar* _tmp123_;
		const gchar* _tmp124_;
		const gchar* _tmp125_;
		const gchar* _tmp126_;
		const gchar* _tmp127_;
		_tmp117_ = ((WixlWixNode*) control)->parent;
		_tmp118_ = _g_object_ref0 (WIXL_IS_WIX_DIALOG (_tmp117_) ? ((WixlWixDialog*) _tmp117_) : NULL);
		parent = _tmp118_;
		_tmp119_ = self->priv->db;
		_tmp120_ = _tmp119_->table_control_condition;
		_tmp121_ = parent;
		_tmp122_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp121_);
		_tmp123_ = _tmp122_;
		_tmp124_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
		_tmp125_ = _tmp124_;
		_tmp126_ = wixl_wix_control_get_EnableCondition (control);
		_tmp127_ = _tmp126_;
		wixl_msi_table_control_condition_add (_tmp120_, _tmp123_, _tmp125_, "Enable", _tmp127_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (parent);
			_g_free0 (help);
			_g_free0 (filename);
			return;
		}
		_g_object_unref0 (parent);
	}
	_tmp128_ = wixl_wix_control_get_HideCondition (control);
	_tmp129_ = _tmp128_;
	if (_tmp129_ != NULL) {
		WixlWixDialog* parent = NULL;
		WixlWixElement* _tmp130_;
		WixlWixDialog* _tmp131_;
		WixlMsiDatabase* _tmp132_;
		WixlMsiTableControlCondition* _tmp133_;
		WixlWixDialog* _tmp134_;
		const gchar* _tmp135_;
		const gchar* _tmp136_;
		const gchar* _tmp137_;
		const gchar* _tmp138_;
		const gchar* _tmp139_;
		const gchar* _tmp140_;
		_tmp130_ = ((WixlWixNode*) control)->parent;
		_tmp131_ = _g_object_ref0 (WIXL_IS_WIX_DIALOG (_tmp130_) ? ((WixlWixDialog*) _tmp130_) : NULL);
		parent = _tmp131_;
		_tmp132_ = self->priv->db;
		_tmp133_ = _tmp132_->table_control_condition;
		_tmp134_ = parent;
		_tmp135_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp134_);
		_tmp136_ = _tmp135_;
		_tmp137_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
		_tmp138_ = _tmp137_;
		_tmp139_ = wixl_wix_control_get_HideCondition (control);
		_tmp140_ = _tmp139_;
		wixl_msi_table_control_condition_add (_tmp133_, _tmp136_, _tmp138_, "Hide", _tmp140_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (parent);
			_g_free0 (help);
			_g_free0 (filename);
			return;
		}
		_g_object_unref0 (parent);
	}
	_tmp141_ = wixl_wix_control_get_ShowCondition (control);
	_tmp142_ = _tmp141_;
	if (_tmp142_ != NULL) {
		WixlWixDialog* parent = NULL;
		WixlWixElement* _tmp143_;
		WixlWixDialog* _tmp144_;
		WixlMsiDatabase* _tmp145_;
		WixlMsiTableControlCondition* _tmp146_;
		WixlWixDialog* _tmp147_;
		const gchar* _tmp148_;
		const gchar* _tmp149_;
		const gchar* _tmp150_;
		const gchar* _tmp151_;
		const gchar* _tmp152_;
		const gchar* _tmp153_;
		_tmp143_ = ((WixlWixNode*) control)->parent;
		_tmp144_ = _g_object_ref0 (WIXL_IS_WIX_DIALOG (_tmp143_) ? ((WixlWixDialog*) _tmp143_) : NULL);
		parent = _tmp144_;
		_tmp145_ = self->priv->db;
		_tmp146_ = _tmp145_->table_control_condition;
		_tmp147_ = parent;
		_tmp148_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp147_);
		_tmp149_ = _tmp148_;
		_tmp150_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
		_tmp151_ = _tmp150_;
		_tmp152_ = wixl_wix_control_get_ShowCondition (control);
		_tmp153_ = _tmp152_;
		wixl_msi_table_control_condition_add (_tmp146_, _tmp149_, _tmp151_, "Show", _tmp153_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (parent);
			_g_free0 (help);
			_g_free0 (filename);
			return;
		}
		_g_object_unref0 (parent);
	}
	_tmp154_ = self->priv->db;
	_tmp155_ = _tmp154_->table_control;
	_tmp156_ = ((WixlWixNode*) control)->parent;
	_tmp157_ = wixl_wix_element_get_Id (_tmp156_);
	_tmp158_ = _tmp157_;
	_tmp159_ = wixl_wix_element_get_Id ((WixlWixElement*) control);
	_tmp160_ = _tmp159_;
	_tmp161_ = wixl_wix_control_get_Type (control);
	_tmp162_ = _tmp161_;
	_tmp163_ = wixl_wix_control_get_Property (control);
	_tmp164_ = _tmp163_;
	_tmp165_ = wixl_wix_control_get_Text (control);
	_tmp166_ = _tmp165_;
	_tmp167_ = filename;
	_tmp168_ = wixl_msi_table_control_add (_tmp155_, _tmp158_, _tmp160_, _tmp162_, x, y, width, height, attributes, _tmp164_, _tmp166_, _tmp167_, NULL, &_inner_error0_);
	rec = _tmp168_;
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (help);
		_g_free0 (filename);
		return;
	}
	_tmp169_ = rec;
	_tmp170_ = _g_object_ref0 (_tmp169_);
	_g_object_unref0 (control->record);
	control->record = _tmp170_;
	_tmp171_ = wixl_wix_control_get_Type (control);
	_tmp172_ = _tmp171_;
	if (g_strcmp0 (_tmp172_, "CheckBox") == 0) {
		WixlMsiDatabase* _tmp173_;
		WixlMsiTableCheckBox* _tmp174_;
		const gchar* _tmp175_;
		const gchar* _tmp176_;
		const gchar* _tmp177_;
		const gchar* _tmp178_;
		_tmp173_ = self->priv->db;
		_tmp174_ = _tmp173_->table_check_box;
		_tmp175_ = wixl_wix_control_get_Property (control);
		_tmp176_ = _tmp175_;
		_tmp177_ = wixl_wix_control_get_CheckBoxValue (control);
		_tmp178_ = _tmp177_;
		wixl_msi_table_check_box_add (_tmp174_, _tmp176_, _tmp178_, &_inner_error0_);
		if (G_UNLIKELY (_inner_error0_ != NULL)) {
			g_propagate_error (error, _inner_error0_);
			_g_object_unref0 (rec);
			_g_free0 (help);
			_g_free0 (filename);
			return;
		}
	}
	_g_object_unref0 (rec);
	_g_free0 (help);
	_g_free0 (filename);
}

static void
wixl_wix_builder_real_visit_publish (WixlWixNodeVisitor* base,
                                     WixlWixPublish* publish,
                                     GError** error)
{
	WixlWixBuilder * self;
	gint order = 0;
	gchar* control = NULL;
	gchar* dialog = NULL;
	gchar* event = NULL;
	gchar* argument = NULL;
	gchar* condition = NULL;
	gchar* _tmp0_;
	WixlWixElement* _tmp1_;
	const gchar* _tmp22_;
	const gchar* _tmp23_;
	const gchar* _tmp39_;
	const gchar* _tmp40_;
	const gchar* _tmp44_;
	const gchar* _tmp45_;
	WixlMsiDatabase* _tmp49_;
	WixlMsiTableControlEvent* _tmp50_;
	const gchar* _tmp51_;
	const gchar* _tmp52_;
	const gchar* _tmp53_;
	const gchar* _tmp54_;
	const gchar* _tmp55_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (publish != NULL);
	argument = NULL;
	_tmp0_ = g_strdup ("1");
	condition = _tmp0_;
	_tmp1_ = ((WixlWixNode*) publish)->parent;
	if (WIXL_IS_WIX_UI (_tmp1_)) {
		const gchar* _tmp2_;
		const gchar* _tmp3_;
		gchar* _tmp4_;
		const gchar* _tmp5_;
		const gchar* _tmp6_;
		gchar* _tmp7_;
		const gchar* _tmp8_;
		gpointer _tmp9_;
		WixlWixDialog* _tmp10_;
		gboolean _tmp11_;
		_tmp2_ = wixl_wix_publish_get_Control (publish);
		_tmp3_ = _tmp2_;
		_tmp4_ = g_strdup (_tmp3_);
		_g_free0 (control);
		control = _tmp4_;
		_tmp5_ = wixl_wix_publish_get_Dialog (publish);
		_tmp6_ = _tmp5_;
		_tmp7_ = g_strdup (_tmp6_);
		_g_free0 (dialog);
		dialog = _tmp7_;
		_tmp8_ = dialog;
		_tmp9_ = wixl_wix_resolver_find_element ((WixlWixResolver*) self, WIXL_TYPE_WIX_DIALOG, (GBoxedCopyFunc) g_object_ref, (GDestroyNotify) g_object_unref, _tmp8_);
		_tmp10_ = (WixlWixDialog*) _tmp9_;
		_tmp11_ = _tmp10_ == NULL;
		_g_object_unref0 (_tmp10_);
		if (_tmp11_) {
			const gchar* _tmp12_;
			_tmp12_ = dialog;
			wixl_wix_builder_load_extension_file (self, WIXL_EXTENSION_UI, _tmp12_, &_inner_error0_);
			if (G_UNLIKELY (_inner_error0_ != NULL)) {
				g_propagate_error (error, _inner_error0_);
				_g_free0 (condition);
				_g_free0 (argument);
				_g_free0 (event);
				_g_free0 (dialog);
				_g_free0 (control);
				return;
			}
		}
	} else {
		WixlWixElement* _tmp13_;
		const gchar* _tmp14_;
		const gchar* _tmp15_;
		gchar* _tmp16_;
		WixlWixElement* _tmp17_;
		WixlWixElement* _tmp18_;
		const gchar* _tmp19_;
		const gchar* _tmp20_;
		gchar* _tmp21_;
		_tmp13_ = ((WixlWixNode*) publish)->parent;
		_tmp14_ = wixl_wix_element_get_Id (_tmp13_);
		_tmp15_ = _tmp14_;
		_tmp16_ = g_strdup (_tmp15_);
		_g_free0 (control);
		control = _tmp16_;
		_tmp17_ = ((WixlWixNode*) publish)->parent;
		_tmp18_ = ((WixlWixNode*) _tmp17_)->parent;
		_tmp19_ = wixl_wix_element_get_Id (_tmp18_);
		_tmp20_ = _tmp19_;
		_tmp21_ = g_strdup (_tmp20_);
		_g_free0 (dialog);
		dialog = _tmp21_;
	}
	_tmp22_ = wixl_wix_publish_get_Property (publish);
	_tmp23_ = _tmp22_;
	if (_tmp23_ != NULL) {
		const gchar* _tmp24_;
		const gchar* _tmp25_;
		gchar* _tmp26_;
		const gchar* _tmp27_;
		const gchar* _tmp28_;
		_tmp24_ = wixl_wix_publish_get_Property (publish);
		_tmp25_ = _tmp24_;
		_tmp26_ = g_strdup_printf ("[%s]", _tmp25_);
		_g_free0 (event);
		event = _tmp26_;
		_tmp27_ = wixl_wix_publish_get_Value (publish);
		_tmp28_ = _tmp27_;
		if (_tmp28_ != NULL) {
			const gchar* _tmp29_;
			const gchar* _tmp30_;
			gchar* _tmp31_;
			_tmp29_ = wixl_wix_publish_get_Value (publish);
			_tmp30_ = _tmp29_;
			_tmp31_ = g_strdup (_tmp30_);
			_g_free0 (argument);
			argument = _tmp31_;
		} else {
			gchar* _tmp32_;
			_tmp32_ = g_strdup ("{}");
			_g_free0 (argument);
			argument = _tmp32_;
		}
	} else {
		const gchar* _tmp33_;
		const gchar* _tmp34_;
		gchar* _tmp35_;
		const gchar* _tmp36_;
		const gchar* _tmp37_;
		gchar* _tmp38_;
		_tmp33_ = wixl_wix_publish_get_Event (publish);
		_tmp34_ = _tmp33_;
		_tmp35_ = g_strdup (_tmp34_);
		_g_free0 (event);
		event = _tmp35_;
		_tmp36_ = wixl_wix_publish_get_Value (publish);
		_tmp37_ = _tmp36_;
		_tmp38_ = g_strdup (_tmp37_);
		_g_free0 (argument);
		argument = _tmp38_;
	}
	_tmp39_ = wixl_wix_publish_get_Condition (publish);
	_tmp40_ = _tmp39_;
	if (_tmp40_ != NULL) {
		const gchar* _tmp41_;
		const gchar* _tmp42_;
		gchar* _tmp43_;
		_tmp41_ = wixl_wix_publish_get_Condition (publish);
		_tmp42_ = _tmp41_;
		_tmp43_ = g_strdup (_tmp42_);
		_g_free0 (condition);
		condition = _tmp43_;
	}
	_tmp44_ = wixl_wix_publish_get_Order (publish);
	_tmp45_ = _tmp44_;
	if (_tmp45_ != NULL) {
		const gchar* _tmp46_;
		const gchar* _tmp47_;
		_tmp46_ = wixl_wix_publish_get_Order (publish);
		_tmp47_ = _tmp46_;
		order = atoi (_tmp47_);
		wixl_wix_publish_order = order + 1;
	} else {
		gint _tmp48_;
		_tmp48_ = wixl_wix_publish_order;
		wixl_wix_publish_order = _tmp48_ + 1;
		order = _tmp48_;
	}
	_tmp49_ = self->priv->db;
	_tmp50_ = _tmp49_->table_control_event;
	_tmp51_ = dialog;
	_tmp52_ = control;
	_tmp53_ = event;
	_tmp54_ = argument;
	_tmp55_ = condition;
	wixl_msi_table_control_event_add (_tmp50_, _tmp51_, _tmp52_, _tmp53_, _tmp54_, _tmp55_, &order, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (condition);
		_g_free0 (argument);
		_g_free0 (event);
		_g_free0 (dialog);
		_g_free0 (control);
		return;
	}
	_g_free0 (condition);
	_g_free0 (argument);
	_g_free0 (event);
	_g_free0 (dialog);
	_g_free0 (control);
}

static void
wixl_wix_builder_real_visit_radio_button (WixlWixNodeVisitor* base,
                                          WixlWixRadioButton* radio,
                                          GError** error)
{
	WixlWixBuilder * self;
	gchar* property = NULL;
	gint order = 0;
	WixlWixRadioButtonGroup* group = NULL;
	WixlWixElement* _tmp0_;
	WixlWixRadioButtonGroup* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	gint _tmp5_;
	WixlMsiDatabase* _tmp6_;
	WixlMsiTableRadioButton* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	const gchar* _tmp17_;
	const gchar* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	const gchar* _tmp21_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (radio != NULL);
	_tmp0_ = ((WixlWixNode*) radio)->parent;
	_tmp1_ = _g_object_ref0 (WIXL_IS_WIX_RADIO_BUTTON_GROUP (_tmp0_) ? ((WixlWixRadioButtonGroup*) _tmp0_) : NULL);
	group = _tmp1_;
	_tmp2_ = wixl_wix_radio_button_group_get_Property (group);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup (_tmp3_);
	_g_free0 (property);
	property = _tmp4_;
	_tmp5_ = group->order;
	group->order = _tmp5_ + 1;
	order = _tmp5_;
	_tmp6_ = self->priv->db;
	_tmp7_ = _tmp6_->table_radio_button;
	_tmp8_ = wixl_wix_radio_button_get_Value (radio);
	_tmp9_ = _tmp8_;
	_tmp10_ = wixl_wix_radio_button_get_X (radio);
	_tmp11_ = _tmp10_;
	_tmp12_ = wixl_wix_radio_button_get_Y (radio);
	_tmp13_ = _tmp12_;
	_tmp14_ = wixl_wix_radio_button_get_Width (radio);
	_tmp15_ = _tmp14_;
	_tmp16_ = wixl_wix_radio_button_get_Height (radio);
	_tmp17_ = _tmp16_;
	_tmp18_ = wixl_wix_radio_button_get_Text (radio);
	_tmp19_ = _tmp18_;
	_tmp20_ = wixl_wix_radio_button_get_Help (radio);
	_tmp21_ = _tmp20_;
	wixl_msi_table_radio_button_add (_tmp7_, property, order, _tmp9_, atoi (_tmp11_), atoi (_tmp13_), atoi (_tmp15_), atoi (_tmp17_), _tmp19_, _tmp21_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (group);
		_g_free0 (property);
		return;
	}
	_g_object_unref0 (group);
	_g_free0 (property);
}

static void
wixl_wix_builder_real_visit_subscribe (WixlWixNodeVisitor* base,
                                       WixlWixSubscribe* subscribe,
                                       GError** error)
{
	WixlWixBuilder * self;
	gchar* control = NULL;
	gchar* dialog = NULL;
	WixlWixElement* _tmp0_;
	WixlWixElement* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp3_;
	gchar* _tmp4_;
	WixlWixElement* _tmp5_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	gchar* _tmp8_;
	WixlMsiDatabase* _tmp9_;
	WixlMsiTableEventMapping* _tmp10_;
	const gchar* _tmp11_;
	const gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (subscribe != NULL);
	_tmp0_ = ((WixlWixNode*) subscribe)->parent;
	_tmp1_ = ((WixlWixNode*) _tmp0_)->parent;
	_tmp2_ = wixl_wix_element_get_Id (_tmp1_);
	_tmp3_ = _tmp2_;
	_tmp4_ = g_strdup (_tmp3_);
	_g_free0 (dialog);
	dialog = _tmp4_;
	_tmp5_ = ((WixlWixNode*) subscribe)->parent;
	_tmp6_ = wixl_wix_element_get_Id (_tmp5_);
	_tmp7_ = _tmp6_;
	_tmp8_ = g_strdup (_tmp7_);
	_g_free0 (control);
	control = _tmp8_;
	_tmp9_ = self->priv->db;
	_tmp10_ = _tmp9_->table_event_mapping;
	_tmp11_ = wixl_wix_subscribe_get_Event (subscribe);
	_tmp12_ = _tmp11_;
	_tmp13_ = wixl_wix_subscribe_get_Attribute (subscribe);
	_tmp14_ = _tmp13_;
	wixl_msi_table_event_mapping_add (_tmp10_, dialog, control, _tmp12_, _tmp14_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (dialog);
		_g_free0 (control);
		return;
	}
	_g_free0 (dialog);
	_g_free0 (control);
}

static void
wixl_wix_builder_real_visit_progress_text (WixlWixNodeVisitor* base,
                                           WixlWixProgressText* progress_text,
                                           GError** error)
{
	WixlWixBuilder * self;
	GList* _tmp0_;
	WixlWixText* text = NULL;
	GList* _tmp1_;
	GList* _tmp2_;
	gconstpointer _tmp3_;
	WixlWixNode* _tmp4_;
	WixlWixText* _tmp5_;
	WixlMsiDatabase* _tmp6_;
	WixlMsiTableActionText* _tmp7_;
	const gchar* _tmp8_;
	const gchar* _tmp9_;
	const gchar* _tmp10_;
	gchar* _tmp11_;
	gchar* _tmp12_;
	const gchar* _tmp13_;
	const gchar* _tmp14_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (progress_text != NULL);
	_tmp0_ = ((WixlWixElement*) progress_text)->children;
	g_return_if_fail (g_list_length (_tmp0_) == ((guint) 1));
	_tmp1_ = ((WixlWixElement*) progress_text)->children;
	_tmp2_ = g_list_first (_tmp1_);
	_tmp3_ = _tmp2_->data;
	_tmp4_ = (WixlWixNode*) _tmp3_;
	_tmp5_ = _g_object_ref0 (WIXL_IS_WIX_TEXT (_tmp4_) ? ((WixlWixText*) _tmp4_) : NULL);
	text = _tmp5_;
	_tmp6_ = self->priv->db;
	_tmp7_ = _tmp6_->table_action_text;
	_tmp8_ = wixl_wix_progress_text_get_Action (progress_text);
	_tmp9_ = _tmp8_;
	_tmp10_ = text->Text;
	_tmp11_ = string_strip (_tmp10_);
	_tmp12_ = _tmp11_;
	_tmp13_ = wixl_wix_progress_text_get_Template (progress_text);
	_tmp14_ = _tmp13_;
	wixl_msi_table_action_text_add (_tmp7_, _tmp9_, _tmp12_, _tmp14_, &_inner_error0_);
	_g_free0 (_tmp12_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (text);
		return;
	}
	_g_object_unref0 (text);
}

static void
wixl_wix_builder_real_visit_environment (WixlWixNodeVisitor* base,
                                         WixlWixEnvironment* env,
                                         GError** error)
{
	WixlWixBuilder * self;
	gchar* name_prefix = NULL;
	gchar* value = NULL;
	WixlWixBuilderEnvironmentAction _tmp0_ = 0;
	const gchar* _tmp1_;
	const gchar* _tmp2_;
	const gchar* _tmp6_;
	const gchar* _tmp7_;
	const gchar* _tmp10_;
	const gchar* _tmp11_;
	gchar* name = NULL;
	const gchar* _tmp14_;
	const gchar* _tmp15_;
	const gchar* _tmp16_;
	gchar* _tmp17_;
	gchar* separator = NULL;
	gchar* _tmp18_;
	const gchar* _tmp19_;
	const gchar* _tmp20_;
	WixlWixBuilderEnvironmentPart _tmp24_ = 0;
	const gchar* _tmp25_;
	const gchar* _tmp26_;
	WixlWixComponent* component = NULL;
	WixlWixElement* _tmp42_;
	WixlWixComponent* _tmp43_;
	WixlMsiDatabase* _tmp44_;
	WixlMsiTableEnvironment* _tmp45_;
	gchar* _tmp46_;
	gchar* _tmp47_;
	const gchar* _tmp48_;
	const gchar* _tmp49_;
	WixlWixComponent* _tmp50_;
	const gchar* _tmp51_;
	const gchar* _tmp52_;
	LibmsiRecord* _tmp53_;
	LibmsiRecord* _tmp54_;
	GError* _inner_error0_ = NULL;
	self = (WixlWixBuilder*) base;
	g_return_if_fail (env != NULL);
	name_prefix = NULL;
	value = NULL;
	_tmp1_ = wixl_wix_environment_get_Action (env);
	_tmp2_ = _tmp1_;
	_tmp0_ = wixl_wix_builder_environment_action_from_string (_tmp2_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (value);
		_g_free0 (name_prefix);
		return;
	}
	switch (_tmp0_) {
		case WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_CREATE:
		{
			gchar* _tmp3_;
			_tmp3_ = g_strdup ("+");
			_g_free0 (name_prefix);
			name_prefix = _tmp3_;
			break;
		}
		case WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_SET:
		{
			gchar* _tmp4_;
			_tmp4_ = g_strdup ("=");
			_g_free0 (name_prefix);
			name_prefix = _tmp4_;
			break;
		}
		case WIXL_WIX_BUILDER_ENVIRONMENT_ACTION_REMOVE:
		{
			gchar* _tmp5_;
			_tmp5_ = g_strdup ("!");
			_g_free0 (name_prefix);
			name_prefix = _tmp5_;
			break;
		}
		default:
		break;
	}
	_tmp6_ = wixl_wix_environment_get_Permanent (env);
	_tmp7_ = _tmp6_;
	if (wixl_parse_yesno (_tmp7_, FALSE)) {
		const gchar* _tmp8_;
		gchar* _tmp9_;
		_tmp8_ = name_prefix;
		_tmp9_ = g_strconcat (_tmp8_, "-", NULL);
		_g_free0 (name_prefix);
		name_prefix = _tmp9_;
	}
	_tmp10_ = wixl_wix_environment_get_System (env);
	_tmp11_ = _tmp10_;
	if (wixl_parse_yesno (_tmp11_, FALSE)) {
		const gchar* _tmp12_;
		gchar* _tmp13_;
		_tmp12_ = name_prefix;
		_tmp13_ = g_strconcat (_tmp12_, "*", NULL);
		_g_free0 (name_prefix);
		name_prefix = _tmp13_;
	}
	_tmp14_ = name_prefix;
	_tmp15_ = wixl_wix_environment_get_Name (env);
	_tmp16_ = _tmp15_;
	_tmp17_ = g_strconcat (_tmp14_, _tmp16_, NULL);
	name = _tmp17_;
	_tmp18_ = g_strdup (";");
	separator = _tmp18_;
	_tmp19_ = wixl_wix_environment_get_Separator (env);
	_tmp20_ = _tmp19_;
	if (_tmp20_ != NULL) {
		const gchar* _tmp21_;
		const gchar* _tmp22_;
		gchar* _tmp23_;
		_tmp21_ = wixl_wix_environment_get_Separator (env);
		_tmp22_ = _tmp21_;
		_tmp23_ = g_strdup (_tmp22_);
		_g_free0 (separator);
		separator = _tmp23_;
	}
	_tmp25_ = wixl_wix_environment_get_Part (env);
	_tmp26_ = _tmp25_;
	_tmp24_ = wixl_wix_builder_environment_part_from_string (_tmp26_, &_inner_error0_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_free0 (separator);
		_g_free0 (name);
		_g_free0 (value);
		_g_free0 (name_prefix);
		return;
	}
	switch (_tmp24_) {
		case WIXL_WIX_BUILDER_ENVIRONMENT_PART_ALL:
		{
			const gchar* _tmp27_;
			const gchar* _tmp28_;
			gchar* _tmp29_;
			_tmp27_ = wixl_wix_environment_get_Value (env);
			_tmp28_ = _tmp27_;
			_tmp29_ = g_strdup (_tmp28_);
			_g_free0 (value);
			value = _tmp29_;
			break;
		}
		case WIXL_WIX_BUILDER_ENVIRONMENT_PART_FIRST:
		{
			const gchar* _tmp30_;
			const gchar* _tmp31_;
			const gchar* _tmp32_;
			gchar* _tmp33_;
			gchar* _tmp34_;
			gchar* _tmp35_;
			_tmp30_ = wixl_wix_environment_get_Value (env);
			_tmp31_ = _tmp30_;
			_tmp32_ = separator;
			_tmp33_ = g_strconcat (_tmp31_, _tmp32_, NULL);
			_tmp34_ = _tmp33_;
			_tmp35_ = g_strconcat (_tmp34_, "[~]", NULL);
			_g_free0 (value);
			value = _tmp35_;
			_g_free0 (_tmp34_);
			break;
		}
		case WIXL_WIX_BUILDER_ENVIRONMENT_PART_LAST:
		{
			const gchar* _tmp36_;
			gchar* _tmp37_;
			gchar* _tmp38_;
			const gchar* _tmp39_;
			const gchar* _tmp40_;
			gchar* _tmp41_;
			_tmp36_ = separator;
			_tmp37_ = g_strconcat ("[~]", _tmp36_, NULL);
			_tmp38_ = _tmp37_;
			_tmp39_ = wixl_wix_environment_get_Value (env);
			_tmp40_ = _tmp39_;
			_tmp41_ = g_strconcat (_tmp38_, _tmp40_, NULL);
			_g_free0 (value);
			value = _tmp41_;
			_g_free0 (_tmp38_);
			break;
		}
		default:
		break;
	}
	_tmp42_ = ((WixlWixNode*) env)->parent;
	_tmp43_ = _g_object_ref0 (WIXL_IS_WIX_COMPONENT (_tmp42_) ? ((WixlWixComponent*) _tmp42_) : NULL);
	component = _tmp43_;
	_tmp44_ = self->priv->db;
	_tmp45_ = _tmp44_->table_environment;
	_tmp46_ = g_uuid_string_random ();
	_tmp47_ = _tmp46_;
	_tmp48_ = name;
	_tmp49_ = value;
	_tmp50_ = component;
	_tmp51_ = wixl_wix_element_get_Id ((WixlWixElement*) _tmp50_);
	_tmp52_ = _tmp51_;
	_tmp53_ = wixl_msi_table_environment_add (_tmp45_, _tmp47_, _tmp48_, _tmp49_, _tmp52_, &_inner_error0_);
	_tmp54_ = _tmp53_;
	_g_object_unref0 (_tmp54_);
	_g_free0 (_tmp47_);
	if (G_UNLIKELY (_inner_error0_ != NULL)) {
		g_propagate_error (error, _inner_error0_);
		_g_object_unref0 (component);
		_g_free0 (separator);
		_g_free0 (name);
		_g_free0 (value);
		_g_free0 (name_prefix);
		return;
	}
	_g_object_unref0 (component);
	_g_free0 (separator);
	_g_free0 (name);
	_g_free0 (value);
	_g_free0 (name_prefix);
}

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

static void
wixl_wix_builder_class_init (WixlWixBuilderClass * klass,
                             gpointer klass_data)
{
	wixl_wix_builder_parent_class = g_type_class_peek_parent (klass);
	g_type_class_adjust_private_offset (klass, &WixlWixBuilder_private_offset);
	((WixlWixNodeVisitorClass *) klass)->visit_product = (void (*) (WixlWixNodeVisitor*, WixlWixProduct*, GError**)) wixl_wix_builder_real_visit_product;
	((WixlWixNodeVisitorClass *) klass)->visit_package = (void (*) (WixlWixNodeVisitor*, WixlWixPackage*, GError**)) wixl_wix_builder_real_visit_package;
	((WixlWixNodeVisitorClass *) klass)->visit_icon = (void (*) (WixlWixNodeVisitor*, WixlWixIcon*, GError**)) wixl_wix_builder_real_visit_icon;
	((WixlWixNodeVisitorClass *) klass)->visit_property = (void (*) (WixlWixNodeVisitor*, WixlWixProperty*, GError**)) wixl_wix_builder_real_visit_property;
	((WixlWixNodeVisitorClass *) klass)->visit_media = (void (*) (WixlWixNodeVisitor*, WixlWixMedia*, GError**)) wixl_wix_builder_real_visit_media;
	((WixlWixNodeVisitorClass *) klass)->visit_directory = (void (*) (WixlWixNodeVisitor*, WixlWixDirectory*, GError**)) wixl_wix_builder_real_visit_directory;
	((WixlWixNodeVisitorClass *) klass)->visit_component = (void (*) (WixlWixNodeVisitor*, WixlWixComponent*, WixlVisitState, GError**)) wixl_wix_builder_real_visit_component;
	((WixlWixNodeVisitorClass *) klass)->visit_feature = (void (*) (WixlWixNodeVisitor*, WixlWixFeature*, WixlVisitState, GError**)) wixl_wix_builder_real_visit_feature;
	((WixlWixNodeVisitorClass *) klass)->visit_component_ref = (void (*) (WixlWixNodeVisitor*, WixlWixComponentRef*, GError**)) wixl_wix_builder_real_visit_component_ref;
	((WixlWixNodeVisitorClass *) klass)->visit_component_group_ref = (void (*) (WixlWixNodeVisitor*, WixlWixComponentGroupRef*, GError**)) wixl_wix_builder_real_visit_component_group_ref;
	((WixlWixNodeVisitorClass *) klass)->visit_remove_folder = (void (*) (WixlWixNodeVisitor*, WixlWixRemoveFolder*, GError**)) wixl_wix_builder_real_visit_remove_folder;
	((WixlWixNodeVisitorClass *) klass)->visit_registry_value = (void (*) (WixlWixNodeVisitor*, WixlWixRegistryValue*, GError**)) wixl_wix_builder_real_visit_registry_value;
	((WixlWixNodeVisitorClass *) klass)->visit_file = (void (*) (WixlWixNodeVisitor*, WixlWixFile*, GError**)) wixl_wix_builder_real_visit_file;
	((WixlWixNodeVisitorClass *) klass)->visit_ini_file = (void (*) (WixlWixNodeVisitor*, WixlWixIniFile*, GError**)) wixl_wix_builder_real_visit_ini_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;
	((WixlWixNodeVisitorClass *) klass)->visit_ui_ref = (void (*) (WixlWixNodeVisitor*, WixlWixUIRef*, GError**)) wixl_wix_builder_real_visit_ui_ref;
	((WixlWixNodeVisitorClass *) klass)->visit_ui_text = (void (*) (WixlWixNodeVisitor*, WixlWixUIText*, GError**)) wixl_wix_builder_real_visit_ui_text;
	((WixlWixNodeVisitorClass *) klass)->visit_text_element = (void (*) (WixlWixNodeVisitor*, WixlWixTextElement*, GError**)) wixl_wix_builder_real_visit_text_element;
	((WixlWixNodeVisitorClass *) klass)->visit_text_style = (void (*) (WixlWixNodeVisitor*, WixlWixTextStyle*, GError**)) wixl_wix_builder_real_visit_text_style;
	((WixlWixNodeVisitorClass *) klass)->visit_dialog = (void (*) (WixlWixNodeVisitor*, WixlWixDialog*, GError**)) wixl_wix_builder_real_visit_dialog;
	((WixlWixNodeVisitorClass *) klass)->visit_dialog_ref = (void (*) (WixlWixNodeVisitor*, WixlWixDialogRef*, GError**)) wixl_wix_builder_real_visit_dialog_ref;
	((WixlWixNodeVisitorClass *) klass)->visit_control = (void (*) (WixlWixNodeVisitor*, WixlWixControl*, GError**)) wixl_wix_builder_real_visit_control;
	((WixlWixNodeVisitorClass *) klass)->visit_publish = (void (*) (WixlWixNodeVisitor*, WixlWixPublish*, GError**)) wixl_wix_builder_real_visit_publish;
	((WixlWixNodeVisitorClass *) klass)->visit_radio_button = (void (*) (WixlWixNodeVisitor*, WixlWixRadioButton*, GError**)) wixl_wix_builder_real_visit_radio_button;
	((WixlWixNodeVisitorClass *) klass)->visit_subscribe = (void (*) (WixlWixNodeVisitor*, WixlWixSubscribe*, GError**)) wixl_wix_builder_real_visit_subscribe;
	((WixlWixNodeVisitorClass *) klass)->visit_progress_text = (void (*) (WixlWixNodeVisitor*, WixlWixProgressText*, GError**)) wixl_wix_builder_real_visit_progress_text;
	((WixlWixNodeVisitorClass *) klass)->visit_environment = (void (*) (WixlWixNodeVisitor*, WixlWixEnvironment*, GError**)) wixl_wix_builder_real_visit_environment;
	G_OBJECT_CLASS (klass)->constructor = wixl_wix_builder_constructor;
	G_OBJECT_CLASS (klass)->finalize = wixl_wix_builder_finalize;
}

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

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

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

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

GType
wixl_wix_builder_get_type (void)
{
	static volatile gsize wixl_wix_builder_type_id__once = 0;
	if (g_once_init_enter (&wixl_wix_builder_type_id__once)) {
		GType wixl_wix_builder_type_id;
		wixl_wix_builder_type_id = wixl_wix_builder_get_type_once ();
		g_once_init_leave (&wixl_wix_builder_type_id__once, wixl_wix_builder_type_id);
	}
	return wixl_wix_builder_type_id__once;
}

static void
_vala_array_destroy (gpointer array,
                     gssize array_length,
                     GDestroyNotify destroy_func)
{
	if ((array != NULL) && (destroy_func != NULL)) {
		gssize 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,
                  gssize array_length,
                  GDestroyNotify destroy_func)
{
	_vala_array_destroy (array, array_length, destroy_func);
	g_free (array);
}

static inline gpointer
_vala_memdup2 (gconstpointer mem,
               gsize byte_size)
{
	gpointer new_mem;
	if (mem && byte_size != 0) {
		new_mem = g_malloc (byte_size);
		memcpy (new_mem, mem, byte_size);
	} else {
		new_mem = NULL;
	}
	return new_mem;
}

