/*
-- 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"


T0* r229start_position(T229* C){
T0* R=NULL;
R=X164start_position((C)->_instruction/*4*/);
return R;
}
/*No:INSTRUCTION_WITH_COMMENT.add_comment*/


T6 r229use_current(T229* C){
T6 R=0;
R=X164use_current((C)->_instruction/*4*/);
return R;
}


T0* r229to_runnable(T229* C,T0* a1){
T0* R=NULL;
T0* _ri=NULL;
_ri=X164to_runnable((C)->_instruction/*4*/,a1);
/*[IF*/
if((_ri)==((void*)(NULL))){
r229error(X164start_position((C)->_instruction/*4*/),((T0*)ms229_18416));
R=(T0*)C;
}
 else if((_ri)==((void*)((C)->_instruction/*4*/))){
R=(T0*)C;
}
else{
{T229*n=malloc(sizeof(*n));
*n=M229;
r229make(n,_ri,(C)->_comment/*8*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T6 r229is_pre_computable(T229* C){
T6 R=0;
R=X164is_pre_computable((C)->_instruction/*4*/);
return R;
}
/*No:INSTRUCTION_WITH_COMMENT.instruction*/


void r229error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:INSTRUCTION_WITH_COMMENT.end_mark_comment*/


void r229make(T229* C,T0* a1,T0* a2){
C->_instruction=a1;
C->_comment=a2;
}
/*No:INSTRUCTION_WITH_COMMENT.comment*/


void r229compile_to_jvm(T229* C){
X164compile_to_jvm((C)->_instruction/*4*/);
}


void r229afd_check(T229* C){
X164afd_check((C)->_instruction/*4*/);
}
/*No:IFTHENELSE.static_false*/
/*No:IFTHENELSE.clear_current_type*/
/*No:IFTHENELSE.nb_errors*/
/*No:IFTHENELSE.non_static*/
/*No:IFTHENELSE.start_position*/


T0* r226twin(T226* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T226*)R)=*C;
return R;
}


