/*
-- 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:CALL_PREFIX_FREEOP.feature_name*/


void r122run_feature_match(T122* C){
r122run_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* r122runnable_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* r122start_position(T122* C){
T0* R=NULL;
R=((T125*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


T0* r122add_comment(T122* 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 r122to_integer(T122* 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))){
r122error(r122start_position(C),((T0*)ms12_45846));
}
else{
R=X89to_integer((((T325*)_rf1))->_value/*28*/);
}
/*FI]*/
return R;
}


void r122print_as_target(T122* C){
r310put_character((T310*)(oBC11fmt),'\50');
r122pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
r310put_character((T310*)(oBC11fmt),'\56');
}


void r122bracketed_pretty_print(T122* C){
r310put_character((T310*)(oBC11fmt),'\50');
r122pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


T0* r122to_runnable(T122* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _t=NULL;
_t=r122runnable_expression((C)->_target/*4*/,a1);
_rf=r122run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*8*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r122run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T122*n=malloc(sizeof(*n));
*n=M122;
r122with(n,_t,(C)->_feature_name/*12*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r122run_feature_has_result(T122* 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_FREEOP.fz_iinaiv*/


T0* r122run_feature_for(T122* 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* r122result_type(T122* 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_FREEOP.target*/


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


void r122make(T122* C,T0* a1,T0* a2){
C->_target=a1;
C->_feature_name=a2;
}
/*No:CALL_PREFIX_FREEOP.is_current*/


void r122pretty_print(T122* 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_FREEOP.is_void*/


void r122with(T122* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_run_feature=a3;
r122run_feature_match(C);
}
/*No:CALL_PREFIX_FREEOP.fatal_error*/
/*No:E_STRIP.start_position*/


T0* r130add_comment(T130* 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 r130to_integer(T130* C){
T2 R=0;
r130error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}


void r130print_as_target(T130* C){
r130pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\56');
}


void r130bracketed_pretty_print(T130* C){
r310put_character((T310*)(oBC11fmt),'\50');
r130pretty_print(C);
r310put_character((T310*)(oBC11fmt),'\51');
}


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


T0* r130to_runnable(T130* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
/*[IRF3.3set_strip_used*/((((T313*)((T313*)(X62run_class((C)->_current_type/*12*/)))))->_strip_used)=(1);
/*]*/
R=(T0*)C;
}
else{
{T130*n=malloc(sizeof(*n));
*n=M130;
r130make(n,(C)->_start_position/*4*/,(C)->_list/*8*/);
R=(T0*)n;
}
R=r130to_runnable(((T130*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_STRIP.current_type*/
/*No:E_STRIP.fz_iinaiv*/
T0*oBC11manifest_array_pool=NULL;
int fBC130result_type=0;
T0*oBC130result_type=NULL;


T0* r130result_type(void){
if(fBC130result_type==0){
fBC130result_type=1;
{T244*n=malloc(sizeof(*n));
*n=M244;
r244make(n,NULL,r130type_any());
oBC130result_type=(T0*)n;
}
oBC130result_type=r244to_runnable(((T244*)oBC130result_type),r130type_any());
r313set_at_run_time((T313*)(r244run_class(((T244*)oBC130result_type))));
r244load_basic_features(((T244*)oBC130result_type));
r350register(oBC130result_type);
}
return oBC130result_type;}


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


void r130make(T130* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_list=a2;
}
/*No:E_STRIP.is_current*/


void r130pretty_print(T130* C){
r310put_string((T310*)(oBC11fmt),((T0*)ms130_5999));
r310level_incr((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_list/*8*/)!=((void*)(NULL))){
r67pretty_print((T67*)((C)->_list/*8*/));
}
/*FI]*/
r310put_string((T310*)(oBC11fmt),((T0*)ms130_42));
r310level_decr((T310*)(oBC11fmt));
}
/*No:E_STRIP.is_void*/
/*No:E_STRIP.list*/
/*No:ONCE_RESULT.us_result*/
/*No:ONCE_RESULT.start_position*/


T0* r138add_comment(T138* 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 r138to_integer(T138* C){
T2 R=0;
r138error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:ONCE_RESULT.print_as_target*/
/*No:ONCE_RESULT.bracketed_pretty_print*/


T0* r138to_runnable(T138* C,T0* a1){
T0* R=NULL;
T0* _rt2=NULL;
T0* _rt1=NULL;
T0* _rf6=NULL;
R=(T0*)C;
_rf6=r42top_rf((T42*)(oBC11small_eiffel));
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 342: 
break;
default:
_rf6=NULL;
};/*[IF*/
if(((C)->_run_feature_6/*8*/)==((void*)(NULL))){
C->_run_feature_6=_rf6;
}
else{
_rt1=X62run_type((((T342*)_rf6))->_result_type/*40*/);
_rt2=X62run_type(((T342*)((C)->_run_feature_6/*8*/))->_result_type/*40*/);
/*[IF*/
if((X62run_time_mark(_rt1))!=((void*)(X62run_time_mark(_rt2)))){
r37add_position(X62start_position(_rt1));
r37add_position(X62start_position(_rt2));
r342fe_vffd7((T342*)((C)->_run_feature_6/*8*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:ONCE_RESULT.fz_iinaiv*/
/*No:ONCE_RESULT.result_type*/


void r138error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:ONCE_RESULT.precedence*/
/*No:ONCE_RESULT.make*/
/*No:ONCE_RESULT.is_current*/
/*No:ONCE_RESULT.pretty_print*/
/*No:ONCE_RESULT.is_void*/
/*No:ONCE_RESULT.run_feature_6*/
/*No:ONCE_RESULT.atomic_precedence*/
/*No:INDEX_CLAUSE.tag*/
/*No:INDEX_CLAUSE.without_tag*/


void r305add_last(T305* C,T0* a1){
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
{T134*n=malloc(sizeof(*n));
*n=M134;
r134with_capacity(n,4);
C->_list=(T0*)n;
}
}
/*FI]*/
X134add_last((C)->_list/*4*/,a1);
}


void r305pretty_print(T305* C){
T2 _i=0;
/*[IF*/
if(((C)->_tag/*0*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),(C)->_tag/*0*/);
r310put_string((T310*)(oBC11fmt),((T0*)ms305_186));
}
/*FI]*/
/*[IF*/
if(((C)->_list/*4*/)!=((void*)(NULL))){
r310level_incr((T310*)(oBC11fmt));
_i=/*X134lower*/((T2)0);
while (!((_i)>(/*X134upper*/((T2)((T134*)((C)->_list/*4*/))->_upper/*12*/)))) {
X89pretty_print(/*X134item*/((T0*)r134item((T134*)((C)->_list/*4*/),_i)));
_i=(_i)+(1);
/*[IF*/
if((_i)<=(/*X134upper*/((T2)((T134*)((C)->_list/*4*/))->_upper/*12*/))){
r310put_string((T310*)(oBC11fmt),((T0*)ms305_158));
}
/*FI]*/
}
r310level_decr((T310*)(oBC11fmt));
}
/*FI]*/
}
/*No:INDEX_CLAUSE.with_tag*/
/*No:INDEX_CLAUSE.list*/
/*No:FORMAL_GENERIC_ARG.start_position*/


void r263make(T263* C,T0* a1,T0* a2){
C->_name=a1;
C->_constraint=a2;
}


void r263pretty_print(T263* C){
/*[IRF3.6pretty_print*/{T49* C1=(T49*)((C)->_name/*0*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*0*/);
}/*]*/
/*[IF*/
if(/*(IRF4.7constrained*/((C)->_constraint/*4*/)!=(NULL)/*)*/){
r310level_incr((T310*)(oBC11fmt));
r310put_string((T310*)(oBC11fmt),((T0*)ms263_220));
X62pretty_print((C)->_constraint/*4*/);
r310level_decr((T310*)(oBC11fmt));
}
/*FI]*/
}
/*No:FORMAL_GENERIC_ARG.constraint*/
/*No:FORMAL_GENERIC_ARG.name*/
/*No:FORMAL_GENERIC_ARG.constrained*/
/*No:TYPE_NATIVE_ARRAY.generic_list*/


T0* r247base_class(T247* 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_NATIVE_ARRAY.base_class_name*/
/*No:TYPE_NATIVE_ARRAY.start_position*/
/*No:TYPE_NATIVE_ARRAY.is_formal_generic*/
/*No:TYPE_NATIVE_ARRAY.used_as_reference*/


T6 r247is_a_in(T247* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*12*/)==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(((T313*)a2))->_current_type/*0*/;
_t1=r247to_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;
}
/*No:TYPE_NATIVE_ARRAY.elements_type*/


T2 r247id(T247* C){
T2 R=0;
R=((T313*)(r247run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_pointer*/


T0* r247look_up_for(T247* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r247base_class(C)),a1,a2);
return R;
}


T0* r247to_runnable(T247* C,T0* a1){
T0* R=NULL;
T0* _rt=NULL;
T0* _et2=NULL;
T0* _et1=NULL;
_et1=/*(IRF4.6elements_type*/r245first(((T245*)((C)->_generic_list/*8*/)))/*)*/;
_et2=X62to_runnable(_et1,a1);
/*[IF*/
if((_et2)==((void*)(NULL))){
/*[IF*/
if((_et2)!=((void*)(NULL))){
r37add_position(X62start_position(_et2));
}
/*FI]*/
r37add_position(X62start_position(_et1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms12_28959);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_et2=X62run_type(_et2);
/*[IF*/
if(((C)->_run_type/*16*/)==((void*)(NULL))){
R=(T0*)C;
/*[IF*/
if((_et2)==((void*)(_et1))){
C->_run_type=(T0*)C;
r247load_basic_features(C);
}
else{
{T247*n=malloc(sizeof(*n));
*n=M247;
r247make_runnable(n,/*(IRF4.6start_position*/(((T49*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,_et2);
C->_run_type=(T0*)n;
}
r247load_basic_features((T247*)((C)->_run_type/*16*/));
}
/*FI]*/
}
 else if((_et2)==((void*)(_et1))){
R=(T0*)C;
}
else{
R=r247twin(C);
{T247*n=malloc(sizeof(*n));
*n=M247;
r247make_runnable(n,/*(IRF4.6start_position*/(((T49*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,_et2);
_rt=(T0*)n;
}
/*[IRF3.3set_run_type*/((((T247*)(((T247*)R))))->_run_type)=(_rt);
/*]*/
r247load_basic_features(((T247*)_rt));
}
/*FI]*/
return R;
}


void r247load_basic_features(T247* C){
T0* _rc=NULL;
T0* _rf=NULL;
T0* _et=NULL;
_rc=r247run_class(C);
r313set_at_run_time(((T313*)_rc));
_et=/*(IRF4.6elements_type*/r245first(((T245*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if(X62is_expanded(_et)){
r313set_at_run_time((T313*)(X62run_class(_et)));
}
/*FI]*/
_rf=r313get_feature_with(((T313*)_rc),((T0*)ms13_1764));
_rf=r313get_feature_with(((T313*)_rc),((T0*)ms13_1053));
/*[IF*/
if((X62expanded_initializer(_et))!=((void*)(NULL))){
_rf=r313get_feature_with(((T313*)_rc),((T0*)ms13_13554));
}
/*FI]*/
}
/*No:TYPE_NATIVE_ARRAY.run_type*/


T0* r247run_class(T247* C){
T0* R=NULL;
/*[IF*/
if(r247is_run_type(C)){
R=r42run_class((C)->_run_type/*16*/);
}
/*FI]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.has_creation*/
/*No:TYPE_NATIVE_ARRAY.expanded_initializer*/
/*No:TYPE_NATIVE_ARRAY.us_clear_all*/
/*No:TYPE_NATIVE_ARRAY.us_item*/
/*No:TYPE_NATIVE_ARRAY.is_like_current*/
/*No:TYPE_NATIVE_ARRAY.is_boolean*/
/*No:TYPE_NATIVE_ARRAY.is_generic*/


void r247make_runnable(T247* C,T0* a1,T0* a2){
r247make(C,a1,a2);
C->_run_type=(T0*)C;
}
/*No:TYPE_NATIVE_ARRAY.is_bit*/
/*No:TYPE_NATIVE_ARRAY.is_real*/


T0* r247smallest_ancestor(T247* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X62run_type(a1);
/*[IF*/
if(X62is_a(_rto,(C)->_run_type/*16*/)){
R=_rto;
}
 else if(r247is_a((T247*)((C)->_run_type/*16*/),_rto)){
R=(C)->_run_type/*16*/;
}
else{
R=r247type_any();
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_any*/
/*No:TYPE_NATIVE_ARRAY.fatal_error*/
/*No:TYPE_NATIVE_ARRAY.set_run_type*/


T0* r247run_time_mark(T247* C){
T0* R=NULL;
/*[IF*/
if(r247is_run_type(C)){
R=((T247*)((C)->_run_type/*16*/))->_written_mark/*12*/;
}
/*FI]*/
return R;
}


T0* r247twin(T247* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T247*)R)=*C;
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_expanded*/
/*No:TYPE_NATIVE_ARRAY.us_put*/
/*No:TYPE_NATIVE_ARRAY.is_basic_eiffel_expanded*/


T0* r247type_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_NATIVE_ARRAY.us_native_array*/
/*No:TYPE_NATIVE_ARRAY.is_string*/
/*No:TYPE_NATIVE_ARRAY.is_integer*/
/*No:TYPE_NATIVE_ARRAY.is_like_feature*/
/*No:TYPE_NATIVE_ARRAY.fz_dot*/
/*No:TYPE_NATIVE_ARRAY.is_anchored*/


T6 r247is_a(T247* C,T0* a1){
T6 R=0;
R=(r247run_time_mark(C))==((void*)(X62run_time_mark(a1)));
/*[IF*/
if(!(R)){
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}


T6 r247is_run_type(T247* C){
T6 R=0;
T0* _et=NULL;
/*[IF*/
if(((C)->_run_type/*16*/)!=((void*)(NULL))){
R=1;
}
else{
_et=/*(IRF4.6elements_type*/r245first(((T245*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if((X62is_run_type(_et))&&((X62run_type(_et))==((void*)(_et)))){
C->_run_type=(T0*)C;
r247load_basic_features(C);
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_NATIVE_ARRAY.is_character*/
/*No:TYPE_NATIVE_ARRAY.is_reference*/
/*No:TYPE_NATIVE_ARRAY.written_mark*/


void r247make(T247* C,T0* a1,T0* a2){
{T49*n=malloc(sizeof(*n));
*n=M49;
r49make(n,((T0*)ms13_17628),a1);
C->_base_class_name=(T0*)n;
}
C->_generic_list=se_ma245(1,
a2);
r7copy((T7*)(((T0*)ms62_785024)),((T0*)ms13_17628));
r7extend((T7*)(((T0*)ms62_785024)),'\133');
r7append((T7*)(((T0*)ms62_785024)),X62written_mark(a2));
r7extend((T7*)(((T0*)ms62_785024)),'\135');
C->_written_mark=r66item(((T0*)ms62_785024));
}
/*No:TYPE_NATIVE_ARRAY.is_none*/
/*No:TYPE_NATIVE_ARRAY.pretty_print*/
/*No:TYPE_NATIVE_ARRAY.is_array*/
/*No:TYPE_NATIVE_ARRAY.fz_inako*/
/*No:TYPE_NATIVE_ARRAY.fz_bga*/
/*No:TYPE_NATIVE_ARRAY.is_like_argument*/
/*No:TYPE_NATIVE_ARRAY.tmp_string*/
/*No:TYPE_NATIVE_ARRAY.is_double*/


T0* r251generic_list(T251* C){
T0* R=NULL;
r251fatal_error_generic_list(C);
return R;
}


T0* r251base_class(T251* 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_DOUBLE.base_class_name*/
/*No:TYPE_DOUBLE.start_position*/
/*No:TYPE_DOUBLE.is_formal_generic*/
int fBC251used_as_reference=0;


void r251used_as_reference(void){
if (fBC251used_as_reference==0){
fBC251used_as_reference=1;
r251load_ref(((T0*)ms13_10890));
}}


T6 r251is_a_in(T251* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if((r251written_mark())==((void*)(X62written_mark(a1)))){
R=1;
}
else{
_ct=(((T313*)a2))->_current_type/*0*/;
_t1=r251to_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;
}
/*No:TYPE_DOUBLE.id*/
/*No:TYPE_DOUBLE.is_pointer*/


T0* r251look_up_for(T251* C,T0* a1,T0* a2){
T0* R=NULL;
R=r41look_up_for((T41*)(r251base_class(C)),a1,a2);
return R;
}


T0* r251to_runnable(T251* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r251check_type(C);
return R;
}
/*No:TYPE_DOUBLE.us_double_ref*/
int fBC11type_double_ref=0;
T0*oBC11type_double_ref=NULL;


T0* r251type_double_ref(void){
if(fBC11type_double_ref==0){
T0* _double_ref=NULL;
fBC11type_double_ref=1;
{T49*n=malloc(sizeof(*n));
*n=M49;
r49make(n,((T0*)ms13_10890),NULL);
_double_ref=(T0*)n;
}
{T257*n=malloc(sizeof(*n));
*n=M257;
/*[IRF3.3make*/((((T257*)(n)))->_base_class_name)=(_double_ref);
/*]*/
oBC11type_double_ref=(T0*)n;
}
}
return oBC11type_double_ref;}
/*No:TYPE_DOUBLE.run_type*/


T0* r251run_class(T251* C){
T0* R=NULL;
R=r42run_class((T0*)C);
return R;
}


T6 r251has_creation(T251* C,T0* a1){
T6 R=0;
r37add_position(X65start_position(a1));
r251error(/*(IRF4.6start_position*/(((T49*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms249_100044));
return R;
}
/*No:TYPE_DOUBLE.expanded_initializer*/
/*No:TYPE_DOUBLE.us_item*/
/*No:TYPE_DOUBLE.is_like_current*/
/*No:TYPE_DOUBLE.is_boolean*/
/*No:TYPE_DOUBLE.is_generic*/
/*No:TYPE_DOUBLE.is_bit*/
/*No:TYPE_DOUBLE.is_real*/


T0* r251smallest_ancestor(T251* C,T0* a1){
T0* R=NULL;
T0* _rto=NULL;
_rto=X62run_type(a1);
/*[IF*/
if(X62is_integer(_rto)){
R=(T0*)C;
}
 else if(X62is_real(_rto)){
R=(T0*)C;
}
 else if(X62is_double(_rto)){
R=(T0*)C;
}
else{
R=r257smallest_ancestor((T257*)(r251type_double_ref()),_rto);
}
/*FI]*/
return R;
}
/*No:TYPE_DOUBLE.is_any*/
/*No:TYPE_DOUBLE.nb_errors*/
/*No:TYPE_DOUBLE.us_double*/


T0* r251run_time_mark(void){
T0* R=NULL;
R=((T0*)ms13_4818);
return R;
}
/*No:TYPE_DOUBLE.is_expanded*/
/*No:TYPE_DOUBLE.is_basic_eiffel_expanded*/
/*No:TYPE_DOUBLE.is_string*/
/*No:TYPE_DOUBLE.is_integer*/
/*No:TYPE_DOUBLE.is_like_feature*/
/*No:TYPE_DOUBLE.fz_dot*/
/*No:TYPE_DOUBLE.is_anchored*/
/*No:TYPE_DOUBLE.is_run_type*/


T6 r251is_a(T251* C,T0* a1){
T6 R=0;
/*[IF*/
if(X62is_double(a1)){
R=1;
}
 else if(r41is_subclass_of((T41*)(r251base_class(C)),X62base_class(a1))){
R=1;
r251used_as_reference();
}
/*FI]*/
/*[IF*/
if(!(R)){
r37add_type((T0*)C,((T0*)ms12_17730));
r37add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_DOUBLE.is_character*/
/*No:TYPE_DOUBLE.is_reference*/


T0* r251written_mark(void){
T0* R=NULL;
R=((T0*)ms13_4818);
return R;
}


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


void r251make(T251* C,T0* a1){
{T49*n=malloc(sizeof(*n));
*n=M49;
r49make(n,((T0*)ms13_4818),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_DOUBLE.is_none*/
/*No:TYPE_DOUBLE.pretty_print*/
/*No:TYPE_DOUBLE.is_array*/
/*No:TYPE_DOUBLE.fz_inako*/


void r251fatal_error_generic_list(T251* C){
r37add_type((T0*)C,((T0*)ms62_29184));
r37print_as_fatal_error((T37*)(oBC11eh));
}
/*No:TYPE_DOUBLE.is_like_argument*/


void r251load_ref(T0* a1){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _cn=NULL;
{T49*n=malloc(sizeof(*n));
*n=M49;
r49make(n,a1,NULL);
_cn=(T0*)n;
}
_rc=r41run_class((T41*)(r49base_class(((T49*)_cn))));
r313set_at_run_time(((T313*)_rc));
_rf=r313get_feature_with(((T313*)_rc),((T0*)ms13_1764));
}
int fBC251check_type=0;


void r251check_type(T251* C){
if (fBC251check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC251check_type=1;
_bc=r251base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_rc=r251run_class(C);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(!((((T41*)_bc))->_is_expanded/*20*/)){
r251error(/*(IRF4.6start_position*/(((T49*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms251_35832));
}
/*FI]*/
}
/*FI]*/
}}
/*No:TYPE_DOUBLE.is_double*/
/*No:CST_ATT_DOUBLE.base_class*/
/*No:CST_ATT_DOUBLE.value_mem*/


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


T6 r196is_merge_with(T196* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X62is_a_in((C)->_result_type/*20*/,X75result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(/*(IRF4.1arguments*/NULL/*)*/),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/*20*/)!=((void*)(NULL))){
R=X62is_a_in(X75result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r196merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_DOUBLE.first_name*/
/*No:CST_ATT_DOUBLE.em1*/
/*No:CST_ATT_DOUBLE.header_comment*/


void r196pretty_print_profile(T196* C){
r196pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
/*[IRF3.1pretty_print_arguments*//*]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T0*)ms75_186));
X62pretty_print((C)->_result_type/*20*/);
}
/*FI]*/
}
/*No:CST_ATT_DOUBLE.names*/
/*No:CST_ATT_DOUBLE.result_type*/
/*No:CST_ATT_DOUBLE.code_require*/
/*No:CST_ATT_DOUBLE.make_e_feature*/


void r196add_into(T196* 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 r196can_hide(T196* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r196error(r196start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
{/*AT*/r37add_position(X75start_position(a1));
r196error(r196start_position(C),((T0*)ms75_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((C)->_result_type/*20*/,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*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r196merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_DOUBLE.ensure_assertion*/


T0* r196try_to_undefine(T196* 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=r196try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r196merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_DOUBLE.is_deferred*/
/*No:CST_ATT_DOUBLE.set_clients*/
/*No:CST_ATT_DOUBLE.value*/
/*No:CST_ATT_DOUBLE.nb_errors*/


T0* r196to_run_feature(T196* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
R=r313at(((T313*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 325: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T325*n=malloc(sizeof(*n));
*n=M325;
r325make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r196merge_header_comments(T196* 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:CST_ATT_DOUBLE.arguments*/
/*No:CST_ATT_DOUBLE.require_assertion*/
/*No:CST_ATT_DOUBLE.pretty_print_arguments*/


T0* r196try_to_undefine_aux(T196* C,T0* a1,T0* a2){
T0* R=NULL;
r37add_position(r196start_position(C));
r196error(X65start_position(a1),((T0*)ms185_99414));
r41fatal_undefine(((T41*)a2),a1);
return R;
}
/*No:CST_ATT_DOUBLE.fz_dot*/


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


void r196make(T196* C,T0* a1,T0* a2,T0* a3){
/*[IRF3.3make_e_feature*/((((T196*)(C)))->_names)=(a1);
/*]*/
C->_result_type=a2;
C->_value_mem=a3;
}


void r196pretty_print_names(T196* 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 r196pretty_print(T196* C){
r196pretty_print_profile(C);
r196pretty_tail(C);
r310put_character((T310*)(oBC11fmt),'\73');
/*[IF*/
if(((C)->_header_comment/*12*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r64pretty_print((T64*)((C)->_header_comment/*12*/));
}
else{
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
}
/*FI]*/
}


void r196collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r332fast_has((T332*)(oBC75require_collector),_er))){
r332add_last((T332*)(oBC75require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_DOUBLE.set_header_comment*/


void r196pretty_tail(T196* C){
r310put_string((T310*)(oBC11fmt),((T0*)ms184_1176));
/*[IRF3.6pretty_print*/{T157* C1=(T157*)(/*(IRF4.3value*/(C)->_value_mem/*24*//*)*/);
r310put_string((T310*)(oBC11fmt),(C1)->_to_string/*8*/);
}/*]*/
}
/*No:CST_ATT_DOUBLE.clients*/
/*No:CST_ATT_UNIQUE.base_class*/


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


T6 r183is_merge_with(T183* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X62is_a_in((C)->_result_type/*20*/,X75result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(/*(IRF4.1arguments*/NULL/*)*/),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/*20*/)!=((void*)(NULL))){
R=X62is_a_in(X75result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r183merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_UNIQUE.first_name*/
/*No:CST_ATT_UNIQUE.em1*/
/*No:CST_ATT_UNIQUE.header_comment*/


void r183pretty_print_profile(T183* C){
r183pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
/*[IRF3.1pretty_print_arguments*//*]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T0*)ms75_186));
X62pretty_print((C)->_result_type/*20*/);
}
/*FI]*/
}
/*No:CST_ATT_UNIQUE.names*/
/*No:CST_ATT_UNIQUE.result_type*/
/*No:CST_ATT_UNIQUE.code_require*/
/*No:CST_ATT_UNIQUE.make_e_feature*/


void r183add_into(T183* 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 r183can_hide(T183* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X75result_type(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r183error(r183start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
{/*AT*/r37add_position(X75start_position(a1));
r183error(r183start_position(C),((T0*)ms75_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_a_in((C)->_result_type/*20*/,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*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r183merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_UNIQUE.ensure_assertion*/


T0* r183try_to_undefine(T183* 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=r183try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r183merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_UNIQUE.is_deferred*/
/*No:CST_ATT_UNIQUE.set_clients*/
/*No:CST_ATT_UNIQUE.value*/
/*No:CST_ATT_UNIQUE.nb_errors*/


T0* r183to_run_feature(T183* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X62run_class(a1);
R=r313at(((T313*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 325: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T325*n=malloc(sizeof(*n));
*n=M325;
r325make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r183merge_header_comments(T183* 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:CST_ATT_UNIQUE.arguments*/
/*No:CST_ATT_UNIQUE.require_assertion*/
/*No:CST_ATT_UNIQUE.pretty_print_arguments*/


T0* r183try_to_undefine_aux(T183* C,T0* a1,T0* a2){
T0* R=NULL;
r37add_position(r183start_position(C));
r183error(X65start_position(a1),((T0*)ms185_99414));
r41fatal_undefine(((T41*)a2),a1);
return R;
}
/*No:CST_ATT_UNIQUE.fz_dot*/
T0*oBC183counter=NULL;


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


void r183make(T183* C,T0* a1,T0* a2){
T0* _ic=NULL;
T2 _i=0;
/*[IRF3.3make_e_feature*/((((T183*)(C)))->_names)=(a1);
/*]*/
C->_result_type=a2;
{T186*n=malloc(sizeof(*n));
*n=M186;
r186make(n,r67count((T67*)((C)->_names/*8*/)));
C->_values=(T0*)n;
}
_i=0;
while (!((_i)>(((T186*)((C)->_values/*24*/))->_upper/*12*/))) {
r188increment((T188*)(oBC183counter));
{T158*n=malloc(sizeof(*n));
*n=M158;
r158make(n,((T188*)(oBC183counter))->_value/*0*/,NULL);
_ic=(T0*)n;
}
/*[IRF3.5put*/(((T186*)((C)->_values/*24*/))->_storage/*4*/)[_i]=(_ic);
/*]*/
_i=(_i)+(1);
}
}


void r183pretty_print_names(T183* 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 r183pretty_print(T183* C){
r183pretty_print_profile(C);
/*[IRF3.2pretty_tail*/r310put_string((T310*)(oBC11fmt),((T0*)ms183_14260));
/*]*/
r310put_character((T310*)(oBC11fmt),'\73');
/*[IF*/
if(((C)->_header_comment/*12*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r64pretty_print((T64*)((C)->_header_comment/*12*/));
}
else{
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
}
/*FI]*/
}


void r183collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r332fast_has((T332*)(oBC75require_collector),_er))){
r332add_last((T332*)(oBC75require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_UNIQUE.set_header_comment*/
/*No:CST_ATT_UNIQUE.values*/
/*No:CST_ATT_UNIQUE.pretty_tail*/
/*No:CST_ATT_UNIQUE.clients*/


void r350register(T0* a1){
T2 _id=0;
_id=X62id(a1);
/*[IF*/
if(!(r351has((T351*)(oBC350manifest_array_types),_id))){
r351put((T351*)(oBC350manifest_array_types),a1,_id);
}
/*FI]*/
}
T0*oBC350manifest_array_types=NULL;

