/*===========================================================================*/
/*   (Coerce/apply.scm)                                                      */
/*   Bigloo (4.5b)                                                           */
/*   Inria -- Sophia Antipolis (c)       Fri Dec 22 05:17:06 PM CET 2023     */
/*===========================================================================*/
/* COMPILATION: (/home/serrano/prgm/project/bigloo/bigloo/bin/bigloo -ldopt -L/home/serrano/prgm/project/bigloo/bigloo/libbacktrace/home/serrano/prgm/project/bigloo/bigloo/lib/bigloo/4.5b  -q -afile .afile -fsharing -fno-reflection -cc gcc -lib-dir /home/serrano/prgm/project/bigloo/bigloo/lib/bigloo/4.5b -unsafev -gno-error-localization -no-hello -O2 -rm -unsafe -s -stdc -indent Coerce/apply.scm) */
/* GC selection */
#define THE_GC BOEHM_GC

/* unsafe mode */
#define BIGLOO_UNSAFE 1

/* traces mode */
#define BIGLOO_TRACE 0

/* standard Bigloo include */
#include <bigloo.h>

#ifdef __cplusplus
extern "C"
{
#endif
#ifndef BGL_MODULE_TYPE_DEFINITIONS
#define BGL_MODULE_TYPE_DEFINITIONS
#ifndef BGL_COERCE_APPLY_TYPE_DEFINITIONS
#define BGL_COERCE_APPLY_TYPE_DEFINITIONS

/* object type definitions */
	typedef struct BgL_backendz00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_languagez00;
		obj_t BgL_srfi0z00;
		obj_t BgL_namez00;
		obj_t BgL_externzd2variableszd2;
		obj_t BgL_externzd2functionszd2;
		obj_t BgL_externzd2typeszd2;
		obj_t BgL_variablesz00;
		obj_t BgL_functionsz00;
		obj_t BgL_typesz00;
		bool_t BgL_typedz00;
		obj_t BgL_heapzd2suffixzd2;
		obj_t BgL_heapzd2compatiblezd2;
		bool_t BgL_callccz00;
		bool_t BgL_qualifiedzd2typeszd2;
		bool_t BgL_effectzb2zb2;
		bool_t BgL_removezd2emptyzd2letz00;
		bool_t BgL_foreignzd2closurezd2;
		bool_t BgL_typedzd2eqzd2;
		bool_t BgL_tracezd2supportzd2;
		obj_t BgL_foreignzd2clausezd2supportz00;
		obj_t BgL_debugzd2supportzd2;
		bool_t BgL_pragmazd2supportzd2;
		bool_t BgL_tvectorzd2descrzd2supportz00;
		bool_t BgL_requirezd2tailczd2;
		obj_t BgL_registersz00;
		obj_t BgL_pregistersz00;
		bool_t BgL_boundzd2checkzd2;
		bool_t BgL_typezd2checkzd2;
		bool_t BgL_typedzd2funcallzd2;
	}                 *BgL_backendz00_bglt;

	typedef struct BgL_typez00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_idz00;
		obj_t BgL_namez00;
		obj_t BgL_siza7eza7;
		obj_t BgL_classz00;
		obj_t BgL_coercezd2tozd2;
		obj_t BgL_parentsz00;
		bool_t BgL_initzf3zf3;
		bool_t BgL_magiczf3zf3;
		obj_t BgL_z42z42;
		obj_t BgL_aliasz00;
		obj_t BgL_pointedzd2tozd2byz00;
		obj_t BgL_tvectorz00;
		obj_t BgL_locationz00;
		obj_t BgL_importzd2locationzd2;
		int BgL_occurrencez00;
	}              *BgL_typez00_bglt;

	typedef struct BgL_valuez00_bgl
	{
		header_t header;
		obj_t widening;
	}               *BgL_valuez00_bglt;

	typedef struct BgL_variablez00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_idz00;
		obj_t BgL_namez00;
		struct BgL_typez00_bgl *BgL_typez00;
		struct BgL_valuez00_bgl *BgL_valuez00;
		obj_t BgL_accessz00;
		obj_t BgL_fastzd2alphazd2;
		obj_t BgL_removablez00;
		long BgL_occurrencez00;
		long BgL_occurrencewz00;
		bool_t BgL_userzf3zf3;
	}                  *BgL_variablez00_bglt;

	typedef struct BgL_localz00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_idz00;
		obj_t BgL_namez00;
		struct BgL_typez00_bgl *BgL_typez00;
		struct BgL_valuez00_bgl *BgL_valuez00;
		obj_t BgL_accessz00;
		obj_t BgL_fastzd2alphazd2;
		obj_t BgL_removablez00;
		long BgL_occurrencez00;
		long BgL_occurrencewz00;
		bool_t BgL_userzf3zf3;
		long BgL_keyz00;
		obj_t BgL_valzd2noescapezd2;
		bool_t BgL_volatilez00;
	}               *BgL_localz00_bglt;

	typedef struct BgL_nodez00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_locz00;
		struct BgL_typez00_bgl *BgL_typez00;
	}              *BgL_nodez00_bglt;

	typedef struct BgL_nodezf2effectzf2_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_locz00;
		struct BgL_typez00_bgl *BgL_typez00;
		obj_t BgL_sidezd2effectzd2;
		obj_t BgL_keyz00;
	}                       *BgL_nodezf2effectzf2_bglt;

	typedef struct BgL_varz00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_locz00;
		struct BgL_typez00_bgl *BgL_typez00;
		struct BgL_variablez00_bgl *BgL_variablez00;
	}             *BgL_varz00_bglt;

	typedef struct BgL_refz00_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_locz00;
		struct BgL_typez00_bgl *BgL_typez00;
		struct BgL_variablez00_bgl *BgL_variablez00;
	}             *BgL_refz00_bglt;

	typedef struct BgL_appzd2lyzd2_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_locz00;
		struct BgL_typez00_bgl *BgL_typez00;
		struct BgL_nodez00_bgl *BgL_funz00;
		struct BgL_nodez00_bgl *BgL_argz00;
	}                  *BgL_appzd2lyzd2_bglt;

	typedef struct BgL_letzd2varzd2_bgl
	{
		header_t header;
		obj_t widening;
		obj_t BgL_locz00;
		struct BgL_typez00_bgl *BgL_typez00;
		obj_t BgL_sidezd2effectzd2;
		obj_t BgL_keyz00;
		obj_t BgL_bindingsz00;
		struct BgL_nodez00_bgl *BgL_bodyz00;
		bool_t BgL_removablezf3zf3;
	}                   *BgL_letzd2varzd2_bglt;


