/*
-- 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"
/*No:CREATION_CALL_1.start_position*/


T0* r235add_comment(T235* 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 r235check_created_type(T235* 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));
r235warning((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* r235to_runnable(T235* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
r235check_writable(C,a1);
_t=X53result_type((C)->_writable/*8*/);
r235check_created_type(C,_t);
r235check_creation_clause(C,_t);
R=(T0*)C;
}
else{
{T235*n=malloc(sizeof(*n));
*n=M235;
r235make(n,(C)->_start_position/*4*/,(C)->_writable/*8*/);
R=(T0*)n;
}
R=r235to_runnable(((T235*)R),a1);
}
/*FI]*/
return R;
}


void r235warning(T0* a1,T0* a2){
r67add_position(a1);
r67warning((T67*)(oBC11eh),a2);
}
/*No:CREATION_CALL_1.current_type*/
/*No:CREATION_CALL_1.writable*/


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


void r235make(T235* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_writable=a2;
}


void r235check_writable(T235* 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 r235check_creation_clause(T235* C,T0* a1){
/*[IF*/
if(/*(IRF4.7has_creation_clause*/(((T22*)(X46base_class(a1)))->_creation_clause_list/*44*/)!=(NULL)/*)*/){
/*[IRF3.6append*/{T0* b1=((T0*)ms236_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(a1,((T0*)ms236_162));
r235error((C)->_start_position/*4*/,((T0*)ms236_46305));
}
/*FI]*/
}
/*No:CREATION_CALL_1.fatal_error*/


T0* r229to_runnable_integer(T229* C,T0* a1){
T0* R=NULL;
T0* _v=NULL;
T0* _ct=NULL;
/*[IF*/
if(((C)->_e_when/*4*/)==((void*)(NULL))){
C->_e_when=a1;
_ct=/*X312current_type*/((T0*)((T326*)(r59top_rf((T59*)(oBC11small_eiffel))))->_current_type/*4*/);
_v=X53to_runnable((C)->_lower/*12*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X46is_integer(X53result_type(_v)))){
C->_lower=_v;
C->_lower_value=X53to_integer((C)->_lower/*12*/);
}
else{
r229error(X53start_position((C)->_lower/*12*/),((T0*)ms12_21798));
}
/*FI]*/
_v=X53to_runnable((C)->_upper/*8*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X46is_integer(X53result_type(_v)))){
C->_upper=_v;
C->_upper_value=X53to_integer((C)->_upper/*8*/);
}
else{
r229error(X53start_position((C)->_upper/*8*/),((T0*)ms12_21798));
}
/*FI]*/
r221add_when_item_2((T221*)((C)->_e_when/*4*/),(T0*)C);
R=(T0*)C;
}
else{
{T229*n=malloc(sizeof(*n));
*n=M229;
r229make(n,(C)->_lower/*12*/,(C)->_upper/*8*/);
R=(T0*)n;
}
R=r229to_runnable_integer(((T229*)R),a1);
}
/*FI]*/
return R;
}


T0* r229start_position(T229* C){
T0* R=NULL;
R=X53start_position((C)->_lower/*12*/);
return R;
}


T0* r229twin(T229* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T229*)R)=*C;
return R;
}
/*No:WHEN_ITEM_2.lower_value*/
/*No:WHEN_ITEM_2.fz_bcv*/
/*No:WHEN_ITEM_2.lower*/


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


void r229make(T229* C,T0* a1,T0* a2){
C->_lower=a1;
C->_upper=a2;
}
/*No:WHEN_ITEM_2.e_when*/
/*No:WHEN_ITEM_2.upper_value*/
/*No:WHEN_ITEM_2.upper*/
/*No:WHEN_ITEM_2.clear_e_when*/
/*No:WHEN_ITEM_2.fz_biv*/