T0* r226add_comment(T226* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
 else {/*AT*//*[IF*/
if((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(1)){
R=(T0*)C;
}
else{
{T229*n=malloc(sizeof(*n));
*n=M229;
r229make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:IFTHENELSE.set_else_compound*/


T6 r226use_current(T226* C){
T6 R=0;
/*[IF*/
if(r231use_current((T231*)((C)->_ifthenlist/*8*/))){
R=1;
}
 else if(((C)->_else_compound/*12*/)!=((void*)(NULL))){
R=r220use_current((T220*)((C)->_else_compound/*12*/));
}
/*FI]*/
return R;
}


void r226add_if_then(T226* C,T0* a1,T0* a2){
T0* _ifthen=NULL;
{T230*n=malloc(sizeof(*n));
*n=M230;
r230make(n,a1,a2);
_ifthen=(T0*)n;
}
/*[IF*/
if(((C)->_ifthenlist/*8*/)==((void*)(NULL))){
{T231*n=malloc(sizeof(*n));
*n=M231;
/*[IRF3.3make*/((((T231*)(n)))->_list)=(se_ma232(1,
_ifthen));
/*]*/
C->_ifthenlist=(T0*)n;
}
}
else{
/*[IRF3.5add_last*/r232add_last(((T232*)(((T231*)((C)->_ifthenlist/*8*/))->_list/*0*/)),_ifthen);
/*]*/
}
/*FI]*/
}


T0* r226to_runnable(T226* C,T0* a1){
T0* R=NULL;
T0* _ec=NULL;
T0* _itl=NULL;
T2 _ne=0;
_ne=/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/;
/*[IF*/
if(((C)->_current_type/*16*/)==((void*)(NULL))){
C->_current_type=a1;
_itl=r231to_runnable((T231*)((C)->_ifthenlist/*8*/),a1);
/*[IF*/
if((_itl)==((void*)(NULL))){
}
else{
C->_ifthenlist=_itl;
}
/*FI]*/
/*[IF*/
if((((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)-(_ne))==(0))&&(((C)->_else_compound/*12*/)!=((void*)(NULL)))){
_ec=r220to_runnable((T220*)((C)->_else_compound/*12*/),a1);
/*[IF*/
if((_ec)==((void*)(NULL))){
}
else{
C->_else_compound=_ec;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_itl)!=((void*)(NULL))){
R=(T0*)C;
}
/*FI]*/
}
else{
R=r226twin(C);
/*[IRF3.3clear_current_type*/((((T226*)(((T226*)R))))->_current_type)=(NULL);
/*]*/
R=r226to_runnable(((T226*)R),a1);
}
/*FI]*/
return R;
}
/*No:IFTHENELSE.ifthenlist*/
/*No:IFTHENELSE.else_compound*/
/*No:IFTHENELSE.current_type*/
/*No:IFTHENELSE.is_pre_computable*/
/*No:IFTHENELSE.end_mark_comment*/
/*No:IFTHENELSE.make*/


void r226compile_to_jvm(T226* C){
T2 _static_value=0;
_static_value=r231compile_to_jvm((T231*)((C)->_ifthenlist/*8*/));
{int z1=_static_value;

if((18==z1)){
/*[IF*/
if(((C)->_else_compound/*12*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_else_compound/*12*/));
}
/*FI]*/
}
 else 
if((17==z1)){
r231compile_to_jvm_resolve_branch((T231*)((C)->_ifthenlist/*8*/));
}
 else {/*[IF*/
if(((C)->_else_compound/*12*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_else_compound/*12*/));
}
/*FI]*/
r231compile_to_jvm_resolve_branch((T231*)((C)->_ifthenlist/*8*/));
}}
}


void r226afd_check(T226* C){
r231afd_check((T231*)((C)->_ifthenlist/*8*/));
/*[IF*/
if(((C)->_else_compound/*12*/)!=((void*)(NULL))){
r220afd_check((T220*)((C)->_else_compound/*12*/));
}
/*FI]*/
}
/*No:IFTHENELSE.static_true*/
/*No:RUN_FEATURE_1.rescue_compound*/


void r372fall_down(T372* 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_1.use_current_state*/
/*No:RUN_FEATURE_1.actuals_clients*/
/*No:RUN_FEATURE_1.ucs_false*/


T6 r372is_static(T372* C){
T6 R=0;
R=X109is_static((C)->_value/*36*/);
return R;
}


T0* r372start_position(T372* C){
T0* R=NULL;
R=X204start_position((C)->_base_feature/*32*/);
return R;
}


T6 r372use_current(T372* 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;
/*[IRF3.4compute_use_current*/r372std_compute_use_current(C);
/*]*/
R=r372use_current(C);
}
 else {R=1;
}}
return R;
}


void r372mapping_jvm(T372* C){
T2 _space=0;
r24drop_target((T24*)(oBC12jvm));
_space=X109compile_to_jvm_into((C)->_value/*36*/,(C)->_result_type/*40*/);
}
/*No:RUN_FEATURE_1.ucs_not_computed*/
/*No:RUN_FEATURE_1.is_pre_computable*/


void r372std_compute_use_current(T372* 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*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
/*AF*//*AE*/
/*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* r372run_class(T372* C){
T0* R=NULL;
R=X52run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_1.result_type*/
/*No:RUN_FEATURE_1.base_feature*/
/*No:RUN_FEATURE_1.ensure_assertion*/


T2 r372static_value_mem(T372* C){
T2 R=0;
R=X109static_value((C)->_value/*36*/);
return R;
}


T2 r372jvm_local_variable_offset(T372* C,T0* a1){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
R=(R)+(r182jvm_offset_of((T182*)(/*(IRF4.1local_vars*/NULL/*)*/),a1));
return R;
}


T2 r372arg_count(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}


T6 r372is_exported_in(T372* C,T0* a1){
T6 R=0;
R=r103gives_permission_to((T103*)(r372clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_1.value*/
/*No:RUN_FEATURE_1.arguments*/


T2 r372jvm_argument_offset(T372* C,T0* a1){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
R=(R)+(r191jvm_offset_of((T191*)(/*(IRF4.1arguments*/NULL/*)*/),a1));
return R;
}
/*No:RUN_FEATURE_1.can_be_dropped*/


void r372initialize(T372* C){
T2 _i=0;
C->_result_type=/*X204result_type*/((T0*)((T217*)((C)->_base_feature/*32*/))->_result_type/*20*/);
C->_result_type=X52to_runnable((C)->_result_type/*40*/,(C)->_current_type/*4*/);
_i=r87index_of((T87*)(/*X204names*/((T0*)((T217*)((C)->_base_feature/*32*/))->_names/*8*/)),(C)->_name/*16*/);
C->_value=X204value((C)->_base_feature/*32*/,_i);
C->_value=X109to_runnable((C)->_value/*36*/,(C)->_current_type/*4*/);
}
/*No:RUN_FEATURE_1.require_assertion*/
/*No:RUN_FEATURE_1.update_tmp_jvm_descriptor*/


T2 r372jvm_max_locals(T372* C){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((C)->_result_type/*40*/)!=((void*)(NULL))){
R=(R)+(X52jvm_stack_space((C)->_result_type/*40*/));
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_1.clients_memory*/
/*No:RUN_FEATURE_1.current_type*/


void r372add_client(T372* 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*)(r372run_class(C)),a1);
}
/*No:RUN_FEATURE_1.ucs_in_computation*/
/*No:RUN_FEATURE_1.compute_use_current*/


void r372make(T372* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r333put(((T333*)(((T23*)(r372run_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);
r372initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_1.routine_body*/
/*No:RUN_FEATURE_1.ucs_true*/
/*No:RUN_FEATURE_1.jvm_define*/
/*No:RUN_FEATURE_1.name*/
/*No:RUN_FEATURE_1.local_vars*/


T2 r372jvm_result_offset(T372* C){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}
/*No:RUN_FEATURE_1.jvm_field_or_method*/
/*No:RUN_FEATURE_1.afd_check*/


T0* r372clients(T372* 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=/*X204base_class*/((T0*)((T217*)((C)->_base_feature/*32*/))->_base_class/*4*/);
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=/*X204clients*/((T0*)((T217*)((C)->_base_feature/*32*/))->_clients/*16*/);
}
else{
R=r63clients_for(((T63*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}


T0* r372jvm_descriptor(void){
T0* R=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC27tmp_jvm_descriptor))))->_count)=(0);
/*]*/
/*[IRF3.1update_tmp_jvm_descriptor*//*]*/
R=oBC27tmp_jvm_descriptor;
return R;
}
/*No:ONCE_FUNCTION.rescue_compound*/
/*No:ONCE_FUNCTION.use_current_state*/


T0* r311run_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=r311runnable((((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:ONCE_FUNCTION.base_class*/
/*No:ONCE_FUNCTION.set_rescue_compound*/


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


T6 r311is_merge_with(T311* 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){
r311merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r311runnable(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))){
r311error(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:ONCE_FUNCTION.not_computed*/
/*No:ONCE_FUNCTION.first_name*/
/*No:ONCE_FUNCTION.em1*/
/*No:ONCE_FUNCTION.header_comment*/
/*No:ONCE_FUNCTION.names*/
/*No:ONCE_FUNCTION.fz_03*/
/*No:ONCE_FUNCTION.result_type*/
/*No:ONCE_FUNCTION.code_require*/
/*No:ONCE_FUNCTION.make_e_feature*/


void r311add_into(T311* 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 r311can_hide(T311* 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));
r311error(r311start_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));
r311error(r311start_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));
r311error(r311start_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(r311start_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){
r311merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:ONCE_FUNCTION.ensure_assertion*/


T0* r311run_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=r311runnable(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 r311check_obsolete(T311* 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);
}/*]*/
r311warning(r311start_position(C),((T0*)ms13_166));
}
/*FI]*/
}
/*FI]*/
}


T0* r311try_to_undefine(T311* 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=r311try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X289set_clients*//*[IRF3.3set_clients*/((((T292*)(((T292*)R))))->_clients)=((C)->_clients/*20*/);
/*]*/
r311merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:ONCE_FUNCTION.is_deferred*/
/*No:ONCE_FUNCTION.set_clients*/
/*No:ONCE_FUNCTION.code_ensure*/
/*No:ONCE_FUNCTION.nb_errors*/


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


T0* r311to_run_feature(T311* C,T0* a1,T0* a2){
T0* R=NULL;
r311check_obsolete(C);
{T348*n=malloc(sizeof(*n));
*n=M348;
r348make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r311merge_header_comments(T311* 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:ONCE_FUNCTION.arguments*/
/*No:ONCE_FUNCTION.require_assertion*/


void r311make_effective_routine(T311* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r311make_routine(C,a1,a2,a3,a4,a5);
C->_local_vars=a6;
C->_routine_body=a7;
C->_use_current_state=25;
}


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


T0* r311try_to_undefine_aux(T311* C,T0* a1,T0* a2){
T0* R=NULL;
{T292*n=malloc(sizeof(*n));
*n=M292;
r292from_effective(n,a1,(C)->_arguments/*24*/,(C)->_result_type/*56*/,(C)->_require_assertion/*32*/,(C)->_ensure_assertion/*36*/,a2);
R=(T0*)n;
}
return R;
}
/*No:ONCE_FUNCTION.set_ensure_assertion*/
/*No:ONCE_FUNCTION.fz_bad_assertion*/
/*No:ONCE_FUNCTION.fz_dot*/


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


void r311make(T311* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7,T0* a8){
r311make_effective_routine(C,a1,a2,a4,a5,a6,a7,a8);
C->_result_type=a3;
}
/*No:ONCE_FUNCTION.routine_body*/
/*No:ONCE_FUNCTION.end_comment*/


void r311collect_for(T311* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*32*/;
/*[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/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T364*)((T364*)(oBC95header_comment_memory))))->_item)=(((T219*)((C)->_ensure_assertion/*36*/))->_header_comment/*4*/);
/*]*/
r219add_into((T219*)((C)->_ensure_assertion/*36*/),oBC95assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:ONCE_FUNCTION.local_vars*/


void r311set_header_comment(T311* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:ONCE_FUNCTION.clients*/
/*No:ONCE_FUNCTION.obsolete_mark*/


void r61read_line(T61* C){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62last_string))))->_count)=(0);
/*]*/
r61read_line_in(C,oBC62last_string);
}


void r61read_line_in(T61* C,T0* a1){
T2 _mem=0;
r61read_character(C);
_mem=(C)->_memory/*12*/;
while (!((((_mem)==((EOF)))||((_mem)==(((unsigned char)'\n'))))||((_mem)==(((unsigned char)'\15'))))) {
r7extend(((T7*)a1),((T3)(_mem)));
_mem=getc((FILE*)((C)->_input_stream/*8*/));
}
C->_memory=_mem;
/*[IF*/
if((_mem)==(((unsigned char)'\15'))){
r61read_character(C);
/*[IF*/
if((/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/)!=('\n')){
/*[IRF3.3unread_character*/((((T61*)(C)))->_push_back_flag)=(1);
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:STD_FILE_READ.path*/


void r61read_word(T61* C){
r61skip_separators(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC62last_string))))->_count)=(0);
/*]*/
while (!((r61end_of_input(C))||(r3is_separator(/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/)))) {
r7extend((T7*)(oBC62last_string),/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/);
r61read_character(C);
}
}


void r61skip_separators(T61* C){
while (!((r61end_of_input(C))||(!(r3is_separator(/*(IRF4.6last_character*/((T3)((C)->_memory/*12*/))/*)*/))))) {
r61read_character(C);
}
}
/*No:STD_FILE_READ.memory*/
/*No:STD_FILE_READ.unread_character*/
/*No:STD_FILE_READ.last_character*/
/*No:STD_FILE_READ.input_stream*/
T0*oBC62last_string=NULL;


T6 r61end_of_input(T61* C){
T6 R=0;
/*[IF*/
if(!((C)->_push_back_flag/*0*/)){
R=((C)->_memory/*12*/)==((EOF));
}
/*FI]*/
return R;
}
/*No:STD_FILE_READ.is_connected*/


void r61connect_to(T61* C,T0* a1){
T8 _p=0;
_p=r7to_external(((T7*)a1));
C->_input_stream=fopen((char*)_p,"r");
/*[IF*/
if((NULL!=(C)->_input_stream/*8*/)){
C->_push_back_flag=0;
C->_memory=((unsigned char)'\40');
C->_path=a1;
}
/*FI]*/
}


void r61disconnect(T61* C){
fclose((C)->_input_stream/*8*/);
C->_path=NULL;
}
/*No:STD_FILE_READ.push_back_flag*/
/*No:STD_FILE_READ.make*/


void r61read_character(T61* C){
/*[IF*/
if((C)->_push_back_flag/*0*/){
C->_push_back_flag=0;
}
else{
C->_memory=getc((FILE*)((C)->_input_stream/*8*/));
}
/*FI]*/
}


void r355mkdir(T0* a1){
T8 _p=0;
_p=r7to_external(((T7*)a1));
mkdir((char*)_p,511);}


void r369fall_down(T369* 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_10.use_current_state*/
/*No:RUN_FEATURE_10.rescue_compound*/
/*No:RUN_FEATURE_10.actuals_clients*/
/*No:RUN_FEATURE_10.ucs_false*/
/*No:RUN_FEATURE_10.is_static*/


T0* r369start_position(T369* C){
T0* R=NULL;
R=r307start_position((T307*)((C)->_base_feature/*32*/));
return R;
}


void r369routine_mapping_jvm(T369* 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=/*(IRF4.1result_type*/NULL/*)*/;
/*[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 r369use_current(T369* 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;
/*[IRF3.4compute_use_current*/r369std_compute_use_current(C);
/*]*/
R=r369use_current(C);
}
 else {R=1;
}}
return R;
}
/*No:RUN_FEATURE_10.mapping_jvm*/


void r369routine_afd_check(T369* C){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r367afd_check((T367*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r220afd_check((T220*)((C)->_routine_body/*44*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
r220afd_check((T220*)((C)->_rescue_compound/*48*/));
}
/*FI]*/
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r219afd_check((T219*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*No:RUN_FEATURE_10.ucs_not_computed*/
/*No:RUN_FEATURE_10.is_pre_computable*/


void r369std_compute_use_current(T369* 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/*44*/)!=((void*)(NULL))){
/*[IF*/
if(r220use_current((T220*)((C)->_routine_body/*44*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IF*/
if(r220use_current((T220*)((C)->_rescue_compound/*48*/))){
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* r369run_class(T369* C){
T0* R=NULL;
R=X52run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_10.result_type*/
/*No:RUN_FEATURE_10.base_feature*/
/*No:RUN_FEATURE_10.static_value_mem*/
/*No:RUN_FEATURE_10.ensure_assertion*/


T2 r369jvm_local_variable_offset(T369* 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/*40*/),a1));
return R;
}


T2 r369arg_count(T369* 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_10.fz_19*/


T6 r369is_exported_in(T369* C,T0* a1){
T6 R=0;
R=r103gives_permission_to((T103*)(r369clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_10.arguments*/


T2 r369jvm_argument_offset(T369* 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;
}
/*No:RUN_FEATURE_10.can_be_dropped*/


void r369initialize(T369* C){
C->_arguments=((T307*)((C)->_base_feature/*32*/))->_arguments/*24*/;
/*[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]*/
C->_local_vars=((T307*)((C)->_base_feature/*32*/))->_local_vars/*16*/;
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
C->_local_vars=r182to_runnable((T182*)((C)->_local_vars/*40*/),(C)->_current_type/*4*/);
}
/*FI]*/
C->_routine_body=((T307*)((C)->_base_feature/*32*/))->_routine_body/*44*/;
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
C->_routine_body=r220to_runnable((T220*)((C)->_routine_body/*44*/),(C)->_current_type/*4*/);
}
/*FI]*/
/*[IF*/
if(r76require_check((T76*)(oBC12run_control))){
C->_require_assertion=r307run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
C->_ensure_assertion=r307run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T307*)((C)->_base_feature/*32*/))->_rescue_compound/*48*/;
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_used*/((((T362*)((T362*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
C->_rescue_compound=r220to_runnable((T220*)((C)->_rescue_compound/*48*/),(C)->_current_type/*4*/);
}
/*FI]*/
}
/*No:RUN_FEATURE_10.require_assertion*/
/*No:RUN_FEATURE_10.update_tmp_jvm_descriptor*/


T2 r369jvm_max_locals(T369* 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/*40*/)!=((void*)(NULL))){
R=(R)+(r182jvm_stack_space((T182*)((C)->_local_vars/*40*/)));
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}


void r369jvm_define_opening(T369* C){
T0* _t=NULL;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((C)->_local_vars/*40*/)!=((void*)(NULL))){
r182jvm_initialize((T182*)((C)->_local_vars/*40*/));
}
/*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 r369jvm_define_closing(T369* 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*/
/*AF*//*AE*/
/*FI]*/
}
/*No:RUN_FEATURE_10.clients_memory*/
/*No:RUN_FEATURE_10.current_type*/


void r369add_client(T369* 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*)(r369run_class(C)),a1);
}
/*No:RUN_FEATURE_10.ucs_in_computation*/
/*No:RUN_FEATURE_10.compute_use_current*/


void r369method_info_start(T369* C){
T2 _flags=0;
_flags=X52jvm_method_flags((C)->_current_type/*4*/);
r39start((T39*)(oBC12method_info),_flags,X50to_key((C)->_name/*16*/),r369jvm_descriptor(C));
}


void r369make(T369* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r333put(((T333*)(((T23*)(r369run_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);
r369initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_10.ucs_true*/
/*No:RUN_FEATURE_10.routine_body*/


void r369jvm_define(T369* C){
r369method_info_start(C);
r369jvm_define_opening(C);
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_routine_body/*44*/));
}
/*FI]*/
r369jvm_define_closing(C);
/*[IRF3.2opcode_return*//*[IRF3.6add_u1*/{T2 b1=177;
r48add_last((T48*)(oBC28code),b1);
}/*]*/
/*]*/
r39finish((T39*)(oBC12method_info));
}
/*No:RUN_FEATURE_10.name*/
/*No:RUN_FEATURE_10.local_vars*/


T2 r369jvm_result_offset(T369* 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/*40*/)!=((void*)(NULL))){
R=(R)+(r182jvm_stack_space((T182*)((C)->_local_vars/*40*/)));
}
/*FI]*/
return R;
}


void r369routine_update_tmp_jvm_descriptor(T369* 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=/*(IRF4.1result_type*/NULL/*)*/;
/*[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_10.jvm_field_or_method*/
/*No:RUN_FEATURE_10.afd_check*/


T0* r369clients(T369* 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=((T307*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T307*)((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;
}


T0* r369jvm_descriptor(T369* C){
T0* R=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC27tmp_jvm_descriptor))))->_count)=(0);
/*]*/
/*[IRF3.4update_tmp_jvm_descriptor*/r369routine_update_tmp_jvm_descriptor(C);
/*]*/
R=oBC27tmp_jvm_descriptor;
return R;
}
/*No:TYPE_BIT_1.start_position*/


void r280jvm_initialize_local(T280* C,T2 a1){
T2 _space=0;
_space=r280jvm_push_default(C);
r28opcode_astore((T28*)(oBC12code_attribute),a1);
}


void r280used_as_reference(T280* C){
T0* _rf=NULL;
T0* _rc=NULL;
T0* _type_bit_ref=NULL;
/*[IF*/
if(r48fast_has((T48*)(oBC281mem_ref_nb),/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/)){
}
else{
r48add_last((T48*)(oBC281mem_ref_nb),/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/);
{T380*n=malloc(sizeof(*n));
*n=M380;
r380make(n,(T0*)C);
_type_bit_ref=(T0*)n;
}
r381add_last((T381*)(oBC281mem_type_bit_ref),_type_bit_ref);
_rc=r380run_class(((T380*)_type_bit_ref));
r23set_at_run_time(((T23*)_rc));
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2695));
}
/*FI]*/
}
/*No:TYPE_BIT_1.us_put_1*/
/*No:TYPE_BIT_1.is_user_expanded*/


T2 r280id(T280* C){
T2 R=0;
R=((T23*)(r280run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_BIT_1.is_pointer*/
/*No:TYPE_BIT_1.jvm_check_class_invariant*/


T0* r280to_runnable(T280* C,T0* a1){
T0* R=NULL;
R=(T0*)C;
r280to_runnable_1_2(C);
return R;
}
/*No:TYPE_BIT_1.nb*/


void r280set_run_time_mark(T280* C){
r7copy((T7*)(((T0*)ms52_785024)),((T0*)ms13_1060));
r7append((T7*)(((T0*)ms52_785024)),r2to_string(/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/));
C->_run_time_mark=r86item(((T0*)ms52_785024));
}


T0* r280run_class(T280* C){
T0* R=NULL;
R=r22run_class((T0*)C);
return R;
}
/*No:TYPE_BIT_1.is_like_current*/
/*No:TYPE_BIT_1.is_bit*/


T0* r280smallest_ancestor(T280* C,T0* a1){
T0* R=NULL;
T0* _other_bit=NULL;
_other_bit=X52run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 280: case 282: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if((_other_bit)!=((void*)(NULL))){
/*[IF*/
if((/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/)<(X281nb(_other_bit))){
R=(T0*)C;
}
else{
R=_other_bit;
}
/*FI]*/
}
else{
R=r280type_any();
}
/*FI]*/
return R;
}


void r280jvm_write_local(T2 a1){
T0* _ca=NULL;
_ca=oBC12code_attribute;
r28opcode_bitset_clone(((T28*)_ca));
r28opcode_astore(((T28*)_ca),a1);
}
/*No:TYPE_BIT_1.fz_a0*/
/*No:TYPE_BIT_1.fz_a1*/
/*No:TYPE_BIT_1.fz_a2*/
/*No:TYPE_BIT_1.fz_a3*/
/*No:TYPE_BIT_1.run_time_mark*/
/*No:TYPE_BIT_1.fz_a4*/
/*No:TYPE_BIT_1.n*/
/*No:TYPE_BIT_1.is_expanded*/


T2 r280jvm_if_x_eq(void){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T2 _idx=0;
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_7446),((T0*)ms13_49182));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
R=r28opcode_ifne(((T28*)_ca));
return R;
}
/*No:TYPE_BIT_1.jvm_xnewarray*/
/*No:TYPE_BIT_1.fz_a8*/
/*No:TYPE_BIT_1.fz_a9*/
/*No:TYPE_BIT_1.jvm_push_local*/
/*No:TYPE_BIT_1.is_like_feature*/
/*No:TYPE_BIT_1.fz_dot*/


T6 r280is_a(T280* C,T0* a1){
T6 R=0;
T0* _other_bit=NULL;
/*[IF*/
if(X52is_bit(a1)){
_other_bit=X52run_type(a1);
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 280: case 282: 
break;
default:
_other_bit=NULL;
};/*[IF*/
if((/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/)<=(X281nb(_other_bit))){
R=1;
}
else{
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms281_7780));
}
/*FI]*/
}
 else if(r63is_subclass_of((T63*)(r280base_class(C)),X52base_class(a1))){
R=1;
r280used_as_reference(C);
}
else{
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_BIT_1.is_character*/
/*No:TYPE_BIT_1.written_mark*/


T2 r280jvm_convert_to(T280* C,T0* a1){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T0* _other_bit=NULL;
T2 _point3=0;
T2 _point2=0;
T2 _point1=0;
T2 _loc2=0;
T2 _loc1=0;
T2 _idx=0;
T2 _space=0;
R=1;
/*[IF*/
if(X52is_reference(a1)){
r280jvm_to_reference(C);
}
else{
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_other_bit=a1;
if(NULL!=(_other_bit))switch(((T0*)_other_bit)->id) {
case 280: case 282: 
break;
default:
_other_bit=NULL;
};_space=X281jvm_push_default(_other_bit);
/*[IRF3.4opcode_swap*/r28opcode(((T28*)_ca),95,0);
/*]*/
_loc1=r28extra_local_size1(((T28*)_ca));
r28opcode_push_integer(((T28*)_ca),X281nb(_other_bit));
r28opcode_istore(((T28*)_ca),_loc1);
_loc2=r28extra_local_size1(((T28*)_ca));
r28opcode_push_integer(((T28*)_ca),/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/);
r28opcode_istore(((T28*)_ca),_loc2);
r28opcode_iload(((T28*)_ca),_loc2);
_point1=/*(IRF4.9program_counter*//*(IRF4.6count*/(((T48*)(oBC28code))->_upper/*8*/)+(1)/*)*//*)*/;
_point2=r28opcode_ifeq(((T28*)_ca));
r28opcode_iinc(((T28*)_ca),_loc1,255);
r28opcode_iinc(((T28*)_ca),_loc2,255);
/*[IRF3.4opcode_dup2*/r28opcode(((T28*)_ca),92,2);
/*]*/
r28opcode_iload(((T28*)_ca),_loc2);
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_978),((T0*)ms13_1016));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
_point3=r28opcode_ifne(((T28*)_ca));
/*[IRF3.4opcode_pop*/r28opcode(((T28*)_ca),87,-(1));
/*]*/
r28opcode_iload(((T28*)_ca),_loc2);
r28opcode_goto_backward(((T28*)_ca),_point1);
r28resolve_u2_branch(_point3);
r28opcode_iload(((T28*)_ca),_loc1);
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_1014),((T0*)ms13_1000));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
r28opcode_iload(((T28*)_ca),_loc2);
r28opcode_goto_backward(((T28*)_ca),_point1);
r28resolve_u2_branch(_point2);
/*[IRF3.4opcode_pop*/r28opcode(((T28*)_ca),87,-(1));
/*]*/
}
/*FI]*/
return R;
}


void r280make(T280* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_n=a2;
r280set_run_time_mark(C);
C->_written_mark=(C)->_run_time_mark/*12*/;
}
/*No:TYPE_BIT_1.is_array*/


void r280fatal_error_generic_list(T280* C){
r21add_type((T0*)C,((T0*)ms52_29184));
r21print_as_fatal_error((T21*)(oBC12eh));
}


T2 r280jvm_push_default(T280* C){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T2 _idx=0;
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_idx=r29idx_class2(((T29*)_cp),((T0*)ms13_37376a));
r28opcode_new(((T28*)_ca),_idx);
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
r28opcode_push_integer(((T28*)_ca),/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/);
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_5298),((T0*)ms13_1000));
r28opcode_invokespecial(((T28*)_ca),_idx,0);
return R;
}
/*No:TYPE_BIT_1.tmp_string*/
/*No:TYPE_BIT_1.is_dummy_expanded*/


void r280to_runnable_1_2(T280* C){
T0* _rf=NULL;
T0* _rc=NULL;
_rc=r280run_class(C);
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2515));
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2520));
}


T0* r280generic_list(T280* C){
T0* R=NULL;
r280fatal_error_generic_list(C);
return R;
}


T0* r280base_class(T280* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=r280base_class_name();
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r70base_class(((T70*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms52_37098);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((T0*)C,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}


T2 r280jvm_if_x_ne(void){
T2 R=0;
T0* _cp=NULL;
T0* _ca=NULL;
T2 _idx=0;
_ca=oBC12code_attribute;
_cp=oBC12constant_pool;
_idx=r29idx_methodref3(((T29*)_cp),((T0*)ms13_37376a),((T0*)ms13_7446),((T0*)ms13_49182));
r28opcode_invokevirtual(((T28*)_ca),_idx,0);
R=r28opcode_ifeq(((T28*)_ca));
return R;
}


T0* r280base_class_name(void){
if(fBC281base_class_name==0){
fBC281base_class_name=1;
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,((T0*)ms14_2055),NULL);
oBC281base_class_name=(T0*)n;
}
}
return oBC281base_class_name;}


void r280jvm_standard_is_equal(T280* C){
T0* _wa=NULL;
T0* _rc=NULL;
_rc=r280run_class(C);
_wa=r23writable_attributes(((T23*)_rc));
r24std_is_equal(_rc,_wa);
}
/*No:TYPE_BIT_1.is_formal_generic*/


T6 r280is_a_in(T280* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*8*/)==((void*)(X52written_mark(a1)))){
R=1;
}
else{
_ct=(((T23*)a2))->_current_type/*0*/;
_t1=r280to_runnable(C,_ct);
_t2=X52to_runnable(a1,_ct);
/*[IF*/
if((X52run_time_mark(_t1))==((void*)(X52run_time_mark(_t2)))){
R=1;
}
else{
R=X52is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r280look_up_for(T280* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r280base_class(C)),a1,a2);
return R;
}


void r280jvm_to_reference(T280* C){
T0* _ca=NULL;
T0* _type_bit_ref=NULL;
T2 _idx=0;
T0* _rc=NULL;
_ca=oBC12code_attribute;
_idx=r48fast_index_of((T48*)(oBC281mem_ref_nb),/*(IRF4.6nb*/(((T178*)((C)->_n/*16*/)))->_value/*8*//*)*/);
_type_bit_ref=/*(IRF4.6item*/(((T381*)(oBC281mem_type_bit_ref))->_storage/*4*/)[_idx]/*)*/;
_rc=r380run_class(((T380*)_type_bit_ref));
r23jvm_basic_new(((T23*)_rc));
/*[IRF3.4opcode_dup_x1*/r28opcode(((T28*)_ca),90,1);
/*]*/
/*[IRF3.4opcode_swap*/r28opcode(((T28*)_ca),95,0);
/*]*/
_idx=r23jvm_constant_pool_index(((T23*)_rc));
_idx=r29idx_fieldref4((T29*)(oBC12constant_pool),_idx,((T0*)ms14_2695),((T0*)ms13_28278));
r28opcode_putfield(((T28*)_ca),_idx,-(2));
}
/*No:TYPE_BIT_1.run_type*/
/*No:TYPE_BIT_1.expanded_initializer*/
/*No:TYPE_BIT_1.has_creation*/
/*No:TYPE_BIT_1.jvm_method_flags*/
/*No:TYPE_BIT_1.is_boolean*/
/*No:TYPE_BIT_1.is_generic*/
/*No:TYPE_BIT_1.us_bit_n*/
/*No:TYPE_BIT_1.jvm_xaload*/
/*No:TYPE_BIT_1.fz_35*/
/*No:TYPE_BIT_1.fz_27*/
/*No:TYPE_BIT_1.is_real*/
/*No:TYPE_BIT_1.is_any*/
/*No:TYPE_BIT_1.is_basic_eiffel_expanded*/
/*No:TYPE_BIT_1.jvm_descriptor_in*/


T0* r280type_any(void){
if(fBC12type_any==0){
fBC12type_any=1;
{T263*n=malloc(sizeof(*n));
*n=M263;
r263make(n,NULL);
oBC12type_any=(T0*)n;
}
}
return oBC12type_any;}
/*No:TYPE_BIT_1.is_string*/


T6 r280is_native_array(T280* C){
T6 R=0;
T0* _tna=NULL;
_tna=(T0*)C;
if(NULL!=(_tna))switch(((T0*)_tna)->id) {
case 267: 
break;
default:
_tna=NULL;
};R=(_tna)!=((void*)(NULL));
return R;
}
/*No:TYPE_BIT_1.is_integer*/
/*No:TYPE_BIT_1.fz_bit_foo*/
/*No:TYPE_BIT_1.is_anchored*/
/*No:TYPE_BIT_1.is_run_type*/
/*No:TYPE_BIT_1.us_put_0*/
/*No:TYPE_BIT_1.is_reference*/
/*No:TYPE_BIT_1.is_none*/
/*No:TYPE_BIT_1.jvm_return_code*/
/*No:TYPE_BIT_1.jvm_target_descriptor_in*/
/*No:TYPE_BIT_1.fz_inako*/
/*No:TYPE_BIT_1.jvm_xastore*/
/*No:TYPE_BIT_1.is_like_argument*/
/*No:TYPE_BIT_1.us_bitn*/


T2 r280jvm_stack_space(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
R=1;
/*FI]*/
return R;
}
/*No:TYPE_BIT_1.is_double*/


T2 r280jvm_expanded_from_reference(T0* a1){
T2 R=0;
return R;
}
/*No:CALL_INFIX_PLUS.static_value*/
/*No:CALL_INFIX_PLUS.feature_name*/


T6 r135is_static(T135* C){
T6 R=0;
/*[IF*/
if(X52is_integer(r135result_type(C))){
/*[IF*/
if((X109is_static((C)->_target/*4*/))&&(X109is_static(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))){
R=1;
C->_static_value_mem=(X109static_value((C)->_target/*4*/))+(X109static_value(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.is_manifest_string*/


T0* r135start_position(T135* C){
T0* R=NULL;
R=((T141*)((C)->_feature_name/*12*/))->_start_position/*8*/;
return R;
}


T0* r135add_comment(T135* 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 r135to_integer(T135* C){
T2 R=0;
r135error(r135start_position(C),((T0*)ms13_45846));
return R;
}


T6 r135use_current(T135* C){
T6 R=0;
/*[IF*/
{/*AT*/R=r152use_current((T152*)((C)->_arguments/*8*/));
}
/*FI]*/
/*[IF*/
if(R){
}
 else if(X109is_current((C)->_target/*4*/)){
R=X27use_current((C)->_run_feature/*16*/);
}
else{
R=X109use_current((C)->_target/*4*/);
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.jvm_branch_if_true*/


T0* r135to_runnable(T135* C,T0* a1){
T0* R=NULL;
T0* _rf=NULL;
T0* _tbee=NULL;
T0* _at=NULL;
T0* _tt=NULL;
T0* _a=NULL;
T0* _t=NULL;
_t=r135runnable_expression((C)->_target/*4*/,a1);
_a=r135runnable_args((C)->_arguments/*8*/,a1);
_tt=X109result_type(_t);
_at=X109result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
{/*AT*//*[IF*/
if(X52is_real(_at)){
/*[IF*/
if(X52is_integer(_tt)){
_tbee=X52run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 274: case 272: case 270: case 271: case 275: case 268: 
break;
default:
_tbee=NULL;
};{T379*n=malloc(sizeof(*n));
*n=M379;
r379make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
 else if(X52is_double(_at)){
/*[IF*/
if((X52is_integer(_tt))||(X52is_real(_tt))){
_tbee=X52run_type(_at);
if(NULL!=(_tbee))switch(((T0*)_tbee)->id) {
case 274: case 272: case 270: case 271: case 275: case 268: 
break;
default:
_tbee=NULL;
};{T379*n=malloc(sizeof(*n));
*n=M379;
r379make(n,_t,_tbee);
_t=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_rf=r135run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r135run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T135*n=malloc(sizeof(*n));
*n=M135;
r135with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r135compile_to_jvm_into(T135* C,T0* a1){
T2 R=0;
R=r135standard_compile_to_jvm_into(C,a1);
return R;
}
/*No:CALL_INFIX_PLUS.is_pre_computable*/
/*No:CALL_INFIX_PLUS.fz_bad_argument*/
/*No:CALL_INFIX_PLUS.fz_iinaiv*/


T0* r135result_type(T135* C){
T0* R=NULL;
T0* _tla=NULL;
R=X27result_type((C)->_run_feature/*16*/);
/*[IF*/
if(X52is_like_current(R)){
R=/*X27current_type*/((T0*)((T26*)((C)->_run_feature/*16*/))->_current_type/*4*/);
}
else{
_tla=R;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 262: 
break;
default:
_tla=NULL;
};/*[IF*/
if((_tla)!=((void*)(NULL))){
R=X52run_type(X109result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/));
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.static_value_mem*/
/*No:CALL_INFIX_PLUS.run_feature*/


T0* r135runnable_args(T0* a1,T0* a2){
T0* R=NULL;
R=r152to_runnable(((T152*)a1),a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(r152start_position(((T152*)a1)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_13065);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r135standard_compile_target_to_jvm(T135* C){
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T135* C1=C;
r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
}/*]*/
/*]*/
X52jvm_check_class_invariant(r135result_type(C));
}
/*No:CALL_INFIX_PLUS.compile_to_jvm_assignment*/
/*No:CALL_INFIX_PLUS.fz_07*/


void r135compile_to_jvm_old(T135* C){
X109compile_to_jvm_old((C)->_target/*4*/);
/*[IF*/
{/*AT*/r152compile_to_jvm_old((T152*)((C)->_arguments/*8*/));
}
/*FI]*/
}
/*No:CALL_INFIX_PLUS.jvm_assign*/
/*No:CALL_INFIX_PLUS.jvm_branch_if_false*/
/*No:CALL_INFIX_PLUS.compile_to_jvm*/
/*No:CALL_INFIX_PLUS.arg_count*/


void r135with(T135* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
C->_run_feature=a4;
r135run_feature_match(C,a5);
}
/*No:CALL_INFIX_PLUS.call_proc_call_c2jvm*/
/*No:CALL_INFIX_PLUS.is_result*/
/*No:CALL_INFIX_PLUS.fatal_error*/


void r135run_feature_match(T135* C,T0* a1){
r135run_feature_has_result(C);
r152match_with((T152*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_PLUS.arguments*/


T0* r135runnable_expression(T0* a1,T0* a2){
T0* R=NULL;
R=X109to_runnable(a1,a2);
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(X109start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms121_16515);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.can_be_dropped*/
/*No:CALL_INFIX_PLUS.implicit_cast*/
/*No:CALL_INFIX_PLUS.compile_target_to_jvm*/


T2 r135isa_dca_inline_argument(T135* C){
T2 R=0;
/*[IF*/
if(X52is_integer(r135result_type(C))){
R=X109isa_dca_inline_argument((C)->_target/*4*/);
/*[IF*/
if((R)==(-(1))){
R=X109isa_dca_inline_argument(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
}
 else if((R)>(0)){
/*[IF*/
if((X109isa_dca_inline_argument(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/))>=(0)){
R=0;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:CALL_INFIX_PLUS.arg1*/


void r135run_feature_has_result(T135* C){
/*[IF*/
if((X27result_type((C)->_run_feature/*16*/))==((void*)(NULL))){
r21add_position(X27start_position((C)->_run_feature/*16*/));
r21add_position(((T141*)((C)->_feature_name/*12*/))->_start_position/*8*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms120_53650);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}


T2 r135jvm_standard_branch_if_false(T135* C){
T2 R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T135* C1=C;
r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
}/*]*/
/*]*/
R=r28opcode_ifeq((T28*)(oBC12code_attribute));
return R;
}


T0* r135run_feature_for(T135* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X52run_class(X109result_type(a1));
R=r23get_rf(((T23*)_rc),a1,(C)->_feature_name/*12*/,a2);
return R;
}
/*No:CALL_INFIX_PLUS.target*/