#endif													// BGL_COERCE_APPLY_TYPE_DEFINITIONS
#endif													// BGL_MODULE_TYPE_DEFINITIONS

	extern obj_t BGl_za2unsafezd2arityza2zd2zzengine_paramz00;
	extern obj_t BGl_za2intza2z00zztype_cachez00;
	extern obj_t BGl_locationzd2fullzd2fnamez00zztools_locationz00(obj_t);
	static obj_t BGl_requirezd2initializa7ationz75zzcoerce_applyz00 = BUNSPEC;
	extern obj_t BGl_za2pairzd2nilza2zd2zztype_cachez00;
	BGL_IMPORT obj_t BGl_za2classesza2z00zz__objectz00;
	static obj_t BGl_toplevelzd2initzd2zzcoerce_applyz00(void);
	extern obj_t BGl_letzd2varzd2zzast_nodez00;
	static obj_t BGl_genericzd2initzd2zzcoerce_applyz00(void);
	BGL_IMPORT obj_t BGl_stringzd2copyzd2zz__r4_strings_6_7z00(obj_t);
	static obj_t BGl_objectzd2initzd2zzcoerce_applyz00(void);
	BGL_IMPORT obj_t BGl_memqz00zz__r4_pairs_and_lists_6_3z00(obj_t, obj_t);
	extern obj_t BGl_shapez00zztools_shapez00(obj_t);
	BGL_IMPORT obj_t BGl_za2inheritancesza2z00zz__objectz00;
	extern BgL_nodez00_bglt BGl_lvtypezd2nodezd2zzast_lvtypez00(BgL_nodez00_bglt);
	BGL_IMPORT obj_t bstring_to_symbol(obj_t);
	extern obj_t BGl_thezd2backendzd2zzbackend_backendz00(void);
	BGL_IMPORT obj_t BGl_readz00zz__readerz00(obj_t, obj_t);
	extern obj_t BGl_refz00zzast_nodez00;
	BGL_IMPORT obj_t BGl_openzd2inputzd2stringz12z12zz__r4_ports_6_10_1z00(obj_t,
		obj_t, obj_t);
	static obj_t BGl_methodzd2initzd2zzcoerce_applyz00(void);
	extern BgL_nodez00_bglt
		BGl_topzd2levelzd2sexpzd2ze3nodez31zzast_sexpz00(obj_t, obj_t);
	extern obj_t BGl_za2bdbzd2debugza2zd2zzengine_paramz00;
	BGL_IMPORT obj_t string_append(obj_t, obj_t);
	extern obj_t BGl_varz00zzast_nodez00;
	extern obj_t BGl_za2compilerzd2debugza2zd2zzengine_paramz00;
	extern BgL_typez00_bglt
		BGl_strictzd2nodezd2typez00zzast_nodez00(BgL_typez00_bglt,
		BgL_typez00_bglt);
	extern obj_t BGl_za2procedureza2z00zztype_cachez00;
	static BgL_nodez00_bglt BGl_makezd2errorzd2nodez00zzcoerce_applyz00(obj_t,
		obj_t, obj_t, obj_t);
	extern obj_t BGl_za2objza2z00zztype_cachez00;
	extern BgL_nodez00_bglt BGl_coercez12z12zzcoerce_coercez00(BgL_nodez00_bglt,
		obj_t, BgL_typez00_bglt, bool_t);
	BGL_EXPORTED_DECL obj_t
		BGl_modulezd2initializa7ationz75zzcoerce_applyz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzcoerce_convertz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzcoerce_coercez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_lvtypez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_localz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_sexpz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_nodez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzast_varz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_cachez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztype_typez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_errorz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_locationz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_shapez00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzbackend_backendz00(long,
		char *);
	extern obj_t BGl_modulezd2initializa7ationz75zzengine_paramz00(long, char *);
	extern obj_t BGl_modulezd2initializa7ationz75zztools_tracez00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_ports_6_10_1z00(long,
		char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_vectors_6_8z00(long,
		char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_strings_6_7z00(long,
		char *);
	BGL_IMPORT obj_t
		BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(long,
		char *);
	BGL_IMPORT obj_t
		BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(long, char *);
	BGL_IMPORT obj_t
		BGl_modulezd2initializa7ationz75zz__r4_equivalence_6_2z00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__readerz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__objectz00(long, char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__structurez00(long,
		char *);
	BGL_IMPORT obj_t BGl_modulezd2initializa7ationz75zz__biglooz00(long, char *);
	extern obj_t BGl_appzd2lyzd2zzast_nodez00;
	static BgL_nodez00_bglt
		BGl_z62coercez12zd2appzd2ly1295z70zzcoerce_applyz00(obj_t, obj_t, obj_t,
		obj_t, obj_t);
	static obj_t BGl_cnstzd2initzd2zzcoerce_applyz00(void);
	static obj_t BGl_libraryzd2moduleszd2initz00zzcoerce_applyz00(void);
	extern BgL_localz00_bglt BGl_makezd2localzd2svarz00zzast_localz00(obj_t,
		BgL_typez00_bglt);
	static obj_t BGl_importedzd2moduleszd2initz00zzcoerce_applyz00(void);
	static obj_t BGl_gczd2rootszd2initz00zzcoerce_applyz00(void);
	extern obj_t BGl_currentzd2functionzd2zztools_errorz00(void);
	BGL_IMPORT obj_t BGl_gensymz00zz__r4_symbols_6_4z00(obj_t);
	BGL_IMPORT obj_t BGl_genericzd2addzd2methodz12z12zz__objectz00(obj_t, obj_t,
		obj_t, obj_t);
	extern BgL_nodez00_bglt BGl_convertz12z12zzcoerce_convertz00(BgL_nodez00_bglt,
		BgL_typez00_bglt, BgL_typez00_bglt, bool_t);
	static obj_t __cnst[17];


	   
		 
		DEFINE_STRING(BGl_string1956z00zzcoerce_applyz00,
		BgL_bgl_string1956za700za7za7c1962za7, "Wrong number of arguments", 25);
	      DEFINE_STRING(BGl_string1958z00zzcoerce_applyz00,
		BgL_bgl_string1958za700za7za7c1963za7, "coerce!", 7);
	      DEFINE_STRING(BGl_string1959z00zzcoerce_applyz00,
		BgL_bgl_string1959za700za7za7c1964za7, "coerce_apply", 12);
	      DEFINE_STRING(BGl_string1960z00zzcoerce_applyz00,
		BgL_bgl_string1960za700za7za7c1965za7,
		"let if correct-arity? ::int len length val fun begin failure _ quote @ error/location __error location bdb ",
		107);
	      DEFINE_STATIC_BGL_PROCEDURE(BGl_proc1957z00zzcoerce_applyz00,
		BgL_bgl_za762coerceza712za7d2a1966za7,
		BGl_z62coercez12zd2appzd2ly1295z70zzcoerce_applyz00, 0L, BUNSPEC, 4);
	extern obj_t BGl_coercez12zd2envzc0zzcoerce_coercez00;

/* GC roots registration */
	static obj_t bgl_gc_roots_register()
	{
#if defined( BGL_GC_ROOTS )
#define ADD_ROOT( addr ) (addr > roots_max ? roots_max = addr : (addr < roots_min ? roots_min = addr : 0))
		void *roots_min = (void *) ULONG_MAX, *roots_max = 0;
		   
			 ADD_ROOT((void *) (&BGl_requirezd2initializa7ationz75zzcoerce_applyz00));
#undef ADD_ROOT
		if   (roots_max > 0)
			     GC_add_roots(roots_min, ((void **) roots_max) + 1);
#endif
		     return BUNSPEC;
	}



/* module-initialization */
	BGL_EXPORTED_DEF obj_t BGl_modulezd2initializa7ationz75zzcoerce_applyz00(long
		BgL_checksumz00_2055, char *BgL_fromz00_2056)
	{
		{
			if (CBOOL(BGl_requirezd2initializa7ationz75zzcoerce_applyz00))
				{
					BGl_requirezd2initializa7ationz75zzcoerce_applyz00 =
						BBOOL(((bool_t) 0));
					BGl_gczd2rootszd2initz00zzcoerce_applyz00();
					BGl_libraryzd2moduleszd2initz00zzcoerce_applyz00();
					BGl_cnstzd2initzd2zzcoerce_applyz00();
					BGl_importedzd2moduleszd2initz00zzcoerce_applyz00();
					BGl_methodzd2initzd2zzcoerce_applyz00();
					return BGl_toplevelzd2initzd2zzcoerce_applyz00();
				}
			else
				{
					return BUNSPEC;
				}
		}

	}



/* library-modules-init */
	obj_t BGl_libraryzd2moduleszd2initz00zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			BGl_modulezd2initializa7ationz75zz__objectz00(0L, "coerce_apply");
			BGl_modulezd2initializa7ationz75zz__r4_strings_6_7z00(0L, "coerce_apply");
			BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(0L,
				"coerce_apply");
			BGl_modulezd2initializa7ationz75zz__readerz00(0L, "coerce_apply");
			BGl_modulezd2initializa7ationz75zz__r4_ports_6_10_1z00(0L,
				"coerce_apply");
			BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(0L, "coerce_apply");
			BGl_modulezd2initializa7ationz75zz__r4_equivalence_6_2z00(0L,
				"coerce_apply");
			BGl_modulezd2initializa7ationz75zz__r4_vectors_6_8z00(0L, "coerce_apply");
			BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(0L,
				"coerce_apply");
			BGl_modulezd2initializa7ationz75zz__structurez00(0L, "coerce_apply");
			BGl_modulezd2initializa7ationz75zz__biglooz00(0L, "coerce_apply");
			return BUNSPEC;
		}

	}



/* cnst-init */
	obj_t BGl_cnstzd2initzd2zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			{	/* Coerce/apply.scm 15 */
				obj_t BgL_cportz00_1960;

				{	/* Coerce/apply.scm 15 */
					obj_t BgL_stringz00_1967;

					BgL_stringz00_1967 = BGl_string1960z00zzcoerce_applyz00;
					{	/* Coerce/apply.scm 15 */
						obj_t BgL_startz00_1968;

						BgL_startz00_1968 = BINT(0L);
						{	/* Coerce/apply.scm 15 */
							obj_t BgL_endz00_1969;

							BgL_endz00_1969 =
								BINT(STRING_LENGTH(((obj_t) BgL_stringz00_1967)));
							{	/* Coerce/apply.scm 15 */

								BgL_cportz00_1960 =
									BGl_openzd2inputzd2stringz12z12zz__r4_ports_6_10_1z00
									(BgL_stringz00_1967, BgL_startz00_1968, BgL_endz00_1969);
				}}}}
				{
					long BgL_iz00_1961;

					BgL_iz00_1961 = 16L;
				BgL_loopz00_1962:
					if ((BgL_iz00_1961 == -1L))
						{	/* Coerce/apply.scm 15 */
							return BUNSPEC;
						}
					else
						{	/* Coerce/apply.scm 15 */
							{	/* Coerce/apply.scm 15 */
								obj_t BgL_arg1961z00_1963;

								{	/* Coerce/apply.scm 15 */

									{	/* Coerce/apply.scm 15 */
										obj_t BgL_locationz00_1965;

										BgL_locationz00_1965 = BBOOL(((bool_t) 0));
										{	/* Coerce/apply.scm 15 */

											BgL_arg1961z00_1963 =
												BGl_readz00zz__readerz00(BgL_cportz00_1960,
												BgL_locationz00_1965);
										}
									}
								}
								{	/* Coerce/apply.scm 15 */
									int BgL_tmpz00_2086;

									BgL_tmpz00_2086 = (int) (BgL_iz00_1961);
									CNST_TABLE_SET(BgL_tmpz00_2086, BgL_arg1961z00_1963);
							}}
							{	/* Coerce/apply.scm 15 */
								int BgL_auxz00_1966;

								BgL_auxz00_1966 = (int) ((BgL_iz00_1961 - 1L));
								{
									long BgL_iz00_2091;

									BgL_iz00_2091 = (long) (BgL_auxz00_1966);
									BgL_iz00_1961 = BgL_iz00_2091;
									goto BgL_loopz00_1962;
								}
							}
						}
				}
			}
		}

	}



