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


void r136make_n(T136* C,T0* a1,T0* a2){
C->_first_one=a1;
C->_remainder=a2;
}
/*No:EFFECTIVE_ARG_LIST.make_1*/


T0* r136start_position(T136* C){
T0* R=NULL;
R=X53start_position(/*(IRF4.3first*/(C)->_first_one/*0*//*)*/);
return R;
}


T0* r136expression(T136* C,T2 a1){
T0* R=NULL;
/*[IF*/
if((a1)==(1)){
R=(C)->_first_one/*0*/;
}
else{
R=/*X138item*/((T0*)r138item((T138*)((C)->_remainder/*4*/),(a1)-(2)));
}
/*FI]*/
return R;
}
/*No:EFFECTIVE_ARG_LIST.em1*/
/*No:EFFECTIVE_ARG_LIST.em2*/


void r136from_model(T136* C,T0* a1){
C->_first_one=(((T136*)a1))->_first_one/*0*/;
C->_remainder=(((T136*)a1))->_remainder/*4*/;
/*[IF*/
if(((C)->_remainder/*4*/)!=((void*)(NULL))){
C->_remainder=X138twin((C)->_remainder/*4*/);
}
/*FI]*/
}
/*No:EFFECTIVE_ARG_LIST.first_one*/


T0* r136to_runnable(T136* C,T0* a1){
T0* R=NULL;
T0* _e2=NULL;
T0* _e1=NULL;
T2 _i=0;
/*[IF*/
if(((C)->_current_type/*8*/)==((void*)(NULL))){
C->_current_type=a1;
_i=r136count(C);
while (!((_i)==(0))) {
_e1=r136expression(C,_i);
_e2=X53to_runnable(_e1,(C)->_current_type/*8*/);
/*[IF*/
if((_e2)==((void*)(NULL))){
r136error(X53start_position(_e1),((T0*)ms136_16515));
}
 else if((_e1)!=((void*)(_e2))){
r136put(C,_e2,_i);
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
 else if((X46run_class(a1))==((void*)(r136run_class(C)))){
R=(T0*)C;
}
else{
{T136*n=malloc(sizeof(*n));
*n=M136;
r136from_model(n,(T0*)C);
R=(T0*)n;
}
R=r136to_runnable(((T136*)R),a1);
}
/*FI]*/
return R;
}
/*No:EFFECTIVE_ARG_LIST.current_type*/
/*No:EFFECTIVE_ARG_LIST.first*/


void r136match_with(T136* C,T0* a1,T0* a2){
T0* _ft=NULL;
T0* _at=NULL;
T0* _e=NULL;
T2 _i=0;
T0* _fal=NULL;
_fal=X312arguments(a1);
/*[IF*/
if((_fal)==((void*)(NULL))){
r67add_position(X312start_position(a1));
r136error(r136start_position(C),((T0*)ms136_36576));
}
/*FI]*/
/*[IF*/
if(((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0))&&((/*(IRF4.6count*/(((T179*)((((T175*)_fal))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(r136count(C)))){
r67add_position(r175start_position(((T175*)_fal)));
r136error(r136start_position(C),((T0*)ms136_36576));
}
/*FI]*/
_i=r136count(C);
while (!(((_i)==(0))||((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)>(0)))) {
_e=r136expression(C,_i);
_at=X53result_type(_e);
_ft=r175type(((T175*)_fal),_i);
/*[IF*/
if(X53is_void(_e)){
/*[IF*/
if(X46is_expanded(_ft)){
r67add_position(X53start_position(_e));
r136error(X46start_position(_ft),((T0*)ms136_89856));
}
/*FI]*/
}
 else if(X46is_like_current(_ft)){
/*[IF*/
if(X53is_current(_e)){
}
 else if(X46is_a(X46run_type(_at),X46run_type(_ft))){
/*[IF*/
if(X46is_expanded(X46run_type(_at))){
}
 else if(X46is_a(X46run_type(_at),X46run_type(_ft))){
}
else{
r67add_position(X53start_position(_e));
r136error(X46start_position(_ft),((T0*)ms136_35448));
}
/*FI]*/
}
else{
r67add_position(X53start_position(_e));
r136error(X46start_position(_ft),((T0*)ms136_35448));
}
/*FI]*/
}
 else if(X46is_like_feature(_ft)){
/*[IF*/
if(X46is_a(X46run_type(_at),X46run_type(_ft))){
}
else{
r67add_position(X53start_position(_e));
r136error(X46start_position(_ft),((T0*)ms136_40794));
}
/*FI]*/
}
 else if(r136is_like_argument(C,_e,_at,_ft)){
}
 else if(X46is_a(_at,_ft)){
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
_at=X46to_runnable(_at,a2);
/*[IF*/
if(!(X46is_a(_at,_ft))){
r136error(X53start_position(_e),((T0*)ms136_99792));
}
/*FI]*/
}
/*FI]*/
_at=X46run_type(_at);
_ft=X46run_type(_ft);
/*[IF*/
if(X46is_expanded(_ft)){
/*[IF*/
if(X46is_expanded(_at)){
}
else{
X46used_as_reference(_ft);
}
/*FI]*/
}
 else if(X46is_expanded(_at)){
X46used_as_reference(_at);
}
/*FI]*/
_i=(_i)-(1);
}
}


T2 r136count(T136* C){
T2 R=0;
/*[IF*/
if(((C)->_remainder/*4*/)==((void*)(NULL))){
R=1;
}
else{
R=(/*X138upper*/((T2)((T138*)((C)->_remainder/*4*/))->_upper/*12*/))+(2);
}
/*FI]*/
return R;
}


T0* r136run_class(T136* C){
T0* R=NULL;
R=X46run_class((C)->_current_type/*8*/);
return R;
}


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


T6 r136is_like_argument(T136* C,T0* a1,T0* a2,T0* a3){
T6 R=0;
T0* _ot=NULL;
T0* _tla=NULL;
_tla=a3;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 246: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=1;
_ot=X53result_type(r136expression(C,/*(IRF4.6rank*/(((T176*)((((T246*)_tla))->_like_what/*8*/)))->_rank/*8*//*)*/));
/*[IF*/
if(!(X46is_a(X46run_type(a2),X46run_type(_ot)))){
r67add_position(X53start_position(a1));
r136error(X46start_position(a3),((T0*)ms136_43605));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:EFFECTIVE_ARG_LIST.remainder*/


void r136short(T136* C){
T2 _i=0;
r39hook_or((T39*)(oBC11short_print),((T0*)ms136_7074),((T0*)ms136_41));
_i=1;
while (!((_i)>(r136count(C)))) {
X53short(r136expression(C,_i));
_i=(_i)+(1);
/*[IF*/
if((_i)<=(r136count(C))){
r39hook_or((T39*)(oBC11short_print),((T0*)ms136_9205),((T0*)ms136_45));
}
/*FI]*/
}
r39hook_or((T39*)(oBC11short_print),((T0*)ms136_6978),((T0*)ms136_42));
}


void r136put(T136* C,T0* a1,T2 a2){
/*[IF*/
if((a2)==(1)){
C->_first_one=a1;
}
else{
/*X138put*//*[IRF3.6put*/{T138* C1=(T138*)((C)->_remainder/*4*/);
T0* b1=a1;
T2 b2=(a2)-(2);
((C1)->_storage/*4*/)[b2]=(b1);
}/*]*/
}
/*FI]*/
}
/*No:CALL_PREFIX_PLUS.feature_name*/


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


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


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


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


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


T0* r131to_runnable(T131* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _t=NULL;
_t=r131runnable_expression((C)->_target/*4*/,a1);
_rf=r131run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*8*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r131run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T131*n=malloc(sizeof(*n));
*n=M131;
r131with(n,_t,(C)->_feature_name/*12*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


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


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


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


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


void r131make(T131* C,T0* a1,T0* a2){
{T129*n=malloc(sizeof(*n));
*n=M129;
r129make(n,r131operator(),a1);
C->_feature_name=(T0*)n;
}
C->_target=a2;
}
/*No:CALL_PREFIX_PLUS.us_plus*/


void r131bracketed_short(T131* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r131short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:CALL_PREFIX_PLUS.is_current*/
/*No:CALL_PREFIX_PLUS.is_void*/


T0* r131operator(void){
T0* R=NULL;
R=((T0*)ms13_44);
return R;
}


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


void r131with(T131* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_run_feature=a3;
r131run_feature_match(C);
}


void r131short(T131* C){
r39a_prefix_name((T39*)(oBC11short_print),(C)->_feature_name/*12*/);
/*[IF*/
if((X53precedence((C)->_target/*4*/))<(11)){
X53bracketed_short((C)->_target/*4*/);
}
else{
X53short((C)->_target/*4*/);
}
/*FI]*/
}
/*No:CALL_PREFIX_PLUS.fatal_error*/
int fBC11type_pointer=0;
T0*oBC11type_pointer=NULL;


T0* r147type_pointer(void){
if(fBC11type_pointer==0){
fBC11type_pointer=1;
{T258*n=malloc(sizeof(*n));
*n=M258;
r258make(n,NULL);
oBC11type_pointer=(T0*)n;
}
}
return oBC11type_pointer;}
/*No:ADDRESS_OF.feature_name*/


T0* r147start_position(T147* C){
T0* R=NULL;
R=X77start_position((C)->_feature_name/*4*/);
return R;
}


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


T2 r147to_integer(T147* C){
T2 R=0;
r147error(r147start_position(C),((T0*)ms12_45846));
return R;
}


T0* r147to_runnable(T147* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_current_type/*8*/)==((void*)(NULL))){
C->_current_type=a1;
C->_run_feature=r310get_rf_with((T310*)(X46run_class(a1)),(C)->_feature_name/*4*/);
/*[IF*/
if(((C)->_run_feature/*12*/)==((void*)(NULL))){
r147error(r147start_position(C),((T0*)ms147_24192));
}
else{
r351register_for((T0*)C);
}
/*FI]*/
R=(T0*)C;
}
else{
{T147*n=malloc(sizeof(*n));
*n=M147;
/*[IRF3.3make*/((((T147*)(n)))->_feature_name)=((C)->_feature_name/*4*/);
/*]*/
R=(T0*)n;
}
R=r147to_runnable(((T147*)R),a1);
}
/*FI]*/
return R;
}
T0*oBC11address_of_pool=NULL;
/*No:ADDRESS_OF.current_type*/
/*No:ADDRESS_OF.fz_iinaiv*/
/*No:ADDRESS_OF.result_type*/


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


void r147bracketed_short(T147* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r147short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}
/*No:ADDRESS_OF.is_current*/
/*No:ADDRESS_OF.is_void*/


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


void r147short(T147* C){
/*[IRF3.6a_character*/{T3 b1='\44';
/*[IRF3.6put_character*/{T38* C2=(T38*)(oBC1std_output);
T3 c1=b1;
putc(c1,((FILE*)(stdout)));
}/*]*/
}/*]*/
X77short((C)->_feature_name/*4*/);
}
/*No:ADDRESS_OF.atomic_precedence*/
/*No:CST_ATT_CHARACTER.base_class*/
/*No:CST_ATT_CHARACTER.value_mem*/


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


T6 r194is_merge_with(T194* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X87result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X87result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X87arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X46is_a_in((C)->_result_type/*20*/,X87result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r175is_a_in((T175*)(/*(IRF4.1arguments*/NULL/*)*/),X87arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC67explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T68*)((T68*)(oBC67positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X46is_a_in(X87result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r175is_a_in((T175*)(X87arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r194merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_CHARACTER.first_name*/
/*No:CST_ATT_CHARACTER.em1*/
/*No:CST_ATT_CHARACTER.header_comment*/
/*No:CST_ATT_CHARACTER.names*/
/*No:CST_ATT_CHARACTER.result_type*/
/*No:CST_ATT_CHARACTER.code_require*/
/*No:CST_ATT_CHARACTER.make_e_feature*/


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


T6 r194can_hide(T194* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X87result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X87result_type(a1))==((void*)(NULL)))){
r67add_position(X87start_position(a1));
r194error(r194start_position(C),((T0*)ms87_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X87arguments(a1)))){
/*[IF*/
{/*AT*/r67add_position(X87start_position(a1));
r194error(r194start_position(C),((T0*)ms87_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X46is_a_in((C)->_result_type/*20*/,X87result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms87_54285);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X46run_time_mark((((T310*)a2))->_current_type/*0*/);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67error((T67*)(oBC11eh),((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r194merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_CHARACTER.ensure_assertion*/


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


T0* r194to_run_feature(T194* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X46run_class(a1);
R=r310at(((T310*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 326: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T326*n=malloc(sizeof(*n));
*n=M326;
r326make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


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


T0* r194try_to_undefine_aux(T194* C,T0* a1,T0* a2){
T0* R=NULL;
r67add_position(r194start_position(C));
r194error(X77start_position(a1),((T0*)ms189_99414));
r22fatal_undefine(((T22*)a2),a1);
return R;
}
/*No:CST_ATT_CHARACTER.fz_dot*/


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


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


void r194collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r315fast_has((T315*)(oBC87require_collector),_er))){
r315add_last((T315*)(oBC87require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_CHARACTER.set_header_comment*/
/*No:CST_ATT_CHARACTER.clients*/


T0* r247generic_list(T247* C){
T0* R=NULL;
r247fatal_error_generic_list(C);
return R;
}


T0* r247base_class(T247* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r47base_class(((T47*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms46_37098);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_type((T0*)C,((T0*)ms12_47));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*FI]*/
return R;
}
/*No:TYPE_ANY.base_class_name*/
/*No:TYPE_ANY.start_position*/
/*No:TYPE_ANY.is_formal_generic*/
/*No:TYPE_ANY.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((r247written_mark())==((void*)(X46written_mark(a1)))){
R=1;
}
else{
_ct=(((T310*)a2))->_current_type/*0*/;
_t1=r247to_runnable(C,_ct);
_t2=X46to_runnable(a1,_ct);
/*[IF*/
if((X46run_time_mark(_t1))==((void*)(X46run_time_mark(_t2)))){
R=1;
}
else{
R=X46is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r247id(T247* C){
T2 R=0;
R=((T22*)(r247base_class(C)))->_id/*0*/;
return R;
}
/*No:TYPE_ANY.is_pointer*/


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


T0* r247to_runnable(T247* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r247check_type(C);
return R;
}
/*No:TYPE_ANY.run_type*/


T0* r247run_class(T247* C){
T0* R=NULL;
R=r59run_class((T0*)C);
return R;
}


T6 r247has_creation(T247* C,T0* a1){
T6 R=0;
r67add_position(X77start_position(a1));
r247error(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms247_27380));
return R;
}
/*No:TYPE_ANY.expanded_initializer*/
/*No:TYPE_ANY.is_like_current*/
/*No:TYPE_ANY.is_boolean*/
/*No:TYPE_ANY.is_generic*/
/*No:TYPE_ANY.is_bit*/
/*No:TYPE_ANY.is_real*/
/*No:TYPE_ANY.smallest_ancestor*/
/*No:TYPE_ANY.is_any*/
/*No:TYPE_ANY.nb_errors*/


T0* r247run_time_mark(void){
T0* R=NULL;
R=((T0*)ms13_714);
return R;
}
/*No:TYPE_ANY.is_expanded*/
/*No:TYPE_ANY.is_basic_eiffel_expanded*/
/*No:TYPE_ANY.short_hook*/
/*No:TYPE_ANY.is_string*/
/*No:TYPE_ANY.is_integer*/
/*No:TYPE_ANY.is_like_feature*/
/*No:TYPE_ANY.fz_dot*/
/*No:TYPE_ANY.is_anchored*/
/*No:TYPE_ANY.is_run_type*/


T6 r247is_a(T247* C,T0* a1){
T6 R=0;
/*[IF*/
if(X46is_any(a1)){
R=1;
}
 else if(X46is_none(a1)){
}
else{
R=r22is_subclass_of((T22*)(r247base_class(C)),X46base_class(a1));
}
/*FI]*/
/*[IF*/
if(!(R)){
r67add_type((T0*)C,((T0*)ms12_17730));
r67add_type(a1,((T0*)ms12_47));
}
/*FI]*/
return R;
}
/*No:TYPE_ANY.is_character*/
/*No:TYPE_ANY.is_reference*/


T0* r247written_mark(void){
T0* R=NULL;
R=((T0*)ms13_714);
return R;
}


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


void r247make(T247* C,T0* a1){
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make(n,((T0*)ms13_714),a1);
C->_base_class_name=(T0*)n;
}
}
/*No:TYPE_ANY.us_any*/
/*No:TYPE_ANY.is_none*/
/*No:TYPE_ANY.is_array*/
/*No:TYPE_ANY.fz_inako*/


void r247fatal_error_generic_list(T247* C){
r67add_type((T0*)C,((T0*)ms46_29184));
r67print_as_fatal_error((T67*)(oBC11eh));
}
/*No:TYPE_ANY.is_like_argument*/
int fBC247check_type=0;


void r247check_type(T247* C){
if (fBC247check_type==0){
T0* _rc=NULL;
T0* _bc=NULL;
fBC247check_type=1;
_bc=r247base_class(C);
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_rc=r247run_class(C);
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if((((T22*)_bc))->_is_expanded/*20*/){
r247error(/*(IRF4.6start_position*/(((T47*)((C)->_base_class_name/*4*/)))->_start_position/*4*//*)*/,((T0*)ms247_38450));
}
/*FI]*/
}
/*FI]*/
}}
/*No:TYPE_ANY.is_double*/


void r247short(T247* C){
r39hook((T39*)(oBC11short_print),((T0*)ms46_891));
/*[IRF3.6short_hook*/{T247* C1=C;
r39a_class_name((T39*)(oBC11short_print),(C1)->_base_class_name/*4*/);
}/*]*/
r39hook((T39*)(oBC11short_print),((T0*)ms46_888));
}


T6 r22is_general(T22* C){
T6 R=0;
R=(((T0*)ms13_6412))==((void*)(((T47*)((C)->_name/*24*/))->_to_string/*0*/));
return R;
}


void r22fatal_undefine(T22* C,T0* a1){
/*[IRF3.6append*/{T0* b1=((T0*)ms22_36660);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X77to_string(a1);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms22_3192);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T47*)((C)->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_166);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}


T0* r22going_up(T22* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if(((C)->_parent_list/*40*/)==((void*)(NULL))){
R=r22going_up((T22*)(r22class_any()),a1,a2,a3);
}
else{
R=r55going_up((T55*)((C)->_parent_list/*40*/),a1,a2,a3);
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.creation_clause_list*/
/*No:BASE_CLASS.set_obsolete_type_string*/


void r22add_feature_clause(T22* C,T0* a1){
/*[IF*/
if(((C)->_feature_clause_list/*48*/)==((void*)(NULL))){
{T88*n=malloc(sizeof(*n));
*n=M88;
/*[IRF3.3make*/((((T88*)(n)))->_list)=(se_ma90(1,
a1));
/*]*/
C->_feature_clause_list=(T0*)n;
}
}
else{
/*[IRF3.5add_last*/r90add_last(((T90*)(((T88*)((C)->_feature_clause_list/*48*/))->_list/*0*/)),a1);
/*]*/
}
/*FI]*/
}
/*No:BASE_CLASS.id*/
/*No:BASE_CLASS.heading_comment2*/


void r22get_started(T22* C){
C->_id=r95item((T95*)(r22id_provider()),((T47*)((C)->_name/*24*/))->_to_string/*0*/);
/*[IF*/
if(((C)->_feature_clause_list/*48*/)!=((void*)(NULL))){
r88get_started((T88*)((C)->_feature_clause_list/*48*/),(C)->_feature_dictionary/*60*/);
}
/*FI]*/
/*[IF*/
if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
r55get_started((T55*)((C)->_parent_list/*40*/));
}
/*FI]*/
/*[IF*/
if(((C)->_end_comment/*56*/)!=((void*)(NULL))){
r52good_end((T52*)((C)->_end_comment/*56*/),(C)->_name/*24*/);
}
/*FI]*/
/*[IF*/
if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
/*[IRF3.3clear*/((((T64*)((T64*)(oBC22visited))))->_upper)=(-(1));
/*]*/
r64add_last((T64*)(oBC22visited),(T0*)C);
r55inherit_cycle_check((T55*)((C)->_parent_list/*40*/));
}
/*FI]*/
/*[IF*/
if(((r73all_check((T73*)(oBC11run_control)))&&((C)->_is_deferred/*16*/))&&(((C)->_creation_clause_list/*44*/)!=((void*)(NULL)))){
r67add_position(((T47*)((C)->_name/*24*/))->_start_position/*4*/);
r22warning(r16start_position((T16*)((C)->_creation_clause_list/*44*/)),((T0*)ms22_172312));
}
/*FI]*/
}


T0* r22new_name_of_original(T22* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if((C)==((void*)(a1))){
R=a2;
}
 else if(r22is_general(C)){
R=a2;
}
else{
/*[IF*/
if(((C)->_parent_list/*40*/)==((void*)(NULL))){
R=r22new_name_of((T22*)(r22class_any()),a1,a2);
}
else{
/*[IRF3.3clear*/((((T318*)((T318*)(oBC22going_up_trace))))->_upper)=(-(1));
/*]*/
R=r55going_up((T55*)((C)->_parent_list/*40*/),oBC22going_up_trace,a1,a2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r22run_class(T22* C){
T0* R=NULL;
T0* _type=NULL;
T0* _n=NULL;
T0* _rcd=NULL;
_n=((T47*)((C)->_name/*24*/))->_to_string/*0*/;
_rcd=oBC59run_class_dictionary;
/*[IF*/
if(r320has(((T320*)_rcd),_n)){
R=r320at(((T320*)_rcd),_n);
}
else{
{T261*n=malloc(sizeof(*n));
*n=M261;
/*[IRF3.3make*/((((T261*)(n)))->_base_class_name)=((C)->_name/*24*/);
/*]*/
_type=(T0*)n;
}
R=r261run_class(((T261*)_type));
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.feature_clause_list*/
/*No:BASE_CLASS.formal_generic_list*/
/*No:BASE_CLASS.set_end_comment*/


T0* r22get_copy(T22* C){
T0* R=NULL;
R=r86at((T86*)((C)->_feature_dictionary/*60*/),((T0*)ms13_1812));
return R;
}


T0* r22super_look_up_for(T22* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(((C)->_parent_list/*40*/)==((void*)(NULL))){
/*[IF*/
if(r22is_general(C)){
R=NULL;
}
else{
R=r22look_up_for((T22*)(r22class_any()),a1,a2);
}
/*FI]*/
}
else{
R=r55look_up_for((T55*)((C)->_parent_list/*40*/),a1,a2);
}
/*FI]*/
return R;
}
T0*oBC22visited=NULL;
/*No:BASE_CLASS.fatal_error*/
/*No:BASE_CLASS.parent_list*/
/*No:BASE_CLASS.is_expanded*/


void r22fatal_error_vdrd6(T0* a1,T0* a2,T0* a3){
r67add_position(X87start_position(a1));
r67add_position(X87start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms22_18000);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a3;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67print_as_fatal_error((T67*)(oBC11eh));
}


T0* r22clients_for(T22* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r22proper_has(C,a1)){
R=X87clients(r86at((T86*)((C)->_feature_dictionary/*60*/),X77to_key(a1)));
}
 else if(r22is_general(C)){
}
 else if(((C)->_parent_list/*40*/)==((void*)(NULL))){
R=r22clients_for((T22*)(r22class_any()),a1);
}
else{
R=r55clients_for((T55*)((C)->_parent_list/*40*/),a1);
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.us_general*/


void r22warning(T0* a1,T0* a2){
r67add_position(a1);
r67warning((T67*)(oBC11eh),a2);
}
/*No:BASE_CLASS.obsolete_type_string*/


T0* r22class_with(T0* a1){
T0* R=NULL;
R=r59get_class(a1);
return R;
}
/*No:BASE_CLASS.set_formal_generic_list*/
/*No:BASE_CLASS.fz_dot*/


T0* r22class_any(void){
if(fBC11class_any==0){
fBC11class_any=1;
oBC11class_any=r22class_with(((T0*)ms13_714));
}
return oBC11class_any;}


void r22error(T0* a1,T0* a2){
r67add_position(a1);
r67error((T67*)(oBC11eh),a2);
}
/*No:BASE_CLASS.class_invariant*/


void r22make(T22* C){
{T64*n=malloc(sizeof(*n));
*n=M64;
r64with_capacity(n,16);
C->_isom=(T0*)n;
}
C->_path=r78item(((T71*)(oBC11parser_buffer))->_path/*0*/);
{T47*n=malloc(sizeof(*n));
*n=M47;
r47make_unknown(n);
C->_name=(T0*)n;
}
{T86*n=malloc(sizeof(*n));
*n=M86;
/*[IRF3.4make*/r86with_capacity(n,32);
/*]*/
C->_feature_dictionary=(T0*)n;
}
}
/*No:BASE_CLASS.heading_comment1*/


T0* r22id_provider(void){
if(fBC11id_provider==0){
fBC11id_provider=1;
{T95*n=malloc(sizeof(*n));
*n=M95;
r95make(n);
oBC11id_provider=(T0*)n;
}
}
return oBC11id_provider;}


void r22collect_for(T22* C,T2 a1,T0* a2){
T0* _fn_key=NULL;
_fn_key=X77to_key(a2);
/*[IF*/
if(r86has((T86*)((C)->_feature_dictionary/*60*/),_fn_key)){
X87collect_for(r86at((T86*)((C)->_feature_dictionary/*60*/),_fn_key),a1);
}
/*FI]*/
/*[IF*/
if(((C)->_parent_list/*40*/)==((void*)(NULL))){
/*[IF*/
if(r22is_general(C)){
}
else{
r22collect_for((T22*)(r22class_any()),a1,a2);
}
/*FI]*/
}
else{
r55collect_for((T55*)((C)->_parent_list/*40*/),a1,a2);
}
/*FI]*/
}
/*No:BASE_CLASS.end_comment*/
/*No:BASE_CLASS.name*/


void r22header_comment_for(T22* C,T0* a1){
T0* _ia=NULL;
_ia=(C)->_class_invariant/*52*/;
/*[IF*/
if(((_ia)!=((void*)(NULL)))&&(((((T40*)_ia))->_header_comment/*4*/)!=((void*)(NULL)))){
/*[IRF3.3set_header_comment*/((((T40*)(((T40*)a1))))->_header_comment)=((((T40*)_ia))->_header_comment/*4*/);
/*]*/
}
 else if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
r55header_comment_for((T55*)((C)->_parent_list/*40*/),a1);
}
/*FI]*/
}
/*No:BASE_CLASS.set_heading_comment1*/
T0*oBC22going_up_trace=NULL;
/*No:BASE_CLASS.us_copy*/


T6 r22has(T22* C,T0* a1){
T6 R=0;
/*[IF*/
if(r86has((T86*)((C)->_feature_dictionary/*60*/),X77to_key(a1))){
R=1;
}
else{
R=r22super_has(C,a1);
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.set_heading_comment2*/


void r22vdrd6(T0* a1,T0* a2,T0* a3){
T0* _rt2=NULL;
T0* _rt1=NULL;
T0* _ct=NULL;
T0* _writable_attribute=NULL;
_writable_attribute=a2;
if(NULL!=(_writable_attribute))switch(((T0*)_writable_attribute)->id) {
case 300: 
break;
default:
_writable_attribute=NULL;
};/*[IF*/
if((_writable_attribute)!=((void*)(NULL))){
_writable_attribute=a3;
if(NULL!=(_writable_attribute))switch(((T0*)_writable_attribute)->id) {
case 300: 
break;
default:
_writable_attribute=NULL;
};/*[IF*/
if((_writable_attribute)==((void*)(NULL))){
r22fatal_error_vdrd6(a2,a3,((T0*)ms22_197701));
}
else{
/*[IRF3.3set_isa_redefinition*/((((T300*)(((T300*)_writable_attribute))))->_isa_redefinition)=(1);
/*]*/
_ct=(((T310*)a1))->_current_type/*0*/;
_rt1=X46to_runnable(X87result_type(a2),_ct);
_rt2=X46to_runnable(X87result_type(a3),_ct);
/*[IF*/
if(X46is_reference(_rt1)){
/*[IF*/
if(X46is_reference(_rt2)){
}
else{
r22fatal_error_vdrd6(a2,a3,((T0*)ms22_229320));
}
/*FI]*/
}
 else if(X46is_reference(_rt2)){
r22fatal_error_vdrd6(a2,a3,((T0*)ms22_229320));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


T6 r22has_simple_feature_name(T22* C,T0* a1){
T6 R=0;
r135make((T135*)(r22mem_fn()),a1,NULL);
R=r22has(C,r22mem_fn());
return R;
}


T6 r22is_subclass_of(T22* C,T0* a1){
T6 R=0;
/*[IF*/
if(r64fast_has((T64*)((C)->_isom/*64*/),a1)){
R=1;
}
else{
/*[IF*/
if(r22is_any(((T22*)a1))){
R=1;
}
else{
/*[IRF3.3clear*/((((T64*)((T64*)(oBC22visited))))->_upper)=(-(1));
/*]*/
R=r22is_subclass_of_aux(C,a1);
}
/*FI]*/
/*[IF*/
if(R){
r64add_last((T64*)((C)->_isom/*64*/),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.next_parent_for*/
/*No:BASE_CLASS.index_list*/


void r22set_invariant(T22* C,T0* a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T40*n=malloc(sizeof(*n));
*n=M40;
r40make(n,a1,a2,a3);
C->_class_invariant=(T0*)n;
}
}
/*FI]*/
}
/*No:BASE_CLASS.path*/
/*No:BASE_CLASS.vdrd6_types*/


T0* r22look_up_for(T22* C,T0* a1,T0* a2){
T0* R=NULL;
T2 _i=0;
T0* _super_fn=NULL;
T0* _fnl=NULL;
T0* _cst_att=NULL;
T0* _fn_key=NULL;
T0* _super=NULL;
_fn_key=X77to_key(a2);
/*[IF*/
if(r86has((T86*)((C)->_feature_dictionary/*60*/),_fn_key)){
R=r86at((T86*)((C)->_feature_dictionary/*60*/),_fn_key);
_super=r22super_look_up_for(C,a1,a2);
/*[IF*/
if(((_super)!=((void*)(NULL)))&&((_super)!=((void*)(R)))){
r22vdrd6(a1,_super,R);
_cst_att=_super;
if(NULL!=(_cst_att))switch(((T0*)_cst_att)->id) {
case 201: case 199: case 193: case 200: case 187: case 198: case 195: case 194: 
break;
default:
_cst_att=NULL;
};/*[IF*/
if((_cst_att)!=((void*)(NULL))){
r67add_position(X87start_position(_super));
r67add_position(X87start_position(R));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_82732);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_fnl=/*X87names*/((T0*)(((T187*)_super))->_names/*8*/);
_i=r79count(((T79*)_fnl));
while (!((_i)<(1))) {
_super_fn=r79item(((T79*)_fnl),_i);
/*[IF*/
if(X77is_frozen(_super_fn)){
/*[IF*/
if((X77to_key(_super_fn))==((void*)(_fn_key))){
r67add_position(X77start_position(_super_fn));
r67add_position(X87start_position(R));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_66924);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if(!(X87can_hide(R,_super,a1))){
r67add_position(X87start_position(_super));
r67add_position(X87start_position(R));
/*[IRF3.6append*/{T0* b1=((T0*)ms22_90129);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67print_as_warning((T67*)(oBC11eh));
}
/*FI]*/
/*[IF*/
if(X87is_deferred(_super)){
}
 else if(r22has_redefine(C,a2)){
}
else{
r67add_position(X87start_position(R));
r67add_position(X87start_position(_super));
/*[IRF3.6append*/{T0* b1=((T0*)ms22_30936);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T47*)((C)->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms22_33000);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67print_as_error((T67*)(oBC11eh));
}
/*FI]*/
}
/*FI]*/
}
else{
R=r22super_look_up_for(C,a1,a2);
}
/*FI]*/
return R;
}


T6 r22is_subclass_of_aux(T22* C,T0* a1){
T6 R=0;
/*[IF*/
if(r64fast_has((T64*)(oBC22visited),(T0*)C)){
}
else{
r64add_last((T64*)(oBC22visited),(T0*)C);
/*[IF*/
if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
R=r55has_parent((T55*)((C)->_parent_list/*40*/),a1);
}
 else if(!(r64fast_has((T64*)(oBC22visited),r22class_any()))){
R=r22is_subclass_of_aux((T22*)(r22class_any()),a1);
}
/*FI]*/
}
/*FI]*/
return R;
}
int fBC22mem_fn=0;
T0*oBC22mem_fn=NULL;


T0* r22mem_fn(void){
if(fBC22mem_fn==0){
fBC22mem_fn=1;
{T135*n=malloc(sizeof(*n));
*n=M135;
r135make(n,((T0*)ms22_5012),NULL);
oBC22mem_fn=(T0*)n;
}
}
return oBC22mem_fn;}


void r22set_parent_list(T22* C,T0* a1,T0* a2,T0* a3){
{T55*n=malloc(sizeof(*n));
*n=M55;
r55make(n,(T0*)C,a1,a2,a3);
C->_parent_list=(T0*)n;
}
}
/*No:BASE_CLASS.first_parent_for*/


T6 r22has_creation(T22* C,T0* a1){
T6 R=0;
T0* _cn=NULL;
T0* _bc=NULL;
T0* _cc=NULL;
/*[IF*/
if(((C)->_creation_clause_list/*44*/)==((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T47*)((C)->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms22_35976);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r67add_position(X77start_position(a1));
r67print_as_error((T67*)(oBC11eh));
}
else{
_cc=r16get_clause((T16*)((C)->_creation_clause_list/*44*/),a1);
/*[IF*/
if((_cc)==((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms12_7398);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X77to_string(a1);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms22_72954);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T47*)((C)->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
r22error(X77start_position(a1),((T0*)ms12_47));
}
else{
R=1;
_bc=X77origin_base_class(a1);
/*[IF*/
if((_bc)!=((void*)(NULL))){
_cn=(((T22*)_bc))->_name/*24*/;
R=r94gives_permission_to((T94*)((((T74*)_cc))->_clients/*4*/),_cn);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r22error(X77start_position(a1),((T0*)ms22_44356));
}
/*FI]*/
return R;
}


T0* r22expanded_initializer(T22* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_creation_clause_list/*44*/)!=((void*)(NULL))){
R=r16expanded_initializer((T16*)((C)->_creation_clause_list/*44*/),a1);
}
/*FI]*/
return R;
}


T6 r22proper_has(T22* C,T0* a1){
T6 R=0;
R=r86has((T86*)((C)->_feature_dictionary/*60*/),X77to_key(a1));
return R;
}


void r22add_index_clause(T22* C,T0* a1){
/*[IF*/
if(((C)->_index_list/*8*/)==((void*)(NULL))){
{T307*n=malloc(sizeof(*n));
*n=M307;
/*[IRF3.3make*/((((T307*)(n)))->_list)=(se_ma308(1,
a1));
/*]*/
C->_index_list=(T0*)n;
}
}
else{
/*[IRF3.5add_last*/r308add_last(((T308*)(((T307*)((C)->_index_list/*8*/))->_list/*0*/)),a1);
/*]*/
}
/*FI]*/
}
/*No:BASE_CLASS.isom*/


T6 r22super_has(T22* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_parent_list/*40*/)==((void*)(NULL))){
/*[IF*/
if(r22is_general(C)){
R=0;
}
else{
R=r22has((T22*)(r22class_any()),a1);
}
/*FI]*/
}
else{
R=r55has((T55*)((C)->_parent_list/*40*/),a1);
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.fz_09*/
/*No:BASE_CLASS.is_deferred*/


T6 r22is_any(T22* C){
T6 R=0;
R=(((T0*)ms13_714))==((void*)(((T47*)((C)->_name/*24*/))->_to_string/*0*/));
return R;
}
/*No:BASE_CLASS.error_vtec1*/


void r22check_expanded_with(T22* C,T0* a1){
T0* _rf=NULL;
/*[IF*/
if((C)->_is_deferred/*16*/){
r67add_type(a1,((T0*)ms12_11472));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_122544);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_creation_clause_list/*44*/)!=((void*)(NULL))){
r16check_expanded_with((T16*)((C)->_creation_clause_list/*44*/),a1);
}
/*FI]*/
_rf=r22expanded_initializer(C,a1);
}


T6 r22has_redefine(T22* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
R=r55has_redefine((T55*)((C)->_parent_list/*40*/),a1);
}
/*FI]*/
return R;
}


void r22inherit_cycle_check(T22* C){
T2 _i=0;
r64add_last((T64*)(oBC22visited),(T0*)C);
/*[IF*/
if((/*(IRF4.5first*//*(IRF4.6item*/(((T64*)(oBC22visited))->_storage/*0*/)[0]/*)*//*)*/)==((void*)(C))){
/*[IRF3.6append*/{T0* b1=((T0*)ms22_37233);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
_i=0;
while (!((_i)>(((T64*)(oBC22visited))->_upper/*8*/))) {
/*[IRF3.6append*/{T0* b1=((T47*)(((T22*)(/*(IRF4.6item*/(((T64*)(oBC22visited))->_storage/*0*/)[_i]/*)*/))->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IF*/
if((_i)<(((T64*)(oBC22visited))->_upper/*8*/)){
/*[IRF3.6append*/{T0* b1=((T0*)ms22_158);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_1145);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
 else if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
r55inherit_cycle_check((T55*)((C)->_parent_list/*40*/));
}
/*FI]*/
}


T0* r22up_to_original(T22* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(r22proper_has(C,a2)){
/*[IF*/
if(((C)->_parent_list/*40*/)==((void*)(NULL))){
R=r22new_name_of_original(((T22*)a1),(T0*)C,a2);
}
else{
R=r55up_to_original((T55*)((C)->_parent_list/*40*/),a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
R=r22new_name_of_original(((T22*)a1),(T0*)C,a2);
}
/*FI]*/
}
/*FI]*/
}
 else if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
R=r55up_to_original((T55*)((C)->_parent_list/*40*/),a1,a2);
}
 else if(r22is_general(C)){
}
else{
R=r22up_to_original((T22*)(r22class_any()),a1,a2);
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.fz_is_invalid*/
/*No:BASE_CLASS.feature_dictionary*/


T0* r22new_name_of(T22* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if((C)==((void*)(a1))){
R=a2;
}
else{
R=r22up_to_original(((T22*)a1),(T0*)C,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r67add_position(X77start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms12_7398);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X77to_string(a2);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms22_5440);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T47*)((((T22*)a1))->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms22_15392);
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T47*)((C)->_name/*24*/))->_to_string/*0*/;
r7append((T7*)(oBC67explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_166a);
r67fatal_error((T67*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:BASE_CLASS.us_any*/
/*No:BASE_CLASS.has_creation_clause*/


void r22up_to_any_in(T22* C,T0* a1){
/*[IF*/
if(r22is_general(C)){
}
else{
/*[IF*/
if(!(r64fast_has(((T64*)a1),(T0*)C))){
r64add_last(((T64*)a1),(T0*)C);
}
/*FI]*/
/*[IF*/
if(((C)->_parent_list/*40*/)==((void*)(NULL))){
/*[IF*/
if(!(r64fast_has(((T64*)a1),r22class_any()))){
r64add_last(((T64*)a1),r22class_any());
}
/*FI]*/
}
else{
r55up_to_any_in((T55*)((C)->_parent_list/*40*/),a1);
}
/*FI]*/
}
/*FI]*/
}


T6 r22is_a_vncg(T22* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_parent_list/*40*/)!=((void*)(NULL))){
R=r55is_a_vncg((T55*)((C)->_parent_list/*40*/),X46run_type(a1),X46run_type(a2));
}
/*FI]*/
return R;
}


void r22set_is_expanded(T22* C){
/*[IF*/
if((C)->_is_deferred/*16*/){
/*[IRF3.6error_vtec1*/{T22* C1=C;
r22error(((T47*)((C1)->_name/*24*/))->_start_position/*4*/,((T0*)ms22_130830));
}/*]*/
}
/*FI]*/
C->_is_expanded=1;
}


void r22set_is_deferred(T22* C){
/*[IF*/
if((C)->_is_expanded/*20*/){
/*[IRF3.6error_vtec1*/{T22* C1=C;
r22error(((T47*)((C1)->_name/*24*/))->_start_position/*4*/,((T0*)ms22_130830));
}/*]*/
}
/*FI]*/
C->_is_deferred=1;
}


void r22add_creation_clause(T22* C,T0* a1){
/*[IF*/
if(((C)->_creation_clause_list/*44*/)==((void*)(NULL))){
{T16*n=malloc(sizeof(*n));
*n=M16;
/*[IRF3.3make*/((((T16*)(n)))->_list)=(se_ma75(1,
a1));
/*]*/
C->_creation_clause_list=(T0*)n;
}
}
else{
/*[IRF3.5add_last*/r75add_last(((T75*)(((T16*)((C)->_creation_clause_list/*44*/))->_list/*0*/)),a1);
/*]*/
}
/*FI]*/
}
/*No:IFTHENLIST.nb_errors*/
/*No:IFTHENLIST.add_last*/


T0* r215to_runnable(T215* C,T0* a1){
T0* R=NULL;
T2 _i=0;
/*[IF*/
if(((C)->_current_type/*4*/)!=((void*)(NULL))){
{T215*n=malloc(sizeof(*n));
*n=M215;
/*[IRF3.3make*/((((T215*)(n)))->_list)=(r216twin((T216*)((C)->_list/*0*/)));
/*]*/
R=(T0*)n;
}
R=r215to_runnable(((T215*)R),a1);
}
else{
C->_current_type=a1;
_i=1;
while (!(((_i)>(((T216*)((C)->_list/*0*/))->_upper/*8*/))||((/*(IRF4.9nb_errors*/((T67*)(oBC11eh))->_nb_errors/*4*//*)*/)>(0)))) {
/*[IRF3.6put*/{T216* C1=(T216*)((C)->_list/*0*/);
T0* b1=r214to_runnable((T214*)(r216item((T216*)((C)->_list/*0*/),_i)),a1);
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
_i=(_i)+(1);
}
R=(T0*)C;
}
/*FI]*/
return R;
}
/*No:IFTHENLIST.current_type*/
/*No:IFTHENLIST.make*/
/*No:IFTHENLIST.list*/


T0* r218start_position(T218* C){
T0* R=NULL;
R=X53start_position((C)->_expression/*4*/);
return R;
}


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


T2 r218to_integer(T218* C){
T2 R=0;
r218error(r218start_position(C),((T0*)ms12_45846));
return R;
}


T0* r218to_runnable(T218* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
_e=X53to_runnable((C)->_expression/*4*/,a1);
/*[IF*/
if(((C)->_expression/*4*/)==((void*)(_e))){
R=(T0*)C;
}
else{
{T218*n=malloc(sizeof(*n));
*n=M218;
r218make(n,_e,(C)->_comment/*8*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:EXPRESSION_WITH_COMMENT.fz_iinaiv*/


T0* r218result_type(T218* C){
T0* R=NULL;
R=X53result_type((C)->_expression/*4*/);
return R;
}


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


T2 r218precedence(T218* C){
T2 R=0;
R=X53precedence((C)->_expression/*4*/);
return R;
}


void r218make(T218* C,T0* a1,T0* a2){
C->_expression=a1;
C->_comment=a2;
}


void r218bracketed_short(T218* C){
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_6792),((T0*)ms53_41));
r218short(C);
r39hook_or((T39*)(oBC11short_print),((T0*)ms53_8645),((T0*)ms53_42));
}


T6 r218is_current(T218* C){
T6 R=0;
R=X53is_current((C)->_expression/*4*/);
return R;
}


T6 r218is_void(T218* C){
T6 R=0;
R=X53is_void((C)->_expression/*4*/);
return R;
}


void r218short_target(T218* C){
X53short_target((C)->_expression/*4*/);
}
/*No:EXPRESSION_WITH_COMMENT.comment*/


void r218short(T218* C){
X53short((C)->_expression/*4*/);
}
/*No:CALL_PREFIX_MINUS.us_minus*/
/*No:CALL_PREFIX_MINUS.feature_name*/


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


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


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


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


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


T0* r130to_runnable(T130* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _t=NULL;
_t=r130runnable_expression((C)->_target/*4*/,a1);
_rf=r130run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*8*/)==((void*)(NULL))){
C->_target=_t;
C->_run_feature=_rf;
r130run_feature_match(C);
R=(T0*)C;
}
 else if((_t)==((void*)((C)->_target/*4*/))){
R=(T0*)C;
}
else{
{T130*n=malloc(sizeof(*n));
*n=M130;
r130with(n,_t,(C)->_feature_name/*12*/,_rf);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


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


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

