text: /*
   * Code for class READABLE_INDEXABLE_ITERATION_CURSOR [NATURAL_8]
   */
  
  #include "eif_eiffel.h"
  #include "../E1/estructure.h"
  
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  extern void F461_4330(EIF_REFERENCE, EIF_TYPED_VALUE);
  extern EIF_TYPED_VALUE F461_4331(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4332(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4333(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4334(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4335(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4336(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4337(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4338(EIF_REFERENCE, EIF_TYPED_VALUE);
  extern EIF_TYPED_VALUE F461_4339(EIF_REFERENCE, EIF_TYPED_VALUE);
  extern EIF_TYPED_VALUE F461_4340(EIF_REFERENCE, EIF_TYPED_VALUE);
  static EIF_TYPED_VALUE F461_4341_body(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4341(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4342(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4343(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4344(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4345(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4346(EIF_REFERENCE);
  extern void F461_4347(EIF_REFERENCE);
  extern void F461_4348(EIF_REFERENCE, EIF_TYPED_VALUE);
  extern void F461_4349(EIF_REFERENCE);
  extern void F461_4350(EIF_REFERENCE);
  extern EIF_TYPED_VALUE F461_4351(EIF_REFERENCE);
  extern void EIF_Minit461(void);
  
  #ifdef __cplusplus
  }
  #endif
  
  #include "eif_helpers.h"
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  
  #ifdef __cplusplus
  }
  #endif
  
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.make */
  void F461_4330 (EIF_REFERENCE Current, EIF_TYPED_VALUE arg1x)
  {
  	GTCX
  	char *l_feature_name = "make";
  	RTEX;
  	EIF_REFERENCE loc1 = (EIF_REFERENCE) 0;
  #define arg1 arg1x.it_r
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_REFERENCE tr1 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_NATURAL_32 tu4_1;
  	EIF_BOOLEAN tb1;
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	
  	RTLI(4);
  	RTLR(0,arg1);
  	RTLR(1,Current);
  	RTLR(2,tr1);
  	RTLR(3,loc1);
  	RTLIU(4);
  	RTLU (SK_VOID, NULL);
  	RTLU(SK_REF,&arg1);
  	RTLU (SK_REF, &Current);
  	RTLU(SK_REF, &loc1);
  	
  	RTEAA(l_feature_name, 460, Current, 1, 1, 8546);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8546);
  	RTCC(arg1, 460, l_feature_name, 1, RTWCT(3218, dtype, Dftype(Current)), 0x00);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("t_attached", EX_PRE);
  		RTTE((EIF_BOOLEAN)(arg1 != NULL), label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	RTHOOK(2);
  	RTDBGAA(Current, dtype, 3218, 0xF80001C9, 0); /* target */
  	tr1 = RTCCL(arg1);
  	RTAR(Current, tr1);
  	*(EIF_REFERENCE *)(Current + RTWA(3218, dtype)) = (EIF_REFERENCE) tr1;
  	RTHOOK(3);
  	loc1 = RTCCL(arg1);
  	loc1 = RTRV(eif_new_type(16, 0x01),loc1);
  	if (EIF_TEST(loc1)) {
  		RTHOOK(4);
  		RTDBGAA(Current, dtype, 3215, 0x38000000, 1); /* version */
  		tu4_1 = *(EIF_NATURAL_32 *)(loc1 + RTVA(202, "version", loc1));
  		*(EIF_NATURAL_32 *)(Current + RTWA(3215, dtype)) = (EIF_NATURAL_32) tu4_1;
  	} else {
  		RTHOOK(5);
  		RTDBGAA(Current, dtype, 3215, 0x38000000, 1); /* version */
  		*(EIF_NATURAL_32 *)(Current + RTWA(3215, dtype)) = (EIF_NATURAL_32) (EIF_NATURAL_32) ((EIF_INTEGER_32) 0L);
  	}
  	RTHOOK(6);
  	RTDBGAA(Current, dtype, 3220, 0x10000000, 1); /* step */
  	*(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype)) = (EIF_INTEGER_32) ((EIF_INTEGER_32) 1L);
  	RTHOOK(7);
  	RTDBGAA(Current, dtype, 3219, 0x04000000, 1); /* is_reversed */
  	*(EIF_BOOLEAN *)(Current + RTWA(3219, dtype)) = (EIF_BOOLEAN) (EIF_BOOLEAN) 0;
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(8);
  		RTCT("target_set", EX_POST);
  		tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3218, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  		if (RTCEQ(tr1, arg1)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(9);
  		RTCT("is_valid", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3208, dtype))(Current)).it_b);
  		if (tb1) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(10);
  		RTCT("default_step", EX_POST);
  		ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		if ((EIF_BOOLEAN)(ti4_1 == ((EIF_INTEGER_32) 1L))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(11);
  		RTCT("ascending_traversal", EX_POST);
  		tb1 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  		if ((EIF_BOOLEAN) !tb1) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(12);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(4);
  	RTEE;
  #undef up1
  #undef arg1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.cursor_index */
  EIF_TYPED_VALUE F461_4331 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "cursor_index";
  	RTEX;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_INTEGER_32 ti4_3;
  	EIF_BOOLEAN tb1;
  	EIF_INTEGER_32 Result = ((EIF_INTEGER_32) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(1);
  	RTLR(0,Current);
  	RTLIU(1);
  	RTLU (SK_INT32, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8547);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8547);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("is_valid", EX_PRE);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3208, dtype))(Current)).it_b);
  		RTTE(tb1, label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	RTHOOK(2);
  	RTDBGAL(0, 0x10000000, 1,0); /* Result */
  	ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype));
  	ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3222, dtype));
  	ti4_3 = eif_abs_int32 ((EIF_INTEGER_32) (ti4_1 - ti4_2));
  	ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  	ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  	Result = (EIF_INTEGER_32) (EIF_INTEGER_32) ((EIF_INTEGER_32) ((EIF_INTEGER_32) ((EIF_INTEGER_32) (ti4_3 + ti4_1) - ((EIF_INTEGER_32) 1L)) / ti4_2) + ((EIF_INTEGER_32) 1L));
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(3);
  		RTCT("positive_index", EX_POST);
  		if ((EIF_BOOLEAN) (Result >= ((EIF_INTEGER_32) 0L))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(4);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_INT32; r.it_i4 = Result; return r; }
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.target_index */
  EIF_TYPED_VALUE F461_4332 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_INT32;
  	r.it_i4 = *(EIF_INTEGER_32 *)(Current + RTWA(3223,Dtype(Current)));
  	return r;
  }
  
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.first_index */
  EIF_TYPED_VALUE F461_4333 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_INT32;
  	r.it_i4 = *(EIF_INTEGER_32 *)(Current + RTWA(3222,Dtype(Current)));
  	return r;
  }
  
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.last_index */
  EIF_TYPED_VALUE F461_4334 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_INT32;
  	r.it_i4 = *(EIF_INTEGER_32 *)(Current + RTWA(3221,Dtype(Current)));
  	return r;
  }
  
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.step */
  EIF_TYPED_VALUE F461_4335 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_INT32;
  	r.it_i4 = *(EIF_INTEGER_32 *)(Current + RTWA(3220,Dtype(Current)));
  	return r;
  }
  
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.new_cursor */
  EIF_TYPED_VALUE F461_4336 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "new_cursor";
  	RTEX;
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE Result = ((EIF_REFERENCE) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(3);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,Result);
  	RTLIU(3);
  	RTLU (SK_REF, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8552);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8552);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0xF80001CC, 0,0); /* Result */
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(17, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	Result = (EIF_REFERENCE) RTCCL(tr1);
  	RTHOOK(2);
  	(FUNCTION_CAST(void, (EIF_REFERENCE)) RTVF(3211, "start", Result))(Result);
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(3);
  		RTCT("result_attached", EX_POST);
  		if ((EIF_BOOLEAN)(Result != NULL)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(4);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_REF; r.it_r = Result; return r; }
  #undef up1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.reversed */
  EIF_TYPED_VALUE F461_4337 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "reversed";
  	RTEX;
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_REFERENCE Result = ((EIF_REFERENCE) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(4);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,Result);
  	RTLR(3,tr2);
  	RTLIU(4);
  	RTLU (SK_REF, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8553);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8553);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0xF80001CC, 0,0); /* Result */
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(17, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	Result = (EIF_REFERENCE) RTCCL(tr1);
  	RTHOOK(2);
  	(FUNCTION_CAST(void, (EIF_REFERENCE)) RTVF(3216, "reverse", Result))(Result);
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(3);
  		RTCT("is_reversed", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3207, "is_reversed", Result))(Result)).it_b);
  		tb2 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  		if ((EIF_BOOLEAN)(tb1 == (EIF_BOOLEAN) !tb2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(4);
  		RTCT("same_step", EX_POST);
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3202, "step", Result))(Result)).it_i4);
  		ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		if ((EIF_BOOLEAN)(ti4_1 == ti4_2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(5);
  		RTCT("same_target", EX_POST);
  		tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3212, "target", Result))(Result)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  		tr2 = *(EIF_REFERENCE *)(Current + RTWA(3218, dtype));
  		if (RTCEQ(tr1, tr2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(6);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_REF; r.it_r = Result; return r; }
  #undef up1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.incremented */
  EIF_TYPED_VALUE F461_4338 (EIF_REFERENCE Current, EIF_TYPED_VALUE arg1x)
  {
  	GTCX
  	char *l_feature_name = "incremented";
  	RTEX;
  #define arg1 arg1x.it_i4
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_TYPED_VALUE ui4_1x = {{0}, SK_INT32};
  #define ui4_1 ui4_1x.it_i4
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_REFERENCE Result = ((EIF_REFERENCE) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	if ((arg1x.type & SK_HEAD) == SK_REF) arg1x.it_i4 = * (EIF_INTEGER_32 *) arg1x.it_r;
  	
  	RTLI(4);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,Result);
  	RTLR(3,tr2);
  	RTLIU(4);
  	RTLU (SK_REF, &Result);
  	RTLU(SK_INT32,&arg1);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 1, 8554);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8554);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("n_valid", EX_PRE);
  		ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		RTTE((EIF_BOOLEAN) ((EIF_INTEGER_32) (ti4_1 + arg1) > ((EIF_INTEGER_32) 0L)), label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	RTHOOK(2);
  	RTDBGAL(0, 0xF80001CC, 0,0); /* Result */
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(17, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	Result = (EIF_REFERENCE) RTCCL(tr1);
  	RTHOOK(3);
  	ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  	ui4_1 = (EIF_INTEGER_32) (ti4_1 + arg1);
  	(FUNCTION_CAST(void, (EIF_REFERENCE, EIF_TYPED_VALUE)) RTVF(3217, "set_step", Result))(Result, ui4_1x);
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(4);
  		RTCT("is_incremented", EX_POST);
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3202, "step", Result))(Result)).it_i4);
  		ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		if ((EIF_BOOLEAN)(ti4_1 == (EIF_INTEGER_32) (ti4_2 + arg1))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(5);
  		RTCT("same_direction", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3207, "is_reversed", Result))(Result)).it_b);
  		tb2 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  		if ((EIF_BOOLEAN)(tb1 == tb2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(6);
  		RTCT("same_target", EX_POST);
  		tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3212, "target", Result))(Result)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  		tr2 = *(EIF_REFERENCE *)(Current + RTWA(3218, dtype));
  		if (RTCEQ(tr1, tr2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(7);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(3);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_REF; r.it_r = Result; return r; }
  #undef up1
  #undef ui4_1
  #undef arg1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.decremented */
  EIF_TYPED_VALUE F461_4339 (EIF_REFERENCE Current, EIF_TYPED_VALUE arg1x)
  {
  	GTCX
  	char *l_feature_name = "decremented";
  	RTEX;
  #define arg1 arg1x.it_i4
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_TYPED_VALUE ui4_1x = {{0}, SK_INT32};
  #define ui4_1 ui4_1x.it_i4
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_REFERENCE Result = ((EIF_REFERENCE) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	if ((arg1x.type & SK_HEAD) == SK_REF) arg1x.it_i4 = * (EIF_INTEGER_32 *) arg1x.it_r;
  	
  	RTLI(4);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,Result);
  	RTLR(3,tr2);
  	RTLIU(4);
  	RTLU (SK_REF, &Result);
  	RTLU(SK_INT32,&arg1);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 1, 8555);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8555);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("n_valid", EX_PRE);
  		ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		RTTE((EIF_BOOLEAN) (ti4_1 > arg1), label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	RTHOOK(2);
  	RTDBGAL(0, 0xF80001CC, 0,0); /* Result */
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(17, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	Result = (EIF_REFERENCE) RTCCL(tr1);
  	RTHOOK(3);
  	ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  	ui4_1 = (EIF_INTEGER_32) (ti4_1 - arg1);
  	(FUNCTION_CAST(void, (EIF_REFERENCE, EIF_TYPED_VALUE)) RTVF(3217, "set_step", Result))(Result, ui4_1x);
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(4);
  		RTCT("is_incremented", EX_POST);
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3202, "step", Result))(Result)).it_i4);
  		ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		if ((EIF_BOOLEAN)(ti4_1 == (EIF_INTEGER_32) (ti4_2 - arg1))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(5);
  		RTCT("same_direction", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3207, "is_reversed", Result))(Result)).it_b);
  		tb2 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  		if ((EIF_BOOLEAN)(tb1 == tb2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(6);
  		RTCT("same_target", EX_POST);
  		tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3212, "target", Result))(Result)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  		tr2 = *(EIF_REFERENCE *)(Current + RTWA(3218, dtype));
  		if (RTCEQ(tr1, tr2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(7);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(3);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_REF; r.it_r = Result; return r; }
  #undef up1
  #undef ui4_1
  #undef arg1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.with_step */
  EIF_TYPED_VALUE F461_4340 (EIF_REFERENCE Current, EIF_TYPED_VALUE arg1x)
  {
  	GTCX
  	char *l_feature_name = "with_step";
  	RTEX;
  #define arg1 arg1x.it_i4
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_TYPED_VALUE ui4_1x = {{0}, SK_INT32};
  #define ui4_1 ui4_1x.it_i4
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_REFERENCE Result = ((EIF_REFERENCE) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	if ((arg1x.type & SK_HEAD) == SK_REF) arg1x.it_i4 = * (EIF_INTEGER_32 *) arg1x.it_r;
  	
  	RTLI(4);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,Result);
  	RTLR(3,tr2);
  	RTLIU(4);
  	RTLU (SK_REF, &Result);
  	RTLU(SK_INT32,&arg1);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 1, 8534);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8534);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("n_positive", EX_PRE);
  		RTTE((EIF_BOOLEAN) (arg1 > ((EIF_INTEGER_32) 0L)), label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	RTHOOK(2);
  	RTDBGAL(0, 0xF80001CC, 0,0); /* Result */
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(17, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	Result = (EIF_REFERENCE) RTCCL(tr1);
  	RTHOOK(3);
  	ui4_1 = arg1;
  	(FUNCTION_CAST(void, (EIF_REFERENCE, EIF_TYPED_VALUE)) RTVF(3217, "set_step", Result))(Result, ui4_1x);
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(4);
  		RTCT("step_set", EX_POST);
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3202, "step", Result))(Result)).it_i4);
  		if ((EIF_BOOLEAN)(ti4_1 == arg1)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(5);
  		RTCT("same_direction", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3207, "is_reversed", Result))(Result)).it_b);
  		tb2 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  		if ((EIF_BOOLEAN)(tb1 == tb2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(6);
  		RTCT("same_target", EX_POST);
  		tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(3212, "target", Result))(Result)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  		tr2 = *(EIF_REFERENCE *)(Current + RTWA(3218, dtype));
  		if (RTCEQ(tr1, tr2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(7);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(3);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_REF; r.it_r = Result; return r; }
  #undef up1
  #undef ui4_1
  #undef arg1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.version */
  static EIF_TYPED_VALUE F461_4341_body (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "version";
  	RTEX;
  	EIF_NATURAL_32 Result = ((EIF_NATURAL_32) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(1);
  	RTLR(0,Current);
  	RTLIU(1);
  	RTLU (SK_UINT32, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8535);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8535);
  	RTIV(Current, RTAL);
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(1);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_UINT32; r.it_n4 = Result; return r; }
  }
  
  EIF_TYPED_VALUE F461_4341 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_UINT32;
  	r.it_n4 = *(EIF_NATURAL_32 *)(Current + RTWA(3215,Dtype(Current)));
  	return r;
  }
  
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.after */
  EIF_TYPED_VALUE F461_4342 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "after";
  	RTEX;
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_TYPED_VALUE ui4_1x = {{0}, SK_INT32};
  #define ui4_1 ui4_1x.it_i4
  	EIF_REFERENCE tr1 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_BOOLEAN Result = ((EIF_BOOLEAN) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(2);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLIU(2);
  	RTLU (SK_BOOL, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8536);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8536);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0x04000000, 1,0); /* Result */
  	tb1 = '\01';
  	tb2 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3208, dtype))(Current)).it_b);
  	if (!(EIF_BOOLEAN) !tb2) {
  		tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3218, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  		RTNHOOK(1,1);
  		ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype));
  		ui4_1 = ti4_1;
  		tb2 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE, EIF_TYPED_VALUE)) RTVF(2560, "valid_index", tr1))(tr1, ui4_1x)).it_b);
  		tb1 = (EIF_BOOLEAN) !tb2;
  	}
  	Result = (EIF_BOOLEAN) tb1;
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(2);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_BOOL; r.it_b = Result; return r; }
  #undef up1
  #undef ui4_1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.is_reversed */
  EIF_TYPED_VALUE F461_4343 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_BOOL;
  	r.it_b = *(EIF_BOOLEAN *)(Current + RTWA(3219,Dtype(Current)));
  	return r;
  }
  
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.is_valid */
  EIF_TYPED_VALUE F461_4344 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "is_valid";
  	RTEX;
  	EIF_REFERENCE loc1 = (EIF_REFERENCE) 0;
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_REFERENCE tr1 = NULL;
  	EIF_NATURAL_32 tu4_1;
  	EIF_NATURAL_32 tu4_2;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN Result = ((EIF_BOOLEAN) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(3);
  	RTLR(0,loc1);
  	RTLR(1,Current);
  	RTLR(2,tr1);
  	RTLIU(3);
  	RTLU (SK_BOOL, &Result);
  	RTLU (SK_REF, &Current);
  	RTLU(SK_REF, &loc1);
  	
  	RTEAA(l_feature_name, 460, Current, 1, 0, 8538);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8538);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0x04000000, 1,0); /* Result */
  	tb1 = '\01';
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3218, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	loc1 = RTCCL(tr1);
  	loc1 = RTRV(eif_new_type(16, 0x01),loc1);
  	if (EIF_TEST(loc1)) {
  		tu4_1 = *(EIF_NATURAL_32 *)(loc1 + RTVA(202, "version", loc1));
  		tu4_2 = *(EIF_NATURAL_32 *)(Current + RTWA(3215, dtype));
  		tb1 = (EIF_BOOLEAN)(tu4_1 == tu4_2);
  	}
  	Result = (EIF_BOOLEAN) tb1;
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(2);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(3);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_BOOL; r.it_b = Result; return r; }
  #undef up1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.is_first */
  EIF_TYPED_VALUE F461_4345 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "is_first";
  	RTEX;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_BOOLEAN Result = ((EIF_BOOLEAN) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(1);
  	RTLR(0,Current);
  	RTLIU(1);
  	RTLU (SK_BOOL, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8539);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8539);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0x04000000, 1,0); /* Result */
  	tb1 = '\0';
  	ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype));
  	ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3222, dtype));
  	if ((EIF_BOOLEAN)(ti4_1 == ti4_2)) {
  		tb2 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3208, dtype))(Current)).it_b);
  		tb1 = tb2;
  	}
  	Result = (EIF_BOOLEAN) tb1;
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(2);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_BOOL; r.it_b = Result; return r; }
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.is_last */
  EIF_TYPED_VALUE F461_4346 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "is_last";
  	RTEX;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	EIF_BOOLEAN Result = ((EIF_BOOLEAN) 0);
  	
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(1);
  	RTLR(0,Current);
  	RTLIU(1);
  	RTLU (SK_BOOL, &Result);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8540);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8540);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(0, 0x04000000, 1,0); /* Result */
  	tb1 = '\0';
  	ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype));
  	ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3221, dtype));
  	if ((EIF_BOOLEAN)(ti4_1 == ti4_2)) {
  		tb2 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3208, dtype))(Current)).it_b);
  		tb1 = tb2;
  	}
  	Result = (EIF_BOOLEAN) tb1;
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(2);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  	{ EIF_TYPED_VALUE r; r.type = SK_BOOL; r.it_b = Result; return r; }
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.reverse */
  void F461_4347 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "reverse";
  	RTEX;
  	EIF_BOOLEAN tb1;
  	EIF_BOOLEAN tb2;
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(1);
  	RTLR(0,Current);
  	RTLIU(1);
  	RTLU (SK_VOID, NULL);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8541);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8541);
  	RTIV(Current, RTAL);
  	if (RTAL & CK_ENSURE) {
  		in_assertion = ~0;
  		tb2 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  		tb1 = tb2;
  		in_assertion = 0;
  	}
  	RTHOOK(1);
  	RTDBGAA(Current, dtype, 3219, 0x04000000, 1); /* is_reversed */
  	tb2 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  	*(EIF_BOOLEAN *)(Current + RTWA(3219, dtype)) = (EIF_BOOLEAN) (EIF_BOOLEAN) !tb2;
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(2);
  		RTCT("is_reversed", EX_POST);
  		tb2 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  		if ((EIF_BOOLEAN)(tb2 == (EIF_BOOLEAN) !tb1)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(3);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.set_step */
  void F461_4348 (EIF_REFERENCE Current, EIF_TYPED_VALUE arg1x)
  {
  	GTCX
  	char *l_feature_name = "set_step";
  	RTEX;
  #define arg1 arg1x.it_i4
  	EIF_INTEGER_32 ti4_1;
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	if ((arg1x.type & SK_HEAD) == SK_REF) arg1x.it_i4 = * (EIF_INTEGER_32 *) arg1x.it_r;
  	
  	RTLI(1);
  	RTLR(0,Current);
  	RTLIU(1);
  	RTLU (SK_VOID, NULL);
  	RTLU(SK_INT32,&arg1);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 1, 8542);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8542);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("v_positive", EX_PRE);
  		RTTE((EIF_BOOLEAN) (arg1 > ((EIF_INTEGER_32) 0L)), label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	RTHOOK(2);
  	RTDBGAA(Current, dtype, 3220, 0x10000000, 1); /* step */
  	*(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype)) = (EIF_INTEGER_32) arg1;
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(3);
  		RTCT("step_set", EX_POST);
  		ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		if ((EIF_BOOLEAN)(ti4_1 == arg1)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(4);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(3);
  	RTEE;
  #undef arg1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.start */
  void F461_4349 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "start";
  	RTEX;
  	EIF_REFERENCE loc1 = (EIF_REFERENCE) 0;
  	EIF_TYPED_VALUE up1x = {{0}, SK_POINTER};
  #define up1 up1x.it_p
  	EIF_REFERENCE tr1 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_BOOLEAN tb1;
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(3);
  	RTLR(0,loc1);
  	RTLR(1,Current);
  	RTLR(2,tr1);
  	RTLIU(3);
  	RTLU (SK_VOID, NULL);
  	RTLU (SK_REF, &Current);
  	RTLU(SK_REF, &loc1);
  	
  	RTEAA(l_feature_name, 460, Current, 1, 0, 8543);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8543);
  	RTIV(Current, RTAL);
  	RTHOOK(1);
  	RTDBGAL(1, 0xF80001C9, 0, 0); /* loc1 */
  	tr1 = ((up1x = (FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3218, dtype))(Current)), (((up1x.type & SK_HEAD) == SK_REF)? (EIF_REFERENCE) 0: (up1x.it_r = RTBU(up1x))), (up1x.type = SK_POINTER), up1x.it_r);
  	loc1 = (EIF_REFERENCE) RTCCL(tr1);
  	RTHOOK(2);
  	tb1 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  	if (tb1) {
  		RTHOOK(3);
  		RTDBGAA(Current, dtype, 3222, 0x10000000, 1); /* first_index */
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(2558, "upper", loc1))(loc1)).it_i4);
  		*(EIF_INTEGER_32 *)(Current + RTWA(3222, dtype)) = (EIF_INTEGER_32) ti4_1;
  		RTHOOK(4);
  		RTDBGAA(Current, dtype, 3221, 0x10000000, 1); /* last_index */
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(2557, "lower", loc1))(loc1)).it_i4);
  		*(EIF_INTEGER_32 *)(Current + RTWA(3221, dtype)) = (EIF_INTEGER_32) ti4_1;
  	} else {
  		RTHOOK(5);
  		RTDBGAA(Current, dtype, 3221, 0x10000000, 1); /* last_index */
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(2558, "upper", loc1))(loc1)).it_i4);
  		*(EIF_INTEGER_32 *)(Current + RTWA(3221, dtype)) = (EIF_INTEGER_32) ti4_1;
  		RTHOOK(6);
  		RTDBGAA(Current, dtype, 3222, 0x10000000, 1); /* first_index */
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTVF(2557, "lower", loc1))(loc1)).it_i4);
  		*(EIF_INTEGER_32 *)(Current + RTWA(3222, dtype)) = (EIF_INTEGER_32) ti4_1;
  	}
  	RTHOOK(7);
  	RTDBGAA(Current, dtype, 3223, 0x10000000, 1); /* target_index */
  	ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3222, dtype));
  	*(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype)) = (EIF_INTEGER_32) ti4_1;
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(8);
  		RTCT("cursor_index_set_to_one", EX_POST);
  		ti4_1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3198, dtype))(Current)).it_i4);
  		if ((EIF_BOOLEAN)(ti4_1 == ((EIF_INTEGER_32) 1L))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(9);
  		RTCT("target_index_set_to_first", EX_POST);
  		ti4_1 = *(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype));
  		ti4_2 = *(EIF_INTEGER_32 *)(Current + RTWA(3222, dtype));
  		if ((EIF_BOOLEAN)(ti4_1 == ti4_2)) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(10);
  		RTCT("is_first", EX_POST);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3209, dtype))(Current)).it_b);
  		if (tb1) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(11);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(3);
  	RTEE;
  #undef up1
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.forth */
  void F461_4350 (EIF_REFERENCE Current)
  {
  	GTCX
  	char *l_feature_name = "forth";
  	RTEX;
  	EIF_REFERENCE tr1 = NULL;
  	EIF_REFERENCE tr2 = NULL;
  	EIF_INTEGER_32 ti4_1;
  	EIF_INTEGER_32 ti4_2;
  	EIF_INTEGER_32 ti4_3;
  	EIF_INTEGER_32 ti4_4;
  	EIF_BOOLEAN tb1;
  	RTCDT;
  	RTSN;
  	RTDA;
  	RTLD;
  	
  	RTLI(3);
  	RTLR(0,Current);
  	RTLR(1,tr1);
  	RTLR(2,tr2);
  	RTLIU(3);
  	RTLU (SK_VOID, NULL);
  	RTLU (SK_REF, &Current);
  	
  	RTEAA(l_feature_name, 460, Current, 0, 0, 8544);
  	RTSA(dtype);
  	RTSC;
  	RTME(dtype, 0);
  	RTGC;
  	RTDBGEAA(460, Current, 8544);
  	RTIV(Current, RTAL);
  	if ((RTAL & CK_REQUIRE) || RTAC) {
  		RTHOOK(1);
  		RTCT("valid_position", EX_PRE);
  		tb1 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3146, dtype))(Current)).it_b);
  		RTTE((EIF_BOOLEAN) !tb1, label_1);
  		RTCK;
  		RTJB;
  label_1:
  		RTCF;
  	}
  body:;
  	if (RTAL & CK_ENSURE) {
  		in_assertion = ~0;
  		RTE_OT
  		ti4_2 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3198, dtype))(Current)).it_i4);
  		ti4_1 = ti4_2;
  		tr1 = NULL;
  		RTE_O
  		tr1 = RTLA;
  		RTE_OE
  		RTE_OT
  		ti4_3 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3198, dtype))(Current)).it_i4);
  		ti4_2 = ti4_3;
  		tr2 = NULL;
  		RTE_O
  		tr2 = RTLA;
  		RTE_OE
  		in_assertion = 0;
  	}
  	RTHOOK(2);
  	tb1 = *(EIF_BOOLEAN *)(Current + RTWA(3219, dtype));
  	if (tb1) {
  		RTHOOK(3);
  		RTDBGAA(Current, dtype, 3223, 0x10000000, 1); /* target_index */
  		ti4_4 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		(*(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype))) -= ti4_4;
  	} else {
  		RTHOOK(4);
  		RTDBGAA(Current, dtype, 3223, 0x10000000, 1); /* target_index */
  		ti4_4 = *(EIF_INTEGER_32 *)(Current + RTWA(3220, dtype));
  		(*(EIF_INTEGER_32 *)(Current + RTWA(3223, dtype))) += ti4_4;
  	}
  	if (RTAL & CK_ENSURE) {
  		RTHOOK(5);
  		RTCT("cursor_index_advanced", EX_POST);
  		ti4_3 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3198, dtype))(Current)).it_i4);
  		RTCO(tr2);
  		if ((EIF_BOOLEAN)(ti4_3 == (EIF_INTEGER_32) (ti4_2 + ((EIF_INTEGER_32) 1L)))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  		RTHOOK(6);
  		RTCT("cursor_index_advanced", EX_POST);
  		ti4_3 = (((FUNCTION_CAST(EIF_TYPED_VALUE, (EIF_REFERENCE)) RTWF(3198, dtype))(Current)).it_i4);
  		RTCO(tr1);
  		if ((EIF_BOOLEAN)(ti4_3 == (EIF_INTEGER_32) (ti4_1 + ((EIF_INTEGER_32) 1L)))) {
  			RTCK;
  		} else {
  			RTCF;
  		}
  	}
  	RTVI(Current, RTAL);
  	RTRS;
  	RTHOOK(7);
  	RTDBGLE;
  	RTMD(0);
  	RTLE;
  	RTLO(2);
  	RTEE;
  }
  
  /* {READABLE_INDEXABLE_ITERATION_CURSOR}.target */
  EIF_TYPED_VALUE F461_4351 (EIF_REFERENCE Current)
  {
  	EIF_TYPED_VALUE r;
  	r.type = SK_REF;
  	r.it_r = *(EIF_REFERENCE *)(Current + RTWA(3218,Dtype(Current)));
  	return r;
  }
  
  
  void EIF_Minit461 (void)
  {
  	GTCX
  }
  
  
  #ifdef __cplusplus
  }
  #endif
  