/*
-- 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"
/*No:PROC_CALL_N.feature_name*/


void r148run_feature_match(T148* C,T0* a1){
r148run_feature_has_no_result(C);
r132match_with((T132*)((C)->_arguments/*16*/),(C)->_run_feature/*12*/,a1);
}
/*No:PROC_CALL_N.arguments*/


T0* r148runnable_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;
}


T0* r148start_position(T148* C){
T0* R=NULL;
R=X65start_position((C)->_feature_name/*8*/);
return R;
}


T0* r148add_comment(T148* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r148run_feature_has_no_result(T148* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*12*/))!=((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*12*/));
r37add_position(X65start_position((C)->_feature_name/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms145_67122);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r148to_runnable(T148* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r148runnable_expression((C)->_target/*4*/,a1);
_a=r148runnable_args((C)->_arguments/*16*/,a1);
_rf=r148run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*12*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r148run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*16*/)))){
R=(T0*)C;
}
else{
{T148*n=malloc(sizeof(*n));
*n=M148;
r148with(n,_t,(C)->_feature_name/*8*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:PROC_CALL_N.fz_bad_argument*/
/*No:PROC_CALL_N.set_run_feature*/


T0* r148run_feature_for(T148* 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/*8*/,a2);
return R;
}
/*No:PROC_CALL_N.target*/
/*No:PROC_CALL_N.run_feature*/
/*No:PROC_CALL_N.end_mark_comment*/


void r148make(T148* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}


T0* r148runnable_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 r148pretty_print(T148* C){
X89print_as_target((C)->_target/*4*/);
r310put_string((T310*)(oBC11fmt),X65to_string((C)->_feature_name/*8*/));
r310level_incr((T310*)(oBC11fmt));
r132pretty_print((T132*)((C)->_arguments/*16*/));
r310level_decr((T310*)(oBC11fmt));
/*[IF*/
if(((T310*)(oBC11fmt))->_semi_colon_flag/*25*/){
r310put_character((T310*)(oBC11fmt),'\73');
}
/*FI]*/
}


T0* r148make_runnable(T148* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if(((C)->_run_feature/*12*/)==((void*)(NULL))){
C->_target=a1;
C->_arguments=a2;
C->_run_feature=a3;
R=(T0*)C;
}
else{
{T148*n=malloc(sizeof(*n));
*n=M148;
r148make(n,a1,(C)->_feature_name/*8*/,a2);
R=(T0*)n;
}
/*[IRF3.3set_run_feature*/((((T148*)(((T148*)R))))->_run_feature)=(a3);
/*]*/
}
/*FI]*/
return R;
}
/*No:PROC_CALL_N.arg_count*/


void r148with(T148* 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;
r148run_feature_match(C,a5);
}
/*No:PROC_CALL_N.fatal_error*/


T0* r259generic_list(T259* C){
T0* R=NULL;
R=X62generic_list((C)->_mapped/*12*/);
return R;
}


T0* r259base_class(T259* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r259base_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* r259base_class_name(T259* C){
T0* R=NULL;
R=X62base_class_name((C)->_mapped/*12*/);
return R;
}
/*No:TYPE_EXPANDED.start_position*/
/*No:TYPE_EXPANDED.is_formal_generic*/


void r259used_as_reference(T259* C){
/*[IF*/
if(X62is_expanded((C)->_mapped/*12*/)){
r313used_as_reference((T313*)(r259run_class(C)));
}
/*FI]*/
}


T6 r259is_a_in(T259* 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=r259to_runnable(C,_ct);
_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 r259id(T259* C){
T2 R=0;
R=((T313*)(r259run_class(C)))->_id/*4*/;
return R;
}


T6 r259is_pointer(T259* C){
T6 R=0;
R=X62is_pointer((C)->_mapped/*12*/);
return R;
}


T0* r259look_up_for(T259* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r259base_class(C)),a1,a2);
return R;
}


T0* r259to_runnable(T259* C,T0* a1){
T0* R=NULL;
T0* _m=NULL;
/*[IF*/
if(((C)->_run_type/*20*/)==((void*)(C))){
R=(T0*)C;
}
 else if(((C)->_run_type/*20*/)==((void*)((C)->_mapped/*12*/))){
R=(T0*)C;
}
else{
_m=X62to_runnable((C)->_mapped/*12*/,a1);
/*[IF*/
if((_m)==((void*)(NULL))){
r37add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms259_42042);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_run_type/*20*/)!=((void*)(NULL))){
{T259*n=malloc(sizeof(*n));
*n=M259;
r259from_other(n,(T0*)C,X62run_type(_m));
R=(T0*)n;
}
}
 else if(X62is_expanded(_m)){
C->_run_type=_m;
C->_run_time_mark=X62run_time_mark(_m);
R=(T0*)C;
}
 else if(((C)->_mapped/*12*/)==((void*)(X62run_type(_m)))){
C->_run_time_mark=r259compute_mark(X62run_time_mark(_m));
C->_run_type=(T0*)C;
R=(T0*)C;
}
else{
C->_run_time_mark=r259compute_mark(X62run_time_mark(_m));
{T259*n=malloc(sizeof(*n));
*n=M259;
r259from_other(n,(T0*)C,X62run_type(_m));
C->_run_type=(T0*)n;
}
R=(T0*)C;
}
/*FI]*/
r313set_at_run_time((T313*)(X62run_class((C)->_mapped/*12*/)));
r313set_at_run_time((T313*)(X62run_class((((T259*)R))->_run_type/*20*/)));
}
/*FI]*/
return R;
}
/*No:TYPE_EXPANDED.run_type*/


