/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "short.h"


T0* r263generic_list(T263* C){
T0* R=NULL;
R=X46generic_list((C)->_mapped/*12*/);
return R;
}


T0* r263base_class(T263* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r263base_class_name(C);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r47base_class(((T47*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms46_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type((T0*)C,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
return R;
}


T0* r263base_class_name(T263* C){
T0* R=NULL;
R=X46base_class_name((C)->_mapped/*12*/);
return R;
}
/*No:TYPE_EXPANDED.start_position*/
/*No:TYPE_EXPANDED.is_formal_generic*/


void r263used_as_reference(T263* C){
/*[IF*/
if(X46is_expanded((C)->_mapped/*12*/)){
r310used_as_reference((T310*)(r263run_class(C)));
}
/*FI]*/
}


T6 r263is_a_in(T263* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r263to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r263id(T263* C){
T2 R=0;
R=((T310*)(r263run_class(C)))->_id/*4*/;
return R;
}


T6 r263is_pointer(T263* C){
T6 R=0;
R=X46is_pointer((C)->_mapped/*12*/);
return R;
}


T0* r263look_up_for(T263* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r263base_class(C)),a1,a2);
return R;
}


T0* r263to_runnable(T263* C,T0* a1){
T0* R=NULL;
T0* _m=NULL;
/*[IF*/
if(((C)->_run_type/*20*/)==((void*)(C))){
R=(T0*)C;
}
 else if(((C)->_run_type/*20*/)==((void*)((C)->_mapped/*12*/))){
R=(T0*)C;
}
else{
_m=X46to_runnable((C)->_mapped/*12*/,a1);
/*[IF*/
if((_m)==((void*)(NULL))){
r67add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms263_42042);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_run_type/*20*/)!=((void*)(NULL))){
{T263*n=malloc(sizeof(*n));
*n=M263;
r263from_other(n,(T0*)C,X46run_type(_m));
R=(T0*)n;
}
}
 else if(X46is_expanded(_m)){
C->_run_type=_m;
C->_run_time_mark=X46run_time_mark(_m);
R=(T0*)C;
}
 else if(((C)->_mapped/*12*/)==((void*)(X46run_type(_m)))){
C->_run_time_mark=r263compute_mark(X46run_time_mark(_m));
C->_run_type=(T0*)C;
R=(T0*)C;
}
else{
C->_run_time_mark=r263compute_mark(X46run_time_mark(_m));
{T263*n=malloc(sizeof(*n));
*n=M263;
r263from_other(n,(T0*)C,X46run_type(_m));
C->_run_type=(T0*)n;
}
R=(T0*)C;
}
/*FI]*/
r310set_at_run_time((T310*)(X46run_class((C)->_mapped/*12*/)));
r310set_at_run_time((T310*)(X46run_class((((T263*)R))->_run_type/*20*/)));
}
/*FI]*/
return R;
}
/*No:TYPE_EXPANDED.run_type*/


T0* r263run_class(T263* C){
T0* R=NULL;
R=r59run_class((C)->_run_type/*20*/);
return R;
}


T6 r263has_creation(T263* C,T0* a1){
T6 R=0;
R=r22has_creation((T22*)(r263base_class(C)),a1);
return R;
}


T0* r263expanded_initializer(T263* C){
T0* R=NULL;
R=r22expanded_initializer((T22*)(r263base_class(C)),(T0*)C);
return R;
}
/*No:TYPE_EXPANDED.is_like_current*/


T6 r263is_boolean(T263* C){
T6 R=0;
R=X46is_boolean((C)->_mapped/*12*/);
return R;
}


T6 r263is_generic(T263* C){
T6 R=0;
R=X46is_generic((C)->_mapped/*12*/);
return R;
}


T6 r263is_bit(T263* C){
T6 R=0;
R=X46is_bit((C)->_mapped/*12*/);
return R;
}


T6 r263is_real(T263* C){
T6 R=0;
R=X46is_real((C)->_mapped/*12*/);
return R;
}


T0* r263compute_mark(T0* a1){
T0* R=NULL;
r7copy((T7*)(oBC263tmp_written_mark),((T0*)ms12_10840));
r7extend((T7*)(oBC263tmp_written_mark),'\40');
r7append((T7*)(oBC263tmp_written_mark),a1);
R=r78item(oBC263tmp_written_mark);
return R;
}


T0* r263smallest_ancestor(T263* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_run_time_mark/*16*/)==((void*)(X46run_time_mark(a1)))){
R=(C)->_run_type/*20*/;
}
else{
R=X46run_type(X46smallest_ancestor((C)->_mapped/*12*/,a1));
}
/*FI]*/
return R;
}
/*No:TYPE_EXPANDED.is_any*/
/*No:TYPE_EXPANDED.fatal_error*/
/*No:TYPE_EXPANDED.run_time_mark*/
/*No:TYPE_EXPANDED.is_expanded*/


T6 r263is_basic_eiffel_expanded(T263* C){
T6 R=0;
/*[IF*/
if(((C)->_run_type/*20*/)==((void*)((C)->_mapped/*12*/))){
R=X46is_basic_eiffel_expanded((C)->_mapped/*12*/);
}
/*FI]*/
return R;
}


void r263short_hook(T263* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms12_10840),((T0*)ms263_7587));
X46short_hook((C)->_mapped/*12*/);
}
/*No:TYPE_EXPANDED.is_string*/


