/*
-- 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 "pretty.h"


T0* r225to_runnable_integer(T225* 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*)((T325*)(r42top_rf((T42*)(oBC11small_eiffel))))->_current_type/*4*/);
_v=X89to_runnable((C)->_lower/*12*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_integer(X89result_type(_v)))){
C->_lower=_v;
C->_lower_value=X89to_integer((C)->_lower/*12*/);
}
else{
r225error(X89start_position((C)->_lower/*12*/),((T0*)ms12_21798));
}
/*FI]*/
_v=X89to_runnable((C)->_upper/*8*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_integer(X89result_type(_v)))){
C->_upper=_v;
C->_upper_value=X89to_integer((C)->_upper/*8*/);
}
else{
r225error(X89start_position((C)->_upper/*8*/),((T0*)ms12_21798));
}
/*FI]*/
r217add_when_item_2((T217*)((C)->_e_when/*4*/),(T0*)C);
R=(T0*)C;
}
else{
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,(C)->_lower/*12*/,(C)->_upper/*8*/);
R=(T0*)n;
}
R=r225to_runnable_integer(((T225*)R),a1);
}
/*FI]*/
return R;
}


T0* r225start_position(T225* C){
T0* R=NULL;
R=X89start_position((C)->_lower/*12*/);
return R;
}


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


void r225error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}


void r225make(T225* 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*/


void r225pretty_print(T225* C){
X89pretty_print((C)->_lower/*12*/);
r310put_string((T310*)(oBC11fmt),((T0*)ms225_190));
X89pretty_print((C)->_upper/*8*/);
}
/*No:WHEN_ITEM_2.fz_biv*/


T0* r225to_runnable_character(T225* 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*)((T325*)(r42top_rf((T42*)(oBC11small_eiffel))))->_current_type/*4*/);
_v=X89to_runnable((C)->_lower/*12*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_character(X89result_type(_v)))){
C->_lower=_v;
C->_lower_value=X89to_integer((C)->_lower/*12*/);
}
else{
r225error(X89start_position((C)->_lower/*12*/),((T0*)ms12_25940));
}
/*FI]*/
_v=X89to_runnable((C)->_upper/*8*/,_ct);
/*[IF*/
if(((_v)!=((void*)(NULL)))&&(X62is_character(X89result_type(_v)))){
C->_upper=_v;
C->_upper_value=X89to_integer((C)->_upper/*8*/);
}
else{
r225error(X89start_position((C)->_upper/*8*/),((T0*)ms12_25940));
}
/*FI]*/
r217add_when_item_2((T217*)((C)->_e_when/*4*/),(T0*)C);
R=(T0*)C;
}
else{
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,(C)->_lower/*12*/,(C)->_upper/*8*/);
R=(T0*)n;
}
R=r225to_runnable_character(((T225*)R),a1);
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_GE.feature_name*/
/*No:CALL_INFIX_GE.right_brackets*/