T0* r259run_class(T259* C){
T0* R=NULL;
R=r42run_class((C)->_run_type/*20*/);
return R;
}


T6 r259has_creation(T259* C,T0* a1){
T6 R=0;
R=r41has_creation((T41*)(r259base_class(C)),a1);
return R;
}


T0* r259expanded_initializer(T259* C){
T0* R=NULL;
R=r41expanded_initializer((T41*)(r259base_class(C)),(T0*)C);
return R;
}
/*No:TYPE_EXPANDED.is_like_current*/


T6 r259is_boolean(T259* C){
T6 R=0;
R=X62is_boolean((C)->_mapped/*12*/);
return R;
}


T6 r259is_generic(T259* C){
T6 R=0;
R=X62is_generic((C)->_mapped/*12*/);
return R;
}


T6 r259is_bit(T259* C){
T6 R=0;
R=X62is_bit((C)->_mapped/*12*/);
return R;
}


T6 r259is_real(T259* C){
T6 R=0;
R=X62is_real((C)->_mapped/*12*/);
return R;
}


T0* r259compute_mark(T0* a1){
T0* R=NULL;
r7copy((T7*)(oBC259tmp_written_mark),((T0*)ms12_10840));
r7extend((T7*)(oBC259tmp_written_mark),'\40');
r7append((T7*)(oBC259tmp_written_mark),a1);
R=r66item(oBC259tmp_written_mark);
return R;
}


T0* r259smallest_ancestor(T259* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_run_time_mark/*16*/)==((void*)(X62run_time_mark(a1)))){
R=(C)->_run_type/*20*/;
}
else{
R=X62run_type(X62smallest_ancestor((C)->_mapped/*12*/,a1));
}
/*FI]*/
return R;
}
/*No:TYPE_EXPANDED.is_any*/
/*No:TYPE_EXPANDED.fatal_error*/
/*No:TYPE_EXPANDED.run_time_mark*/
/*No:TYPE_EXPANDED.is_expanded*/


T6 r259is_basic_eiffel_expanded(T259* C){
T6 R=0;
/*[IF*/
if(((C)->_run_type/*20*/)==((void*)((C)->_mapped/*12*/))){
R=X62is_basic_eiffel_expanded((C)->_mapped/*12*/);
}
/*FI]*/
return R;
}
/*No:TYPE_EXPANDED.is_string*/


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


