/*
-- 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 "compile_to_jvm.h"
/*No:E_TRUE.static_value*/


T0* r171type_boolean(void){
if(fBC12type_boolean==0){
fBC12type_boolean=1;
{T268*n=malloc(sizeof(*n));
*n=M268;
r268make(n,NULL);
oBC12type_boolean=(T0*)n;
}
}
return oBC12type_boolean;}
/*No:E_TRUE.is_static*/
/*No:E_TRUE.can_be_dropped*/
/*No:E_TRUE.is_manifest_string*/
/*No:E_TRUE.start_position*/


T0* r171add_comment(T171* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T234*n=malloc(sizeof(*n));
*n=M234;
r234make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:E_TRUE.compile_target_to_jvm*/
/*No:E_TRUE.to_integer*/
/*No:E_TRUE.use_current*/
/*No:E_TRUE.jvm_branch_if_true*/
/*No:E_TRUE.to_runnable*/


T2 r171compile_to_jvm_into(T0* a1){
T2 R=0;
R=r171standard_compile_to_jvm_into(a1);
return R;
}


T2 r171isa_dca_inline_argument(void){
T2 R=0;
/*[IF*/
{/*AT*/R=-(1);
}
/*FI]*/
return R;
}
/*No:E_TRUE.is_pre_computable*/
/*No:E_TRUE.fz_iinaiv*/
/*No:E_TRUE.result_type*/


void r171error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:E_TRUE.make*/
/*No:E_TRUE.compile_to_jvm_assignment*/
/*No:E_TRUE.is_current*/


T2 r171standard_compile_to_jvm_into(T0* a1){
T2 R=0;
/*[IRF3.2compile_to_jvm*//*[IRF3.4opcode_iconst_1*/r28opcode((T28*)(oBC12code_attribute),4,1);
/*]*/
/*]*/
R=X52jvm_convert_to(/*(IRF4.4run_type*/((T0*)((T268*)/*(IRF4.8result_type*/r171type_boolean()/*)*/))/*)*/,a1);
return R;
}
/*No:E_TRUE.is_void*/
/*No:E_TRUE.compile_to_jvm_old*/
/*No:E_TRUE.jvm_assign*/


T2 r171jvm_branch_if_false(void){
T2 R=0;
/*[IRF3.4opcode_iconst_1*/r28opcode((T28*)(oBC12code_attribute),4,1);
/*]*/
R=r28opcode_ifeq((T28*)(oBC12code_attribute));
return R;
}
/*No:E_TRUE.compile_to_jvm*/
/*No:E_TRUE.afd_check*/
/*No:E_TRUE.is_result*/
/*No:E_OLD.static_value*/
/*No:E_OLD.is_static*/
/*No:E_OLD.is_manifest_string*/


T0* r149start_position(T149* C){
T0* R=NULL;
R=X109start_position((C)->_expression/*4*/);
return R;
}


T0* r149add_comment(T149* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T234*n=malloc(sizeof(*n));
*n=M234;
r234make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r149to_integer(T149* C){
T2 R=0;
r149error(r149start_position(C),((T0*)ms13_45846));
return R;
}


T6 r149use_current(T149* C){
T6 R=0;
R=X109use_current((C)->_expression/*4*/);
return R;
}
/*No:E_OLD.jvm_branch_if_true*/
/*No:E_OLD.id*/


T0* r149to_runnable(T149* C,T0* a1){
T0* R=NULL;
T0* _exp=NULL;
/*[IF*/
if(((C)->_current_type/*8*/)==((void*)(NULL))){
C->_current_type=a1;
_exp=X109to_runnable((C)->_expression/*4*/,a1);
/*[IF*/
if((_exp)==((void*)(NULL))){
r149error(r149start_position(C),((T0*)ms149_24605));
}
else{
C->_expression=_exp;
}
/*FI]*/
R=(T0*)C;
}
else{
{T149*n=malloc(sizeof(*n));
*n=M149;
/*[IRF3.3make*/((((T149*)(n)))->_expression)=((C)->_expression/*4*/);
/*]*/
R=(T0*)n;
}
R=r149to_runnable(((T149*)R),a1);
}
/*FI]*/
return R;
}


T2 r149compile_to_jvm_into(T149* C,T0* a1){
T2 R=0;
R=r149standard_compile_to_jvm_into(C,a1);
return R;
}
/*No:E_OLD.is_pre_computable*/
/*No:E_OLD.fz_iinaiv*/


T0* r149result_type(T149* C){
T0* R=NULL;
R=X109result_type((C)->_expression/*4*/);
return R;
}


void r149standard_compile_target_to_jvm(T149* C){
r149compile_to_jvm(C);
X52jvm_check_class_invariant(r149result_type(C));
}
/*No:E_OLD.compile_to_jvm_assignment*/


void r149compile_to_jvm_old(T149* C){
T0* _rt=NULL;
T0* _e=NULL;
_e=(C)->_expression/*4*/;
_rt=X52run_type(X109result_type(_e));
C->_id=r28extra_local((T28*)(oBC12code_attribute),_rt);
X109compile_to_jvm(_e);
X52jvm_write_local(_rt,(C)->_id/*12*/);
}
/*No:E_OLD.jvm_assign*/
/*No:E_OLD.jvm_branch_if_false*/


void r149compile_to_jvm(T149* C){
X52jvm_push_local(X109result_type((C)->_expression/*4*/),(C)->_id/*12*/);
}
/*No:E_OLD.is_result*/
/*No:E_OLD.can_be_dropped*/
/*No:E_OLD.expression*/
/*No:E_OLD.compile_target_to_jvm*/
/*No:E_OLD.isa_dca_inline_argument*/
/*No:E_OLD.current_type*/


T2 r149jvm_standard_branch_if_false(T149* C){
T2 R=0;
r149compile_to_jvm(C);
R=r28opcode_ifeq((T28*)(oBC12code_attribute));
return R;
}


void r149error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:E_OLD.make*/
/*No:E_OLD.is_current*/


T2 r149standard_compile_to_jvm_into(T149* C,T0* a1){
T2 R=0;
r149compile_to_jvm(C);
R=X52jvm_convert_to(X52run_type(r149result_type(C)),a1);
return R;
}
/*No:E_OLD.is_void*/


T2 r149jvm_standard_branch_if_true(T149* C){
T2 R=0;
r149compile_to_jvm(C);
R=r28opcode_ifne((T28*)(oBC12code_attribute));
return R;
}


void r149afd_check(T149* C){
X109afd_check((C)->_expression/*4*/);
}
/*No:WRITABLE_ATTRIBUTE.base_class*/


T0* r319start_position(T319* C){
T0* R=NULL;
R=X50start_position(/*(IRF4.6first_name*/r87item(((T87*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r319is_merge_with(T319* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X95result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X52is_a_in((C)->_result_type/*20*/,X95result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)(/*(IRF4.1arguments*/NULL/*)*/),X95arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X52is_a_in(X95result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)(X95arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r319merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:WRITABLE_ATTRIBUTE.first_name*/
/*No:WRITABLE_ATTRIBUTE.em1*/
/*No:WRITABLE_ATTRIBUTE.set_isa_redefinition*/
/*No:WRITABLE_ATTRIBUTE.header_comment*/
/*No:WRITABLE_ATTRIBUTE.names*/
/*No:WRITABLE_ATTRIBUTE.result_type*/
/*No:WRITABLE_ATTRIBUTE.code_require*/
/*No:WRITABLE_ATTRIBUTE.make_e_feature*/


void r319add_into(T319* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r59base_class((T59*)(X50start_position(r87item((T87*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r87count((T87*)((C)->_names/*8*/))))) {
_fn=r87item((T87*)((C)->_names/*8*/),_i);
/*[IF*/
if(r94has(((T94*)a1),X50to_key(_fn))){
_fn=/*X95first_name*/((T0*)/*(IRF4.6first_name*/r87item(((T87*)(((T203*)(r94at(((T94*)a1),X50to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X50start_position(_fn));
r21add_position(X50start_position(r87item((T87*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms95_41905));
/*[IRF3.6append*/{T0* b1=X50to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r94put(((T94*)a1),(T0*)C,X50to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r319can_hide(T319* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X95result_type(a1))==((void*)(NULL)))){
r21add_position(X95start_position(a1));
r319error(r319start_position(C),((T0*)ms95_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
{/*AT*/r21add_position(X95start_position(a1));
r319error(r319start_position(C),((T0*)ms95_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X52is_a_in((C)->_result_type/*20*/,X95result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms95_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r319merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:WRITABLE_ATTRIBUTE.ensure_assertion*/


T0* r319try_to_undefine(T319* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X50start_position(a1));
_fn2=r87feature_name((T87*)((C)->_names/*8*/),X50to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X50undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r319try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X289set_clients*//*[IRF3.3set_clients*/((((T292*)(((T292*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r319merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:WRITABLE_ATTRIBUTE.is_deferred*/
/*No:WRITABLE_ATTRIBUTE.set_clients*/
/*No:WRITABLE_ATTRIBUTE.nb_errors*/


T0* r319to_run_feature(T319* C,T0* a1,T0* a2){
T0* R=NULL;
{T53*n=malloc(sizeof(*n));
*n=M53;
r53make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r319merge_header_comments(T319* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/);
}
 else if((/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X95set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:WRITABLE_ATTRIBUTE.arguments*/
/*No:WRITABLE_ATTRIBUTE.require_assertion*/


T0* r319try_to_undefine_aux(T319* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r319start_position(C));
r319error(X50start_position(a1),((T0*)ms205_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:WRITABLE_ATTRIBUTE.isa_redefinition*/
/*No:WRITABLE_ATTRIBUTE.fz_dot*/


void r319error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


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


void r319collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r365fast_has((T365*)(oBC95require_collector),_er))){
r365add_last((T365*)(oBC95require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:WRITABLE_ATTRIBUTE.set_header_comment*/
/*No:WRITABLE_ATTRIBUTE.clients*/


T6 r388empty_or_null_body(T388* C){
T6 R=0;
T0* _rb=NULL;
_rb=(C)->_routine_body/*48*/;
/*[IF*/
if((((_rb)==((void*)(NULL)))||(/*(IRF4.7empty_or_null_body*/((((T220*)_rb))->_first_one/*8*/)==(NULL)/*)*/))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
C->_static_value_mem=0;
C->_is_static_flag=1;
R=1;
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.use_current_state*/
/*No:RUN_FEATURE_4.is_static_flag*/
/*No:RUN_FEATURE_4.ucs_false*/
/*No:RUN_FEATURE_4.C_empty_or_null_body*/


T6 r388is_static(T388* C){
T6 R=0;
/*[IF*/
if(r388isa_in_line(C)){
R=(C)->_is_static_flag/*64*/;
}
/*FI]*/
return R;
}


T0* r388start_position(T388* C){
T0* R=NULL;
R=r308start_position((T308*)((C)->_base_feature/*32*/));
return R;
}


T0* r388body_one_result(T388* C){
T0* R=NULL;
T0* _a=NULL;
T0* _rb=NULL;
_rb=(C)->_routine_body/*48*/;
/*[IF*/
if(((_rb)!=((void*)(NULL)))&&((r220count(((T220*)_rb)))==(1))){
_a=/*(IRF4.3first*/(((T220*)_rb))->_first_one/*8*//*)*/;
if(NULL!=(_a))switch(((T0*)_a)->id) {
case 287: 
break;
default:
_a=NULL;
};/*[IF*/
if((_a)!=((void*)(NULL))){
/*[IF*/
if(X109is_result((((T287*)_a))->_left_side/*4*/)){
R=(((T287*)_a))->_right_side/*8*/;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r388isa_in_line(T388* C){
T6 R=0;
/*[IF*/
if(r76boost((T76*)(oBC12run_control))){
{int z1=(C)->_in_line_status/*60*/;

if((-1==z1)){
}
 else 
if((0==z1)){
R=1;
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
C->_in_line_status=-(1);
R=0;
}
 else if(r388empty_or_null_body(C)){
C->_in_line_status=1;
}
 else if(r388value_reader(C)){
C->_in_line_status=2;
}
 else if(r388attribute_reader(C)){
C->_in_line_status=3;
}
 else if(r388result_is_current(C)){
C->_in_line_status=4;
}
 else if(r388direct_call(C)){
C->_in_line_status=5;
}
 else if(r388dca(C)){
C->_in_line_status=6;
}
 else if(r388a_eq_neq(C)){
C->_in_line_status=7;
}
 else if(r388dc_pco1(C)){
C->_in_line_status=8;
}
 else if(r388dc_pco2(C)){
C->_in_line_status=9;
}
 else if(r388direct_cse_call(C)){
C->_in_line_status=10;
}
else{
C->_in_line_status=-(1);
R=0;
}
/*FI]*/
}
 else{R=1;
}}
}
/*FI]*/
return R;
}


void r388routine_mapping_jvm(T388* C){
T2 _stack_level=0;
T2 _idx=0;
T0* _ct=NULL;
T0* _rt=NULL;
_ct=(C)->_current_type/*4*/;
r24push_target_as_target((T24*)(oBC12jvm));
_stack_level=-((1)+(r24push_arguments((T24*)(oBC12jvm))));
_rt=(C)->_result_type/*40*/;
/*[IF*/
if((_rt)!=((void*)(NULL))){
_stack_level=(_stack_level)+(X52jvm_stack_space(_rt));
}
/*FI]*/
_idx=r29idx_methodref((T29*)(oBC12constant_pool),(T0*)C);
r23jvm_invoke((T23*)(X52run_class(_ct)),_idx,_stack_level);
}


T6 r388use_current(T388* C){
T6 R=0;
{int z1=(C)->_use_current_state/*28*/;

if((14==z1)){
R=1;
}
 else 
if((13==z1)){
}
 else 
if((15==z1)){
C->_use_current_state=16;
r388compute_use_current(C);
R=r388use_current(C);
}
 else {R=1;
}}
return R;
}
/*No:RUN_FEATURE_4.mapping_jvm*/


void r388routine_afd_check(T388* C){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r367afd_check((T367*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
r220afd_check((T220*)((C)->_routine_body/*48*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
r220afd_check((T220*)((C)->_rescue_compound/*52*/));
}
/*FI]*/
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r219afd_check((T219*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}


T6 r388value_reader(T388* C){
T6 R=0;
T0* _c0=NULL;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c0=_e;
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 148: case 142: case 153: case 147: case 146: 
break;
default:
_c0=NULL;
};/*[IF*/
if((((_c0)!=((void*)(NULL)))&&(X109is_current(/*X144target*/((T0*)(((T148*)_c0))->_target/*4*/))))&&((X144run_feature(_c0))==((void*)(C)))){
r21add_position(X109start_position(_e));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms388_38856);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if(X109is_static(_e)){
R=1;
C->_static_value_mem=X109static_value(_e);
C->_is_static_flag=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r388body_one_dc_pco(T388* C){
T0* R=NULL;
T0* _args=NULL;
T0* _c=NULL;
_c=r388body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 135: case 122: case 116: case 148: case 124: case 126: case 133: case 125: case 123: case 156: case 140: case 142: case 136: case 127: case 129: case 138: case 198: case 155: case 153: case 137: case 128: case 130: case 131: case 147: case 134: case 139: case 146: 
break;
default:
_c=NULL;
};/*[IF*/
if((((_c)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL))))&&(((C)->_arguments/*36*/)==((void*)(NULL)))){
_args=X120arguments(_c);
/*[IF*/
if(((_args)==((void*)(NULL)))||(r152is_static(((T152*)_args)))){
R=_c;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.C_result_is_current*/


T6 r388direct_cse_call(T388* C){
T6 R=0;
T0* _rf8=NULL;
T0* _c=NULL;
/*[IF*/
if((((C)->_arguments/*36*/)==((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c=r388body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 135: case 122: case 116: case 148: case 124: case 126: case 133: case 125: case 123: case 156: case 140: case 142: case 136: case 127: case 129: case 138: case 198: case 155: case 153: case 137: case 128: case 130: case 131: case 147: case 134: case 139: case 146: 
break;
default:
_c=NULL;
};/*[IF*/
if(((_c)!=((void*)(NULL)))&&((X120arguments(_c))==((void*)(NULL)))){
_c=/*X120target*/((T0*)(((T135*)_c))->_target/*4*/);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 135: case 122: case 116: case 148: case 124: case 126: case 133: case 125: case 123: case 156: case 140: case 142: case 136: case 127: case 129: case 138: case 198: case 155: case 153: case 137: case 128: case 130: case 131: case 147: case 134: case 139: case 146: 
break;
default:
_c=NULL;
};/*[IF*/
if(((_c)!=((void*)(NULL)))&&(X109is_current(/*X120target*/((T0*)(((T135*)_c))->_target/*4*/)))){
/*[IF*/
if((X120arguments(_c))==((void*)(NULL))){
_rf8=X120run_feature(_c);
if(NULL!=(_rf8))switch(((T0*)_rf8)->id) {
case 386: 
break;
default:
_rf8=NULL;
};/*[IF*/
if((_rf8)!=((void*)(NULL))){
R=(X50to_string((((T386*)_rf8))->_name/*16*/))==((void*)(((T0*)ms14_17000)));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r388std_compute_use_current(T388* C){
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
/*[IF*/
if(r367use_current((T367*)((C)->_require_assertion/*20*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
/*[IF*/
if(r220use_current((T220*)((C)->_routine_body/*48*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IF*/
if(r220use_current((T220*)((C)->_rescue_compound/*52*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
/*[IF*/
if(r219use_current((T219*)((C)->_ensure_assertion/*24*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
C->_use_current_state=13;
}
/*FI]*/
}


T0* r388run_class(T388* C){
T0* R=NULL;
R=X52run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_4.result_type*/
/*No:RUN_FEATURE_4.base_feature*/
/*No:RUN_FEATURE_4.C_dca*/
/*No:RUN_FEATURE_4.ensure_assertion*/
/*No:RUN_FEATURE_4.static_value_mem*/


T6 r388is_exported_in(T388* C,T0* a1){
T6 R=0;
R=r103gives_permission_to((T103*)(r388clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_4.C_direct_cse_call*/
/*No:RUN_FEATURE_4.fatal_error*/
/*No:RUN_FEATURE_4.arguments*/
/*No:RUN_FEATURE_4.in_line_status*/
/*No:RUN_FEATURE_4.C_direct_call*/


T6 r388direct_call(T388* C){
T6 R=0;
T0* _rf4=NULL;
T0* _args=NULL;
T0* _c=NULL;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if((((_e)!=((void*)(NULL)))&&(((C)->_arguments/*36*/)==((void*)(NULL))))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c=_e;
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 135: case 122: case 116: case 148: case 124: case 126: case 133: case 125: case 123: case 156: case 140: case 142: case 136: case 127: case 129: case 138: case 198: case 155: case 153: case 137: case 128: case 130: case 131: case 147: case 134: case 139: case 146: 
break;
default:
_c=NULL;
};/*[IF*/
if((_c)!=((void*)(NULL))){
/*[IF*/
if(X109is_current(/*X120target*/((T0*)(((T135*)_c))->_target/*4*/))){
_rf4=X120run_feature(_c);
if(NULL!=(_rf4))switch(((T0*)_rf4)->id) {
case 388: 
break;
default:
_rf4=NULL;
};/*[IF*/
if((_rf4)!=((void*)(NULL))){
_args=X120arguments(_c);
/*[IF*/
if((_args)==((void*)(NULL))){
R=1;
}
else{
R=r152is_static(((T152*)_args));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r388dca(T388* C){
T6 R=0;
T0* _args=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r388body_one_result_dca(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_rf=X120run_feature(_c);
/*[IF*/
if((_rf)!=((void*)(NULL))){
/*[IF*/
if((_rf)!=((void*)(C))){
/*[IF*/
if(X52is_user_expanded(/*X27current_type*/((T0*)(((T26*)_rf))->_current_type/*4*/))){
}
else{
_args=X120arguments(_c);
/*[IF*/
if((_args)==((void*)(NULL))){
R=(r388arg_count(C))==(0);
}
else{
R=r152isa_dca_inline(((T152*)_args),(T0*)C,_rf);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r388jvm_define_opening(T388* C){
T0* _t=NULL;
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(NULL))){
_t=X52run_type((C)->_result_type/*40*/);
X52jvm_initialize_local(_t,r388jvm_result_offset(C));
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
r182jvm_initialize((T182*)((C)->_local_vars/*44*/));
}
/*FI]*/
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r219compile_to_jvm_old((T219*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r367compile_to_jvm((T367*)((C)->_require_assertion/*20*/));
}
/*FI]*/
}


void r388jvm_define_closing(T388* C){
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r219compile_to_jvm((T219*)((C)->_ensure_assertion/*24*/),1);
/*[IRF3.4opcode_pop*/r28opcode((T28*)(oBC12code_attribute),87,-(1));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(NULL))){
X52jvm_push_local((C)->_result_type/*40*/,r388jvm_result_offset(C));
}
/*FI]*/
}
/*No:RUN_FEATURE_4.C_dc_pco1*/
/*No:RUN_FEATURE_4.clients_memory*/
/*No:RUN_FEATURE_4.current_type*/


void r388add_client(T388* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T343*n=malloc(sizeof(*n));
*n=M343;
r343with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r343add_last((T343*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r343fast_index_of((T343*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T343*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r343add_last((T343*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r23add_client((T23*)(r388run_class(C)),a1);
}
/*No:RUN_FEATURE_4.ucs_in_computation*/


void r388make(T388* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r333put(((T333*)(((T23*)(r388run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X50to_key(a2));
/*]*/
r22incr_magic_count((T22*)(oBC12small_eiffel));
C->_use_current_state=15;
r22push((T22*)(oBC12small_eiffel),(T0*)C);
r388initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_4.C_value_reader*/
/*No:RUN_FEATURE_4.us_to_pointer*/
/*No:RUN_FEATURE_4.ucs_true*/
/*No:RUN_FEATURE_4.routine_body*/


void r388jvm_define(T388* C){
r388method_info_start(C);
r388jvm_define_opening(C);
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_routine_body/*48*/));
}
/*FI]*/
r388jvm_define_closing(C);
X52jvm_return_code(X52run_type((C)->_result_type/*40*/));
r39finish((T39*)(oBC12method_info));
}
/*No:RUN_FEATURE_4.name*/


T6 r388attribute_reader(T388* C){
T6 R=0;
T0* _rf2=NULL;
T0* _c0=NULL;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_c0=_e;
if(NULL!=(_c0))switch(((T0*)_c0)->id) {
case 148: case 142: case 153: case 147: case 146: 
break;
default:
_c0=NULL;
};/*[IF*/
if((_c0)!=((void*)(NULL))){
/*[IF*/
if(X109is_current(/*X144target*/((T0*)(((T148*)_c0))->_target/*4*/))){
_rf2=X144run_feature(_c0);
if(NULL!=(_rf2))switch(((T0*)_rf2)->id) {
case 53: 
break;
default:
_rf2=NULL;
};R=(_rf2)!=((void*)(NULL));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.afd_check*/


T0* r388clients(T388* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X52base_class((C)->_current_type/*4*/);
_bfbc=((T308*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T308*)((C)->_base_feature/*32*/))->_clients/*20*/;
}
else{
R=r63clients_for(((T63*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


void r388fall_down(T388* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
T2 _i=0;
T0* _running=NULL;
_current_rc=X52run_class((C)->_current_type/*4*/);
_running=(((T23*)_current_rc))->_running/*12*/;
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X52base_class((C)->_current_type/*4*/);
_i=(((T340*)_running))->_lower/*12*/;
while (!((_i)>((((T340*)_running))->_upper/*8*/))) {
_sub_rc=r340item(((T340*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X52base_class((((T23*)_sub_rc))->_current_type/*0*/);
_sub_name=r63new_name_of(((T63*)_sub_bc),_current_bc,(C)->_name/*16*/);
_rf=r23get_feature(((T23*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*No:RUN_FEATURE_4.rescue_compound*/
/*No:RUN_FEATURE_4.actuals_clients*/


T6 r388result_is_current(T388* C){
T6 R=0;
T0* _e=NULL;
_e=r388body_one_result(C);
/*[IF*/
if(((_e)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
R=X109is_current(_e);
}
/*FI]*/
return R;
}


T6 r388a_eq_neq(T388* C){
T6 R=0;
T0* _e=NULL;
T0* _rf=NULL;
T0* _c=NULL;
_c=r388body_one_result_dca(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL)))){
_rf=X120run_feature(_c);
/*[IF*/
if(((_rf)==((void*)(NULL)))&&((X120arg_count(_c))==(1))){
_e=r152expression((T152*)(X120arguments(_c)),1);
{int z1=X109isa_dca_inline_argument(_e);

if((0==z1)){
}
 else 
if((-1==z1)){
R=(r388arg_count(C))==(0);
}
 else{R=(r388arg_count(C))==(1);
}}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.C_dc_pco2*/
/*No:RUN_FEATURE_4.ucs_not_computed*/
/*No:RUN_FEATURE_4.is_pre_computable*/
/*No:RUN_FEATURE_4.C_a_eq_neq*/


T2 r388jvm_local_variable_offset(T388* C,T0* a1){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=(R)+(r191jvm_stack_space((T191*)((C)->_arguments/*36*/)));
}
/*FI]*/
R=(R)+(r182jvm_offset_of((T182*)((C)->_local_vars/*44*/),a1));
return R;
}


T2 r388arg_count(T388* C){
T2 R=0;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*36*/))->_flat_list/*8*/)))->_upper/*12*//*)*/;
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.fz_19*/


T6 r388dc_pco1(T388* C){
T6 R=0;
T0* _rf6=NULL;
T0* _c=NULL;
_c=r388body_one_dc_pco(C);
/*[IF*/
if(((_c)!=((void*)(NULL)))&&(X109is_current(/*X120target*/((T0*)(((T135*)_c))->_target/*4*/)))){
_rf6=X120run_feature(_c);
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 348: 
break;
default:
_rf6=NULL;
};/*[IF*/
if((_rf6)!=((void*)(NULL))){
R=!(r348use_current(((T348*)_rf6)));
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r388jvm_argument_offset(T388* C,T0* a1){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
R=(R)+(r191jvm_offset_of((T191*)((C)->_arguments/*36*/),a1));
return R;
}


void r388initialize(T388* C){
C->_arguments=((T308*)((C)->_base_feature/*32*/))->_arguments/*24*/;
C->_result_type=((T308*)((C)->_base_feature/*32*/))->_result_type/*56*/;
/*[IF*/
if(X52is_like_argument((C)->_result_type/*40*/)){
/*[IF*/
if(!(r191is_runnable((T191*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T191*n=malloc(sizeof(*n));
*n=M191;
r191with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
C->_result_type=X52to_runnable((C)->_result_type/*40*/,(C)->_current_type/*4*/);
}
else{
C->_result_type=X52to_runnable((C)->_result_type/*40*/,(C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r191is_runnable((T191*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T191*n=malloc(sizeof(*n));
*n=M191;
r191with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
C->_local_vars=((T308*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
C->_local_vars=r182to_runnable((T182*)((C)->_local_vars/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T308*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
C->_routine_body=r220to_runnable((T220*)((C)->_routine_body/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r76require_check((T76*)(oBC12run_control))){
C->_require_assertion=r308run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
C->_ensure_assertion=r308run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T308*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*52*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T362*)((T362*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r220to_runnable((T220*)((C)->_rescue_compound/*52*/),(C)->_current_type/*4*/);
}
/*FI]*/
}


T6 r388can_be_dropped(T388* C){
T6 R=0;
R=((((((C)->_arguments/*36*/)==((void*)(NULL)))&&(((C)->_local_vars/*44*/)==((void*)(NULL))))&&(((C)->_require_assertion/*20*/)==((void*)(NULL))))&&(((C)->_ensure_assertion/*24*/)==((void*)(NULL))))&&(((C)->_rescue_compound/*52*/)==((void*)(NULL)));
/*[IF*/
if(R){
/*[IF*/
if(((C)->_routine_body/*48*/)!=((void*)(NULL))){
R=0;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.require_assertion*/
/*No:RUN_FEATURE_4.update_tmp_jvm_descriptor*/


T2 r388jvm_max_locals(T388* C){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=(R)+(r191jvm_stack_space((T191*)((C)->_arguments/*36*/)));
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
R=(R)+(r182jvm_stack_space((T182*)((C)->_local_vars/*44*/)));
}
/*FI]*/
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(NULL))){
R=(R)+(X52jvm_stack_space((C)->_result_type/*40*/));
}
/*FI]*/
return R;
}


T6 r388dc_pco2(T388* C){
T6 R=0;
T0* _rf6=NULL;
T0* _c2=NULL;
T0* _c1=NULL;
_c1=r388body_one_dc_pco(C);
/*[IF*/
if((_c1)!=((void*)(NULL))){
_c2=/*X120target*/((T0*)(((T135*)_c1))->_target/*4*/);
if(NULL!=(_c2))switch(((T0*)_c2)->id) {
case 135: case 122: case 116: case 148: case 124: case 126: case 133: case 125: case 123: case 156: case 140: case 142: case 136: case 127: case 129: case 138: case 198: case 155: case 153: case 137: case 128: case 130: case 131: case 147: case 134: case 139: case 146: 
break;
default:
_c2=NULL;
};/*[IF*/
if((_c2)!=((void*)(NULL))){
_rf6=X120run_feature(_c2);
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 348: 
break;
default:
_rf6=NULL;
};/*[IF*/
if((((_rf6)!=((void*)(NULL)))&&(!(r348use_current(((T348*)_rf6)))))&&(X109is_current(/*X120target*/((T0*)(((T135*)_c2))->_target/*4*/)))){
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_4.C_attribute_reader*/


void r388compute_use_current(T388* C){
T0* _ct=NULL;
_ct=(C)->_current_type/*4*/;
/*[IF*/
if(X52is_reference(_ct)){
/*[IF*/
if(r76no_check((T76*)(oBC12run_control))){
C->_use_current_state=14;
}
else{
r388std_compute_use_current(C);
}
/*FI]*/
}
else{
r388std_compute_use_current(C);
}
/*FI]*/
}


T0* r388body_one_result_dca(T388* C){
T0* R=NULL;
T0* _bf=NULL;
T0* _r=NULL;
T0* _rf=NULL;
T0* _writable_attribute=NULL;
T0* _c0c=NULL;
T0* _c=NULL;
_c=r388body_one_result(C);
if(NULL!=(_c))switch(((T0*)_c)->id) {
case 135: case 122: case 116: case 148: case 124: case 126: case 133: case 125: case 123: case 156: case 140: case 142: case 136: case 127: case 129: case 138: case 198: case 155: case 153: case 137: case 128: case 130: case 131: case 147: case 134: case 139: case 146: 
break;
default:
_c=NULL;
};/*[IF*/
if((_c)!=((void*)(NULL))){
_c0c=/*X120target*/((T0*)(((T135*)_c))->_target/*4*/);
if(NULL!=(_c0c))switch(((T0*)_c0c)->id) {
case 153: 
break;
default:
_c0c=NULL;
};/*[IF*/
if((_c0c)!=((void*)(NULL))){
/*[IF*/
if(X109is_current((((T153*)_c0c))->_target/*4*/)){
_writable_attribute=(((T153*)_c0c))->_run_feature/*12*/;
if(NULL!=(_writable_attribute))switch(((T0*)_writable_attribute)->id) {
case 53: 
break;
default:
_writable_attribute=NULL;
};/*[IF*/
if((_writable_attribute)!=((void*)(NULL))){
_r=((T23*)(r53run_class(((T53*)_writable_attribute))))->_running/*12*/;
_rf=X120run_feature(_c);
/*[IF*/
if((_rf)==((void*)(NULL))){
R=_c;
}
 else if(((_r)!=((void*)(NULL)))&&((r340count(((T340*)_r)))==(1))){
_r=((T23*)(X27run_class(_rf)))->_running/*12*/;
/*[IF*/
if(((_r)!=((void*)(NULL)))&&((r340count(((T340*)_r)))==(1))){
_bf=(((T53*)_writable_attribute))->_base_feature/*24*/;
/*[IF*/
if(!((((T319*)_bf))->_isa_redefinition/*24*/)){
R=_c;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r388method_info_start(T388* C){
T2 _flags=0;
_flags=X52jvm_method_flags((C)->_current_type/*4*/);
r39start((T39*)(oBC12method_info),_flags,X50to_key((C)->_name/*16*/),r388jvm_descriptor(C));
}
/*No:RUN_FEATURE_4.local_vars*/


T2 r388jvm_result_offset(T388* C){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=(R)+(r191jvm_stack_space((T191*)((C)->_arguments/*36*/)));
}
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*44*/)!=((void*)(NULL))){
R=(R)+(r182jvm_stack_space((T182*)((C)->_local_vars/*44*/)));
}
/*FI]*/
return R;
}


void r388routine_update_tmp_jvm_descriptor(T388* C){
T0* _rt=NULL;
T0* _ct=NULL;
r7extend((T7*)(oBC27tmp_jvm_descriptor),'\50');
_ct=(C)->_current_type/*4*/;
X52jvm_target_descriptor_in(_ct,oBC27tmp_jvm_descriptor);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r191jvm_descriptor_in((T191*)((C)->_arguments/*36*/),oBC27tmp_jvm_descriptor);
}
/*FI]*/
_rt=(C)->_result_type/*40*/;
/*[IF*/
if((_rt)==((void*)(NULL))){
r7append((T7*)(oBC27tmp_jvm_descriptor),((T0*)ms13_260));
}
else{
_rt=X52run_type(_rt);
r7extend((T7*)(oBC27tmp_jvm_descriptor),'\51');
X52jvm_descriptor_in(_rt,oBC27tmp_jvm_descriptor);
}
/*FI]*/
}
/*No:RUN_FEATURE_4.jvm_field_or_method*/


T0* r388jvm_descriptor(T388* C){
T0* R=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC27tmp_jvm_descriptor))))->_count)=(0);
/*]*/
/*[IRF3.4update_tmp_jvm_descriptor*/r388routine_update_tmp_jvm_descriptor(C);
/*]*/
R=oBC27tmp_jvm_descriptor;
return R;
}
/*No:CST_ATT_REAL.base_class*/
/*No:CST_ATT_REAL.value_mem*/


T0* r215start_position(T215* C){
T0* R=NULL;
R=X50start_position(/*(IRF4.6first_name*/r87item(((T87*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r215is_merge_with(T215* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X95result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X52is_a_in((C)->_result_type/*20*/,X95result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)(/*(IRF4.1arguments*/NULL/*)*/),X95arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
R=X52is_a_in(X95result_type(a1),(C)->_result_type/*20*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)(X95arguments(a1)),/*(IRF4.1arguments*/NULL/*)*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r215merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_REAL.first_name*/
/*No:CST_ATT_REAL.em1*/
/*No:CST_ATT_REAL.header_comment*/
/*No:CST_ATT_REAL.names*/
/*No:CST_ATT_REAL.result_type*/
/*No:CST_ATT_REAL.code_require*/
/*No:CST_ATT_REAL.make_e_feature*/


void r215add_into(T215* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r59base_class((T59*)(X50start_position(r87item((T87*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r87count((T87*)((C)->_names/*8*/))))) {
_fn=r87item((T87*)((C)->_names/*8*/),_i);
/*[IF*/
if(r94has(((T94*)a1),X50to_key(_fn))){
_fn=/*X95first_name*/((T0*)/*(IRF4.6first_name*/r87item(((T87*)(((T203*)(r94at(((T94*)a1),X50to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X50start_position(_fn));
r21add_position(X50start_position(r87item((T87*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms95_41905));
/*[IRF3.6append*/{T0* b1=X50to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r94put(((T94*)a1),(T0*)C,X50to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r215can_hide(T215* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*20*/)==((void*)(NULL)))||((X95result_type(a1))==((void*)(NULL)))){
r21add_position(X95start_position(a1));
r215error(r215start_position(C),((T0*)ms95_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
{/*AT*/r21add_position(X95start_position(a1));
r215error(r215start_position(C),((T0*)ms95_83182));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(X52is_a_in((C)->_result_type/*20*/,X95result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms95_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r215merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_REAL.ensure_assertion*/


T0* r215try_to_undefine(T215* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X50start_position(a1));
_fn2=r87feature_name((T87*)((C)->_names/*8*/),X50to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X50undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r215try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X289set_clients*//*[IRF3.3set_clients*/((((T292*)(((T292*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r215merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_REAL.is_deferred*/
/*No:CST_ATT_REAL.set_clients*/
/*No:CST_ATT_REAL.value*/
/*No:CST_ATT_REAL.nb_errors*/


T0* r215to_run_feature(T215* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X52run_class(a1);
R=r23at(((T23*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 372: 
break;
default:
R=NULL;
};/*[IF*/
if((R)==((void*)(NULL))){
{T372*n=malloc(sizeof(*n));
*n=M372;
r372make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


void r215merge_header_comments(T215* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/);
}
 else if((/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X95set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_REAL.arguments*/
/*No:CST_ATT_REAL.require_assertion*/


T0* r215try_to_undefine_aux(T215* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r215start_position(C));
r215error(X50start_position(a1),((T0*)ms205_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:CST_ATT_REAL.fz_dot*/


void r215error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


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


void r215collect_for(T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=/*(IRF4.1require_assertion*/NULL/*)*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r365fast_has((T365*)(oBC95require_collector),_er))){
r365add_last((T365*)(oBC95require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
}
/*No:CST_ATT_REAL.set_header_comment*/
/*No:CST_ATT_REAL.clients*/


T0* r295run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r365clear((T365*)(oBC95require_collector));
_ct=/*X27current_type*/((T0*)(((T26*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X52base_class(_ct)),1,/*X27name*/((T0*)(((T26*)a1))->_name/*16*/));
/*[IF*/
if(!(r365empty((T365*)(oBC95require_collector)))){
_i=1;
while (!((_i)>(((T365*)(oBC95require_collector))->_upper/*8*/))) {
_er=r365item((T365*)(oBC95require_collector),_i);
_hc=(((T291*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T291*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r295runnable((((T291*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T291*n=malloc(sizeof(*n));
*n=M291;
r291make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T291*)(((T291*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma365(1,
_er);
}
else{
r365add_last(((T365*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T367*n=malloc(sizeof(*n));
*n=M367;
/*[IRF3.3make*/((((T367*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.base_class*/


void r295set_rescue_compound(T295* C,T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
r21add_position(r220start_position(((T220*)a1)));
}
else{
r21add_position(r295start_position(C));
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms294_126759);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}


T0* r295start_position(T295* C){
T0* R=NULL;
R=X50start_position(/*(IRF4.6first_name*/r87item(((T87*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r295is_merge_with(T295* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X95arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T195*)(((T191*)(X95arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)((C)->_arguments/*20*/),X95arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*20*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)(X95arguments(a1)),(C)->_arguments/*20*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r295merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r295runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r108empty(((T108*)a1)))){
R=r108twin(((T108*)a1));
_i=(((T108*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r22push((T22*)(oBC12small_eiffel),a3);
_a=r105to_runnable((T105*)(r108item(((T108*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r295error(r105start_position((T105*)(r108item(((T108*)R),_i))),((T0*)ms13_14266));
}
else{
/*[IRF3.6put*/{T108* C1=((T108*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r22pop((T22*)(oBC12small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.first_name*/
/*No:EXTERNAL_PROCEDURE.em1*/


T6 r295use_current(T295* C){
T6 R=0;
R=X293use_current((C)->_native/*40*/,(T0*)C);
return R;
}
/*No:EXTERNAL_PROCEDURE.header_comment*/
/*No:EXTERNAL_PROCEDURE.names*/
/*No:EXTERNAL_PROCEDURE.fz_03*/


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


void r295add_into(T295* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r59base_class((T59*)(X50start_position(r87item((T87*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r87count((T87*)((C)->_names/*8*/))))) {
_fn=r87item((T87*)((C)->_names/*8*/),_i);
/*[IF*/
if(r94has(((T94*)a1),X50to_key(_fn))){
_fn=/*X95first_name*/((T0*)/*(IRF4.6first_name*/r87item(((T87*)(((T203*)(r94at(((T94*)a1),X50to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X50start_position(_fn));
r21add_position(X50start_position(r87item((T87*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms95_41905));
/*[IRF3.6append*/{T0* b1=X50to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r94put(((T94*)a1),(T0*)C,X50to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r295can_hide(T295* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
{/*AT*/r21add_position(X95start_position(a1));
r295error(r295start_position(C),((T0*)ms95_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*20*/)==((void*)(NULL)))||((X95arguments(a1))==((void*)(NULL)))){
r21add_position(X95start_position(a1));
r295error(r295start_position(C),((T0*)ms95_83182));
}
 else if((/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*20*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T195*)(((T191*)(X95arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r21add_position(X95start_position(a1));
r295error(r295start_position(C),((T0*)ms95_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*20*/)!=((void*)(NULL))){
/*[IF*/
if(!(r191is_a_in((T191*)((C)->_arguments/*20*/),X95arguments(a1),a2))){
r21add_position(X95start_position(a1));
r21add_position(r295start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms95_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r295merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.ensure_assertion*/


T0* r295run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r108clear((T108*)(oBC95assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X27current_type*/((T0*)(((T26*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X52base_class(_ct)),2,/*X27name*/((T0*)(((T26*)a1))->_name/*16*/));
_r=r295runnable(oBC95assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T219*n=malloc(sizeof(*n));
*n=M219;
r219make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T219*)(((T219*)R))))->_header_comment)=(((T364*)(oBC95header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r295check_obsolete(T295* C){
/*[IF*/
if(!(((T22*)(oBC12small_eiffel))->_short_flag/*8*/)){
/*[IF*/
if(((C)->_obsolete_mark/*24*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms218_39396);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T174*)((C)->_obsolete_mark/*24*/))->_to_string/*8*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r295warning(r295start_position(C),((T0*)ms13_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r295try_to_undefine(T295* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X50start_position(a1));
_fn2=r87feature_name((T87*)((C)->_names/*8*/),X50to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X50undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r295try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X289set_clients*//*[IRF3.3set_clients*/((((T292*)(((T292*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r295merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:EXTERNAL_PROCEDURE.is_deferred*/
/*No:EXTERNAL_PROCEDURE.set_clients*/
/*No:EXTERNAL_PROCEDURE.native*/
/*No:EXTERNAL_PROCEDURE.code_ensure*/
/*No:EXTERNAL_PROCEDURE.nb_errors*/


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


T0* r295to_run_feature(T295* C,T0* a1,T0* a2){
T0* R=NULL;
r295check_obsolete(C);
{T387*n=malloc(sizeof(*n));
*n=M387;
r387make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r295merge_header_comments(T295* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/);
}
 else if((/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X95set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:EXTERNAL_PROCEDURE.arguments*/
/*No:EXTERNAL_PROCEDURE.require_assertion*/


void r295warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}


T0* r295try_to_undefine_aux(T295* C,T0* a1,T0* a2){
T0* R=NULL;
{T290*n=malloc(sizeof(*n));
*n=M290;
r290from_effective(n,a1,(C)->_arguments/*20*/,(C)->_require_assertion/*28*/,(C)->_ensure_assertion/*32*/,a2);
R=(T0*)n;
}
return R;
}
/*No:EXTERNAL_PROCEDURE.set_ensure_assertion*/
/*No:EXTERNAL_PROCEDURE.fz_bad_assertion*/
/*No:EXTERNAL_PROCEDURE.fz_dot*/
/*No:EXTERNAL_PROCEDURE.alias_string*/


void r295error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r295make(T295* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r295make_routine(C,a1,a2,a3,a4,a5);
r295make_external_routine(C,a6,a7);
}
/*No:EXTERNAL_PROCEDURE.end_comment*/


void r295collect_for(T295* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*28*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r365fast_has((T365*)(oBC95require_collector),_er))){
r365add_last((T365*)(oBC95require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(((T219*)((C)->_ensure_assertion/*32*/))->_header_comment/*4*/);
/*]*/
r219add_into((T219*)((C)->_ensure_assertion/*32*/),oBC95assertion_collector);
}
/*FI]*/
}
/*FI]*/
}


void r295set_header_comment(T295* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:EXTERNAL_PROCEDURE.clients*/
/*No:EXTERNAL_PROCEDURE.obsolete_mark*/
/*No:IFTHEN.static_false*/
/*No:IFTHEN.nb_errors*/
/*No:IFTHEN.non_static*/
/*No:IFTHEN.expression*/
/*No:IFTHEN.fz_is_not_boolean*/
/*No:IFTHEN.then_compound*/


T6 r230use_current(T230* C){
T6 R=0;
R=X109use_current((C)->_expression/*0*/);
/*[IF*/
if((!(R))&&(((C)->_then_compound/*4*/)!=((void*)(NULL)))){
R=r220use_current((T220*)((C)->_then_compound/*4*/));
}
/*FI]*/
return R;
}
/*No:IFTHEN.point2*/


T0* r230to_runnable(T230* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
T0* _tc=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*8*/)==((void*)(NULL))){
C->_current_type=a1;
_e=X109to_runnable((C)->_expression/*0*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r230error(X109start_position((C)->_expression/*0*/),((T0*)ms230_32982));
}
else{
C->_expression=_e;
_t=X109result_type((C)->_expression/*0*/);
/*[IF*/
if(!(X52is_boolean(_t))){
/*[IRF3.6append*/{T0* b1=((T0*)ms230_75563);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type(X109result_type((C)->_expression/*0*/),((T0*)ms13_18320));
r21add_position(X109start_position((C)->_expression/*0*/));
r21print_as_error((T21*)(oBC12eh));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
_tc=r220to_runnable((T220*)((C)->_then_compound/*4*/),a1);
/*[IF*/
if((_tc)!=((void*)(NULL))){
C->_then_compound=_tc;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,(C)->_expression/*0*/,(C)->_then_compound/*4*/);
R=(T0*)n;
}
R=r230to_runnable(((T230*)R),a1);
}
/*FI]*/
return R;
}
/*No:IFTHEN.current_type*/


T2 r230compile_to_jvm_resolve_branch(T230* C){
T2 R=0;
/*[IF*/
if(X109is_static((C)->_expression/*0*/)){
/*[IF*/
if((X109static_value((C)->_expression/*0*/))==(1)){
R=17;
}
else{
R=18;
}
/*FI]*/
}
else{
R=19;
/*[IF*/
if(((C)->_point2/*12*/)>(0)){
r28resolve_u2_branch((C)->_point2/*12*/);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r230error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}


void r230make(T230* C,T0* a1,T0* a2){
C->_expression=a1;
C->_then_compound=a2;
}


T2 r230compile_to_jvm(T230* C){
T2 R=0;
T2 _point1=0;
/*[IF*/
if(X109is_static((C)->_expression/*0*/)){
r24incr_static_expression_count((T24*)(oBC12jvm));
/*[IF*/
if((X109static_value((C)->_expression/*0*/))==(1)){
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_then_compound/*4*/));
}
/*FI]*/
R=17;
}
else{
R=18;
}
/*FI]*/
}
else{
R=19;
_point1=X109jvm_branch_if_false((C)->_expression/*0*/);
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_then_compound/*4*/));
}
/*FI]*/
C->_point2=r28opcode_goto((T28*)(oBC12code_attribute));
r28resolve_u2_branch(_point1);
}
/*FI]*/
return R;
}


void r230afd_check(T230* C){
X109afd_check((C)->_expression/*0*/);
/*[IF*/
if(((C)->_then_compound/*4*/)!=((void*)(NULL))){
r220afd_check((T220*)((C)->_then_compound/*4*/));
}
/*FI]*/
}
/*No:IFTHEN.static_true*/
/*No:CLIENT_LIST.start_position*/


T6 r103gives_permission_to_any(T103* C){
T6 R=0;
/*[IF*/
if(/*(IRF4.7is_omitted*/((C)->_start_position/*0*/)==(NULL)/*)*/){
R=1;
}
 else if(((C)->_list/*4*/)==((void*)(NULL))){
}
else{
R=r199gives_permission_to_any((T199*)((C)->_list/*4*/));
}
/*FI]*/
return R;
}


void r103merge(T103* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
{T199*n=malloc(sizeof(*n));
*n=M199;
r199merge(n,a2,a3);
C->_list=(T0*)n;
}
}
/*No:CLIENT_LIST.is_omitted*/


T6 r103gives_permission_to(T103* C,T0* a1){
T6 R=0;
/*[IF*/
if(/*(IRF4.7is_omitted*/((C)->_start_position/*0*/)==(NULL)/*)*/){
R=1;
}
 else if(((C)->_list/*4*/)==((void*)(NULL))){
}
else{
R=r199gives_permission_to((T199*)((C)->_list/*4*/),a1);
}
/*FI]*/
/*[IF*/
if(R){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
r21add_position((C)->_start_position/*0*/);
/*[IRF3.6append*/{T0* b1=(((T70*)a1))->_to_string/*0*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms103_56885);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r103make(T103* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_list=a2;
}


T0* r103append(T103* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)==((void*)(a1)))||(/*(IRF4.7is_omitted*/((C)->_start_position/*0*/)==(NULL)/*)*/)){
R=(T0*)C;
}
else{
/*[IF*/
if(r103gives_permission_to_any(C)){
R=(T0*)C;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(/*(IRF4.7is_omitted*/((((T103*)a1))->_start_position/*0*/)==(NULL)/*)*/){
R=a1;
}
 else if(r103gives_permission_to_any(((T103*)a1))){
R=a1;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
{T103*n=malloc(sizeof(*n));
*n=M103;
r103merge(n,(C)->_start_position/*0*/,(C)->_list/*4*/,(((T103*)a1))->_list/*4*/);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CLIENT_LIST.omitted*/


T0* r103merge_with(T103* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(r103gives_permission_to_any(C)){
R=(T0*)C;
}
 else if(r103gives_permission_to_any(((T103*)a1))){
R=a1;
}
else{
{T103*n=malloc(sizeof(*n));
*n=M103;
r103merge(n,(C)->_start_position/*0*/,(C)->_list/*4*/,(((T103*)a1))->_list/*4*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:CLIENT_LIST.list*/
/*No:FUNCTION.rescue_compound*/
/*No:FUNCTION.use_current_state*/


T0* r308run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r365clear((T365*)(oBC95require_collector));
_ct=/*X27current_type*/((T0*)(((T26*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X52base_class(_ct)),1,/*X27name*/((T0*)(((T26*)a1))->_name/*16*/));
/*[IF*/
if(!(r365empty((T365*)(oBC95require_collector)))){
_i=1;
while (!((_i)>(((T365*)(oBC95require_collector))->_upper/*8*/))) {
_er=r365item((T365*)(oBC95require_collector),_i);
_hc=(((T291*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T291*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r308runnable((((T291*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T291*n=malloc(sizeof(*n));
*n=M291;
r291make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T291*)(((T291*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma365(1,
_er);
}
else{
r365add_last(((T365*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T367*n=malloc(sizeof(*n));
*n=M367;
/*[IRF3.3make*/((((T367*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:FUNCTION.base_class*/
/*No:FUNCTION.set_rescue_compound*/


T0* r308start_position(T308* C){
T0* R=NULL;
R=X50start_position(/*(IRF4.6first_name*/r87item(((T87*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r308is_merge_with(T308* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*56*/)==((void*)(NULL)))||((X95result_type(a1))==((void*)(NULL)))){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X95arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T195*)(((T191*)(X95arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
R=X52is_a_in((C)->_result_type/*56*/,X95result_type(a1),a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)((C)->_arguments/*24*/),X95arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
R=X52is_a_in(X95result_type(a1),(C)->_result_type/*56*/,a2);
}
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r191is_a_in((T191*)(X95arguments(a1)),(C)->_arguments/*24*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r308merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r308runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r108empty(((T108*)a1)))){
R=r108twin(((T108*)a1));
_i=(((T108*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r22push((T22*)(oBC12small_eiffel),a3);
_a=r105to_runnable((T105*)(r108item(((T108*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r308error(r105start_position((T105*)(r108item(((T108*)R),_i))),((T0*)ms13_14266));
}
else{
/*[IRF3.6put*/{T108* C1=((T108*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r22pop((T22*)(oBC12small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:FUNCTION.not_computed*/
/*No:FUNCTION.first_name*/
/*No:FUNCTION.em1*/
/*No:FUNCTION.header_comment*/
/*No:FUNCTION.names*/
/*No:FUNCTION.fz_03*/
/*No:FUNCTION.result_type*/
/*No:FUNCTION.code_require*/
/*No:FUNCTION.make_e_feature*/


void r308add_into(T308* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r59base_class((T59*)(X50start_position(r87item((T87*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r87count((T87*)((C)->_names/*8*/))))) {
_fn=r87item((T87*)((C)->_names/*8*/),_i);
/*[IF*/
if(r94has(((T94*)a1),X50to_key(_fn))){
_fn=/*X95first_name*/((T0*)/*(IRF4.6first_name*/r87item(((T87*)(((T203*)(r94at(((T94*)a1),X50to_key(_fn))))->_names/*8*/)),1)/*)*/);
r21add_position(X50start_position(_fn));
r21add_position(X50start_position(r87item((T87*)((C)->_names/*8*/),_i)));
r21error((T21*)(oBC12eh),((T0*)ms95_41905));
/*[IRF3.6append*/{T0* b1=X50to_string(_fn);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
else{
r94put(((T94*)a1),(T0*)C,X50to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r308can_hide(T308* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(X95result_type(a1)))){
/*[IF*/
if((((C)->_result_type/*56*/)==((void*)(NULL)))||((X95result_type(a1))==((void*)(NULL)))){
r21add_position(X95start_position(a1));
r308error(r308start_position(C),((T0*)ms95_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X95arguments(a1))==((void*)(NULL)))){
r21add_position(X95start_position(a1));
r308error(r308start_position(C),((T0*)ms95_83182));
}
 else if((/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T195*)(((T191*)(X95arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r21add_position(X95start_position(a1));
r308error(r308start_position(C),((T0*)ms95_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_result_type/*56*/)!=((void*)(NULL))){
/*[IF*/
if(!(X52is_a_in((C)->_result_type/*56*/,X95result_type(a1),a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms95_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
/*[IF*/
if(!(r191is_a_in((T191*)((C)->_arguments/*24*/),X95arguments(a1),a2))){
r21add_position(X95start_position(a1));
r21add_position(r308start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms95_54285);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)a2))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21error((T21*)(oBC12eh),((T0*)ms13_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r308merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:FUNCTION.ensure_assertion*/


T0* r308run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r108clear((T108*)(oBC95assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X27current_type*/((T0*)(((T26*)a1))->_current_type/*4*/);
r63collect_for((T63*)(X52base_class(_ct)),2,/*X27name*/((T0*)(((T26*)a1))->_name/*16*/));
_r=r308runnable(oBC95assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T219*n=malloc(sizeof(*n));
*n=M219;
r219make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T219*)(((T219*)R))))->_header_comment)=(((T364*)(oBC95header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r308check_obsolete(T308* C){
/*[IF*/
if(!(((T22*)(oBC12small_eiffel))->_short_flag/*8*/)){
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms218_39396);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T174*)((C)->_obsolete_mark/*28*/))->_to_string/*8*/;
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r308warning(r308start_position(C),((T0*)ms13_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r308try_to_undefine(T308* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r21add_position(X50start_position(a1));
_fn2=r87feature_name((T87*)((C)->_names/*8*/),X50to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X50undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r308try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X289set_clients*//*[IRF3.3set_clients*/((((T292*)(((T292*)R))))->_clients)=((C)->_clients/*20*/);
/*]*/
r308merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:FUNCTION.is_deferred*/
/*No:FUNCTION.set_clients*/
/*No:FUNCTION.nb_errors*/
/*No:FUNCTION.code_ensure*/


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


T0* r308to_run_feature(T308* C,T0* a1,T0* a2){
T0* R=NULL;
r308check_obsolete(C);
{T388*n=malloc(sizeof(*n));
*n=M388;
r388make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r308merge_header_comments(T308* C,T0* a1){
/*[IF*/
if(((T22*)(oBC12small_eiffel))->_short_flag/*8*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/);
}
 else if((/*X95header_comment*/((T0*)(((T203*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X95set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:FUNCTION.arguments*/
/*No:FUNCTION.require_assertion*/