/* gc-roots-init */
	obj_t BGl_gczd2rootszd2initz00zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			return bgl_gc_roots_register();
		}

	}



/* toplevel-init */
	obj_t BGl_toplevelzd2initzd2zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			return BUNSPEC;
		}

	}



/* make-error-node */
	BgL_nodez00_bglt BGl_makezd2errorzd2nodez00zzcoerce_applyz00(obj_t
		BgL_errorzd2msgzd2_21, obj_t BgL_locz00_22, obj_t BgL_callerz00_23,
		obj_t BgL_toz00_24)
	{
		{	/* Coerce/apply.scm 97 */
			{	/* Coerce/apply.scm 98 */
				BgL_nodez00_bglt BgL_nodez00_1474;

				{	/* Coerce/apply.scm 99 */
					obj_t BgL_arg1347z00_1475;

					{	/* Coerce/apply.scm 99 */
						bool_t BgL_test1969z00_2094;

						{	/* Coerce/apply.scm 99 */
							bool_t BgL_test1970z00_2095;

							{	/* Coerce/apply.scm 99 */
								bool_t BgL_test1971z00_2096;

								if (
									((long) CINT(BGl_za2bdbzd2debugza2zd2zzengine_paramz00) > 0L))
									{	/* Coerce/apply.scm 102 */
										obj_t BgL_arg1554z00_1526;

										{	/* Coerce/apply.scm 102 */
											obj_t BgL_arg1555z00_1527;

											BgL_arg1555z00_1527 =
												BGl_thezd2backendzd2zzbackend_backendz00();
											BgL_arg1554z00_1526 =
												(((BgL_backendz00_bglt) COBJECT(
														((BgL_backendz00_bglt) BgL_arg1555z00_1527)))->
												BgL_debugzd2supportzd2);
										}
										BgL_test1971z00_2096 =
											CBOOL(BGl_memqz00zz__r4_pairs_and_lists_6_3z00
											(CNST_TABLE_REF(0L), BgL_arg1554z00_1526));
									}
								else
									{	/* Coerce/apply.scm 99 */
										BgL_test1971z00_2096 = ((bool_t) 0);
									}
								if (BgL_test1971z00_2096)
									{	/* Coerce/apply.scm 99 */
										BgL_test1970z00_2095 = ((bool_t) 1);
									}
								else
									{	/* Coerce/apply.scm 99 */
										BgL_test1970z00_2095 =
											(
											(long)
											CINT(BGl_za2compilerzd2debugza2zd2zzengine_paramz00) >
											0L);
							}}
							if (BgL_test1970z00_2095)
								{	/* Coerce/apply.scm 99 */
									if (STRUCTP(BgL_locz00_22))
										{	/* Coerce/apply.scm 104 */
											BgL_test1969z00_2094 =
												(STRUCT_KEY(BgL_locz00_22) == CNST_TABLE_REF(1L));
										}
									else
										{	/* Coerce/apply.scm 104 */
											BgL_test1969z00_2094 = ((bool_t) 0);
										}
								}
							else
								{	/* Coerce/apply.scm 99 */
									BgL_test1969z00_2094 = ((bool_t) 0);
								}
						}
						if (BgL_test1969z00_2094)
							{	/* Coerce/apply.scm 106 */
								obj_t BgL_arg1372z00_1489;

								{	/* Coerce/apply.scm 106 */
									obj_t BgL_arg1373z00_1490;
									obj_t BgL_arg1374z00_1491;

									{	/* Coerce/apply.scm 106 */
										obj_t BgL_arg1375z00_1492;
										obj_t BgL_arg1376z00_1493;

										{	/* Coerce/apply.scm 106 */
											obj_t BgL_arg1377z00_1494;

											{	/* Coerce/apply.scm 106 */
												obj_t BgL_arg1379z00_1495;

												BgL_arg1379z00_1495 =
													MAKE_YOUNG_PAIR(CNST_TABLE_REF(2L), BNIL);
												BgL_arg1377z00_1494 =
													MAKE_YOUNG_PAIR(CNST_TABLE_REF(3L),
													BgL_arg1379z00_1495);
											}
											BgL_arg1375z00_1492 =
												MAKE_YOUNG_PAIR(CNST_TABLE_REF(4L),
												BgL_arg1377z00_1494);
										}
										{	/* Coerce/apply.scm 107 */
											obj_t BgL_arg1397z00_1496;
											obj_t BgL_arg1407z00_1497;

											{	/* Coerce/apply.scm 107 */
												obj_t BgL_arg1408z00_1498;

												BgL_arg1408z00_1498 =
													BGl_currentzd2functionzd2zztools_errorz00();
												{	/* Coerce/apply.scm 107 */
													obj_t BgL_list1409z00_1499;

													{	/* Coerce/apply.scm 107 */
														obj_t BgL_arg1420z00_1500;

														BgL_arg1420z00_1500 =
															MAKE_YOUNG_PAIR(BgL_arg1408z00_1498, BNIL);
														BgL_list1409z00_1499 =
															MAKE_YOUNG_PAIR(CNST_TABLE_REF(5L),
															BgL_arg1420z00_1500);
													}
													BgL_arg1397z00_1496 = BgL_list1409z00_1499;
												}
											}
											{	/* Coerce/apply.scm 110 */
												obj_t BgL_arg1431z00_1501;

												{	/* Coerce/apply.scm 110 */
													obj_t BgL_arg1436z00_1502;

													{	/* Coerce/apply.scm 110 */
														obj_t BgL_arg1437z00_1503;
														obj_t BgL_arg1450z00_1504;

														BgL_arg1437z00_1503 =
															BGl_locationzd2fullzd2fnamez00zztools_locationz00
															(BgL_locz00_22);
														BgL_arg1450z00_1504 =
															MAKE_YOUNG_PAIR(STRUCT_REF(BgL_locz00_22,
																(int) (1L)), BNIL);
														BgL_arg1436z00_1502 =
															MAKE_YOUNG_PAIR(BgL_arg1437z00_1503,
															BgL_arg1450z00_1504);
													}
													BgL_arg1431z00_1501 =
														MAKE_YOUNG_PAIR(BgL_errorzd2msgzd2_21,
														BgL_arg1436z00_1502);
												}
												BgL_arg1407z00_1497 =
													MAKE_YOUNG_PAIR(BGl_string1956z00zzcoerce_applyz00,
													BgL_arg1431z00_1501);
											}
											BgL_arg1376z00_1493 =
												MAKE_YOUNG_PAIR(BgL_arg1397z00_1496,
												BgL_arg1407z00_1497);
										}
										BgL_arg1373z00_1490 =
											MAKE_YOUNG_PAIR(BgL_arg1375z00_1492, BgL_arg1376z00_1493);
									}
									{	/* Coerce/apply.scm 112 */
										obj_t BgL_arg1452z00_1506;

										{	/* Coerce/apply.scm 112 */
											obj_t BgL_arg1453z00_1507;

											{	/* Coerce/apply.scm 112 */
												obj_t BgL_arg1479z00_1508;
												obj_t BgL_arg1491z00_1509;

												{	/* Coerce/apply.scm 112 */
													obj_t BgL_arg1492z00_1510;

													BgL_arg1492z00_1510 =
														MAKE_YOUNG_PAIR(CNST_TABLE_REF(6L), BNIL);
													BgL_arg1479z00_1508 =
														MAKE_YOUNG_PAIR(CNST_TABLE_REF(5L),
														BgL_arg1492z00_1510);
												}
												{	/* Coerce/apply.scm 112 */
													obj_t BgL_arg1494z00_1511;
													obj_t BgL_arg1496z00_1512;

													{	/* Coerce/apply.scm 112 */
														obj_t BgL_arg1497z00_1513;

														BgL_arg1497z00_1513 =
															MAKE_YOUNG_PAIR(CNST_TABLE_REF(6L), BNIL);
														BgL_arg1494z00_1511 =
															MAKE_YOUNG_PAIR(CNST_TABLE_REF(5L),
															BgL_arg1497z00_1513);
													}
													{	/* Coerce/apply.scm 112 */
														obj_t BgL_arg1519z00_1514;

														{	/* Coerce/apply.scm 112 */
															obj_t BgL_arg1528z00_1515;

															BgL_arg1528z00_1515 =
																MAKE_YOUNG_PAIR(CNST_TABLE_REF(6L), BNIL);
															BgL_arg1519z00_1514 =
																MAKE_YOUNG_PAIR(CNST_TABLE_REF(5L),
																BgL_arg1528z00_1515);
														}
														BgL_arg1496z00_1512 =
															MAKE_YOUNG_PAIR(BgL_arg1519z00_1514, BNIL);
													}
													BgL_arg1491z00_1509 =
														MAKE_YOUNG_PAIR(BgL_arg1494z00_1511,
														BgL_arg1496z00_1512);
												}
												BgL_arg1453z00_1507 =
													MAKE_YOUNG_PAIR(BgL_arg1479z00_1508,
													BgL_arg1491z00_1509);
											}
											BgL_arg1452z00_1506 =
												MAKE_YOUNG_PAIR(CNST_TABLE_REF(7L),
												BgL_arg1453z00_1507);
										}
										BgL_arg1374z00_1491 =
											MAKE_YOUNG_PAIR(BgL_arg1452z00_1506, BNIL);
									}
									BgL_arg1372z00_1489 =
										MAKE_YOUNG_PAIR(BgL_arg1373z00_1490, BgL_arg1374z00_1491);
								}
								BgL_arg1347z00_1475 =
									MAKE_YOUNG_PAIR(CNST_TABLE_REF(8L), BgL_arg1372z00_1489);
							}
						else
							{	/* Coerce/apply.scm 113 */
								obj_t BgL_arg1532z00_1516;

								{	/* Coerce/apply.scm 113 */
									obj_t BgL_arg1534z00_1517;
									obj_t BgL_arg1541z00_1518;

									{	/* Coerce/apply.scm 113 */
										obj_t BgL_arg1545z00_1519;

										BgL_arg1545z00_1519 =
											BGl_currentzd2functionzd2zztools_errorz00();
										{	/* Coerce/apply.scm 113 */
											obj_t BgL_list1546z00_1520;

											{	/* Coerce/apply.scm 113 */
												obj_t BgL_arg1547z00_1521;

												BgL_arg1547z00_1521 =
													MAKE_YOUNG_PAIR(BgL_arg1545z00_1519, BNIL);
												BgL_list1546z00_1520 =
													MAKE_YOUNG_PAIR(CNST_TABLE_REF(5L),
													BgL_arg1547z00_1521);
											}
											BgL_arg1534z00_1517 = BgL_list1546z00_1520;
										}
									}
									{	/* Coerce/apply.scm 113 */
										obj_t BgL_arg1550z00_1522;

										BgL_arg1550z00_1522 =
											MAKE_YOUNG_PAIR(BgL_errorzd2msgzd2_21, BNIL);
										BgL_arg1541z00_1518 =
											MAKE_YOUNG_PAIR(BGl_string1956z00zzcoerce_applyz00,
											BgL_arg1550z00_1522);
									}
									BgL_arg1532z00_1516 =
										MAKE_YOUNG_PAIR(BgL_arg1534z00_1517, BgL_arg1541z00_1518);
								}
								BgL_arg1347z00_1475 =
									MAKE_YOUNG_PAIR(CNST_TABLE_REF(7L), BgL_arg1532z00_1516);
							}
					}
					BgL_nodez00_1474 =
						BGl_topzd2levelzd2sexpzd2ze3nodez31zzast_sexpz00
						(BgL_arg1347z00_1475, BgL_locz00_22);
				}
				return
					BGl_coercez12z12zzcoerce_coercez00(BgL_nodez00_1474, BgL_callerz00_23,
					((BgL_typez00_bglt) BgL_toz00_24), ((bool_t) 0));
			}
		}

	}