T6 r259is_a(T259* C,T0* a1){
T6 R=0;
R=X62is_a((C)->_mapped/*12*/,a1);
/*[IF*/
if(!(R)){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}


T6 r259is_character(T259* C){
T6 R=0;
R=X62is_character((C)->_mapped/*12*/);
return R;
}
/*No:TYPE_EXPANDED.is_reference*/


void r259from_other(T259* C,T0* a1,T0* a2){
C->_start_position=(((T259*)a1))->_start_position/*4*/;
C->_written_mark=(((T259*)a1))->_written_mark/*8*/;
C->_mapped=a2;
/*[IF*/
if(X62is_expanded((C)->_mapped/*12*/)){
C->_run_time_mark=X62run_time_mark((C)->_mapped/*12*/);
C->_run_type=(C)->_mapped/*12*/;
}
else{
C->_run_time_mark=r259compute_mark(X62run_time_mark((C)->_mapped/*12*/));
C->_run_type=(T0*)C;
}
/*FI]*/
}
/*No:TYPE_EXPANDED.mapped*/
/*No:TYPE_EXPANDED.written_mark*/
/*No:TYPE_EXPANDED.fz_expanded*/
T0*oBC259tmp_written_mark=NULL;


void r259make(T259* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_mapped=a2;
C->_written_mark=r259compute_mark(X62written_mark((C)->_mapped/*12*/));
}
/*No:TYPE_EXPANDED.is_none*/
/*No:TYPE_EXPANDED.pretty_print*/
/*No:TYPE_EXPANDED.is_array*/
/*No:TYPE_EXPANDED.fz_inako*/
/*No:TYPE_EXPANDED.is_like_argument*/


T6 r259is_double(T259* C){
T6 R=0;
R=X62is_double((C)->_mapped/*12*/);
return R;
}
/*No:CALL_PREFIX_NOT.feature_name*/


void r128run_feature_match(T128* C){
r128run_feature_has_result(C);
/*[IF*/
if((X312arg_count((C)->_run_feature/*8*/))>(0)){
r37add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
r37add_position(X312start_position((C)->_run_feature/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms124_50512);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r128runnable_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;
}


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


T0* r128add_comment(T128* 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 r128to_integer(T128* C){
T2 R=0;
T0* _rf1=NULL;
_rf1=(C)->_run_feature/*8*/;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 325: 
break;
default:
_rf1=NULL;
};/*[IF*/
if((_rf1)==((void*)(NULL))){
r128error(r128start_position(C),((T0*)ms12_45846));
}
else{
R=X89to_integer((((T325*)_rf1))->_value/*28*/);
}
/*FI]*/
return R;
}


void r128print_as_target(T128* C){
r310put_character((T310*)(oBC11fmt),'\50');
r128pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}


void r128bracketed_pretty_print(T128* C){
r310put_character((T310*)(oBC11fmt),'\50');
r128pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


T0* r128to_runnable(T128* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _t=NULL;
_t=r128runnable_expression((C)->_target/*4*/,a1);
_rf=r128run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*8*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r128run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T128*n=malloc(sizeof(*n));
*n=M128;
r128with(n,_t,(C)->_feature_name/*12*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r128run_feature_has_result(T128* C){
/*[IF*/
if((X312result_type((C)->_run_feature/*8*/))==((void*)(NULL))){
r37add_position(X312start_position((C)->_run_feature/*8*/));
r37add_position(((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms100_53650);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_PREFIX_NOT.fz_iinaiv*/


T0* r128run_feature_for(T128* 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;
}


T0* r128result_type(T128* C){
T0* R=NULL;
R=X312result_type((C)->_run_feature/*8*/);
/*[IF*/
if(X62is_like_current(R)){
R=/*X312current_type*/((T0*)((T325*)((C)->_run_feature/*8*/))->_current_type/*4*/);
}
/*FI]*/
return R;
}
/*No:CALL_PREFIX_NOT.target*/


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


void r128make(T128* C,T0* a1,T0* a2){
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,r128operator(),a1);
C->_feature_name=(T0*)n;
}
C->_target=a2;
}
/*No:CALL_PREFIX_NOT.us_not*/
/*No:CALL_PREFIX_NOT.is_current*/


void r128pretty_print(T128* C){
/*[IRF3.6pretty_print*/{T125* C1=(T125*)((C)->_feature_name/*12*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*4*/);
}/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
/*[IF*/
if((X89precedence((C)->_target/*4*/))<(11)){
r310put_character((T310*)(oBC11fmt),'\50');
X89pretty_print((C)->_target/*4*/);
r310put_character((T310*)(oBC11fmt),'\51');
}
else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
}
/*No:CALL_PREFIX_NOT.is_void*/


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


void r128with(T128* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_run_feature=a3;
r128run_feature_match(C);
}
/*No:CALL_PREFIX_NOT.fatal_error*/
/*No:E_CHECK.start_position*/


T0* r202add_comment(T202* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
 else {/*AT*//*[IF*/
if((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(1)){
R=(T0*)C;
}
else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r202to_runnable(T202* C,T0* a1){
T0* R=NULL;
T0* _al=NULL;
/*[IF*/
if(((C)->_current_type/*8*/)==((void*)(NULL))){
C->_current_type=a1;
/*[IF*/
if(r54all_check((T54*)(oBC11run_control))){
_al=r203to_runnable((T203*)((C)->_check_invariant/*4*/),a1);
/*[IF*/
if((_al)==((void*)(NULL))){
r202error(/*(IRF4.6start_position*/(((T203*)((C)->_check_invariant/*4*/)))->_start_position/*0*//*)*/,((T0*)ms202_16485));
}
else{
C->_check_invariant=_al;
R=(T0*)C;
}
/*FI]*/
}
else{
R=(T0*)C;
}
/*FI]*/
}
else{
{T202*n=malloc(sizeof(*n));
*n=M202;
r202make(n,/*(IRF4.6start_position*/(((T203*)((C)->_check_invariant/*4*/)))->_start_position/*0*//*)*/,NULL,((T203*)((C)->_check_invariant/*4*/))->_list/*8*/);
R=(T0*)n;
}
R=r202to_runnable(((T202*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_CHECK.current_type*/


void r202error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:E_CHECK.end_mark_comment*/


void r202make(T202* C,T0* a1,T0* a2,T0* a3){
{T203*n=malloc(sizeof(*n));
*n=M203;
r203make(n,a1,a2,a3);
C->_check_invariant=(T0*)n;
}
}


void r202pretty_print(T202* C){
r203pretty_print((T203*)((C)->_check_invariant/*4*/));
r310put_string((T310*)(oBC11fmt),((T0*)ms202_1520));
/*[IF*/
if(r310print_end_check((T310*)(oBC11fmt))){
r310put_end((T310*)(oBC11fmt),((T0*)ms202_2625));
}
/*FI]*/
}
/*No:E_CHECK.check_invariant*/
/*No:ORDINARY_RESULT.us_result*/
/*No:ORDINARY_RESULT.start_position*/


T0* r139add_comment(T139* 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 r139to_integer(T139* C){
T2 R=0;
r139error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:ORDINARY_RESULT.print_as_target*/
/*No:ORDINARY_RESULT.bracketed_pretty_print*/


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


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


void r139error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:ORDINARY_RESULT.run_feature*/
/*No:ORDINARY_RESULT.precedence*/
/*No:ORDINARY_RESULT.make*/
/*No:ORDINARY_RESULT.is_current*/
/*No:ORDINARY_RESULT.pretty_print*/
/*No:ORDINARY_RESULT.is_void*/
/*No:ORDINARY_RESULT.atomic_precedence*/


T0* r162twin(T162* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T162*)R)=*C;
return R;
}


T0* r162type(T162* C,T2 a1){
T0* R=NULL;
R=((T167*)(/*(IRF4.6name*/r169item(((T169*)((C)->_flat_list/*8*/)),a1)/*)*/))->_result_type/*12*/;
return R;
}


void r162add_last(T162* C,T0* a1){
T0* _n2=NULL;
T2 _i=0;
_i=1;
while (!((r169item((T169*)((C)->_flat_list/*8*/),_i))==((void*)(NULL)))) {
_n2=r169item((T169*)((C)->_flat_list/*8*/),_i);
/*[IF*/
if(((((T167*)_n2))->_to_string/*8*/)==((void*)((((T167*)a1))->_to_string/*8*/))){
r37add_position((((T167*)a1))->_start_position/*4*/);
r37add_position((((T167*)_n2))->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms163_36984);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IRF3.6put*/{T169* C1=(T169*)((C)->_flat_list/*8*/);
T0* b1=a1;
T2 b2=_i;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
/*[IRF3.3set_rank*/((((T167*)(((T167*)a1))))->_rank)=(_i);
/*]*/
}
/*No:LOCAL_VAR_LIST.em1*/


T2 r162rank_of(T162* C,T0* a1){
T2 R=0;
R=/*(IRF4.6count*/(((T169*)((C)->_flat_list/*8*/)))->_upper/*12*//*)*/;
while (!(((R)==(0))||((a1)==((void*)(((T167*)(/*(IRF4.6name*/r169item(((T169*)((C)->_flat_list/*8*/)),R)/*)*/))->_to_string/*8*/))))) {
R=(R)-(1);
}
return R;
}


void r162dynamic_runnable(T162* C,T0* a1){
T0* _n2=NULL;
T0* _n1=NULL;
T2 _i=0;
C->_flat_list=r169twin((T169*)((C)->_flat_list/*8*/));
_i=((T169*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
_n1=r169item((T169*)((C)->_flat_list/*8*/),_i);
_n2=r167to_runnable(((T167*)_n1),a1);
/*[IF*/
if((_n2)==((void*)(NULL))){
r162error((((T167*)_n1))->_start_position/*4*/,((T0*)ms163_18336));
}
else{
/*[IRF3.6put*/{T169* C1=(T169*)((C)->_flat_list/*8*/);
T0* b1=_n2;
T2 b2=_i;
((C1)->_storage/*4*/)[(b2)-((C1)->_lower/*16*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}


T0* r162to_runnable(T162* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r162is_runnable(C,a1)){
R=(T0*)C;
}
else{
R=r162twin(C);
r162dynamic_runnable(((T162*)R),a1);
r162check_name_clash(((T162*)R),a1);
}
/*FI]*/
return R;
}


T6 r162is_runnable(T162* C,T0* a1){
T6 R=0;
T0* _t=NULL;
T0* _n2=NULL;
T0* _n1=NULL;
T2 _i=0;
R=1;
_i=((T169*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((!(R))||((_i)==(0)))) {
_t=r162type(C,_i);
/*[IF*/
if(X62is_run_type(_t)){
/*[IF*/
if((X62run_type(_t))!=((void*)(_t))){
R=0;
}
/*FI]*/
}
else{
R=0;
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(R){
_i=((T169*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
_n1=r169item((T169*)((C)->_flat_list/*8*/),_i);
_n2=r167to_runnable(((T167*)_n1),a1);
/*[IF*/
if((_n2)==((void*)(NULL))){
r162error((((T167*)_n1))->_start_position/*4*/,((T0*)ms163_18336));
_i=0;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
r162check_name_clash(C,a1);
}
/*FI]*/
return R;
}
/*No:LOCAL_VAR_LIST.count*/


void r162error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:LOCAL_VAR_LIST.make*/


void r162declaration_list_make(T162* C,T0* a1){
T2 _actual_count=0;
T2 _il=0;
C->_list=a1;
_il=((T293*)((C)->_list/*4*/))->_upper/*8*/;
while (!((_il)==(0))) {
_actual_count=(_actual_count)+(X292count(r293item((T293*)((C)->_list/*4*/),_il)));
_il=(_il)-(1);
}
{T169*n=malloc(sizeof(*n));
*n=M169;
r169make(n,1,_actual_count);
C->_flat_list=(T0*)n;
}
_il=1;
while (!((_il)>(((T293*)((C)->_list/*4*/))->_upper/*8*/))) {
X292append_in(r293item((T293*)((C)->_list/*4*/),_il),(T0*)C);
_il=(_il)+(1);
}
}


void r162pretty_print(T162* C){
T2 _i=0;
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms162_2690));
/*[IF*/
if(r6_px_and(r310zen_mode((T310*)(oBC11fmt)),(r293count((T293*)((C)->_list/*4*/)))==(1))){
X292pretty_print(r293first((T293*)((C)->_list/*4*/)));
r310put_character((T310*)(oBC11fmt),'\73');
}
else{
_i=1;
while (!((_i)>(((T293*)((C)->_list/*4*/))->_upper/*8*/))) {
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
r310indent((T310*)(oBC11fmt));
X292pretty_print(r293item((T293*)((C)->_list/*4*/),_i));
r310put_character((T310*)(oBC11fmt),'\73');
_i=(_i)+(1);
}
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
}
/*No:LOCAL_VAR_LIST.name*/


void r162check_name_clash(T162* C,T0* a1){
T2 _i=0;
_i=((T169*)((C)->_flat_list/*8*/))->_upper/*12*/;
while (!((_i)==(0))) {
/*[IRF3.6name_clash*/{T167* C1=(T167*)(/*(IRF4.6name*/r169item(((T169*)((C)->_flat_list/*8*/)),_i)/*)*/);
T0* b1=a1;
r167name_clash_for(C1,b1,((T0*)ms167_107113));
}/*]*/
_i=(_i)-(1);
}
}
/*No:LOCAL_VAR_LIST.flat_list*/
/*No:LOCAL_VAR_LIST.list*/
/*No:LOCAL_VAR_LIST.fatal_error*/


T0* r253generic_list(T253* C){
T0* R=NULL;
r253fatal_error_generic_list(C);
return R;
}


T0* r253base_class(T253* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[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;
}
/*No:TYPE_NONE.base_class_name*/
/*No:TYPE_NONE.start_position*/
/*No:TYPE_NONE.is_formal_generic*/
/*No:TYPE_NONE.used_as_reference*/


T6 r253is_a_in(T253* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r253written_mark())==((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_NONE.id*/
/*No:TYPE_NONE.is_pointer*/


T0* r253look_up_for(T253* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r253base_class(C)),a1,a2);
return R;
}
/*No:TYPE_NONE.to_runnable*/
/*No:TYPE_NONE.run_type*/
/*No:TYPE_NONE.run_class*/
/*No:TYPE_NONE.us_none*/


T6 r253has_creation(T253* C,T0* a1){
T6 R=0;
r37add_position(X65start_position(a1));
r253error(/*(IRF4.6start_position*/(((T49*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms253_29715));
return R;
}
/*No:TYPE_NONE.expanded_initializer*/
/*No:TYPE_NONE.is_like_current*/
/*No:TYPE_NONE.is_boolean*/
/*No:TYPE_NONE.is_generic*/
/*No:TYPE_NONE.is_bit*/
/*No:TYPE_NONE.is_real*/


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


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


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


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


void r253make(T253* C,T0* a1){
{T49*n=malloc(sizeof(*n));
*n=M49;
r49make(n,((T0*)ms13_1256),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_NONE.is_none*/
/*No:TYPE_NONE.pretty_print*/
/*No:TYPE_NONE.is_array*/


void r253fatal_error_generic_list(T253* C){
r37add_type((T0*)C,((T0*)ms62_29184));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*No:TYPE_NONE.is_like_argument*/
/*No:TYPE_NONE.is_double*/
/*No:CALL_INFIX_OR_ELSE.feature_name*/
/*No:CALL_INFIX_OR_ELSE.right_brackets*/


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


T0* r104add_comment(T104* 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 r104to_integer(T104* C){
T2 R=0;
r104error(r104start_position(C),((T0*)ms12_45846));
return R;
}
/*No:CALL_INFIX_OR_ELSE.us_or_else*/


void r104bracketed_pretty_print(T104* C){
r310put_character((T310*)(oBC11fmt),'\50');
r104pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


void r104print_op(T104* 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* r104to_runnable(T104* 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=r104runnable_expression((C)->_target/*4*/,a1);
_a=r104runnable_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=r104run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r104run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T104*n=malloc(sizeof(*n));
*n=M104;
r104with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_OR_ELSE.fz_bad_argument*/
/*No:CALL_INFIX_OR_ELSE.fz_iinaiv*/


T0* r104result_type(T104* 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_OR_ELSE.run_feature*/


T0* r104runnable_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 r104with(T104* 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;
r104run_feature_match(C,a5);
}
/*No:CALL_INFIX_OR_ELSE.fatal_error*/


void r104run_feature_match(T104* C,T0* a1){
r104run_feature_has_result(C);
r132match_with((T132*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_OR_ELSE.arguments*/


T0* r104runnable_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_OR_ELSE.left_brackets*/
/*No:CALL_INFIX_OR_ELSE.implicit_cast*/


void r104print_as_target(T104* C){
r310put_character((T310*)(oBC11fmt),'\50');
r104pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}
/*No:CALL_INFIX_OR_ELSE.arg1*/


void r104run_feature_has_result(T104* 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* r104run_feature_for(T104* 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_OR_ELSE.target*/


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


void r104make(T104* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,r104operator(),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_OR_ELSE.is_current*/


void r104pretty_print(T104* C){
/*[IF*/
if((X89precedence((C)->_target/*4*/))==(13)){
X89pretty_print((C)->_target/*4*/);
}
 else if((4)>(X89precedence((C)->_target/*4*/))){
X89bracketed_pretty_print((C)->_target/*4*/);
}
 else if((4)<(X89precedence((C)->_target/*4*/))){
X89pretty_print((C)->_target/*4*/);
}
/*AF*/else{
X89pretty_print((C)->_target/*4*/);
}
/*FI]*/
r104print_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((4)>(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((4)<(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_OR_ELSE.is_void*/


T0* r104operator(void){
T0* R=NULL;
R=((T0*)ms13_8316);
return R;
}
/*No:CALL_INFIX_OR_ELSE.atomic_precedence*/


T0* r276run_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=r276runnable((((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:EXTERNAL_FUNCTION.base_class*/


void r276set_rescue_compound(T276* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
r37add_position(r200start_position(((T200*)a1)));
}
else{
r37add_position(r276start_position(C));
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms274_126759);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37print_as_fatal_error((T37*)(oBC11eh));
}


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


T6 r276is_merge_with(T276* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*48*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
R=X62is_a_in((C)->_result_type/*48*/,X75result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)((C)->_arguments/*20*/),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*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
R=X62is_a_in(X75result_type(a1),(C)->_result_type/*48*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),(C)->_arguments/*20*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r276merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r276runnable(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))){
r276error(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:EXTERNAL_FUNCTION.first_name*/
/*No:EXTERNAL_FUNCTION.em1*/
/*No:EXTERNAL_FUNCTION.header_comment*/


void r276pretty_print_profile(T276* C){
r276pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r276pretty_print_arguments(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T0*)ms75_186));
X62pretty_print((C)->_result_type/*48*/);
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.names*/
/*No:EXTERNAL_FUNCTION.fz_03*/


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


void r276add_into(T276* 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 r276can_hide(T276* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*48*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r276error(r276start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r276error(r276start_position(C),((T0*)ms75_83182));
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r37add_position(X75start_position(a1));
r276error(r276start_position(C),((T0*)ms75_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*48*/)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((C)->_result_type/*48*/,X75result_type(a1),a2))){
/*[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]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(r171is_a_in((T171*)((C)->_arguments/*20*/),X75arguments(a1),a2))){
r37add_position(X75start_position(a1));
r37add_position(r276start_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){
r276merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.ensure_assertion*/


T0* r276run_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=r276runnable(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 r276check_obsolete(T276* C){
/*[IF*/
if(!(((T42*)(oBC11small_eiffel))->_short_flag/*0*/)){
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms198_39396);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T154*)((C)->_obsolete_mark/*24*/))->_to_string/*8*/;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r276warning(r276start_position(C),((T0*)ms12_166));
}
/*FI]*/
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.fz_is*/


T0* r276try_to_undefine(T276* 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=r276try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r276merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_FUNCTION.is_deferred*/
/*No:EXTERNAL_FUNCTION.set_clients*/
/*No:EXTERNAL_FUNCTION.native*/
/*No:EXTERNAL_FUNCTION.code_ensure*/
/*No:EXTERNAL_FUNCTION.nb_errors*/


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


T0* r276to_run_feature(T276* C,T0* a1,T0* a2){
T0* R=NULL;
r276check_obsolete(C);
{T324*n=malloc(sizeof(*n));
*n=M324;
r324make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r276merge_header_comments(T276* 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:EXTERNAL_FUNCTION.arguments*/
/*No:EXTERNAL_FUNCTION.require_assertion*/


void r276pretty_print_routine_body(T276* C){
r310keyword((T310*)(oBC11fmt),((T0*)ms274_11448));
X273pretty_print((C)->_native/*40*/);
/*[IF*/
if((!(r7is_equal((T7*)(r276external_c_name(C)),X65to_string(/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/))))||((r67count((T67*)((C)->_names/*8*/)))>(1))){
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms274_2685));
r310put_character((T310*)(oBC11fmt),'\42');
r310put_string((T310*)(oBC11fmt),r276external_c_name(C));
r310put_character((T310*)(oBC11fmt),'\42');
}
/*FI]*/
}


T0* r276external_c_name(T276* C){
T0* R=NULL;
/*[IF*/
if(((C)->_alias_string/*44*/)==((void*)(NULL))){
R=X65to_string(/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/);
}
else{
R=(C)->_alias_string/*44*/;
}
/*FI]*/
return R;
}


void r276pretty_print_arguments(T276* C){
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(NULL))){
r171pretty_print((T171*)((C)->_arguments/*20*/));
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.pretty_print_rescue*/


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


T0* r276try_to_undefine_aux(T276* C,T0* a1,T0* a2){
T0* R=NULL;
{T272*n=malloc(sizeof(*n));
*n=M272;
r272from_effective(n,a1,(C)->_arguments/*20*/,(C)->_result_type/*48*/,(C)->_require_assertion/*28*/,(C)->_ensure_assertion/*32*/,a2);
R=(T0*)n;
}
return R;
}
/*No:EXTERNAL_FUNCTION.set_ensure_assertion*/
/*No:EXTERNAL_FUNCTION.fz_bad_assertion*/
/*No:EXTERNAL_FUNCTION.fz_obsolete*/
/*No:EXTERNAL_FUNCTION.fz_end*/
/*No:EXTERNAL_FUNCTION.fz_dot*/
/*No:EXTERNAL_FUNCTION.alias_string*/


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


void r276make(T276* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7,T0* a8){
r276make_routine(C,a1,a2,a4,a5,a6);
C->_result_type=a3;
r276make_external_routine(C,a7,a8);
}


void r276pretty_print_names(T276* 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 r276pretty_print(T276* C){
T0* _fn=NULL;
r310indent((T310*)(oBC11fmt));
r276pretty_print_profile(C);
r310keyword((T310*)(oBC11fmt),((T0*)ms12_446));
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((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/*24*/));
}
/*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/*28*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r271pretty_print((T271*)((C)->_require_assertion/*28*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r276pretty_print_routine_body(C);
/*[IF*/
if(((C)->_ensure_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r199pretty_print((T199*)((C)->_ensure_assertion/*32*/));
}
/*FI]*/
/*[IRF3.1pretty_print_rescue*//*]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_951));
/*[IF*/
if((((C)->_end_comment/*36*/)!=((void*)(NULL)))&&(!(r64dummy((T64*)((C)->_end_comment/*36*/))))){
r64pretty_print((T64*)((C)->_end_comment/*36*/));
}
 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');
}


void r276collect_for(T276* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*28*/;
/*[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/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(((T199*)((C)->_ensure_assertion/*32*/))->_header_comment/*4*/);
/*]*/
r199add_into((T199*)((C)->_ensure_assertion/*32*/),oBC75assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:EXTERNAL_FUNCTION.end_comment*/


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


T0* r236add_comment(T236* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}