T0* r108start_position(T108* C){
T0* R=NULL;
R=((T121*)((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*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(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;
}


void r108bracketed_pretty_print(T108* C){
r310put_character((T310*)(oBC11fmt),'\50');
r108pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r108print_op(T108* C){
r310put_character((T310*)(oBC11fmt),'\40');
/*[IRF3.6pretty_print*/{T121* C1=(T121*)((C)->_feature_name/*12*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*4*/);
}/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
}


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=X89result_type(_t);
_at=X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((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_GE.us_ge*/
/*No:CALL_INFIX_GE.fz_bad_argument*/
/*No:CALL_INFIX_GE.fz_iinaiv*/


T0* r108result_type(T108* C){
T0* R=NULL;
T0* _tla=NULL;
R=X312result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X62is_like_current(R)){
R=/*X312current_type*/((T0*)((T325*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 242: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_GE.run_feature*/


T0* r108runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r132to_runnable(((T132*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(r132start_position(((T132*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


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_GE.fatal_error*/


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


T0* r108runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X89to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(X89start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms101_16515);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_GE.left_brackets*/
/*No:CALL_INFIX_GE.implicit_cast*/


void r108print_as_target(T108* C){
r310put_character((T310*)(oBC11fmt),'\50');
r108pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_GE.arg1*/


void r108run_feature_has_result(T108* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*16*/));
r37add_position(((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms100_53650);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r108run_feature_for(T108* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(X89result_type(a1));
R=r313get_rf(((T313*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_GE.target*/


void r108error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:CALL_INFIX_GE.precedence*/


void r108make(T108* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,r108operator(),a2);
C->_feature_name=(T0*)n;
}
{T132*n=malloc(sizeof(*n));
*n=M132;
/*[IRF3.3make_1*/((((T132*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_GE.is_current*/


void r108pretty_print(T108* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((6)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((6)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r108print_op(C);
/*[IF*/
if((X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))==(13)){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((6)>(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((6)<(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else {/*AT*/X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
/*No:CALL_INFIX_GE.is_void*/


T0* r108operator(void){
T0* R=NULL;
R=((T0*)ms13_252);
return R;
}
/*No:CALL_INFIX_GE.atomic_precedence*/
/*No:CALL_INFIX_LE.feature_name*/
/*No:CALL_INFIX_LE.right_brackets*/


T0* r110start_position(T110* C){
T0* R=NULL;
R=((T121*)((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*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(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;
}


void r110bracketed_pretty_print(T110* C){
r310put_character((T310*)(oBC11fmt),'\50');
r110pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r110print_op(T110* C){
r310put_character((T310*)(oBC11fmt),'\40');
/*[IRF3.6pretty_print*/{T121* C1=(T121*)((C)->_feature_name/*12*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*4*/);
}/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
}


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=X89result_type(_t);
_at=X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((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_LE.fz_bad_argument*/
/*No:CALL_INFIX_LE.fz_iinaiv*/


T0* r110result_type(T110* C){
T0* R=NULL;
T0* _tla=NULL;
R=X312result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X62is_like_current(R)){
R=/*X312current_type*/((T0*)((T325*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 242: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_LE.run_feature*/


T0* r110runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r132to_runnable(((T132*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(r132start_position(((T132*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_LE.us_le*/


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_LE.fatal_error*/


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


T0* r110runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X89to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(X89start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms101_16515);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_LE.left_brackets*/
/*No:CALL_INFIX_LE.implicit_cast*/


void r110print_as_target(T110* C){
r310put_character((T310*)(oBC11fmt),'\50');
r110pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_LE.arg1*/


void r110run_feature_has_result(T110* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*16*/));
r37add_position(((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms100_53650);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r110run_feature_for(T110* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(X89result_type(a1));
R=r313get_rf(((T313*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_LE.target*/


void r110error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:CALL_INFIX_LE.precedence*/


void r110make(T110* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,r110operator(),a2);
C->_feature_name=(T0*)n;
}
{T132*n=malloc(sizeof(*n));
*n=M132;
/*[IRF3.3make_1*/((((T132*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_LE.is_current*/


void r110pretty_print(T110* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((6)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((6)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r110print_op(C);
/*[IF*/
if((X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))==(13)){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((6)>(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((6)<(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else {/*AT*/X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
/*No:CALL_INFIX_LE.is_void*/


T0* r110operator(void){
T0* R=NULL;
R=((T0*)ms13_248);
return R;
}
/*No:CALL_INFIX_LE.atomic_precedence*/
/*No:CALL_INFIX_NEQ.feature_name*/
/*No:CALL_INFIX_NEQ.right_brackets*/


T0* r111start_position(T111* C){
T0* R=NULL;
R=((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


void r111error_comparison(T111* C,T0* a1,T0* a2){
r37add_position(((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms112_9960);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms112_88736);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37add_type(a2,((T0*)ms12_47));
r37print_as_fatal_error((T37*)(oBC11eh));
}


T0* r111add_comment(T111* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r111to_integer(T111* C){
T2 R=0;
r111error(r111start_position(C),((T0*)ms12_45846));
return R;
}


void r111bracketed_pretty_print(T111* C){
r310put_character((T310*)(oBC11fmt),'\50');
r111pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r111print_op(T111* C){
r310put_character((T310*)(oBC11fmt),'\40');
/*[IRF3.6pretty_print*/{T121* C1=(T121*)((C)->_feature_name/*12*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*4*/);
}/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
}


T0* r111to_runnable(T111* C,T0* a1){
T0* R=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r111runnable_expression((C)->_target/*4*/,a1);
_a=r111runnable_args((C)->_arguments/*8*/,a1);
/*[IF*/
if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T111*n=malloc(sizeof(*n));
*n=M111;
r111with(n,_t,(C)->_feature_name/*12*/,_a);
R=(T0*)n;
}
}
/*FI]*/
r111check_comparison(((T111*)R),a1);
return R;
}
/*No:CALL_INFIX_NEQ.fz_bad_argument*/
/*No:CALL_INFIX_NEQ.fz_iinaiv*/
/*No:CALL_INFIX_NEQ.result_type*/


T0* r111runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r132to_runnable(((T132*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(r132start_position(((T132*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r111check_comparison(T111* C,T0* a1){
T0* _at=NULL;
T0* _tt=NULL;
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_tt=X62run_type(X89result_type((C)->_target/*4*/));
_at=X62run_type(X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
/*[IF*/
if(X62is_none(_tt)){
/*[IF*/
if(X62is_expanded(_at)){
X62used_as_reference(_at);
}
/*FI]*/
}
 else if(X62is_none(_at)){
/*[IF*/
if(X62is_expanded(_tt)){
X62used_as_reference(_tt);
}
/*FI]*/
}
 else if(X62is_reference(_tt)){
/*[IF*/
if(X62is_reference(_at)){
/*[IF*/
if(X62is_a(_tt,_at)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X62is_a(_at,_tt)){
}
else{
r111error_comparison(C,((T0*)ms112_46246),a1);
}
/*FI]*/
}
/*FI]*/
}
 else if(!(X62is_a(_at,_tt))){
r111error_comparison(C,((T0*)ms112_41670),a1);
}
else{
X62used_as_reference(_at);
}
/*FI]*/
}
else{
/*[IF*/
if(X62is_expanded(_at)){
/*[IF*/
if(X62is_basic_eiffel_expanded(_at)){
/*[IF*/
if(X62is_a(_tt,_at)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(X62is_a(_at,_tt)){
}
else{
r111error_comparison(C,((T0*)ms112_37791),a1);
}
/*FI]*/
}
/*FI]*/
}
 else if(X62is_bit(_tt)){
r111bit_limitation(C,_tt,_at);
}
 else if(!(X62is_a(_at,_tt))){
r111error_comparison(C,((T0*)ms112_37791a),a1);
}
/*FI]*/
}
 else if(!(X62is_a(_tt,_at))){
r111error_comparison(C,((T0*)ms112_42138),a1);
}
else{
X62used_as_reference(_tt);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


void r111bit_limitation(T111* C,T0* a1,T0* a2){
T0* _b2=NULL;
T0* _b1=NULL;
_b1=a1;
if(NULL!=(_b1))switch(((T0*)_b1)->id) {
case 260: case 262: 
break;
default:
_b1=NULL;
};_b2=a2;
if(NULL!=(_b2))switch(((T0*)_b2)->id) {
case 260: case 262: 
break;
default:
_b2=NULL;
};/*[IF*/
if((X261nb(_b1))!=(X261nb(_b2))){
r37add_position(((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms112_21261);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37add_type(_b1,((T0*)ms112_1930));
r37add_type(_b2,((T0*)ms112_383757));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*FI]*/
}


void r111with(T111* 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* r111type_boolean(void){
if(fBC11type_boolean==0){
fBC11type_boolean=1;
{T248*n=malloc(sizeof(*n));
*n=M248;
r248make(n,NULL);
oBC11type_boolean=(T0*)n;
}
}
return oBC11type_boolean;}
/*No:CALL_INFIX_NEQ.nb_errors*/
/*No:CALL_INFIX_NEQ.arguments*/


T0* r111runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X89to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(X89start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms101_16515);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_NEQ.left_brackets*/


void r111print_as_target(T111* C){
r310put_character((T310*)(oBC11fmt),'\50');
r111pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_NEQ.arg1*/
/*No:CALL_INFIX_NEQ.fz_dot*/
/*No:CALL_INFIX_NEQ.target*/


void r111error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:CALL_INFIX_NEQ.precedence*/


void r111make(T111* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,r111operator(),a2);
C->_feature_name=(T0*)n;
}
{T132*n=malloc(sizeof(*n));
*n=M132;
/*[IRF3.3make_1*/((((T132*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_NEQ.is_current*/


void r111pretty_print(T111* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((6)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((6)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r111print_op(C);
/*[IF*/
if((X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))==(13)){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((6)>(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((6)<(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else {/*AT*/X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
/*No:CALL_INFIX_NEQ.is_void*/


T0* r111operator(void){
T0* R=NULL;
R=((T0*)ms13_222);
return R;
}
/*No:CALL_INFIX_NEQ.atomic_precedence*/
/*No:PROCEDURE.rescue_compound*/
/*No:PROCEDURE.use_current_state*/


T0* r287run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r332clear((T332*)(oBC75require_collector));
_ct=/*X312current_type*/((T0*)(((T325*)a1))->_current_type/*4*/);
r41collect_for((T41*)(X62base_class(_ct)),1,/*X312name*/((T0*)(((T325*)a1))->_name/*16*/));
/*[IF*/
if(!(r332empty((T332*)(oBC75require_collector)))){
_i=1;
while (!((_i)>(((T332*)(oBC75require_collector))->_upper/*8*/))) {
_er=r332item((T332*)(oBC75require_collector),_i);
_hc=(((T271*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T271*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r287runnable((((T271*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T271*n=malloc(sizeof(*n));
*n=M271;
r271make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T271*)(((T271*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma332(1,
_er);
}
else{
r332add_last(((T332*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T334*n=malloc(sizeof(*n));
*n=M334;
/*[IRF3.3make*/((((T334*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:PROCEDURE.base_class*/
/*No:PROCEDURE.set_rescue_compound*/


T0* r287start_position(T287* C){
T0* R=NULL;
R=X65start_position(/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r287is_merge_with(T287* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(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=r171is_a_in((T171*)((C)->_arguments/*24*/),X75arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),(C)->_arguments/*24*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r287merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r287runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r88empty(((T88*)a1)))){
R=r88twin(((T88*)a1));
_i=(((T88*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r42push((T42*)(oBC11small_eiffel),a3);
_a=r85to_runnable((T85*)(r88item(((T88*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r287error(r85start_position((T85*)(r88item(((T88*)R),_i))),((T0*)ms12_14266));
}
else{
/*[IRF3.6put*/{T88* C1=((T88*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r42pop((T42*)(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.fz_do*/


void r287pretty_print_profile(T287* C){
r287pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r287pretty_print_arguments(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:PROCEDURE.names*/
/*No:PROCEDURE.fz_03*/
/*No:PROCEDURE.result_type*/
/*No:PROCEDURE.code_require*/
/*No:PROCEDURE.make_e_feature*/


void r287add_into(T287* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r39base_class((T39*)(X65start_position(r67item((T67*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r67count((T67*)((C)->_names/*8*/))))) {
_fn=r67item((T67*)((C)->_names/*8*/),_i);
/*[IF*/
if(r74has(((T74*)a1),X65to_key(_fn))){
_fn=/*X75first_name*/((T0*)/*(IRF4.6first_name*/r67item(((T67*)(((T183*)(r74at(((T74*)a1),X65to_key(_fn))))->_names/*8*/)),1)/*)*/);
r37add_position(X65start_position(_fn));
r37add_position(X65start_position(r67item((T67*)((C)->_names/*8*/),_i)));
r37error((T37*)(oBC11eh),((T0*)ms75_41905));
/*[IRF3.6append*/{T0* b1=X65to_string(_fn);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37error((T37*)(oBC11eh),((T0*)ms12_47));
}
else{
r74put(((T74*)a1),(T0*)C,X65to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r287can_hide(T287* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
{/*AT*/r37add_position(X75start_position(a1));
r287error(r287start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r287error(r287start_position(C),((T0*)ms75_83182));
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r37add_position(X75start_position(a1));
r287error(r287start_position(C),((T0*)ms75_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
/*[IF*/
if(!(r171is_a_in((T171*)((C)->_arguments/*24*/),X75arguments(a1),a2))){
r37add_position(X75start_position(a1));
r37add_position(r287start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms75_54285);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((((T313*)a2))->_current_type/*0*/);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37error((T37*)(oBC11eh),((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r287merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:PROCEDURE.ensure_assertion*/
/*No:PROCEDURE.fz_rescue*/


T0* r287run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r88clear((T88*)(oBC75assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X312current_type*/((T0*)(((T325*)a1))->_current_type/*4*/);
r41collect_for((T41*)(X62base_class(_ct)),2,/*X312name*/((T0*)(((T325*)a1))->_name/*16*/));
_r=r287runnable(oBC75assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T199*n=malloc(sizeof(*n));
*n=M199;
r199make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T199*)(((T199*)R))))->_header_comment)=(((T331*)(oBC75header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r287check_obsolete(T287* C){
/*[IF*/
if(!(((T42*)(oBC11small_eiffel))->_short_flag/*0*/)){
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms198_39396);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T154*)((C)->_obsolete_mark/*28*/))->_to_string/*8*/;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r287warning(r287start_position(C),((T0*)ms12_166));
}
/*FI]*/
}
/*FI]*/
}
/*No:PROCEDURE.fz_is*/


T0* r287try_to_undefine(T287* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r37add_position(X65start_position(a1));
_fn2=r67feature_name((T67*)((C)->_names/*8*/),X65to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X65undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r287try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*20*/);
/*]*/
r287merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:PROCEDURE.is_deferred*/
/*No:PROCEDURE.set_clients*/
/*No:PROCEDURE.code_ensure*/
/*No:PROCEDURE.nb_errors*/


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


T0* r287to_run_feature(T287* C,T0* a1,T0* a2){
T0* R=NULL;
r287check_obsolete(C);
{T314*n=malloc(sizeof(*n));
*n=M314;
r314make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r287merge_header_comments(T287* C,T0* a1){
/*[IF*/
if(((T42*)(oBC11small_eiffel))->_short_flag/*0*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X75header_comment*/((T0*)(((T183*)a1))->_header_comment/*12*/);
}
 else if((/*X75header_comment*/((T0*)(((T183*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X75set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:PROCEDURE.arguments*/
/*No:PROCEDURE.pretty_print_once_or_do*/
/*No:PROCEDURE.require_assertion*/


void r287pretty_print_routine_body(T287* C){
/*[IF*/
if(((C)->_local_vars/*16*/)!=((void*)(NULL))){
r162pretty_print((T162*)((C)->_local_vars/*16*/));
}
/*FI]*/
r310indent((T310*)(oBC11fmt));
/*[IRF3.2pretty_print_once_or_do*/r310keyword((T310*)(oBC11fmt),((T0*)ms12_428));
/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r200pretty_print((T200*)((C)->_routine_body/*44*/));
}
/*FI]*/
}


void r287pretty_print_arguments(T287* C){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
r171pretty_print((T171*)((C)->_arguments/*24*/));
}
/*FI]*/
}


void r287pretty_print_rescue(T287* C){
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_7002));
r200pretty_print((T200*)((C)->_rescue_compound/*48*/));
}
/*FI]*/
}


void r287warning(T0* a1,T0* a2){
r37add_position(a1);
r37warning((T37*)(oBC11eh),a2);
}


T0* r287try_to_undefine_aux(T287* C,T0* a1,T0* a2){
T0* R=NULL;
{T270*n=malloc(sizeof(*n));
*n=M270;
r270from_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_obsolete*/
/*No:PROCEDURE.fz_end*/
/*No:PROCEDURE.fz_dot*/


void r287error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}


void r287make(T287* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r287make_routine(C,a1,a2,a3,a4,a5);
C->_local_vars=a6;
C->_routine_body=a7;
C->_use_current_state=11;
}


void r287pretty_print_names(T287* C){
T2 _i=0;
_i=1;
X65declaration_pretty_print(r67item((T67*)((C)->_names/*8*/),_i));
_i=(_i)+(1);
while (!((_i)>(r67count((T67*)((C)->_names/*8*/))))) {
r310put_string((T310*)(oBC11fmt),((T0*)ms75_158));
X65declaration_pretty_print(r67item((T67*)((C)->_names/*8*/),_i));
_i=(_i)+(1);
}
}


void r287pretty_print(T287* C){
T0* _fn=NULL;
r310indent((T310*)(oBC11fmt));
r287pretty_print_profile(C);
r310keyword((T310*)(oBC11fmt),((T0*)ms12_446));
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_10928));
r154pretty_print((T154*)((C)->_obsolete_mark/*28*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_header_comment/*12*/)!=((void*)(NULL))){
r64pretty_print((T64*)((C)->_header_comment/*12*/));
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r271pretty_print((T271*)((C)->_require_assertion/*32*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r287pretty_print_routine_body(C);
/*[IF*/
if(((C)->_ensure_assertion/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r199pretty_print((T199*)((C)->_ensure_assertion/*36*/));
}
/*FI]*/
r287pretty_print_rescue(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_951));
/*[IF*/
if((((C)->_end_comment/*40*/)!=((void*)(NULL)))&&(!(r64dummy((T64*)((C)->_end_comment/*40*/))))){
r64pretty_print((T64*)((C)->_end_comment/*40*/));
}
 else if(r310print_end_routine((T310*)(oBC11fmt))){
r310put_string((T310*)(oBC11fmt),((T0*)ms198_384));
_fn=/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/;
X65declaration_pretty_print(_fn);
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r310put_character((T310*)(oBC11fmt),'\n');
}
/*No:PROCEDURE.routine_body*/


void r287collect_for(T287* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*32*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r332fast_has((T332*)(oBC75require_collector),_er))){
r332add_last((T332*)(oBC75require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(((T199*)((C)->_ensure_assertion/*36*/))->_header_comment/*4*/);
/*]*/
r199add_into((T199*)((C)->_ensure_assertion/*36*/),oBC75assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:PROCEDURE.end_comment*/
/*No:PROCEDURE.local_vars*/


void r287set_header_comment(T287* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:PROCEDURE.clients*/
/*No:PROCEDURE.obsolete_mark*/


T0* r360generic_list(T360* C){
T0* R=NULL;
R=X62generic_list((C)->_expanded_type/*12*/);
return R;
}


T0* r360base_class(T360* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r360base_class_name(C);
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r49base_class(((T49*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms62_37098);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37add_type((T0*)C,((T0*)ms12_47));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*FI]*/
return R;
}


T0* r360base_class_name(T360* C){
T0* R=NULL;
R=X62base_class_name((C)->_expanded_type/*12*/);
return R;
}
/*No:TYPE_REF_TO_EXP.start_position*/
/*No:TYPE_REF_TO_EXP.is_formal_generic*/


T6 r360is_a_in(T360* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(((T313*)a2))->_current_type/*0*/;
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_t2=X62to_runnable(a1,_ct);
/*[IF*/
if((X62run_time_mark(_t1))==((void*)(X62run_time_mark(_t2)))){
R=1;
}
else{
R=X62is_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* r360look_up_for(T360* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r360base_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 r360is_generic(T360* C){
T6 R=0;
R=X62is_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* r360smallest_ancestor(T0* a1){
T0* R=NULL;
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms360_87172);
r37fatal_error((T37*)(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*/
/*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 r360is_a(T360* C,T0* a1){
T6 R=0;
/*[IF*/
if((X62run_time_mark(a1))!=((void*)(X62run_time_mark((C)->_expanded_type/*12*/)))){
R=X62is_a((C)->_expanded_type/*12*/,a1);
}
else{
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_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 r360make(T360* C,T0* a1){
C->_expanded_type=a1;
r7copy((T7*)(((T0*)ms62_785024)),((T0*)ms360_2610));
r7append((T7*)(((T0*)ms62_785024)),X62run_time_mark(a1));
C->_written_mark=r66item(((T0*)ms62_785024));
C->_run_class=r42run_class((T0*)C);
r313set_at_run_time((T313*)((C)->_run_class/*4*/));
}
/*No:TYPE_REF_TO_EXP.is_none*/
/*No:TYPE_REF_TO_EXP.pretty_print*/
/*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*/


T0* r326generic_list(T326* C){
T0* R=NULL;
r326fatal_error_generic_list(C);
return R;
}
/*No:TYPE_BIT_REF.type_bit*/


T0* r326base_class(T326* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r326base_class_name();
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r49base_class(((T49*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms62_37098);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37add_type((T0*)C,((T0*)ms12_47));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*FI]*/
return R;
}
int fBC326base_class_name=0;
T0*oBC326base_class_name=NULL;


T0* r326base_class_name(void){
if(fBC326base_class_name==0){
fBC326base_class_name=1;
{T49*n=malloc(sizeof(*n));
*n=M49;
r49make(n,((T0*)ms13_9369),NULL);
oBC326base_class_name=(T0*)n;
}
}
return oBC326base_class_name;}
/*No:TYPE_BIT_REF.start_position*/
/*No:TYPE_BIT_REF.is_formal_generic*/
/*No:TYPE_BIT_REF.used_as_reference*/


T6 r326is_a_in(T326* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(((T313*)a2))->_current_type/*0*/;
_t1=/*(IRF4.4to_runnable*/((T0*)(C))/*)*/;
_t2=X62to_runnable(a1,_ct);
/*[IF*/
if((X62run_time_mark(_t1))==((void*)(X62run_time_mark(_t2)))){
R=1;
}
else{
R=X62is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r326id(T326* C){
T2 R=0;
R=((T313*)(r326run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_BIT_REF.is_pointer*/


T0* r326look_up_for(T326* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r326base_class(C)),a1,a2);
return R;
}
/*No:TYPE_BIT_REF.to_runnable*/
/*No:TYPE_BIT_REF.run_type*/


T0* r326run_class(T326* C){
T0* R=NULL;
R=r42run_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* r326smallest_ancestor(T326* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(X62run_time_mark(a1)))){
R=(T0*)C;
}
else{
R=r326type_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* r326type_any(void){
if(fBC11type_any==0){
fBC11type_any=1;
{T243*n=malloc(sizeof(*n));
*n=M243;
r243make(n,NULL);
oBC11type_any=(T0*)n;
}
}
return oBC11type_any;}
/*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 r326is_a(T326* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_run_time_mark/*12*/)==((void*)(X62run_time_mark(a1)))){
R=1;
}
else{
R=r41is_subclass_of((T41*)(r326base_class(C)),X62base_class(a1));
/*[IF*/
if(!(R)){
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_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 r326make(T326* C,T0* a1){
C->_type_bit=a1;
C->_run_time_mark=((T0*)ms326_1060);
r2append_in(X261nb((C)->_type_bit/*4*/),(C)->_run_time_mark/*12*/);
r7append((T7*)((C)->_run_time_mark/*12*/),((T0*)ms326_1052));
C->_run_time_mark=r66item((C)->_run_time_mark/*12*/);
C->_written_mark=(C)->_run_time_mark/*12*/;
}
/*No:TYPE_BIT_REF.is_none*/


void r326fatal_error_generic_list(T326* C){
r37add_type((T0*)C,((T0*)ms62_29184));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*No:TYPE_BIT_REF.pretty_print*/
/*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:CALL_INFIX_MINUS.feature_name*/
/*No:CALL_INFIX_MINUS.right_brackets*/


T0* r114start_position(T114* C){
T0* R=NULL;
R=((T121*)((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*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(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;
}


void r114bracketed_pretty_print(T114* C){
r310put_character((T310*)(oBC11fmt),'\50');
r114pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r114print_op(T114* C){
r310put_character((T310*)(oBC11fmt),'\40');
/*[IRF3.6pretty_print*/{T121* C1=(T121*)((C)->_feature_name/*12*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*4*/);
}/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
}


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=X89result_type(_t);
_at=X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
{/*AT*//*[IF*/
if(X62is_real(_at)){
/*[IF*/
if(X62is_integer(_tt)){
_tbee=X62run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 254: case 252: case 250: case 251: case 255: case 248: 
break;
default:
_tbee=NULL;
};{T359*n=malloc(sizeof(*n));
*n=M359;
r359make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
 else if(X62is_double(_at)){
/*[IF*/
if((X62is_integer(_tt))||(X62is_real(_tt))){
_tbee=X62run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 254: case 252: case 250: case 251: case 255: case 248: 
break;
default:
_tbee=NULL;
};{T359*n=malloc(sizeof(*n));
*n=M359;
r359make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*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_MINUS.fz_bad_argument*/
/*No:CALL_INFIX_MINUS.fz_iinaiv*/


T0* r114result_type(T114* C){
T0* R=NULL;
T0* _tla=NULL;
R=X312result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X62is_like_current(R)){
R=/*X312current_type*/((T0*)((T325*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 242: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X62run_type(X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_MINUS.run_feature*/


T0* r114runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r132to_runnable(((T132*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(r132start_position(((T132*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_13065);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


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_MINUS.fatal_error*/
/*No:CALL_INFIX_MINUS.us_minus*/


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


T0* r114runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X89to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r37add_position(X89start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms101_16515);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_MINUS.left_brackets*/
/*No:CALL_INFIX_MINUS.implicit_cast*/


void r114print_as_target(T114* C){
r310put_character((T310*)(oBC11fmt),'\50');
r114pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_MINUS.arg1*/


void r114run_feature_has_result(T114* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*16*/));
r37add_position(((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms100_53650);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r114run_feature_for(T114* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(X89result_type(a1));
R=r313get_rf(((T313*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_MINUS.target*/


void r114error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:CALL_INFIX_MINUS.precedence*/


void r114make(T114* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,r114operator(),a2);
C->_feature_name=(T0*)n;
}
{T132*n=malloc(sizeof(*n));
*n=M132;
/*[IRF3.3make_1*/((((T132*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_MINUS.is_current*/


void r114pretty_print(T114* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((7)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((7)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r114print_op(C);
/*[IF*/
if((X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))==(13)){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((7)>(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((7)<(X89precedence(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
X89pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else {/*AT*/X89bracketed_pretty_print(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
/*FI]*/
}
/*No:CALL_INFIX_MINUS.is_void*/


T0* r114operator(void){
T0* R=NULL;
R=((T0*)ms13_46);
return R;
}
/*No:CALL_INFIX_MINUS.atomic_precedence*/
/*No:CALL_INFIX_TIMES.feature_name*/
/*No:CALL_INFIX_TIMES.right_brackets*/
/*No:CALL_INFIX_TIMES.us_muls*/


T0* r119start_position(T119* C){
T0* R=NULL;
R=((T121*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


T0* r119add_comment(T119* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r119to_integer(T119* C){
T2 R=0;
r119error(r119start_position(C),((T0*)ms12_45846));
return R;
}


void r119bracketed_pretty_print(T119* C){
r310put_character((T310*)(oBC11fmt),'\50');
r119pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r119print_op(T119* C){
r310put_character((T310*)(oBC11fmt),'\40');
/*[IRF3.6pretty_print*/{T121* C1=(T121*)((C)->_feature_name/*12*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*4*/);
}/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
}


T0* r119to_runnable(T119* 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=r119runnable_expression((C)->_target/*4*/,a1);
_a=r119runnable_args((C)->_arguments/*8*/,a1);
_tt=X89result_type(_t);
_at=X89result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T132*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
{/*AT*//*[IF*/
if(X62is_real(_at)){
/*[IF*/
if(X62is_integer(_tt)){
_tbee=X62run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 254: case 252: case 250: case 251: case 255: case 248: 
break;
default:
_tbee=NULL;
};{T359*n=malloc(sizeof(*n));
*n=M359;
r359make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
 else if(X62is_double(_at)){
/*[IF*/
if((X62is_integer(_tt))||(X62is_real(_tt))){
_tbee=X62run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 254: case 252: case 250: case 251: case 255: case 248: 
break;
default:
_tbee=NULL;
};{T359*n=malloc(sizeof(*n));
*n=M359;
r359make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_rf=r119run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r119run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T119*n=malloc(sizeof(*n));
*n=M119;
r119with(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*/