T6 r263is_integer(T263* C){
T6 R=0;
R=X46is_integer((C)->_mapped/*12*/);
return R;
}
/*No:TYPE_EXPANDED.is_like_feature*/
/*No:TYPE_EXPANDED.fz_dot*/
/*No:TYPE_EXPANDED.is_anchored*/
/*No:TYPE_EXPANDED.is_run_type*/


T6 r263is_a(T263* C,T0* a1){
T6 R=0;
R=X46is_a((C)->_mapped/*12*/,a1);
/*[IF*/
if(!(R)){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}


T6 r263is_character(T263* C){
T6 R=0;
R=X46is_character((C)->_mapped/*12*/);
return R;
}
/*No:TYPE_EXPANDED.is_reference*/


void r263from_other(T263* C,T0* a1,T0* a2){
C->_start_position=(((T263*)a1))->_start_position/*4*/;
C->_written_mark=(((T263*)a1))->_written_mark/*8*/;
C->_mapped=a2;
/*[IF*/
if(X46is_expanded((C)->_mapped/*12*/)){
C->_run_time_mark=X46run_time_mark((C)->_mapped/*12*/);
C->_run_type=(C)->_mapped/*12*/;
}
else{
C->_run_time_mark=r263compute_mark(X46run_time_mark((C)->_mapped/*12*/));
C->_run_type=(T0*)C;
}
/*FI]*/
}
/*No:TYPE_EXPANDED.mapped*/
/*No:TYPE_EXPANDED.written_mark*/
/*No:TYPE_EXPANDED.fz_expanded*/
T0*oBC263tmp_written_mark=NULL;


void r263make(T263* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_mapped=a2;
C->_written_mark=r263compute_mark(X46written_mark((C)->_mapped/*12*/));
}
/*No:TYPE_EXPANDED.is_none*/
/*No:TYPE_EXPANDED.is_array*/
/*No:TYPE_EXPANDED.fz_inako*/
/*No:TYPE_EXPANDED.is_like_argument*/


T6 r263is_double(T263* C){
T6 R=0;
R=X46is_double((C)->_mapped/*12*/);
return R;
}


void r263short(T263* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
r263short_hook(C);
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}
/*No:CALL_PREFIX_NOT.feature_name*/


void r132run_feature_match(T132* C){
r132run_feature_has_result(C);
/*[IF*/
if((X312arg_count((C)->_run_feature/*8*/))>(0)){
r67add_position(((T129*)((C)->_feature_name/*12*/))->_start_position/*8*/);
r67add_position(X312start_position((C)->_run_feature/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms128_50512);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r132runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X53to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r67add_position(X53start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms105_16515);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


T0* r132start_position(T132* C){
T0* R=NULL;
R=((T129*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


T0* r132add_comment(T132* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r132to_integer(T132* C){
T2 R=0;
T0* _rf1=NULL;
_rf1=(C)->_run_feature/*8*/;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 326: 
break;
default:
_rf1=NULL;
};/*[IF*/
if((_rf1)==((void*)(NULL))){
r132error(r132start_position(C),((T0*)ms12_45846));
}
else{
R=X53to_integer((((T326*)_rf1))->_value/*36*/);
}
/*FI]*/
return R;
}


T0* r132to_runnable(T132* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _t=NULL;
_t=r132runnable_expression((C)->_target/*4*/,a1);
_rf=r132run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*8*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r132run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T132*n=malloc(sizeof(*n));
*n=M132;
r132with(n,_t,(C)->_feature_name/*12*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r132run_feature_has_result(T132* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*8*/))==((void*)(NULL))){
r67add_position(X312start_position((C)->_run_feature/*8*/));
r67add_position(((T129*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms104_53650);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_PREFIX_NOT.fz_iinaiv*/


T0* r132run_feature_for(T132* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X46run_class(X53result_type(a1));
R=r310get_rf(((T310*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}


T0* r132result_type(T132* C){
T0* R=NULL;
R=X312result_type((C)->_run_feature/*8*/);
/*[IF*/
if(X46is_like_current(R)){
R=/*X312current_type*/((T0*)((T326*)((C)->_run_feature/*8*/))->_current_type/*4*/);
}
/*FI]*/
return R;
}
/*No:CALL_PREFIX_NOT.target*/


void r132error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:CALL_PREFIX_NOT.run_feature*/
/*No:CALL_PREFIX_NOT.precedence*/


void r132make(T132* C,T0* a1,T0* a2){
{T129*n=malloc(sizeof(*n));
*n=M129;
r129make(n,r132operator(),a1);
C->_feature_name=(T0*)n;
}
C->_target=a2;
}


void r132bracketed_short(T132* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r132short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:CALL_PREFIX_NOT.us_not*/
/*No:CALL_PREFIX_NOT.is_current*/
/*No:CALL_PREFIX_NOT.is_void*/


T0* r132operator(void){
T0* R=NULL;
R=((T0*)ms13_1029);
return R;
}


void r132short_target(T132* C){
r132bracketed_short(C);
/*[IRF3.6a_dot*/{T39* C1=(T39*)(oBC11short_print);
r39hook_or(C1,((T0*)ms39_999a),((T0*)ms12_47));
}/*]*/
}


void r132with(T132* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_run_feature=a3;
r132run_feature_match(C);
}


void r132short(T132* C){
r39a_prefix_name((T39*)(oBC11short_print),(C)->_feature_name/*12*/);
/*[IF*/
if((X53precedence((C)->_target/*4*/))<(11)){
X53bracketed_short((C)->_target/*4*/);
}
else{
X53short((C)->_target/*4*/);
}
/*FI]*/
}
/*No:CALL_PREFIX_NOT.fatal_error*/
/*No:E_CHECK.start_position*/


T0* r206add_comment(T206* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
 else {/*AT*//*[IF*/
if((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(1)){
R=(T0*)C;
}
else{
{T213*n=malloc(sizeof(*n));
*n=M213;
r213make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r206to_runnable(T206* C,T0* a1){
T0* R=NULL;
T0* _al=NULL;
/*[IF*/
if(((C)->_current_type/*8*/)==((void*)(NULL))){
C->_current_type=a1;
/*[IF*/
if(r73all_check((T73*)(oBC11run_control))){
_al=r207to_runnable((T207*)((C)->_check_invariant/*4*/),a1);
/*[IF*/
if((_al)==((void*)(NULL))){
r206error(/*(IRF4.6start_position*/(((T207*)((C)->_check_invariant/*4*/)))->_start_position/*0*//*)*/,((T0*)ms206_16485));
}
else{
C->_check_invariant=_al;
R=(T0*)C;
}
/*FI]*/
}
else{
R=(T0*)C;
}
/*FI]*/
}
else{
{T206*n=malloc(sizeof(*n));
*n=M206;
r206make(n,/*(IRF4.6start_position*/(((T207*)((C)->_check_invariant/*4*/)))->_start_position/*0*//*)*/,NULL,((T207*)((C)->_check_invariant/*4*/))->_list/*8*/);
R=(T0*)n;
}
R=r206to_runnable(((T206*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_CHECK.current_type*/


void r206error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:E_CHECK.end_mark_comment*/


void r206make(T206* C,T0* a1,T0* a2,T0* a3){
{T207*n=malloc(sizeof(*n));
*n=M207;
r207make(n,a1,a2,a3);
C->_check_invariant=(T0*)n;
}
}
/*No:E_CHECK.check_invariant*/
/*No:ORDINARY_RESULT.us_result*/
/*No:ORDINARY_RESULT.start_position*/


T0* r143add_comment(T143* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r143to_integer(T143* C){
T2 R=0;
r143error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}


T0* r143to_runnable(T143* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
T0* _rf=NULL;
_rf=r59top_rf((T59*)(oBC11small_eiffel));
_rt=X312result_type(_rf);
/*[IF*/
if(((C)->_run_feature/*8*/)==((void*)(NULL))){
C->_run_feature=_rf;
R=(T0*)C;
}
else{
{T143*n=malloc(sizeof(*n));
*n=M143;
/*[IRF3.3make*/((((T143*)(n)))->_start_position)=((C)->_start_position/*4*/);
/*]*/
R=(T0*)n;
}
R=r143to_runnable(((T143*)R),a1);
}
/*FI]*/
return R;
}
/*No:ORDINARY_RESULT.fz_iinaiv*/


T0* r143result_type(T143* C){
T0* R=NULL;
R=X312result_type((C)->_run_feature/*8*/);
return R;
}


void r143error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:ORDINARY_RESULT.run_feature*/
/*No:ORDINARY_RESULT.precedence*/
/*No:ORDINARY_RESULT.make*/
/*No:ORDINARY_RESULT.bracketed_short*/
/*No:ORDINARY_RESULT.is_current*/
/*No:ORDINARY_RESULT.is_void*/
/*No:ORDINARY_RESULT.short_target*/
/*No:ORDINARY_RESULT.short*/
/*No:ORDINARY_RESULT.atomic_precedence*/


T0* r166twin(T166* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T166*)R)=*C;
return R;
}


T0* r166type(T166* C,T2 a1){
T0* R=NULL;
R=((T171*)(/*(IRF4.6name*/r173item(((T173*)((C)->_flat_list/*8*/)),a1)/*)*/))->_result_type/*12*/;
return R;
}


void r166add_last(T166* C,T0* a1){
T0* _n2=NULL;
T2 _i=0;
_i=1;
while (!((r173item((T173*)((C)->_flat_list/*8*/),_i))==((void*)(NULL)))) {
_n2=r173item((T173*)((C)->_flat_list/*8*/),_i);
/*[IF*/
if(((((T171*)_n2))->_to_string/*8*/)==((void*)((((T171*)a1))->_to_string/*8*/))){
r67add_position((((T171*)a1))->_start_position/*4*/);
r67add_position((((T171*)_n2))->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms167_36984);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IRF3.6put*/{T173* C1=(T173*)((C)->_flat_list/*8*/);
T0* b1=a1;
T2 b2=_i;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
/*[IRF3.3set_rank*/((((T171*)(((T171*)a1))))->_rank)=(_i);
/*]*/
}
/*No:LOCAL_VAR_LIST.em1*/


T2 r166rank_of(T166* C,T0* a1){
T2 R=0;
R=/*(IRF4.6count*/(((T173*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/;
while (!(((R)==(0))||((a1)==((void*)(((T171*)(/*(IRF4.6name*/r173item(((T173*)((C)->_flat_list/*8*/)),R)/*)*/))->_to_string/*8*/))))) {
R=(R)-(1);
}
return R;
}


void r166dynamic_runnable(T166* C,T0* a1){
T0* _n2=NULL;
T0* _n1=NULL;
T2 _i=0;
C->_flat_list=r173twin((T173*)((C)->_flat_list/*8*/));
_i=((T173*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
_n1=r173item((T173*)((C)->_flat_list/*8*/),_i);
_n2=r171to_runnable(((T171*)_n1),a1);
/*[IF*/
if((_n2)==((void*)(NULL))){
r166error((((T171*)_n1))->_start_position/*4*/,((T0*)ms167_18336));
}
else{
/*[IRF3.6put*/{T173* C1=(T173*)((C)->_flat_list/*8*/);
T0* b1=_n2;
T2 b2=_i;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


T0* r166to_runnable(T166* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r166is_runnable(C,a1)){
R=(T0*)C;
}
else{
R=r166twin(C);
r166dynamic_runnable(((T166*)R),a1);
r166check_name_clash(((T166*)R),a1);
}
/*FI]*/
return R;
}


T6 r166is_runnable(T166* C,T0* a1){
T6 R=0;
T0* _t=NULL;
T0* _n2=NULL;
T0* _n1=NULL;
T2 _i=0;
R=1;
_i=((T173*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((!(R))||((_i)==(0)))) {
_t=r166type(C,_i);
/*[IF*/
if(X46is_run_type(_t)){
/*[IF*/
if((X46run_type(_t))!=((void*)(_t))){
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(R){
_i=((T173*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
_n1=r173item((T173*)((C)->_flat_list/*8*/),_i);
_n2=r171to_runnable(((T171*)_n1),a1);
/*[IF*/
if((_n2)==((void*)(NULL))){
r166error((((T171*)_n1))->_start_position/*4*/,((T0*)ms167_18336));
_i=0;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
r166check_name_clash(C,a1);
}
/*FI]*/
return R;
}
/*No:LOCAL_VAR_LIST.count*/


void r166error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:LOCAL_VAR_LIST.make*/


void r166declaration_list_make(T166* C,T0* a1){
T2 _actual_count=0;
T2 _il=0;
C->_list=a1;
_il=((T294*)((C)->_list/*4*/))->_upper/*8*/;
while (!((_il)==(0))) {
_actual_count=(_actual_count)+(X293count(r294item((T294*)((C)->_list/*4*/),_il)));
_il=(_il)-(1);
}
{T173*n=malloc(sizeof(*n));
*n=M173;
r173make(n,1,_actual_count);
C->_flat_list=(T0*)n;
}
_il=1;
while (!((_il)>(((T294*)((C)->_list/*4*/))->_upper/*8*/))) {
X293append_in(r294item((T294*)((C)->_list/*4*/),_il),(T0*)C);
_il=(_il)+(1);
}
}
/*No:LOCAL_VAR_LIST.name*/


void r166check_name_clash(T166* C,T0* a1){
T2 _i=0;
_i=((T173*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
/*[IRF3.6name_clash*/{T171* C1=(T171*)(/*(IRF4.6name*/r173item(((T173*)((C)->_flat_list/*8*/)),_i)/*)*/);
T0* b1=a1;
r171name_clash_for(C1,b1,((T0*)ms171_107113));
}/*]*/
_i=(_i)-(1);
}
}
/*No:LOCAL_VAR_LIST.flat_list*/
/*No:LOCAL_VAR_LIST.list*/
/*No:LOCAL_VAR_LIST.fatal_error*/


T0* r257generic_list(T257* C){
T0* R=NULL;
r257fatal_error_generic_list(C);
return R;
}


T0* r257base_class(T257* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r47base_class(((T47*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms46_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type((T0*)C,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
return R;
}
/*No:TYPE_NONE.base_class_name*/
/*No:TYPE_NONE.start_position*/
/*No:TYPE_NONE.is_formal_generic*/
/*No:TYPE_NONE.used_as_reference*/


T6 r257is_a_in(T257* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r257written_mark())==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_NONE.id*/
/*No:TYPE_NONE.is_pointer*/


T0* r257look_up_for(T257* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r257base_class(C)),a1,a2);
return R;
}
/*No:TYPE_NONE.to_runnable*/
/*No:TYPE_NONE.run_type*/
/*No:TYPE_NONE.run_class*/
/*No:TYPE_NONE.us_none*/


T6 r257has_creation(T257* C,T0* a1){
T6 R=0;
r67add_position(X77start_position(a1));
r257error(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms257_29715));
return R;
}
/*No:TYPE_NONE.expanded_initializer*/
/*No:TYPE_NONE.is_like_current*/
/*No:TYPE_NONE.is_boolean*/
/*No:TYPE_NONE.is_generic*/
/*No:TYPE_NONE.is_bit*/
/*No:TYPE_NONE.is_real*/


T0* r257smallest_ancestor(T0* a1){
T0* R=NULL;
R=a1;
return R;
}
/*No:TYPE_NONE.is_any*/


T0* r257run_time_mark(void){
T0* R=NULL;
R=((T0*)ms13_1256);
return R;
}
/*No:TYPE_NONE.is_expanded*/
/*No:TYPE_NONE.is_basic_eiffel_expanded*/
/*No:TYPE_NONE.short_hook*/
/*No:TYPE_NONE.is_string*/
/*No:TYPE_NONE.is_integer*/
/*No:TYPE_NONE.is_like_feature*/
/*No:TYPE_NONE.fz_dot*/
/*No:TYPE_NONE.is_anchored*/
/*No:TYPE_NONE.is_run_type*/
/*No:TYPE_NONE.is_a*/
/*No:TYPE_NONE.is_character*/
/*No:TYPE_NONE.is_reference*/


T0* r257written_mark(void){
T0* R=NULL;
R=((T0*)ms13_1256);
return R;
}


void r257error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}


void r257make(T257* C,T0* a1){
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_1256),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_NONE.is_none*/
/*No:TYPE_NONE.is_array*/


void r257fatal_error_generic_list(T257* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_NONE.is_like_argument*/
/*No:TYPE_NONE.is_double*/


void r257short(T257* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
/*[IRF3.6short_hook*/{T257* C1=C;
r39a_class_name((T39*)(oBC11short_print),(C1)->_base_class_name/*4*/);
}/*]*/
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}
/*No:CALL_INFIX_OR_ELSE.feature_name*/


T0* r108start_position(T108* C){
T0* R=NULL;
R=((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


T0* r108add_comment(T108* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r108to_integer(T108* C){
T2 R=0;
r108error(r108start_position(C),((T0*)ms12_45846));
return R;
}
/*No:CALL_INFIX_OR_ELSE.us_or_else*/


T0* r108to_runnable(T108* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _tbee=NULL;
T0* _at=NULL;
T0* _tt=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r108runnable_expression((C)->_target/*4*/,a1);
_a=r108runnable_args((C)->_arguments/*8*/,a1);
_tt=X53result_type(_t);
_at=X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
_rf=r108run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r108run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T108*n=malloc(sizeof(*n));
*n=M108;
r108with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR_ELSE.fz_bad_argument*/
/*No:CALL_INFIX_OR_ELSE.fz_iinaiv*/


T0* r108result_type(T108* C){
T0* R=NULL;
T0* _tla=NULL;
R=X312result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X46is_like_current(R)){
R=/*X312current_type*/((T0*)((T326*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 246: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X46run_type(X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR_ELSE.run_feature*/


T0* r108runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r136to_runnable(((T136*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r67add_position(r136start_position(((T136*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r108bracketed_short(T108* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r108short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


void r108with(T108* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r108run_feature_match(C,a5);
}
/*No:CALL_INFIX_OR_ELSE.fatal_error*/


void r108run_feature_match(T108* C,T0* a1){
r108run_feature_has_result(C);
r136match_with((T136*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_OR_ELSE.arguments*/


T0* r108runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X53to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r67add_position(X53start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms105_16515);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR_ELSE.implicit_cast*/
/*No:CALL_INFIX_OR_ELSE.arg1*/


void r108run_feature_has_result(T108* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r67add_position(X312start_position((C)->_run_feature/*16*/));
r67add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms104_53650);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r108run_feature_for(T108* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X46run_class(X53result_type(a1));
R=r310get_rf(((T310*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_OR_ELSE.target*/


void r108error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:CALL_INFIX_OR_ELSE.precedence*/


void r108make(T108* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,r108operator(),a2);
C->_feature_name=(T0*)n;
}
{T136*n=malloc(sizeof(*n));
*n=M136;
/*[IRF3.3make_1*/((((T136*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_OR_ELSE.is_current*/
/*No:CALL_INFIX_OR_ELSE.short_print_feature_name*/
/*No:CALL_INFIX_OR_ELSE.is_void*/


T0* r108operator(void){
T0* R=NULL;
R=((T0*)ms13_8316);
return R;
}


void r108short_target(T108* C){
r108bracketed_short(C);
/*[IRF3.6a_dot*/{T39* C1=(T39*)(oBC11short_print);
r39hook_or(C1,((T0*)ms39_999a),((T0*)ms12_47));
}/*]*/
}


void r108short(T108* C){
/*[IF*/
if((X53precedence((C)->_target/*4*/))==(13)){
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T108* C1=C;
r39a_infix_name((T39*)(oBC11short_print),((T0*)ms102_7338),((T0*)ms102_33a),((T0*)ms102_7332),((T0*)ms102_33),(C1)->_feature_name/*12*/);
}/*]*/
/*[IF*/
if((X53precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))==(13)){
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((4)>=(X53precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X53bracketed_short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
else{
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
 else if((X53precedence((C)->_target/*4*/))<(4)){
X53bracketed_short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T108* C1=C;
r39a_infix_name((T39*)(oBC11short_print),((T0*)ms102_7338),((T0*)ms102_33a),((T0*)ms102_7332),((T0*)ms102_33),(C1)->_feature_name/*12*/);
}/*]*/
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
else{
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T108* C1=C;
r39a_infix_name((T39*)(oBC11short_print),((T0*)ms102_7338),((T0*)ms102_33a),((T0*)ms102_7332),((T0*)ms102_33),(C1)->_feature_name/*12*/);
}/*]*/
X53short(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
/*No:CALL_INFIX_OR_ELSE.atomic_precedence*/


T0* r277run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r315clear((T315*)(oBC87require_collector));
_ct=/*X312current_type*/((T0*)(((T326*)a1))->_current_type/*4*/);
r22collect_for((T22*)(X46base_class(_ct)),1,/*X312name*/((T0*)(((T326*)a1))->_name/*16*/));
/*[IF*/
if(!(r315empty((T315*)(oBC87require_collector)))){
_i=1;
while (!((_i)>(((T315*)(oBC87require_collector))->_upper/*8*/))) {
_er=r315item((T315*)(oBC87require_collector),_i);
_hc=(((T272*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T272*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r277runnable((((T272*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T272*n=malloc(sizeof(*n));
*n=M272;
r272make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T272*)(((T272*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma315(1,
_er);
}
else{
r315add_last(((T315*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T314*n=malloc(sizeof(*n));
*n=M314;
/*[IRF3.3make*/((((T314*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.base_class*/


void r277set_rescue_compound(T277* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
r67add_position(r204start_position(((T204*)a1)));
}
else{
r67add_position(r277start_position(C));
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms275_126759);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67print_as_fatal_error((T67*)(oBC11eh));
}


T0* r277start_position(T277* C){
T0* R=NULL;
R=X77start_position(/*(IRF4.6first_name*/r79item(((T79*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r277is_merge_with(T277* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(X87result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*48*/)==((void*)(NULL)))||((X87result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X87arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X87arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T179*)(((T175*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T179*)(((T175*)(X87arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
R=X46is_a_in((C)->_result_type/*48*/,X87result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r175is_a_in((T175*)((C)->_arguments/*20*/),X87arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
R=X46is_a_in(X87result_type(a1),(C)->_result_type/*48*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r175is_a_in((T175*)(X87arguments(a1)),(C)->_arguments/*20*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r277merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r277runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r50empty(((T50*)a1)))){
R=r50twin(((T50*)a1));
_i=(((T50*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r59push((T59*)(oBC11small_eiffel),a3);
_a=r49to_runnable((T49*)(r50item(((T50*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r277error(r49start_position((T49*)(r50item(((T50*)R),_i))),((T0*)ms12_14266));
}
else{
/*[IRF3.6put*/{T50* C1=((T50*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r59pop((T59*)(oBC11small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.first_name*/
/*No:EXTERNAL_FUNCTION.em1*/
/*No:EXTERNAL_FUNCTION.header_comment*/
/*No:EXTERNAL_FUNCTION.names*/
/*No:EXTERNAL_FUNCTION.fz_03*/


void r277make_external_routine(T277* C,T0* a1,T0* a2){
C->_native=a1;
C->_alias_string=a2;
}
/*No:EXTERNAL_FUNCTION.result_type*/
/*No:EXTERNAL_FUNCTION.code_require*/
/*No:EXTERNAL_FUNCTION.make_e_feature*/


void r277add_into(T277* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r69base_class((T69*)(X77start_position(r79item((T79*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r79count((T79*)((C)->_names/*8*/))))) {
_fn=r79item((T79*)((C)->_names/*8*/),_i);
/*[IF*/
if(r86has(((T86*)a1),X77to_key(_fn))){
_fn=/*X87first_name*/((T0*)/*(IRF4.6first_name*/r79item(((T79*)(((T187*)(r86at(((T86*)a1),X77to_key(_fn))))->_names/*8*/)),1)/*)*/);
r67add_position(X77start_position(_fn));
r67add_position(X77start_position(r79item((T79*)((C)->_names/*8*/),_i)));
r67error((T67*)(oBC11eh),((T0*)ms87_41905));
/*[IRF3.6append*/{T0* b1=X77to_string(_fn);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67error((T67*)(oBC11eh),((T0*)ms12_47));
}
else{
r86put(((T86*)a1),(T0*)C,X77to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r277can_hide(T277* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(X87result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*48*/)==((void*)(NULL)))||((X87result_type(a1))==((void*)(NULL)))){
r67add_position(X87start_position(a1));
r277error(r277start_position(C),((T0*)ms87_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X87arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X87arguments(a1))==((void*)(NULL)))){
r67add_position(X87start_position(a1));
r277error(r277start_position(C),((T0*)ms87_83182));
}
 else if((/*(IRF4.6count*/(((T179*)(((T175*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T179*)(((T175*)(X87arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r67add_position(X87start_position(a1));
r277error(r277start_position(C),((T0*)ms87_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
/*[IF*/
if(!(X46is_a_in((C)->_result_type/*48*/,X87result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms87_54285);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X46run_time_mark((((T310*)a2))->_current_type/*0*/);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67error((T67*)(oBC11eh),((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(r175is_a_in((T175*)((C)->_arguments/*20*/),X87arguments(a1),a2))){
r67add_position(X87start_position(a1));
r67add_position(r277start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms87_54285);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X46run_time_mark((((T310*)a2))->_current_type/*0*/);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67error((T67*)(oBC11eh),((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r277merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.ensure_assertion*/


T0* r277run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r50clear((T50*)(oBC87assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T332*)((T332*)(oBC87header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X312current_type*/((T0*)(((T326*)a1))->_current_type/*4*/);
r22collect_for((T22*)(X46base_class(_ct)),2,/*X312name*/((T0*)(((T326*)a1))->_name/*16*/));
_r=r277runnable(oBC87assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T203*n=malloc(sizeof(*n));
*n=M203;
r203make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T203*)(((T203*)R))))->_header_comment)=(((T332*)(oBC87header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T332*)((T332*)(oBC87header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r277check_obsolete(T277* C){
/*[IF*/
if(!(((T59*)(oBC11small_eiffel))->_short_flag/*0*/)){
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms202_39396);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T158*)((C)->_obsolete_mark/*24*/))->_to_string/*8*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r277warning(r277start_position(C),((T0*)ms12_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r277try_to_undefine(T277* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r67add_position(X77start_position(a1));
_fn2=r79feature_name((T79*)((C)->_names/*8*/),X77to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X77undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r277try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X270set_clients*//*[IRF3.3set_clients*/((((T273*)(((T273*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r277merge_header_comments(C,R);
}
else{
r22fatal_undefine(((T22*)a2),a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.is_deferred*/
/*No:EXTERNAL_FUNCTION.set_clients*/
/*No:EXTERNAL_FUNCTION.native*/
/*No:EXTERNAL_FUNCTION.code_ensure*/
/*No:EXTERNAL_FUNCTION.nb_errors*/


void r277make_routine(T277* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
/*[IRF3.3make_e_feature*/((((T277*)(C)))->_names)=(a1);
/*]*/
C->_header_comment=a4;
C->_arguments=a2;
C->_obsolete_mark=a3;
C->_require_assertion=a5;
}


T0* r277to_run_feature(T277* C,T0* a1,T0* a2){
T0* R=NULL;
r277check_obsolete(C);
{T325*n=malloc(sizeof(*n));
*n=M325;
r325make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r277merge_header_comments(T277* C,T0* a1){
/*[IF*/
if(((T59*)(oBC11small_eiffel))->_short_flag/*0*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X87header_comment*/((T0*)(((T187*)a1))->_header_comment/*12*/);
}
 else if((/*X87header_comment*/((T0*)(((T187*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X87set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.arguments*/
/*No:EXTERNAL_FUNCTION.require_assertion*/


void r277warning(T0* a1,T0* a2){
r67add_position(a1);
r67warning((T67*)(oBC11eh),a2);
}


T0* r277try_to_undefine_aux(T277* C,T0* a1,T0* a2){
T0* R=NULL;
{T273*n=malloc(sizeof(*n));
*n=M273;
r273from_effective(n,a1,(C)->_arguments/*20*/,(C)->_result_type/*48*/,(C)->_require_assertion/*28*/,(C)->_ensure_assertion/*32*/,a2);
R=(T0*)n;
}
return R;
}
/*No:EXTERNAL_FUNCTION.set_ensure_assertion*/
/*No:EXTERNAL_FUNCTION.fz_bad_assertion*/
/*No:EXTERNAL_FUNCTION.fz_dot*/
/*No:EXTERNAL_FUNCTION.alias_string*/


void r277error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}


void r277make(T277* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7,T0* a8){
r277make_routine(C,a1,a2,a4,a5,a6);
C->_result_type=a3;
r277make_external_routine(C,a7,a8);
}
/*No:EXTERNAL_FUNCTION.end_comment*/


void r277collect_for(T277* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*28*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r315fast_has((T315*)(oBC87require_collector),_er))){
r315add_last((T315*)(oBC87require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T332*)((T332*)(oBC87header_comment_memory))))->_item)=(((T203*)((C)->_ensure_assertion/*32*/))->_header_comment/*4*/);
/*]*/
r203add_into((T203*)((C)->_ensure_assertion/*32*/),oBC87assertion_collector);
}
/*FI]*/
}
/*FI]*/
}


void r277set_header_comment(T277* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.clients*/
/*No:EXTERNAL_FUNCTION.obsolete_mark*/
/*No:CREATION_CALL_3.start_position*/


T0* r240add_comment(T240* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T213*n=malloc(sizeof(*n));
*n=M213;
r213make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r240check_created_type(T240* C,T0* a1){
T0* _rt=NULL;
_rt=X46run_type(a1);
/*[IF*/
if(((T59*)(oBC11small_eiffel))->_short_flag/*0*/){
}
 else if(((T22*)(X46base_class(_rt)))->_is_deferred/*16*/){
r67add_type(_rt,((T0*)ms237_11858));
r240warning((C)->_start_position/*4*/,((T0*)ms237_30996));
}
/*FI]*/
/*[IF*/
if(X46is_formal_generic(a1)){
r67add_position((C)->_start_position/*4*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms237_77140);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(a1,((T0*)ms237_180));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
r310set_at_run_time((T310*)(X46run_class(_rt)));
}


T0* r240to_runnable(T240* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
r240check_writable(C,a1);
_t=X53result_type((C)->_writable/*8*/);
r240check_created_type(C,_t);
r240check_creation_clause(C,_t);
R=(T0*)C;
}
else{
{T240*n=malloc(sizeof(*n));
*n=M240;
r240make(n,(C)->_start_position/*4*/,(C)->_writable/*8*/,(C)->_call/*20*/);
R=(T0*)n;
}
R=r240to_runnable(((T240*)R),a1);
}
/*FI]*/
return R;
}


void r240warning(T0* a1,T0* a2){
r67add_position(a1);
r67warning((T67*)(oBC11eh),a2);
}
/*No:CREATION_CALL_3.current_type*/
/*No:CREATION_CALL_3.writable*/
/*No:CREATION_CALL_3.fz_03*/
/*No:CREATION_CALL_3.fz_dot*/
/*No:CREATION_CALL_3.call*/


void r240error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:CREATION_CALL_3.run_feature*/
/*No:CREATION_CALL_3.end_mark_comment*/


void r240make(T240* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_writable=a2;
C->_call=a3;
}


void r240cp_not_found(T240* C,T0* a1){
r67add_position(X77start_position(/*X149feature_name*/((T0*)((T152*)((C)->_call/*20*/))->_feature_name/*8*/)));
r67add_position(X77start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms241_53476);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}


void r240check_writable(T240* C,T0* a1){
T0* _w=NULL;
C->_current_type=a1;
_w=X53to_runnable((C)->_writable/*8*/,a1);
/*[IF*/
if((_w)==((void*)(NULL))){
r67add_position(X53start_position((C)->_writable/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms237_64251);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
else{
C->_writable=_w;
}
/*FI]*/
}


void r240check_creation_clause(T240* C,T0* a1){
T0* _args=NULL;
T0* _top=NULL;
T0* _bottom=NULL;
T0* _fn=NULL;
T0* _ct=NULL;
_fn=/*X149feature_name*/((T0*)((T152*)((C)->_call/*20*/))->_feature_name/*8*/);
_top=r69base_class((T69*)(X77start_position(_fn)));
_bottom=X46base_class(a1);
/*[IF*/
if(X46is_like_current(a1)){
_fn=r22new_name_of(((T22*)_bottom),_top,_fn);
/*[IF*/
if((_fn)==((void*)(NULL))){
_fn=/*X149feature_name*/((T0*)((T152*)((C)->_call/*20*/))->_feature_name/*8*/);
r67add_position(X77start_position(_fn));
/*[IRF3.6append*/{T0* b1=((T0*)ms12_7398);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X77to_string(_fn);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms241_25652);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X46run_time_mark(a1);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_166);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
C->_run_feature=r310get_feature((T310*)(X46run_class(a1)),_fn);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
r240cp_not_found(C,_fn);
}
/*FI]*/
/*[IF*/
if(((T59*)(oBC11small_eiffel))->_short_flag/*0*/){
}
 else if(!(X46has_creation(a1,_fn))){
r67add_position(X77start_position(/*X149feature_name*/((T0*)((T152*)((C)->_call/*20*/))->_feature_name/*8*/)));
r67add_position(X77start_position(_fn));
/*[IRF3.6append*/{T0* b1=X77to_string(_fn);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms241_45856);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(a1,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
X312add_client((C)->_run_feature/*16*/,X46run_class((C)->_current_type/*12*/));
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))!=((void*)(NULL))){
r67add_position(X312start_position((C)->_run_feature/*16*/));
r67add_position(X77start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms241_67122);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((r240arg_count(C))==(0))&&((X312arguments((C)->_run_feature/*16*/))!=((void*)(NULL)))){
r67add_position(X312start_position((C)->_run_feature/*16*/));
r67add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms241_63744);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if((r240arg_count(C))>(0)){
_ct=/*X312current_type*/((T0*)((T326*)(r59top_rf((T59*)(oBC11small_eiffel))))->_current_type/*4*/);
_args=r136to_runnable((T136*)(X149arguments((C)->_call/*20*/)),_ct);
/*[IF*/
if((_args)==((void*)(NULL))){
r240error(r136start_position((T136*)(X149arguments((C)->_call/*20*/))),((T0*)ms12_14714));
}
else{
r136match_with(((T136*)_args),(C)->_run_feature/*16*/,_ct);
}
/*FI]*/
}
/*FI]*/
C->_call=X149make_runnable((C)->_call/*20*/,(C)->_writable/*8*/,_args,(C)->_run_feature/*16*/);
}
/*No:CREATION_CALL_3.fz_bad_arguments*/
/*No:CREATION_CALL_3.fz_09*/


T2 r240arg_count(T240* C){
T2 R=0;
/*[IF*/
if(((C)->_call/*20*/)!=((void*)(NULL))){
R=X149arg_count((C)->_call/*20*/);
}
/*FI]*/
return R;
}
/*No:CREATION_CALL_3.fatal_error*/
/*No:CALL_INFIX_AND_THEN.feature_name*/


T0* r110start_position(T110* C){
T0* R=NULL;
R=((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


T0* r110add_comment(T110* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r34count(((T34*)((((T52*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r110to_integer(T110* C){
T2 R=0;
r110error(r110start_position(C),((T0*)ms12_45846));
return R;
}


T0* r110to_runnable(T110* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _tbee=NULL;
T0* _at=NULL;
T0* _tt=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r110runnable_expression((C)->_target/*4*/,a1);
_a=r110runnable_args((C)->_arguments/*8*/,a1);
_tt=X53result_type(_t);
_at=X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
_rf=r110run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r110run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T110*n=malloc(sizeof(*n));
*n=M110;
r110with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_AND_THEN.fz_bad_argument*/
/*No:CALL_INFIX_AND_THEN.fz_iinaiv*/


T0* r110result_type(T110* C){
T0* R=NULL;
T0* _tla=NULL;
R=X312result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X46is_like_current(R)){
R=/*X312current_type*/((T0*)((T326*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 246: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X46run_type(X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_AND_THEN.run_feature*/


T0* r110runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r136to_runnable(((T136*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r67add_position(r136start_position(((T136*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r110bracketed_short(T110* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r110short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


void r110with(T110* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r110run_feature_match(C,a5);
}
/*No:CALL_INFIX_AND_THEN.fatal_error*/


void r110run_feature_match(T110* C,T0* a1){
r110run_feature_has_result(C);
r136match_with((T136*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_AND_THEN.arguments*/