/* object-init */
	obj_t BGl_objectzd2initzd2zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			return BUNSPEC;
		}

	}



/* generic-init */
	obj_t BGl_genericzd2initzd2zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			return BUNSPEC;
		}

	}



/* method-init */
	obj_t BGl_methodzd2initzd2zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			return
				BGl_genericzd2addzd2methodz12z12zz__objectz00
				(BGl_coercez12zd2envzc0zzcoerce_coercez00, BGl_appzd2lyzd2zzast_nodez00,
				BGl_proc1957z00zzcoerce_applyz00, BGl_string1958z00zzcoerce_applyz00);
		}

	}



/* &coerce!-app-ly1295 */
	BgL_nodez00_bglt BGl_z62coercez12zd2appzd2ly1295z70zzcoerce_applyz00(obj_t
		BgL_envz00_1949, obj_t BgL_nodez00_1950, obj_t BgL_callerz00_1951,
		obj_t BgL_toz00_1952, obj_t BgL_safez00_1953)
	{
		{	/* Coerce/apply.scm 36 */
			{	/* Tools/trace.sch 53 */
				obj_t BgL_errorzd2msgzd2_1972;

				{	/* Tools/trace.sch 53 */
					obj_t BgL_arg1709z00_1973;

					BgL_arg1709z00_1973 =
						BGl_shapez00zztools_shapez00(
						((obj_t) ((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)));
					{	/* Tools/trace.sch 53 */
						obj_t BgL_list1710z00_1974;

						{	/* Tools/trace.sch 53 */
							obj_t BgL_arg1712z00_1975;

							BgL_arg1712z00_1975 = MAKE_YOUNG_PAIR(BgL_arg1709z00_1973, BNIL);
							BgL_list1710z00_1974 =
								MAKE_YOUNG_PAIR(CNST_TABLE_REF(5L), BgL_arg1712z00_1975);
						}
						BgL_errorzd2msgzd2_1972 = BgL_list1710z00_1974;
					}
				}
				{	/* Tools/trace.sch 53 */
					BgL_nodez00_bglt BgL_arg1560z00_1976;

					{	/* Tools/trace.sch 53 */
						BgL_nodez00_bglt BgL_arg1563z00_1977;

						BgL_arg1563z00_1977 =
							(((BgL_appzd2lyzd2_bglt) COBJECT(
									((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)))->BgL_argz00);
						BgL_arg1560z00_1976 =
							BGl_coercez12z12zzcoerce_coercez00(BgL_arg1563z00_1977,
							BgL_callerz00_1951,
							((BgL_typez00_bglt) BGl_za2objza2z00zztype_cachez00),
							CBOOL(BgL_safez00_1953));
					}
					((((BgL_appzd2lyzd2_bglt) COBJECT(
									((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)))->BgL_argz00) =
						((BgL_nodez00_bglt) BgL_arg1560z00_1976), BUNSPEC);
				}
				{	/* Tools/trace.sch 53 */
					BgL_nodez00_bglt BgL_czd2funzd2_1978;

					{	/* Tools/trace.sch 53 */
						BgL_nodez00_bglt BgL_arg1708z00_1979;

						BgL_arg1708z00_1979 =
							(((BgL_appzd2lyzd2_bglt) COBJECT(
									((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)))->BgL_funz00);
						BgL_czd2funzd2_1978 =
							BGl_coercez12z12zzcoerce_coercez00(BgL_arg1708z00_1979,
							BgL_callerz00_1951,
							((BgL_typez00_bglt) BGl_za2procedureza2z00zztype_cachez00),
							CBOOL(BgL_safez00_1953));
					}
					if (CBOOL(BGl_za2unsafezd2arityza2zd2zzengine_paramz00))
						{	/* Tools/trace.sch 53 */
							bool_t BgL_test1975z00_2186;

							{	/* Tools/trace.sch 53 */
								obj_t BgL_classz00_1980;

								BgL_classz00_1980 = BGl_varz00zzast_nodez00;
								{	/* Tools/trace.sch 53 */
									BgL_objectz00_bglt BgL_arg1801z00_1981;

									{	/* Tools/trace.sch 53 */
										obj_t BgL_tmpz00_2187;

										BgL_tmpz00_2187 =
											((obj_t) ((BgL_objectz00_bglt) BgL_czd2funzd2_1978));
										BgL_arg1801z00_1981 =
											(BgL_objectz00_bglt) (BgL_tmpz00_2187);
									}
									if (BGL_CONDEXPAND_ISA_ARCH64())
										{	/* Tools/trace.sch 53 */
											long BgL_idxz00_1982;

											BgL_idxz00_1982 =
												BGL_OBJECT_INHERITANCE_NUM(BgL_arg1801z00_1981);
											BgL_test1975z00_2186 =
												(VECTOR_REF(BGl_za2inheritancesza2z00zz__objectz00,
													(BgL_idxz00_1982 + 2L)) == BgL_classz00_1980);
										}
									else
										{	/* Tools/trace.sch 53 */
											bool_t BgL_res1844z00_1985;

											{	/* Tools/trace.sch 53 */
												obj_t BgL_oclassz00_1986;

												{	/* Tools/trace.sch 53 */
													long BgL_arg1808z00_1987;

													{	/* Tools/trace.sch 53 */
														long BgL_arg1809z00_1988;

														BgL_arg1809z00_1988 =
															BGL_OBJECT_CLASS_NUM(BgL_arg1801z00_1981);
														BgL_arg1808z00_1987 =
															(BgL_arg1809z00_1988 - OBJECT_TYPE);
													}
													BgL_oclassz00_1986 =
														VECTOR_REF(BGl_za2classesza2z00zz__objectz00,
														BgL_arg1808z00_1987);
												}
												{	/* Tools/trace.sch 53 */
													bool_t BgL__ortest_1115z00_1989;

													BgL__ortest_1115z00_1989 =
														(BgL_classz00_1980 == BgL_oclassz00_1986);
													if (BgL__ortest_1115z00_1989)
														{	/* Tools/trace.sch 53 */
															BgL_res1844z00_1985 = BgL__ortest_1115z00_1989;
														}
													else
														{	/* Tools/trace.sch 53 */
															long BgL_odepthz00_1990;

															BgL_odepthz00_1990 =
																BGL_CLASS_DEPTH(BgL_oclassz00_1986);
															if ((2L < BgL_odepthz00_1990))
																{	/* Tools/trace.sch 53 */
																	obj_t BgL_arg1797z00_1991;

																	BgL_arg1797z00_1991 =
																		BGL_CLASS_ANCESTORS_REF(BgL_oclassz00_1986,
																		2L);
																	BgL_res1844z00_1985 =
																		(BgL_arg1797z00_1991 == BgL_classz00_1980);
																}
															else
																{	/* Tools/trace.sch 53 */
																	BgL_res1844z00_1985 = ((bool_t) 0);
																}
														}
												}
											}
											BgL_test1975z00_2186 = BgL_res1844z00_1985;
										}
								}
							}
							if (BgL_test1975z00_2186)
								{	/* Tools/trace.sch 53 */
									((((BgL_appzd2lyzd2_bglt) COBJECT(
													((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)))->
											BgL_funz00) =
										((BgL_nodez00_bglt) BgL_czd2funzd2_1978), BUNSPEC);
									return
										BGl_convertz12z12zzcoerce_convertz00(((BgL_nodez00_bglt) (
												(BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)),
										((BgL_typez00_bglt) BGl_za2objza2z00zztype_cachez00),
										((BgL_typez00_bglt) BgL_toz00_1952),
										CBOOL(BgL_safez00_1953));
								}
							else
								{	/* Tools/trace.sch 53 */
									BgL_localz00_bglt BgL_funz00_1992;

									BgL_funz00_1992 =
										BGl_makezd2localzd2svarz00zzast_localz00(CNST_TABLE_REF(9L),
										((BgL_typez00_bglt) BGl_za2procedureza2z00zztype_cachez00));
									{	/* Tools/trace.sch 53 */
										BgL_refz00_bglt BgL_arg1565z00_1993;

										{	/* Tools/trace.sch 53 */
											BgL_refz00_bglt BgL_new1108z00_1994;

											{	/* Tools/trace.sch 53 */
												BgL_refz00_bglt BgL_new1107z00_1995;

												BgL_new1107z00_1995 =
													((BgL_refz00_bglt) BOBJECT(GC_MALLOC(sizeof(struct
																BgL_refz00_bgl))));
												{	/* Tools/trace.sch 53 */
													long BgL_arg1575z00_1996;

													BgL_arg1575z00_1996 =
														BGL_CLASS_NUM(BGl_refz00zzast_nodez00);
													BGL_OBJECT_CLASS_NUM_SET(
														((BgL_objectz00_bglt) BgL_new1107z00_1995),
														BgL_arg1575z00_1996);
												}
												{	/* Tools/trace.sch 53 */
													BgL_objectz00_bglt BgL_tmpz00_2222;

													BgL_tmpz00_2222 =
														((BgL_objectz00_bglt) BgL_new1107z00_1995);
													BGL_OBJECT_WIDENING_SET(BgL_tmpz00_2222, BFALSE);
												}
												((BgL_objectz00_bglt) BgL_new1107z00_1995);
												BgL_new1108z00_1994 = BgL_new1107z00_1995;
											}
											((((BgL_nodez00_bglt) COBJECT(
															((BgL_nodez00_bglt) BgL_new1108z00_1994)))->
													BgL_locz00) =
												((obj_t) (((BgL_nodez00_bglt)
															COBJECT(BgL_czd2funzd2_1978))->BgL_locz00)),
												BUNSPEC);
											((((BgL_nodez00_bglt) COBJECT(((BgL_nodez00_bglt)
																BgL_new1108z00_1994)))->BgL_typez00) =
												((BgL_typez00_bglt) ((BgL_typez00_bglt)
														BGl_za2procedureza2z00zztype_cachez00)), BUNSPEC);
											((((BgL_varz00_bglt) COBJECT(((BgL_varz00_bglt)
																BgL_new1108z00_1994)))->BgL_variablez00) =
												((BgL_variablez00_bglt) ((BgL_variablez00_bglt)
														BgL_funz00_1992)), BUNSPEC);
											BgL_arg1565z00_1993 = BgL_new1108z00_1994;
										}
										((((BgL_appzd2lyzd2_bglt) COBJECT(
														((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)))->
												BgL_funz00) =
											((BgL_nodez00_bglt) ((BgL_nodez00_bglt)
													BgL_arg1565z00_1993)), BUNSPEC);
									}
									{	/* Tools/trace.sch 53 */
										BgL_letzd2varzd2_bglt BgL_new1110z00_1997;

										{	/* Tools/trace.sch 53 */
											BgL_letzd2varzd2_bglt BgL_new1109z00_1998;

											BgL_new1109z00_1998 =
												((BgL_letzd2varzd2_bglt) BOBJECT(GC_MALLOC(sizeof(struct
															BgL_letzd2varzd2_bgl))));
											{	/* Tools/trace.sch 53 */
												long BgL_arg1581z00_1999;

												BgL_arg1581z00_1999 =
													BGL_CLASS_NUM(BGl_letzd2varzd2zzast_nodez00);
												BGL_OBJECT_CLASS_NUM_SET(
													((BgL_objectz00_bglt) BgL_new1109z00_1998),
													BgL_arg1581z00_1999);
											}
											{	/* Tools/trace.sch 53 */
												BgL_objectz00_bglt BgL_tmpz00_2242;

												BgL_tmpz00_2242 =
													((BgL_objectz00_bglt) BgL_new1109z00_1998);
												BGL_OBJECT_WIDENING_SET(BgL_tmpz00_2242, BFALSE);
											}
											((BgL_objectz00_bglt) BgL_new1109z00_1998);
											BgL_new1110z00_1997 = BgL_new1109z00_1998;
										}
										((((BgL_nodez00_bglt) COBJECT(
														((BgL_nodez00_bglt) BgL_new1110z00_1997)))->
												BgL_locz00) =
											((obj_t) (((BgL_nodez00_bglt)
														COBJECT(((BgL_nodez00_bglt) ((BgL_appzd2lyzd2_bglt)
																	BgL_nodez00_1950))))->BgL_locz00)), BUNSPEC);
										{
											BgL_typez00_bglt BgL_auxz00_2251;

											{	/* Tools/trace.sch 53 */
												BgL_typez00_bglt BgL_arg1576z00_2000;

												BgL_arg1576z00_2000 =
													(((BgL_nodez00_bglt) COBJECT(
															((BgL_nodez00_bglt)
																((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950))))->
													BgL_typez00);
												BgL_auxz00_2251 =
													BGl_strictzd2nodezd2typez00zzast_nodez00((
														(BgL_typez00_bglt) BgL_toz00_1952),
													BgL_arg1576z00_2000);
											}
											((((BgL_nodez00_bglt) COBJECT(
															((BgL_nodez00_bglt) BgL_new1110z00_1997)))->
													BgL_typez00) =
												((BgL_typez00_bglt) BgL_auxz00_2251), BUNSPEC);
										}
										((((BgL_nodezf2effectzf2_bglt) COBJECT(
														((BgL_nodezf2effectzf2_bglt)
															BgL_new1110z00_1997)))->BgL_sidezd2effectzd2) =
											((obj_t) BUNSPEC), BUNSPEC);
										((((BgL_nodezf2effectzf2_bglt)
													COBJECT(((BgL_nodezf2effectzf2_bglt)
															BgL_new1110z00_1997)))->BgL_keyz00) =
											((obj_t) BINT(-1L)), BUNSPEC);
										{
											obj_t BgL_auxz00_2264;

											{	/* Tools/trace.sch 53 */
												obj_t BgL_arg1578z00_2001;

												BgL_arg1578z00_2001 =
													MAKE_YOUNG_PAIR(
													((obj_t) BgL_funz00_1992),
													((obj_t) BgL_czd2funzd2_1978));
												{	/* Tools/trace.sch 53 */
													obj_t BgL_list1579z00_2002;

													BgL_list1579z00_2002 =
														MAKE_YOUNG_PAIR(BgL_arg1578z00_2001, BNIL);
													BgL_auxz00_2264 = BgL_list1579z00_2002;
											}}
											((((BgL_letzd2varzd2_bglt) COBJECT(BgL_new1110z00_1997))->
													BgL_bindingsz00) =
												((obj_t) BgL_auxz00_2264), BUNSPEC);
										}
										((((BgL_letzd2varzd2_bglt) COBJECT(BgL_new1110z00_1997))->
												BgL_bodyz00) =
											((BgL_nodez00_bglt)
												BGl_convertz12z12zzcoerce_convertz00(((BgL_nodez00_bglt)
														((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950)),
													((BgL_typez00_bglt) BGl_za2objza2z00zztype_cachez00),
													((BgL_typez00_bglt) BgL_toz00_1952),
													CBOOL(BgL_safez00_1953))), BUNSPEC);
										((((BgL_letzd2varzd2_bglt) COBJECT(BgL_new1110z00_1997))->
												BgL_removablezf3zf3) =
											((bool_t) ((bool_t) 1)), BUNSPEC);
										return ((BgL_nodez00_bglt) BgL_new1110z00_1997);
									}
								}
						}
					else
						{	/* Tools/trace.sch 53 */
							BgL_localz00_bglt BgL_funz00_2003;

							BgL_funz00_2003 =
								BGl_makezd2localzd2svarz00zzast_localz00(CNST_TABLE_REF(9L),
								((BgL_typez00_bglt) BGl_za2procedureza2z00zztype_cachez00));
							{	/* Tools/trace.sch 53 */
								BgL_localz00_bglt BgL_valz00_2004;

								BgL_valz00_2004 =
									BGl_makezd2localzd2svarz00zzast_localz00(CNST_TABLE_REF(10L),
									((BgL_typez00_bglt) BGl_za2pairzd2nilza2zd2zztype_cachez00));
								{	/* Tools/trace.sch 53 */
									obj_t BgL_locz00_2005;

									BgL_locz00_2005 =
										(((BgL_nodez00_bglt) COBJECT(
												((BgL_nodez00_bglt)
													((BgL_appzd2lyzd2_bglt) BgL_nodez00_1950))))->
										BgL_locz00);
									{	/* Tools/trace.sch 53 */
										BgL_nodez00_bglt BgL_lvalz00_2006;

										{	/* Tools/trace.sch 53 */
											BgL_nodez00_bglt BgL_arg1698z00_2007;

											{	/* Tools/trace.sch 53 */
												obj_t BgL_arg1706z00_2008;

												{	/* Tools/trace.sch 53 */
													obj_t BgL_arg1707z00_2009;

													BgL_arg1707z00_2009 =
														MAKE_YOUNG_PAIR(((obj_t) BgL_valz00_2004), BNIL);
													BgL_arg1706z00_2008 =
														MAKE_YOUNG_PAIR(CNST_TABLE_REF(11L),
														BgL_arg1707z00_2009);
												}
												BgL_arg1698z00_2007 =
													BGl_topzd2levelzd2sexpzd2ze3nodez31zzast_sexpz00
													(BgL_arg1706z00_2008, BgL_locz00_2005);
											}
											BgL_lvalz00_2006 =
												BGl_lvtypezd2nodezd2zzast_lvtypez00
												(BgL_arg1698z00_2007);
										}
										{	/* Tools/trace.sch 53 */
											obj_t BgL_lenz00_2010;

											BgL_lenz00_2010 =
												BGl_gensymz00zz__r4_symbols_6_4z00(CNST_TABLE_REF(12L));
											{	/* Tools/trace.sch 53 */
												BgL_nodez00_bglt BgL_bodyz00_2011;

												{	/* Tools/trace.sch 53 */
													BgL_nodez00_bglt BgL_arg1616z00_2012;

													{	/* Tools/trace.sch 53 */
														obj_t BgL_arg1620z00_2013;

														{	/* Tools/trace.sch 53 */
															obj_t BgL_arg1621z00_2014;

															{	/* Tools/trace.sch 53 */
																obj_t BgL_arg1628z00_2015;
																obj_t BgL_arg1629z00_2016;

																{	/* Tools/trace.sch 53 */
																	obj_t BgL_arg1630z00_2017;

																	{	/* Tools/trace.sch 53 */
																		obj_t BgL_arg1639z00_2018;
																		obj_t BgL_arg1649z00_2019;

																		{	/* Tools/trace.sch 53 */
																			obj_t BgL_arg1658z00_2020;

																			{	/* Tools/trace.sch 53 */
																				obj_t BgL_arg1661z00_2021;
																				obj_t BgL_arg1669z00_2022;

																				{	/* Tools/trace.sch 53 */
																					obj_t BgL_arg1454z00_2023;

																					BgL_arg1454z00_2023 =
																						SYMBOL_TO_STRING(BgL_lenz00_2010);
																					BgL_arg1661z00_2021 =
																						BGl_stringzd2copyzd2zz__r4_strings_6_7z00
																						(BgL_arg1454z00_2023);
																				}
																				{	/* Tools/trace.sch 53 */
																					obj_t BgL_symbolz00_2024;

																					BgL_symbolz00_2024 =
																						CNST_TABLE_REF(13L);
																					{	/* Tools/trace.sch 53 */
																						obj_t BgL_arg1454z00_2025;

																						BgL_arg1454z00_2025 =
																							SYMBOL_TO_STRING
																							(BgL_symbolz00_2024);
																						BgL_arg1669z00_2022 =
																							BGl_stringzd2copyzd2zz__r4_strings_6_7z00
																							(BgL_arg1454z00_2025);
																					}
																				}
																				BgL_arg1658z00_2020 =
																					string_append(BgL_arg1661z00_2021,
																					BgL_arg1669z00_2022);
																			}
																			BgL_arg1639z00_2018 =
																				bstring_to_symbol(BgL_arg1658z00_2020);
																		}
																		{	/* Tools/trace.sch 53 */
																			BgL_nodez00_bglt BgL_arg1673z00_2026;

																			BgL_arg1673z00_2026 =
																				BGl_coercez12z12zzcoerce_coercez00
																				(BgL_lvalz00_2006, BgL_callerz00_1951,
																				((BgL_typez00_bglt)
																					BGl_za2intza2z00zztype_cachez00),
																				CBOOL(BgL_safez00_1953));
																			BgL_arg1649z00_2019 =
																				MAKE_YOUNG_PAIR(((obj_t)
																					BgL_arg1673z00_2026), BNIL);
																		}
																		BgL_arg1630z00_2017 =
																			MAKE_YOUNG_PAIR(BgL_arg1639z00_2018,
																			BgL_arg1649z00_2019);
																	}
																	BgL_arg1628z00_2015 =
																		MAKE_YOUNG_PAIR(BgL_arg1630z00_2017, BNIL);
																}
																{	/* Tools/trace.sch 53 */
																	obj_t BgL_arg1675z00_2027;

																	{	/* Tools/trace.sch 53 */
																		obj_t BgL_arg1678z00_2028;

																		{	/* Tools/trace.sch 53 */
																			obj_t BgL_arg1681z00_2029;
																			obj_t BgL_arg1684z00_2030;

																			{	/* Tools/trace.sch 53 */
																				obj_t BgL_arg1686z00_2031;

																				{	/* Tools/trace.sch 53 */
																					obj_t BgL_arg1690z00_2032;

																					BgL_arg1690z00_2032 =
																						MAKE_YOUNG_PAIR(BgL_lenz00_2010,
																						BNIL);
																					BgL_arg1686z00_2031 =
																						MAKE_YOUNG_PAIR(((obj_t)
																							BgL_funz00_2003),
																						BgL_arg1690z00_2032);
																				}
																				BgL_arg1681z00_2029 =
																					MAKE_YOUNG_PAIR(CNST_TABLE_REF(14L),
																					BgL_arg1686z00_2031);
																			}
																			{	/* Tools/trace.sch 53 */
																				BgL_nodez00_bglt BgL_arg1693z00_2033;
																				obj_t BgL_arg1695z00_2034;

																				BgL_arg1693z00_2033 =
																					BGl_convertz12z12zzcoerce_convertz00(
																					((BgL_nodez00_bglt)
																						((BgL_appzd2lyzd2_bglt)
																							BgL_nodez00_1950)),
																					((BgL_typez00_bglt)
																						BGl_za2objza2z00zztype_cachez00),
																					((BgL_typez00_bglt) BgL_toz00_1952),
																					CBOOL(BgL_safez00_1953));
																				{	/* Tools/trace.sch 53 */
																					BgL_nodez00_bglt BgL_arg1696z00_2035;

																					BgL_arg1696z00_2035 =
																						BGl_makezd2errorzd2nodez00zzcoerce_applyz00
																						(BgL_errorzd2msgzd2_1972,
																						BgL_locz00_2005, BgL_callerz00_1951,
																						BgL_toz00_1952);
																					BgL_arg1695z00_2034 =
																						MAKE_YOUNG_PAIR(((obj_t)
																							BgL_arg1696z00_2035), BNIL);
																				}
																				BgL_arg1684z00_2030 =
																					MAKE_YOUNG_PAIR(
																					((obj_t) BgL_arg1693z00_2033),
																					BgL_arg1695z00_2034);
																			}
																			BgL_arg1678z00_2028 =
																				MAKE_YOUNG_PAIR(BgL_arg1681z00_2029,
																				BgL_arg1684z00_2030);
																		}
																		BgL_arg1675z00_2027 =
																			MAKE_YOUNG_PAIR(CNST_TABLE_REF(15L),
																			BgL_arg1678z00_2028);
																	}
																	BgL_arg1629z00_2016 =
																		MAKE_YOUNG_PAIR(BgL_arg1675z00_2027, BNIL);
																}
																BgL_arg1621z00_2014 =
																	MAKE_YOUNG_PAIR(BgL_arg1628z00_2015,
																	BgL_arg1629z00_2016);
															}
															BgL_arg1620z00_2013 =
																MAKE_YOUNG_PAIR(CNST_TABLE_REF(16L),
																BgL_arg1621z00_2014);
														}
														BgL_arg1616z00_2012 =
															BGl_topzd2levelzd2sexpzd2ze3nodez31zzast_sexpz00
															(BgL_arg1620z00_2013, BgL_locz00_2005);
													}
													BgL_bodyz00_2011 =
														BGl_lvtypezd2nodezd2zzast_lvtypez00
														(BgL_arg1616z00_2012);
												}
												{	/* Tools/trace.sch 53 */
													BgL_letzd2varzd2_bglt BgL_lnodez00_2036;

													{	/* Tools/trace.sch 53 */
														BgL_letzd2varzd2_bglt BgL_new1112z00_2037;

														{	/* Tools/trace.sch 53 */
															BgL_letzd2varzd2_bglt BgL_new1111z00_2038;

															BgL_new1111z00_2038 =
																((BgL_letzd2varzd2_bglt)
																BOBJECT(GC_MALLOC(sizeof(struct
																			BgL_letzd2varzd2_bgl))));
															{	/* Tools/trace.sch 53 */
																long BgL_arg1615z00_2039;

																BgL_arg1615z00_2039 =
																	BGL_CLASS_NUM(BGl_letzd2varzd2zzast_nodez00);
																BGL_OBJECT_CLASS_NUM_SET(
																	((BgL_objectz00_bglt) BgL_new1111z00_2038),
																	BgL_arg1615z00_2039);
															}
															{	/* Tools/trace.sch 53 */
																BgL_objectz00_bglt BgL_tmpz00_2339;

																BgL_tmpz00_2339 =
																	((BgL_objectz00_bglt) BgL_new1111z00_2038);
																BGL_OBJECT_WIDENING_SET(BgL_tmpz00_2339,
																	BFALSE);
															}
															((BgL_objectz00_bglt) BgL_new1111z00_2038);
															BgL_new1112z00_2037 = BgL_new1111z00_2038;
														}
														((((BgL_nodez00_bglt) COBJECT(
																		((BgL_nodez00_bglt) BgL_new1112z00_2037)))->
																BgL_locz00) =
															((obj_t) BgL_locz00_2005), BUNSPEC);
														{
															BgL_typez00_bglt BgL_auxz00_2345;

															{	/* Tools/trace.sch 53 */
																BgL_typez00_bglt BgL_arg1598z00_2040;

																BgL_arg1598z00_2040 =
																	(((BgL_nodez00_bglt)
																		COBJECT(BgL_bodyz00_2011))->BgL_typez00);
																BgL_auxz00_2345 =
																	BGl_strictzd2nodezd2typez00zzast_nodez00
																	(BgL_arg1598z00_2040,
																	((BgL_typez00_bglt)
																		BGl_za2objza2z00zztype_cachez00));
															}
															((((BgL_nodez00_bglt) COBJECT(
																			((BgL_nodez00_bglt)
																				BgL_new1112z00_2037)))->BgL_typez00) =
																((BgL_typez00_bglt) BgL_auxz00_2345), BUNSPEC);
														}
														((((BgL_nodezf2effectzf2_bglt) COBJECT(
																		((BgL_nodezf2effectzf2_bglt)
																			BgL_new1112z00_2037)))->
																BgL_sidezd2effectzd2) =
															((obj_t) BUNSPEC), BUNSPEC);
														((((BgL_nodezf2effectzf2_bglt)
																	COBJECT(((BgL_nodezf2effectzf2_bglt)
																			BgL_new1112z00_2037)))->BgL_keyz00) =
															((obj_t) BINT(-1L)), BUNSPEC);
														{
															obj_t BgL_auxz00_2356;

															{	/* Tools/trace.sch 53 */
																obj_t BgL_arg1606z00_2041;
																obj_t BgL_arg1608z00_2042;

																BgL_arg1606z00_2041 =
																	MAKE_YOUNG_PAIR(
																	((obj_t) BgL_funz00_2003),
																	((obj_t) BgL_czd2funzd2_1978));
																{	/* Tools/trace.sch 53 */
																	BgL_nodez00_bglt BgL_arg1614z00_2043;

																	BgL_arg1614z00_2043 =
																		(((BgL_appzd2lyzd2_bglt) COBJECT(
																				((BgL_appzd2lyzd2_bglt)
																					BgL_nodez00_1950)))->BgL_argz00);
																	BgL_arg1608z00_2042 =
																		MAKE_YOUNG_PAIR(((obj_t) BgL_valz00_2004),
																		((obj_t) BgL_arg1614z00_2043));
																}
																{	/* Tools/trace.sch 53 */
																	obj_t BgL_list1610z00_2044;

																	{	/* Tools/trace.sch 53 */
																		obj_t BgL_arg1613z00_2045;

																		BgL_arg1613z00_2045 =
																			MAKE_YOUNG_PAIR(BgL_arg1608z00_2042,
																			BNIL);
																		BgL_list1610z00_2044 =
																			MAKE_YOUNG_PAIR(BgL_arg1606z00_2041,
																			BgL_arg1613z00_2045);
																	}
																	BgL_auxz00_2356 = BgL_list1610z00_2044;
															}}
															((((BgL_letzd2varzd2_bglt)
																		COBJECT(BgL_new1112z00_2037))->
																	BgL_bindingsz00) =
																((obj_t) BgL_auxz00_2356), BUNSPEC);
														}
														((((BgL_letzd2varzd2_bglt)
																	COBJECT(BgL_new1112z00_2037))->BgL_bodyz00) =
															((BgL_nodez00_bglt) BgL_bodyz00_2011), BUNSPEC);
														((((BgL_letzd2varzd2_bglt)
																	COBJECT(BgL_new1112z00_2037))->
																BgL_removablezf3zf3) =
															((bool_t) ((bool_t) 1)), BUNSPEC);
														BgL_lnodez00_2036 = BgL_new1112z00_2037;
													}
													{	/* Tools/trace.sch 53 */

														{	/* Tools/trace.sch 53 */
															BgL_refz00_bglt BgL_arg1586z00_2046;

															{	/* Tools/trace.sch 53 */
																BgL_refz00_bglt BgL_new1116z00_2047;

																{	/* Tools/trace.sch 53 */
																	BgL_refz00_bglt BgL_new1113z00_2048;

																	BgL_new1113z00_2048 =
																		((BgL_refz00_bglt)
																		BOBJECT(GC_MALLOC(sizeof(struct
																					BgL_refz00_bgl))));
																	{	/* Tools/trace.sch 53 */
																		long BgL_arg1590z00_2049;

																		BgL_arg1590z00_2049 =
																			BGL_CLASS_NUM(BGl_refz00zzast_nodez00);
																		BGL_OBJECT_CLASS_NUM_SET(
																			((BgL_objectz00_bglt)
																				BgL_new1113z00_2048),
																			BgL_arg1590z00_2049);
																	}
																	{	/* Tools/trace.sch 53 */
																		BgL_objectz00_bglt BgL_tmpz00_2374;

																		BgL_tmpz00_2374 =
																			((BgL_objectz00_bglt)
																			BgL_new1113z00_2048);
																		BGL_OBJECT_WIDENING_SET(BgL_tmpz00_2374,
																			BFALSE);
																	}
																	((BgL_objectz00_bglt) BgL_new1113z00_2048);
																	BgL_new1116z00_2047 = BgL_new1113z00_2048;
																}
																((((BgL_nodez00_bglt) COBJECT(
																				((BgL_nodez00_bglt)
																					BgL_new1116z00_2047)))->BgL_locz00) =
																	((obj_t) BgL_locz00_2005), BUNSPEC);
																((((BgL_nodez00_bglt)
																			COBJECT(((BgL_nodez00_bglt)
																					BgL_new1116z00_2047)))->BgL_typez00) =
																	((BgL_typez00_bglt) ((BgL_typez00_bglt)
																			BGl_za2procedureza2z00zztype_cachez00)),
																	BUNSPEC);
																((((BgL_varz00_bglt) COBJECT(((BgL_varz00_bglt)
																					BgL_new1116z00_2047)))->
																		BgL_variablez00) =
																	((BgL_variablez00_bglt) (
																			(BgL_variablez00_bglt) BgL_funz00_2003)),
																	BUNSPEC);
																BgL_arg1586z00_2046 = BgL_new1116z00_2047;
															}
															((((BgL_appzd2lyzd2_bglt) COBJECT(
																			((BgL_appzd2lyzd2_bglt)
																				BgL_nodez00_1950)))->BgL_funz00) =
																((BgL_nodez00_bglt) ((BgL_nodez00_bglt)
																		BgL_arg1586z00_2046)), BUNSPEC);
														}
														{	/* Tools/trace.sch 53 */
															BgL_refz00_bglt BgL_arg1592z00_2050;

															{	/* Tools/trace.sch 53 */
																BgL_refz00_bglt BgL_new1118z00_2051;

																{	/* Tools/trace.sch 53 */
																	BgL_refz00_bglt BgL_new1117z00_2052;

																	BgL_new1117z00_2052 =
																		((BgL_refz00_bglt)
																		BOBJECT(GC_MALLOC(sizeof(struct
																					BgL_refz00_bgl))));
																	{	/* Tools/trace.sch 53 */
																		long BgL_arg1597z00_2053;

																		BgL_arg1597z00_2053 =
																			BGL_CLASS_NUM(BGl_refz00zzast_nodez00);
																		BGL_OBJECT_CLASS_NUM_SET(
																			((BgL_objectz00_bglt)
																				BgL_new1117z00_2052),
																			BgL_arg1597z00_2053);
																	}
																	{	/* Tools/trace.sch 53 */
																		BgL_objectz00_bglt BgL_tmpz00_2393;

																		BgL_tmpz00_2393 =
																			((BgL_objectz00_bglt)
																			BgL_new1117z00_2052);
																		BGL_OBJECT_WIDENING_SET(BgL_tmpz00_2393,
																			BFALSE);
																	}
																	((BgL_objectz00_bglt) BgL_new1117z00_2052);
																	BgL_new1118z00_2051 = BgL_new1117z00_2052;
																}
																((((BgL_nodez00_bglt) COBJECT(
																				((BgL_nodez00_bglt)
																					BgL_new1118z00_2051)))->BgL_locz00) =
																	((obj_t) BgL_locz00_2005), BUNSPEC);
																{
																	BgL_typez00_bglt BgL_auxz00_2399;

																	{	/* Tools/trace.sch 53 */
																		BgL_typez00_bglt BgL_arg1595z00_2054;

																		BgL_arg1595z00_2054 =
																			(((BgL_variablez00_bglt) COBJECT(
																					((BgL_variablez00_bglt)
																						BgL_valz00_2004)))->BgL_typez00);
																		BgL_auxz00_2399 =
																			BGl_strictzd2nodezd2typez00zzast_nodez00
																			(BgL_arg1595z00_2054,
																			((BgL_typez00_bglt)
																				BGl_za2objza2z00zztype_cachez00));
																	}
																	((((BgL_nodez00_bglt) COBJECT(
																					((BgL_nodez00_bglt)
																						BgL_new1118z00_2051)))->
																			BgL_typez00) =
																		((BgL_typez00_bglt) BgL_auxz00_2399),
																		BUNSPEC);
																}
																((((BgL_varz00_bglt) COBJECT(
																				((BgL_varz00_bglt)
																					BgL_new1118z00_2051)))->
																		BgL_variablez00) =
																	((BgL_variablez00_bglt) (
																			(BgL_variablez00_bglt) BgL_valz00_2004)),
																	BUNSPEC);
																BgL_arg1592z00_2050 = BgL_new1118z00_2051;
															}
															((((BgL_appzd2lyzd2_bglt) COBJECT(
																			((BgL_appzd2lyzd2_bglt)
																				BgL_nodez00_1950)))->BgL_argz00) =
																((BgL_nodez00_bglt) ((BgL_nodez00_bglt)
																		BgL_arg1592z00_2050)), BUNSPEC);
														}
														return ((BgL_nodez00_bglt) BgL_lnodez00_2036);
													}
												}
											}
										}
									}
								}
							}
						}
				}
			}
		}

	}



/* imported-modules-init */
	obj_t BGl_importedzd2moduleszd2initz00zzcoerce_applyz00(void)
	{
		{	/* Coerce/apply.scm 15 */
			BGl_modulezd2initializa7ationz75zztools_tracez00(54713316L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzengine_paramz00(517137079L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzbackend_backendz00(216206620L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zztools_shapez00(365925558L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zztools_locationz00(462333240L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zztools_errorz00(300504031L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zztype_typez00(515343395L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zztype_cachez00(346491734L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzast_varz00(90839984L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzast_nodez00(469732712L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzast_sexpz00(163122759L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzast_localz00(315247917L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzast_lvtypez00(189769752L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			BGl_modulezd2initializa7ationz75zzcoerce_coercez00(361167184L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
			return
				BGl_modulezd2initializa7ationz75zzcoerce_convertz00(87995645L,
				BSTRING_TO_STRING(BGl_string1959z00zzcoerce_applyz00));
		}

	}

#ifdef __cplusplus
}
#endif