T0* r229to_runnable_character(T229* C,T0* a1){
T0* R=NULL;
T0* _v=NULL;
T0* _ct=NULL;
/*[IF*/
if(((C)->_e_when/*4*/)==((void*)(NULL))){
C->_e_when=a1;
_ct=/*X312current_type*/((T0*)((T326*)(r59top_rf((T59*)(oBC11small_eiffel))))->_current_type/*4*/);
_v=X53to_runnable((C)->_lower/*12*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X46is_character(X53result_type(_v)))){
C->_lower=_v;
C->_lower_value=X53to_integer((C)->_lower/*12*/);
}
else{
r229error(X53start_position((C)->_lower/*12*/),((T0*)ms12_25940));
}
/*FI]*/
_v=X53to_runnable((C)->_upper/*8*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X46is_character(X53result_type(_v)))){
C->_upper=_v;
C->_upper_value=X53to_integer((C)->_upper/*8*/);
}
else{
r229error(X53start_position((C)->_upper/*8*/),((T0*)ms12_25940));
}
/*FI]*/
r221add_when_item_2((T221*)((C)->_e_when/*4*/),(T0*)C);
R=(T0*)C;
}
else{
{T229*n=malloc(sizeof(*n));
*n=M229;
r229make(n,(C)->_lower/*12*/,(C)->_upper/*8*/);
R=(T0*)n;
}
R=r229to_runnable_character(((T229*)R),a1);
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_LE.feature_name*/


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


T0* r114add_comment(T114* 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 r114to_integer(T114* C){
T2 R=0;
r114error(r114start_position(C),((T0*)ms12_45846));
return R;
}


T0* r114to_runnable(T114* 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=r114runnable_expression((C)->_target/*4*/,a1);
_a=r114runnable_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=r114run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r114run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T114*n=malloc(sizeof(*n));
*n=M114;
r114with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_LE.fz_bad_argument*/
/*No:CALL_INFIX_LE.fz_iinaiv*/


T0* r114result_type(T114* 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_LE.run_feature*/


T0* r114runnable_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 r114bracketed_short(T114* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r114short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:CALL_INFIX_LE.us_le*/


void r114with(T114* 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;
r114run_feature_match(C,a5);
}
/*No:CALL_INFIX_LE.fatal_error*/


void r114run_feature_match(T114* C,T0* a1){
r114run_feature_has_result(C);
r136match_with((T136*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_LE.arguments*/


T0* r114runnable_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_LE.implicit_cast*/
/*No:CALL_INFIX_LE.arg1*/


void r114run_feature_has_result(T114* 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* r114run_feature_for(T114* 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_LE.target*/


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


void r114make(T114* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,r114operator(),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_LE.is_current*/
/*No:CALL_INFIX_LE.short_print_feature_name*/
/*No:CALL_INFIX_LE.is_void*/


T0* r114operator(void){
T0* R=NULL;
R=((T0*)ms13_248);
return R;
}


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


void r114short(T114* C){
/*[IF*/
if((X53precedence((C)->_target/*4*/))==(13)){
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T114* 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((6)>=(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*/))<(6)){
X53bracketed_short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T114* 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*/{T114* 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_LE.atomic_precedence*/
/*No:CALL_INFIX_GE.feature_name*/


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


T0* r112add_comment(T112* 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 r112to_integer(T112* C){
T2 R=0;
r112error(r112start_position(C),((T0*)ms12_45846));
return R;
}


T0* r112to_runnable(T112* 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=r112runnable_expression((C)->_target/*4*/,a1);
_a=r112runnable_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=r112run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r112run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T112*n=malloc(sizeof(*n));
*n=M112;
r112with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_GE.us_ge*/
/*No:CALL_INFIX_GE.fz_bad_argument*/
/*No:CALL_INFIX_GE.fz_iinaiv*/


T0* r112result_type(T112* 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_GE.run_feature*/


T0* r112runnable_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 r112bracketed_short(T112* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r112short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


void r112with(T112* 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;
r112run_feature_match(C,a5);
}
/*No:CALL_INFIX_GE.fatal_error*/


void r112run_feature_match(T112* C,T0* a1){
r112run_feature_has_result(C);
r136match_with((T136*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_GE.arguments*/


T0* r112runnable_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_GE.implicit_cast*/
/*No:CALL_INFIX_GE.arg1*/


void r112run_feature_has_result(T112* 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* r112run_feature_for(T112* 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_GE.target*/


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


void r112make(T112* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,r112operator(),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_GE.is_current*/
/*No:CALL_INFIX_GE.short_print_feature_name*/
/*No:CALL_INFIX_GE.is_void*/


T0* r112operator(void){
T0* R=NULL;
R=((T0*)ms13_252);
return R;
}


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


void r112short(T112* C){
/*[IF*/
if((X53precedence((C)->_target/*4*/))==(13)){
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T112* 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((6)>=(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*/))<(6)){
X53bracketed_short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T112* 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*/{T112* 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_GE.atomic_precedence*/
/*No:CALL_INFIX_NEQ.feature_name*/


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


void r115error_comparison(T115* C,T0* a1,T0* a2){
r67add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms116_9960);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms116_88736);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(a2,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}


T0* r115add_comment(T115* 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 r115to_integer(T115* C){
T2 R=0;
r115error(r115start_position(C),((T0*)ms12_45846));
return R;
}


T0* r115to_runnable(T115* C,T0* a1){
T0* R=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r115runnable_expression((C)->_target/*4*/,a1);
_a=r115runnable_args((C)->_arguments/*8*/,a1);
/*[IF*/
if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T115*n=malloc(sizeof(*n));
*n=M115;
r115with(n,_t,(C)->_feature_name/*12*/,_a);
R=(T0*)n;
}
}
/*FI]*/
r115check_comparison(((T115*)R),a1);
return R;
}
/*No:CALL_INFIX_NEQ.fz_bad_argument*/
/*No:CALL_INFIX_NEQ.fz_iinaiv*/
/*No:CALL_INFIX_NEQ.result_type*/


T0* r115runnable_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 r115bracketed_short(T115* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r115short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


void r115check_comparison(T115* C,T0* a1){
T0* _at=NULL;
T0* _tt=NULL;
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_tt=X46run_type(X53result_type((C)->_target/*4*/));
_at=X46run_type(X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
/*[IF*/
if(X46is_none(_tt)){
/*[IF*/
if(X46is_expanded(_at)){
X46used_as_reference(_at);
}
/*FI]*/
}
 else if(X46is_none(_at)){
/*[IF*/
if(X46is_expanded(_tt)){
X46used_as_reference(_tt);
}
/*FI]*/
}
 else if(X46is_reference(_tt)){
/*[IF*/
if(X46is_reference(_at)){
/*[IF*/
if(X46is_a(_tt,_at)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X46is_a(_at,_tt)){
}
else{
r115error_comparison(C,((T0*)ms116_46246),a1);
}
/*FI]*/
}
/*FI]*/
}
 else if(!(X46is_a(_at,_tt))){
r115error_comparison(C,((T0*)ms116_41670),a1);
}
else{
X46used_as_reference(_at);
}
/*FI]*/
}
else{
/*[IF*/
if(X46is_expanded(_at)){
/*[IF*/
if(X46is_basic_eiffel_expanded(_at)){
/*[IF*/
if(X46is_a(_tt,_at)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X46is_a(_at,_tt)){
}
else{
r115error_comparison(C,((T0*)ms116_37791),a1);
}
/*FI]*/
}
/*FI]*/
}
 else if(X46is_bit(_tt)){
r115bit_limitation(C,_tt,_at);
}
 else if(!(X46is_a(_at,_tt))){
r115error_comparison(C,((T0*)ms116_37791a),a1);
}
/*FI]*/
}
 else if(!(X46is_a(_tt,_at))){
r115error_comparison(C,((T0*)ms116_42138),a1);
}
else{
X46used_as_reference(_tt);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


void r115bit_limitation(T115* C,T0* a1,T0* a2){
T0* _b2=NULL;
T0* _b1=NULL;
_b1=a1;
if(NULL!=(_b1))switch(((T0*)_b1)->id) {
case 264: case 266: 
break;
default:
_b1=NULL;
};_b2=a2;
if(NULL!=(_b2))switch(((T0*)_b2)->id) {
case 264: case 266: 
break;
default:
_b2=NULL;
};/*[IF*/
if((X265nb(_b1))!=(X265nb(_b2))){
r67add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms116_21261);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type(_b1,((T0*)ms116_1930));
r67add_type(_b2,((T0*)ms116_383757));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
}


void r115with(T115* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:CALL_INFIX_NEQ.us_neq*/
/*No:CALL_INFIX_NEQ.fatal_error*/


T0* r115type_boolean(void){
if(fBC11type_boolean==0){
fBC11type_boolean=1;
{T252*n=malloc(sizeof(*n));
*n=M252;
r252make(n,NULL);
oBC11type_boolean=(T0*)n;
}
}
return oBC11type_boolean;}
/*No:CALL_INFIX_NEQ.nb_errors*/
/*No:CALL_INFIX_NEQ.arguments*/


T0* r115runnable_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_NEQ.arg1*/
/*No:CALL_INFIX_NEQ.fz_dot*/
/*No:CALL_INFIX_NEQ.target*/


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


void r115make(T115* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,r115operator(),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_NEQ.is_current*/
/*No:CALL_INFIX_NEQ.short_print_feature_name*/
/*No:CALL_INFIX_NEQ.is_void*/


T0* r115operator(void){
T0* R=NULL;
R=((T0*)ms13_222);
return R;
}


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


void r115short(T115* C){
/*[IF*/
if((X53precedence((C)->_target/*4*/))==(13)){
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T115* 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((6)>=(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*/))<(6)){
X53bracketed_short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T115* 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*/{T115* 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_NEQ.atomic_precedence*/
/*No:PROCEDURE.rescue_compound*/
/*No:PROCEDURE.use_current_state*/


T0* r288run_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=r288runnable((((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:PROCEDURE.base_class*/
/*No:PROCEDURE.set_rescue_compound*/


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


T6 r288is_merge_with(T288* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X87result_type(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X87arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X87arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T179*)(((T175*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T179*)(((T175*)(X87arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r175is_a_in((T175*)((C)->_arguments/*24*/),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*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r175is_a_in((T175*)(X87arguments(a1)),(C)->_arguments/*24*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r288merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r288runnable(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))){
r288error(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:PROCEDURE.not_computed*/
/*No:PROCEDURE.first_name*/
/*No:PROCEDURE.em1*/
/*No:PROCEDURE.header_comment*/
/*No:PROCEDURE.names*/
/*No:PROCEDURE.fz_03*/
/*No:PROCEDURE.result_type*/
/*No:PROCEDURE.code_require*/
/*No:PROCEDURE.make_e_feature*/


void r288add_into(T288* 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 r288can_hide(T288* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X87result_type(a1)))){
/*[IF*/
{/*AT*/r67add_position(X87start_position(a1));
r288error(r288start_position(C),((T0*)ms87_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X87arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X87arguments(a1))==((void*)(NULL)))){
r67add_position(X87start_position(a1));
r288error(r288start_position(C),((T0*)ms87_83182));
}
 else if((/*(IRF4.6count*/(((T179*)(((T175*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T179*)(((T175*)(X87arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r67add_position(X87start_position(a1));
r288error(r288start_position(C),((T0*)ms87_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
/*[IF*/
if(!(r175is_a_in((T175*)((C)->_arguments/*24*/),X87arguments(a1),a2))){
r67add_position(X87start_position(a1));
r67add_position(r288start_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){
r288merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:PROCEDURE.ensure_assertion*/


T0* r288run_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=r288runnable(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 r288check_obsolete(T288* C){
/*[IF*/
if(!(((T59*)(oBC11small_eiffel))->_short_flag/*0*/)){
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms202_39396);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T158*)((C)->_obsolete_mark/*28*/))->_to_string/*8*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r288warning(r288start_position(C),((T0*)ms12_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r288try_to_undefine(T288* 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=r288try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X270set_clients*//*[IRF3.3set_clients*/((((T273*)(((T273*)R))))->_clients)=((C)->_clients/*20*/);
/*]*/
r288merge_header_comments(C,R);
}
else{
r22fatal_undefine(((T22*)a2),a1);
}
/*FI]*/
return R;
}
/*No:PROCEDURE.is_deferred*/
/*No:PROCEDURE.set_clients*/
/*No:PROCEDURE.code_ensure*/
/*No:PROCEDURE.nb_errors*/


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


T0* r288to_run_feature(T288* C,T0* a1,T0* a2){
T0* R=NULL;
r288check_obsolete(C);
{T319*n=malloc(sizeof(*n));
*n=M319;
r319make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r288merge_header_comments(T288* 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:PROCEDURE.arguments*/
/*No:PROCEDURE.require_assertion*/


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


T0* r288try_to_undefine_aux(T288* C,T0* a1,T0* a2){
T0* R=NULL;
{T271*n=malloc(sizeof(*n));
*n=M271;
r271from_effective(n,a1,(C)->_arguments/*24*/,(C)->_require_assertion/*32*/,(C)->_ensure_assertion/*36*/,a2);
R=(T0*)n;
}
return R;
}
/*No:PROCEDURE.set_ensure_assertion*/
/*No:PROCEDURE.fz_bad_assertion*/
/*No:PROCEDURE.fz_dot*/


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


void r288make(T288* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r288make_routine(C,a1,a2,a3,a4,a5);
C->_local_vars=a6;
C->_routine_body=a7;
C->_use_current_state=11;
}
/*No:PROCEDURE.routine_body*/
/*No:PROCEDURE.end_comment*/


void r288collect_for(T288* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*32*/;
/*[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/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T332*)((T332*)(oBC87header_comment_memory))))->_item)=(((T203*)((C)->_ensure_assertion/*36*/))->_header_comment/*4*/);
/*]*/
r203add_into((T203*)((C)->_ensure_assertion/*36*/),oBC87assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:PROCEDURE.local_vars*/


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


T0* r358generic_list(T358* C){
T0* R=NULL;
R=X46generic_list((C)->_expanded_type/*12*/);
return R;
}


T0* r358base_class(T358* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r358base_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* r358base_class_name(T358* C){
T0* R=NULL;
R=X46base_class_name((C)->_expanded_type/*12*/);
return R;
}
/*No:TYPE_REF_TO_EXP.start_position*/
/*No:TYPE_REF_TO_EXP.is_formal_generic*/


T6 r358is_a_in(T358* 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=/*(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_REF_TO_EXP.used_as_reference*/
/*No:TYPE_REF_TO_EXP.id*/
/*No:TYPE_REF_TO_EXP.is_pointer*/


T0* r358look_up_for(T358* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r358base_class(C)),a1,a2);
return R;
}
/*No:TYPE_REF_TO_EXP.to_runnable*/
/*No:TYPE_REF_TO_EXP.run_type*/
/*No:TYPE_REF_TO_EXP.run_class*/
/*No:TYPE_REF_TO_EXP.expanded_initializer*/
/*No:TYPE_REF_TO_EXP.has_creation*/
/*No:TYPE_REF_TO_EXP.is_like_current*/
/*No:TYPE_REF_TO_EXP.is_boolean*/


T6 r358is_generic(T358* C){
T6 R=0;
R=X46is_generic((C)->_expanded_type/*12*/);
return R;
}
/*No:TYPE_REF_TO_EXP.is_bit*/
/*No:TYPE_REF_TO_EXP.is_real*/
/*No:TYPE_REF_TO_EXP.is_any*/


T0* r358smallest_ancestor(T0* a1){
T0* R=NULL;
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms358_87172);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
return R;
}
/*No:TYPE_REF_TO_EXP.expanded_type*/
/*No:TYPE_REF_TO_EXP.fatal_error*/
/*No:TYPE_REF_TO_EXP.run_time_mark*/
/*No:TYPE_REF_TO_EXP.is_expanded*/
/*No:TYPE_REF_TO_EXP.is_basic_eiffel_expanded*/


void r358short_hook(T358* C){
X46short_hook((C)->_expanded_type/*12*/);
}
/*No:TYPE_REF_TO_EXP.is_string*/
/*No:TYPE_REF_TO_EXP.is_integer*/
/*No:TYPE_REF_TO_EXP.is_like_feature*/
/*No:TYPE_REF_TO_EXP.fz_dot*/
/*No:TYPE_REF_TO_EXP.is_anchored*/
/*No:TYPE_REF_TO_EXP.is_run_type*/


T6 r358is_a(T358* C,T0* a1){
T6 R=0;
/*[IF*/
if((X46run_time_mark(a1))!=((void*)(X46run_time_mark((C)->_expanded_type/*12*/)))){
R=X46is_a((C)->_expanded_type/*12*/,a1);
}
else{
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_REF_TO_EXP.is_character*/
/*No:TYPE_REF_TO_EXP.is_reference*/
/*No:TYPE_REF_TO_EXP.written_mark*/


void r358make(T358* C,T0* a1){
C->_expanded_type=a1;
r7copy((T7*)(((T0*)ms46_785024)),((T0*)ms358_2610));
r7append((T7*)(((T0*)ms46_785024)),X46run_time_mark(a1));
C->_written_mark=r78item(((T0*)ms46_785024));
C->_run_class=r59run_class((T0*)C);
r310set_at_run_time((T310*)((C)->_run_class/*4*/));
}
/*No:TYPE_REF_TO_EXP.is_none*/
/*No:TYPE_REF_TO_EXP.is_array*/
/*No:TYPE_REF_TO_EXP.fz_inako*/
/*No:TYPE_REF_TO_EXP.is_like_argument*/
/*No:TYPE_REF_TO_EXP.tmp_string*/
/*No:TYPE_REF_TO_EXP.is_double*/


void r358short(T358* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
r358short_hook(C);
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}


T0* r327generic_list(T327* C){
T0* R=NULL;
r327fatal_error_generic_list(C);
return R;
}
/*No:TYPE_BIT_REF.type_bit*/


T0* r327base_class(T327* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r327base_class_name();
/*[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;
}
int fBC327base_class_name=0;
T0*oBC327base_class_name=NULL;


T0* r327base_class_name(void){
if(fBC327base_class_name==0){
fBC327base_class_name=1;
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_9369),NULL);
oBC327base_class_name=(T0*)n;
}
}
return oBC327base_class_name;}
/*No:TYPE_BIT_REF.start_position*/
/*No:TYPE_BIT_REF.is_formal_generic*/
/*No:TYPE_BIT_REF.used_as_reference*/


T6 r327is_a_in(T327* 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=/*(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;
}


T2 r327id(T327* C){
T2 R=0;
R=((T310*)(r327run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_BIT_REF.is_pointer*/


T0* r327look_up_for(T327* C,T0* a1,T0* a2){
T0* R=NULL;
R=r22look_up_for((T22*)(r327base_class(C)),a1,a2);
return R;
}
/*No:TYPE_BIT_REF.to_runnable*/
/*No:TYPE_BIT_REF.run_type*/


T0* r327run_class(T327* C){
T0* R=NULL;
R=r59run_class(/*(IRF4.4run_type*/((T0*)(C))/*)*/);
return R;
}
/*No:TYPE_BIT_REF.has_creation*/
/*No:TYPE_BIT_REF.expanded_initializer*/
/*No:TYPE_BIT_REF.is_like_current*/
/*No:TYPE_BIT_REF.is_boolean*/
/*No:TYPE_BIT_REF.is_generic*/
/*No:TYPE_BIT_REF.is_bit*/
/*No:TYPE_BIT_REF.is_real*/


T0* r327smallest_ancestor(T327* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(X46run_time_mark(a1)))){
R=(T0*)C;
}
else{
R=r327type_any();
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_REF.is_any*/
/*No:TYPE_BIT_REF.us_bit_n_ref*/
/*No:TYPE_BIT_REF.run_time_mark*/
/*No:TYPE_BIT_REF.is_expanded*/
/*No:TYPE_BIT_REF.is_basic_eiffel_expanded*/


T0* r327type_any(void){
if(fBC11type_any==0){
fBC11type_any=1;
{T247*n=malloc(sizeof(*n));
*n=M247;
r247make(n,NULL);
oBC11type_any=(T0*)n;
}
}
return oBC11type_any;}
/*No:TYPE_BIT_REF.short_hook*/
/*No:TYPE_BIT_REF.is_string*/
/*No:TYPE_BIT_REF.is_integer*/
/*No:TYPE_BIT_REF.is_like_feature*/
/*No:TYPE_BIT_REF.fz_dot*/
/*No:TYPE_BIT_REF.is_anchored*/
/*No:TYPE_BIT_REF.is_run_type*/


T6 r327is_a(T327* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(X46run_time_mark(a1)))){
R=1;
}
else{
R=r22is_subclass_of((T22*)(r327base_class(C)),X46base_class(a1));
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_REF.is_character*/
/*No:TYPE_BIT_REF.is_reference*/
/*No:TYPE_BIT_REF.written_mark*/


void r327make(T327* C,T0* a1){
C->_type_bit=a1;
C->_run_time_mark=((T0*)ms327_1060);
r2append_in(X265nb((C)->_type_bit/*4*/),(C)->_run_time_mark/*12*/);
r7append((T7*)((C)->_run_time_mark/*12*/),((T0*)ms327_1052));
C->_run_time_mark=r78item((C)->_run_time_mark/*12*/);
C->_written_mark=(C)->_run_time_mark/*12*/;
}
/*No:TYPE_BIT_REF.is_none*/


void r327fatal_error_generic_list(T327* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_BIT_REF.is_array*/
/*No:TYPE_BIT_REF.fz_inako*/
/*No:TYPE_BIT_REF.is_like_argument*/
/*No:TYPE_BIT_REF.is_double*/
/*No:TYPE_BIT_REF.short*/
/*No:CALL_INFIX_MINUS.feature_name*/


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


T0* r118add_comment(T118* 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 r118to_integer(T118* C){
T2 R=0;
r118error(r118start_position(C),((T0*)ms12_45846));
return R;
}


T0* r118to_runnable(T118* 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=r118runnable_expression((C)->_target/*4*/,a1);
_a=r118runnable_args((C)->_arguments/*8*/,a1);
_tt=X53result_type(_t);
_at=X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
{/*AT*//*[IF*/
if(X46is_real(_at)){
/*[IF*/
if(X46is_integer(_tt)){
_tbee=X46run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 258: case 256: case 254: case 255: case 259: case 252: 
break;
default:
_tbee=NULL;
};{T357*n=malloc(sizeof(*n));
*n=M357;
r357make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
 else if(X46is_double(_at)){
/*[IF*/
if((X46is_integer(_tt))||(X46is_real(_tt))){
_tbee=X46run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 258: case 256: case 254: case 255: case 259: case 252: 
break;
default:
_tbee=NULL;
};{T357*n=malloc(sizeof(*n));
*n=M357;
r357make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_rf=r118run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r118run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T118*n=malloc(sizeof(*n));
*n=M118;
r118with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_MINUS.fz_bad_argument*/
/*No:CALL_INFIX_MINUS.fz_iinaiv*/


T0* r118result_type(T118* 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_MINUS.run_feature*/


T0* r118runnable_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 r118bracketed_short(T118* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r118short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


void r118with(T118* 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;
r118run_feature_match(C,a5);
}
/*No:CALL_INFIX_MINUS.fatal_error*/
/*No:CALL_INFIX_MINUS.us_minus*/


void r118run_feature_match(T118* C,T0* a1){
r118run_feature_has_result(C);
r136match_with((T136*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_MINUS.arguments*/


T0* r118runnable_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_MINUS.implicit_cast*/
/*No:CALL_INFIX_MINUS.arg1*/


void r118run_feature_has_result(T118* 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* r118run_feature_for(T118* 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_MINUS.target*/


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


void r118make(T118* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,r118operator(),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_MINUS.is_current*/
/*No:CALL_INFIX_MINUS.short_print_feature_name*/
/*No:CALL_INFIX_MINUS.is_void*/


T0* r118operator(void){
T0* R=NULL;
R=((T0*)ms13_46);
return R;
}


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


void r118short(T118* C){
/*[IF*/
if((X53precedence((C)->_target/*4*/))==(13)){
X53short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T118* 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((7)>=(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*/))<(7)){
X53bracketed_short((C)->_target/*4*/);
/*[IRF3.6short_print_feature_name*/{T118* 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*/{T118* 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_MINUS.atomic_precedence*/
/*No:CALL_INFIX_TIMES.feature_name*/
/*No:CALL_INFIX_TIMES.us_muls*/


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


T0* r123add_comment(T123* 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 r123to_integer(T123* C){
T2 R=0;
r123error(r123start_position(C),((T0*)ms12_45846));
return R;
}


T0* r123to_runnable(T123* 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=r123runnable_expression((C)->_target/*4*/,a1);
_a=r123runnable_args((C)->_arguments/*8*/,a1);
_tt=X53result_type(_t);
_at=X53result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T136*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
{/*AT*//*[IF*/
if(X46is_real(_at)){
/*[IF*/
if(X46is_integer(_tt)){
_tbee=X46run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 258: case 256: case 254: case 255: case 259: case 252: 
break;
default:
_tbee=NULL;
};{T357*n=malloc(sizeof(*n));
*n=M357;
r357make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
 else if(X46is_double(_at)){
/*[IF*/
if((X46is_integer(_tt))||(X46is_real(_tt))){
_tbee=X46run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 258: case 256: case 254: case 255: case 259: case 252: 
break;
default:
_tbee=NULL;
};{T357*n=malloc(sizeof(*n));
*n=M357;
r357make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_rf=r123run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r123run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T123*n=malloc(sizeof(*n));
*n=M123;
r123with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_TIMES.fz_bad_argument*/
/*No:CALL_INFIX_TIMES.fz_iinaiv*/


T0* r123result_type(T123* 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_TIMES.run_feature*/


T0* r123runnable_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 r123bracketed_short(T123* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r123short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}

