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


T6 r81has_redefine(T81* C,T0* a1){
T6 R=0;
T2 _i=0;
_i=1;
while (!((R)||((_i)>(((T83*)((C)->_list/*12*/))->_upper/*8*/)))) {
R=r82has_redefine((T82*)(r83item((T83*)((C)->_list/*12*/),_i)),a1);
_i=(_i)+(1);
}
return R;
}


void r81inherit_cycle_check(T81* C){
T0* _bc=NULL;
T0* _p=NULL;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_p=r83item((T83*)((C)->_list/*12*/),_i);
_bc=X52base_class((((T82*)_p))->_type/*4*/);
/*[IF*/
if((_bc)==((void*)(NULL))){
r21add_position(r82start_position(((T82*)_p)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_20048);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
r63inherit_cycle_check(((T63*)_bc));
}
/*FI]*/
_i=(_i)-(1);
}
}


T0* r81up_to_original(T81* C,T0* a1,T0* a2){
T0* R=NULL;
T2 _i=0;
T0* _new_fn=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((_i)==(0))||((_fn1)!=((void*)(NULL))))) {
_p1=r83item((T83*)((C)->_list/*12*/),_i);
_fn1=r82up_to_original(((T82*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r83item((T83*)((C)->_list/*12*/),_i);
_fn2=r82up_to_original(((T82*)_p2),a1,a2);
/*[IF*/
if((_fn2)!=((void*)(NULL))){
_new_fn=r82do_rename(((T82*)_p2),a2);
/*[IF*/
if(r82has_select_for(((T82*)_p2),_new_fn)){
_p1=_p2;
_fn1=_fn2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((_fn1)!=((void*)(NULL))){
/*[IF*/
if((X50to_string(_fn1))!=((void*)(X50to_string(a2)))){
R=r81repeated_inheritance(C,_p1,_fn1,a2);
}
else{
R=_fn1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:PARENT_LIST.base_class*/


T6 r81has(T81* C,T0* a1){
T6 R=0;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r82has((T82*)(r83item((T83*)((C)->_list/*12*/),_i)),a1);
_i=(_i)-(1);
}
return R;
}
/*No:PARENT_LIST.start_position*/


void r81collect_invariant(T81* C,T0* a1){
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
r63collect_invariant((T63*)(X52base_class(((T82*)(r83item((T83*)((C)->_list/*12*/),_i)))->_type/*4*/)),a1);
_i=(_i)-(1);
}
}
/*No:PARENT_LIST.fz_cnf*/


T0* r81next_parent_for(T81* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _pbc=NULL;
T2 _i=0;
_i=1;
while (!((R)==((void*)(a2)))) {
R=r83item((T83*)((C)->_list/*12*/),_i);
_i=(_i)+(1);
}
R=NULL;
while (!(((R)!=((void*)(NULL)))||((_i)>(r83count((T83*)((C)->_list/*12*/)))))) {
R=r83item((T83*)((C)->_list/*12*/),_i);
_pbc=X52base_class((((T82*)R))->_type/*4*/);
/*[IF*/
if((_pbc)==((void*)(a1))){
}
 else if(r63is_subclass_of(((T63*)_pbc),a1)){
}
else{
R=NULL;
}
/*FI]*/
_i=(_i)+(1);
}
return R;
}


T0* r81precursor_for(T81* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f2=NULL;
T0* _parent=NULL;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((R)!=((void*)(NULL)))||((_i)==(0)))) {
_parent=r83item((T83*)((C)->_list/*12*/),_i);
R=r82precursor_for(((T82*)_parent),a1,a2);
_i=(_i)-(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
r21add_position(/*X180start_position*/((T0*)(((T181*)a1))->_start_position/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms81_50792);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(r76all_check((T76*)(oBC12run_control))){
while (!((_i)==(0))) {
_parent=r83item((T83*)((C)->_list/*12*/),_i);
_f2=r82precursor_for(((T82*)_parent),a1,a2);
/*[IF*/
if(((_f2)!=((void*)(NULL)))&&((_f2)!=((void*)(R)))){
r21add_position(/*X180start_position*/((T0*)(((T181*)a1))->_start_position/*4*/));
r21add_position(X95start_position(R));
r21add_position(X95start_position(_f2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms81_163188);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


T0* r81going_up(T81* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _fn2=NULL;
T0* _fn1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((_fn1)!=((void*)(NULL)))||((_i)==(0)))) {
_p1=r83item((T83*)((C)->_list/*12*/),_i);
_fn1=r82going_up(((T82*)_p1),a1,a2,a3);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r83item((T83*)((C)->_list/*12*/),_i);
_fn2=r82going_up(((T82*)_p2),a1,a2,a3);
/*[IF*/
if((_fn2)!=((void*)(NULL))){
/*[IF*/
if(r82has_select_for(((T82*)_p2),_fn2)){
_p1=_p2;
_fn1=_fn2;
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
R=_fn1;
return R;
}
/*No:PARENT_LIST.em1*/


T0* r81clients_for(T81* C,T0* a1){
T0* R=NULL;
T0* _cl=NULL;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_cl=r82clients_for((T82*)(r83item((T83*)((C)->_list/*12*/),_i)),a1);
/*[IF*/
if((R)==((void*)(NULL))){
R=_cl;
}
 else if((_cl)!=((void*)(NULL))){
R=r103append(((T103*)R),_cl);
}
/*FI]*/
/*[IF*/
if((R)==((void*)(NULL))){
_i=(_i)-(1);
}
 else if(r103gives_permission_to_any(((T103*)R))){
_i=0;
}
else{
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC21explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T58*)((T58*)(oBC21positions))))->_upper)=(-(1));
/*]*/
/*]*/
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}


T0* r81repeated_inheritance(T81* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _bc1=NULL;
T0* _p2=NULL;
T2 _i=0;
_bc1=X52base_class((((T82*)a1))->_type/*4*/);
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_p2=r83item((T83*)((C)->_list/*12*/),_i);
/*[IF*/
if((a1)!=((void*)(_p2))){
/*[IF*/
if((_bc1)==((void*)(X52base_class((((T82*)_p2))->_type/*4*/)))){
/*[IF*/
if((X50to_string(r82do_rename(((T82*)_p2),a2)))==((void*)(X50to_string(a3)))){
R=a3;
}
 else if((X50to_string(r82do_rename(((T82*)a1),a2)))==((void*)(X50to_string(a3)))){
R=a3;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
/*[IF*/
if((R)==((void*)(NULL))){
R=a2;
}
/*FI]*/
return R;
}


T0* r81look_up_for(T81* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f2=NULL;
T0* _f1=NULL;
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!(((_f1)!=((void*)(NULL)))||((_i)==(0)))) {
_p1=r83item((T83*)((C)->_list/*12*/),_i);
_f1=r82look_up_for(((T82*)_p1),a1,a2);
_i=(_i)-(1);
}
while (!((_i)==(0))) {
_p2=r83item((T83*)((C)->_list/*12*/),_i);
_f2=r82look_up_for(((T82*)_p2),a1,a2);
/*[IF*/
if((_f2)==((void*)(NULL))){
}
 else if((_f1)==((void*)(_f2))){
}
 else if(!(X95is_merge_with(_f2,_f1,a1))){
r21add_position((C)->_start_position/*4*/);
r21add_position(X95start_position(_f1));
r21add_position(X95start_position(_f2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_33638);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
 else if(X95is_deferred(_f2)){
}
 else if(X95is_deferred(_f1)){
_f1=_f2;
_p1=_p2;
}
 else if(r82has_redefine(((T82*)_p1),a2)){
/*[IF*/
if(r82has_redefine(((T82*)_p2),a2)){
}
else{
r21add_position(X50start_position(a2));
r21add_position(r82start_position(((T82*)_p2)));
r21add_position(X95start_position(_f2));
/*[IRF3.6append*/{T0* b1=((T0*)ms81_24210);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
}
 else if(r82has_redefine(((T82*)_p2),a2)){
r21add_position(X50start_position(a2));
r21add_position(r82start_position(((T82*)_p1)));
r21add_position(X95start_position(_f1));
/*[IRF3.6append*/{T0* b1=((T0*)ms81_24210);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
else{
r21add_position(r82start_position(((T82*)_p2)));
r21add_position(r82start_position(((T82*)_p1)));
r21add_position(X95start_position(_f1));
r21add_position(X95start_position(_f2));
/*[IRF3.6append*/{T0* b1=((T0*)ms81_24210);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
_i=(_i)-(1);
}
R=_f1;
return R;
}
/*No:PARENT_LIST.heading_comment*/


void r81get_started(T81* C){
T0* _p2=NULL;
T0* _p1=NULL;
T2 _i2=0;
T2 _i1=0;
_i1=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i1)==(0))) {
r82get_started((T82*)(r83item((T83*)((C)->_list/*12*/),_i1)),(T0*)C);
_i1=(_i1)-(1);
}
/*[IF*/
if((((T83*)((C)->_list/*12*/))->_upper/*8*/)>(1)){
_i2=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i2)==(1))) {
_i1=1;
while (!((_i1)==(_i2))) {
_p1=r83item((T83*)((C)->_list/*12*/),_i1);
_p2=r83item((T83*)((C)->_list/*12*/),_i2);
r82multiple_check(((T82*)_p1),_p2);
r82multiple_check(((T82*)_p2),_p1);
_i1=(_i1)+(1);
}
_i2=(_i2)-(1);
}
}
/*FI]*/
}


T0* r81first_parent_for(T81* C,T0* a1){
T0* R=NULL;
T0* _pbc=NULL;
T2 _i=0;
_i=1;
while (!((R)!=((void*)(NULL)))) {
R=r83item((T83*)((C)->_list/*12*/),_i);
_pbc=X52base_class((((T82*)R))->_type/*4*/);
/*[IF*/
if((_pbc)==((void*)(a1))){
}
 else if(r63is_subclass_of(((T63*)_pbc),a1)){
}
else{
R=NULL;
}
/*FI]*/
_i=(_i)+(1);
}
return R;
}
/*No:PARENT_LIST.count*/
/*No:PARENT_LIST.fz_ich*/


void r81make(T81* C,T0* a1,T0* a2,T0* a3,T0* a4){
C->_base_class=a1;
C->_heading_comment=a3;
C->_start_position=a2;
C->_list=a4;
}


void r81collect_for(T81* C,T2 a1,T0* a2){
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
r82collect_for((T82*)(r83item((T83*)((C)->_list/*12*/),_i)),a1,a2);
_i=(_i)-(1);
}
}


T6 r81is_a_vncg(T81* C,T0* a1,T0* a2){
T6 R=0;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r82is_a_vncg((T82*)(r83item((T83*)((C)->_list/*12*/),_i)),a1,a2);
_i=(_i)-(1);
}
return R;
}


T6 r81has_parent(T81* C,T0* a1){
T6 R=0;
T0* _bc=NULL;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_bc=X52base_class(((T82*)(r83item((T83*)((C)->_list/*12*/),_i)))->_type/*4*/);
/*[IF*/
if((a1)==((void*)(_bc))){
R=1;
_i=0;
}
 else if(r63is_subclass_of_aux(((T63*)_bc),a1)){
R=1;
_i=0;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}
/*No:PARENT_LIST.super*/
/*No:PARENT_LIST.list*/


T0* r81smallest_ancestor(T81* C,T0* a1){
T0* R=NULL;
T0* _sa=NULL;
T0* _p=NULL;
T2 _i=0;
_i=((T83*)((C)->_list/*12*/))->_upper/*8*/;
while (!((_i)==(0))) {
_p=r83item((T83*)((C)->_list/*12*/),_i);
_sa=X52run_type(r82smallest_ancestor(((T82*)_p),a1));
/*[IF*/
if((R)==((void*)(NULL))){
R=_sa;
}
else{
R=X52smallest_ancestor(_sa,R);
}
/*FI]*/
/*[IF*/
if(X52is_any(R)){
_i=0;
}
else{
_i=(_i)-(1);
}
/*FI]*/
}
return R;
}
/*No:PARENT_LIST.fatal_error*/


T0* r70base_class(T70* C){
T0* R=NULL;
R=r22base_class((T22*)(oBC12small_eiffel),(T0*)C);
return R;
}
/*No:CLASS_NAME.start_position*/
/*No:CLASS_NAME.to_string*/


T6 r70is_subclass_of(T70* C,T0* a1){
T6 R=0;
/*[IF*/
if((((T0*)ms14_1256))==((void*)((C)->_to_string/*0*/))){
R=1;
}
 else if((((T0*)ms14_714))==((void*)((((T70*)a1))->_to_string/*0*/))){
R=1;
}
 else if((((T0*)ms14_1256))==((void*)((((T70*)a1))->_to_string/*0*/))){
}
else{
R=r63is_subclass_of((T63*)(r70base_class(C)),r70base_class(((T70*)a1)));
}
/*FI]*/
return R;
}


void r70identify(T70* C,T0* a1){
C->_to_string=r86item(a1);
}


void r70make_unknown(T70* C){
{T59*n=malloc(sizeof(*n));
*n=M59;
r59with(n,1,1,(T0*)C);
C->_start_position=(T0*)n;
}
C->_to_string=((T0*)ms70_702);
}
/*No:CLASS_NAME.us_none*/


void r70make(T70* C,T0* a1,T0* a2){
C->_start_position=a2;
C->_to_string=r86item(a1);
}
/*No:CLASS_NAME.us_any*/
/*No:CLASS_NAME.unknown_name*/
/*No:CALL_INFIX_FREEOP.static_value*/
/*No:CALL_INFIX_FREEOP.feature_name*/
/*No:CALL_INFIX_FREEOP.is_static*/
/*No:CALL_INFIX_FREEOP.is_manifest_string*/


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


T0* r140add_comment(T140* 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;
}


T6 r140call_is_static(T140* C){
T6 R=0;
T0* _rf=NULL;
T0* _running=NULL;
T0* _rc=NULL;
/*[IF*/
if(((C)->_run_feature/*16*/)!=((void*)(NULL))){
_rc=X27run_class((C)->_run_feature/*16*/);
/*[IF*/
if((_rc)!=((void*)(NULL))){
_running=(((T23*)_rc))->_running/*12*/;
/*[IF*/
if(((_running)!=((void*)(NULL)))&&((r340count(((T340*)_running)))==(1))){
_rf=r23dynamic((T23*)(r340first(((T340*)_running))),(C)->_run_feature/*16*/);
/*[IF*/
if(X27is_static(_rf)){
C->_static_value_mem=X27static_value_mem(_rf);
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T2 r140to_integer(T140* C){
T2 R=0;
r140error(r140start_position(C),((T0*)ms13_45846));
return R;
}


T6 r140use_current(T140* 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_FREEOP.jvm_branch_if_true*/


T0* r140to_runnable(T140* 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=r140runnable_expression((C)->_target/*4*/,a1);
_a=r140runnable_args((C)->_arguments/*8*/,a1);
_tt=X109result_type(_t);
_at=X109result_type(/*(IRF4.6arg1*//*(IRF4.3first*/(((T152*)((C)->_arguments/*8*/)))->_first_one/*0*//*)*//*)*/);
/*[IF*/
/*AF*//*AE*/
/*FI]*/
_rf=r140run_feature_for(C,_t,a1);
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
C->_target=_t;
C->_arguments=_a;
C->_run_feature=_rf;
r140run_feature_match(C,a1);
R=(T0*)C;
}
 else if(((_t)==((void*)((C)->_target/*4*/)))&&((_a)==((void*)((C)->_arguments/*8*/)))){
R=(T0*)C;
}
else{
{T140*n=malloc(sizeof(*n));
*n=M140;
r140with(n,_t,(C)->_feature_name/*12*/,_a,_rf,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T2 r140compile_to_jvm_into(T140* C,T0* a1){
T2 R=0;
R=r140standard_compile_to_jvm_into(C,a1);
return R;
}
/*No:CALL_INFIX_FREEOP.is_pre_computable*/
/*No:CALL_INFIX_FREEOP.fz_bad_argument*/
/*No:CALL_INFIX_FREEOP.fz_iinaiv*/


T0* r140result_type(T140* 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_FREEOP.static_value_mem*/
/*No:CALL_INFIX_FREEOP.run_feature*/


T0* r140runnable_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 r140standard_compile_target_to_jvm(T140* C){
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T140* C1=C;
r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
}/*]*/
/*]*/
X52jvm_check_class_invariant(r140result_type(C));
}
/*No:CALL_INFIX_FREEOP.compile_to_jvm_assignment*/
/*No:CALL_INFIX_FREEOP.fz_07*/


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


void r140with(T140* 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;
r140run_feature_match(C,a5);
}
/*No:CALL_INFIX_FREEOP.call_proc_call_c2jvm*/
/*No:CALL_INFIX_FREEOP.is_result*/
/*No:CALL_INFIX_FREEOP.fatal_error*/


void r140run_feature_match(T140* C,T0* a1){
r140run_feature_has_result(C);
r152match_with((T152*)((C)->_arguments/*8*/),(C)->_run_feature/*16*/,a1);
}
/*No:CALL_INFIX_FREEOP.arguments*/


T0* r140runnable_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_FREEOP.can_be_dropped*/
/*No:CALL_INFIX_FREEOP.implicit_cast*/
/*No:CALL_INFIX_FREEOP.compile_target_to_jvm*/
/*No:CALL_INFIX_FREEOP.isa_dca_inline_argument*/
/*No:CALL_INFIX_FREEOP.arg1*/


void r140run_feature_has_result(T140* 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 r140jvm_standard_branch_if_false(T140* C){
T2 R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T140* C1=C;
r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
}/*]*/
/*]*/
R=r28opcode_ifeq((T28*)(oBC12code_attribute));
return R;
}


T0* r140run_feature_for(T140* 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_FREEOP.target*/


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


void r140make(T140* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
{T152*n=malloc(sizeof(*n));
*n=M152;
/*[IRF3.3make_1*/((((T152*)(n)))->_first_one)=(a3);
/*]*/
C->_arguments=(T0*)n;
}
}
/*No:CALL_INFIX_FREEOP.is_current*/


T2 r140standard_compile_to_jvm_into(T140* C,T0* a1){
T2 R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T140* C1=C;
r24call_proc_call_mapping((T24*)(oBC12jvm),(T0*)C1);
}/*]*/
/*]*/
R=X52jvm_convert_to(X52run_type(r140result_type(C)),a1);
return R;
}
/*No:CALL_INFIX_FREEOP.is_void*/


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


void r140afd_check(T140* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X52run_class(X109result_type((C)->_target/*4*/));
_running=(((T23*)_rc))->_running/*12*/;
/*[IF*/
if((_running)==((void*)(NULL))){
r21add_position(X109start_position((C)->_target/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms121_181815);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X52run_time_mark((((T23*)_rc))->_current_type/*0*/);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_20094);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21print_as_warning((T21*)(oBC12eh));
r23set_at_run_time(((T23*)_rc));
}
 else if((r340count(((T340*)_running)))>(1)){
r335update((C)->_target/*4*/,(C)->_run_feature/*16*/);
}
/*FI]*/
X109afd_check((C)->_target/*4*/);
/*[IF*/
{/*AT*/r152afd_check((T152*)((C)->_arguments/*8*/));
}
/*FI]*/
}
/*No:E_PRECURSOR_PROCEDURE.nb_errors*/
/*No:E_PRECURSOR_PROCEDURE.arguments*/
/*No:E_PRECURSOR_PROCEDURE.start_position*/


T0* r181add_comment(T181* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T229*n=malloc(sizeof(*n));
*n=M229;
r229make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:E_PRECURSOR_PROCEDURE.use_current*/


T0* r181to_runnable(T181* C,T0* a1){
T0* R=NULL;
T0* _pn=NULL;
T0* _super=NULL;
T0* _wrf=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
R=(T0*)C;
_wrf=r22top_rf((T22*)(oBC12small_eiffel));
/*[IF*/
if((X27result_type(_wrf))!=((void*)(NULL))){
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms181_359888);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_super=r181super_feature(C,_wrf);
if(NULL!=(_super))switch(((T0*)_super)->id) {
case 307: 
break;
default:
_super=NULL;
};_pn=r181precursor_name(/*X27name*/((T0*)(((T26*)_wrf))->_name/*16*/),_super);
{T369*n=malloc(sizeof(*n));
*n=M369;
r369make(n,a1,_pn,_super);
C->_run_feature=(T0*)n;
}
r181prepare_arguments(C,a1);
}
else{
{T181*n=malloc(sizeof(*n));
*n=M181;
r181make(n,(C)->_start_position/*4*/,(C)->_parent/*8*/,(C)->_arguments/*16*/);
R=(T0*)n;
}
R=r181to_runnable(((T181*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_PRECURSOR_PROCEDURE.current_type*/
/*No:E_PRECURSOR_PROCEDURE.is_pre_computable*/


T0* r181super_feature(T181* C,T0* a1){
T0* R=NULL;
T0* _pl=NULL;
T0* _wbc=NULL;
T0* _e_feature=NULL;
_e_feature=X27base_feature(a1);
_wbc=/*X95base_class*/((T0*)(((T203*)_e_feature))->_base_class/*4*/);
_pl=(((T63*)_wbc))->_parent_list/*40*/;
/*[IF*/
if((_pl)==((void*)(NULL))){
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms180_269232);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
R=r81precursor_for(((T81*)_pl),(T0*)C,a1);
}
/*FI]*/
return R;
}


T0* r181precursor_name(T0* a1,T0* a2){
T0* R=NULL;
{T368*n=malloc(sizeof(*n));
*n=M368;
r368refer_to(n,((T63*)(/*X95base_class*/((T0*)(((T203*)a2))->_base_class/*4*/)))->_id/*0*/,a1);
R=(T0*)n;
}
return R;
}


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


void r181make(T181* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_parent=a2;
C->_arguments=a3;
}


void r181prepare_arguments(T181* C,T0* a1){
T0* _a=NULL;
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
_a=r152to_runnable((T152*)((C)->_arguments/*16*/),a1);
/*[IF*/
if((_a)==((void*)(NULL))){
r181error(r152start_position((T152*)((C)->_arguments/*16*/)),((T0*)ms13_14714));
}
else{
C->_arguments=_a;
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
r152match_with((T152*)((C)->_arguments/*16*/),(C)->_run_feature/*20*/,a1);
}
/*FI]*/
}
 else if((((T369*)((C)->_run_feature/*20*/))->_arguments/*36*/)!=((void*)(NULL))){
r21add_position(r369start_position((T369*)((C)->_run_feature/*20*/)));
r21add_position((C)->_start_position/*4*/);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms180_63936);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:E_PRECURSOR_PROCEDURE.parent*/
/*No:E_PRECURSOR_PROCEDURE.fz_bad_arguments*/


void r181compile_to_jvm(T181* C){
r24push_precursor((T24*)(oBC12jvm),(C)->_run_feature/*20*/,(C)->_arguments/*16*/);
/*[IRF3.4mapping_jvm*/r369routine_mapping_jvm((T369*)((C)->_run_feature/*20*/));
/*]*/
r24pop((T24*)(oBC12jvm));
}


void r181afd_check(T181* C){
/*[IF*/
if(((C)->_arguments/*16*/)!=((void*)(NULL))){
r152afd_check((T152*)((C)->_arguments/*16*/));
}
/*FI]*/
}
/*No:E_PRECURSOR_PROCEDURE.fatal_error*/
/*No:ID_PROVIDER.us_double*/
/*No:ID_PROVIDER.us_character*/
/*No:ID_PROVIDER.us_native_array_character*/


T2 r104max_id(T104* C){
T2 R=0;
T2 _i=0;
_i=((T48*)((C)->_mem_id/*0*/))->_upper/*8*/;
while (!((_i)<(0))) {
/*[IF*/
if((/*(IRF4.6item*/(((T48*)((C)->_mem_id/*0*/))->_storage/*0*/)[_i]/*)*/)>(R)){
R=/*(IRF4.6item*/(((T48*)((C)->_mem_id/*0*/))->_storage/*0*/)[_i]/*)*/;
}
/*FI]*/
_i=(_i)-(1);
}
return R;
}


T2 r104item(T104* C,T0* a1){
T2 R=0;
T2 _index=0;
_index=r68fast_index_of((T68*)((C)->_mem_str/*4*/),a1);
/*[IF*/
if((_index)<=(((T68*)((C)->_mem_str/*4*/))->_upper/*8*/)){
R=/*(IRF4.6item*/(((T48*)((C)->_mem_id/*0*/))->_storage/*0*/)[_index]/*)*/;
}
 else if(r76boost((T76*)(oBC12run_control))){
R=(r104max_id(C))+(1);
r104add2(C,a1,R);
}
else{
R=r104hash_code(a1);
/*[IF*/
if(r48fast_has((T48*)((C)->_mem_id/*0*/),R)){
R=10;
while (!(!(r48fast_has((T48*)((C)->_mem_id/*0*/),R)))) {
R=(R)+(1);
}
}
/*FI]*/
r104add2(C,a1,R);
}
/*FI]*/
return R;
}
/*No:ID_PROVIDER.us_general*/
/*No:ID_PROVIDER.us_pointer*/
/*No:ID_PROVIDER.us_string*/


void r104make(T104* C){
{T48*n=malloc(sizeof(*n));
*n=M48;
r48with_capacity(n,1024);
C->_mem_id=(T0*)n;
}
{T68*n=malloc(sizeof(*n));
*n=M68;
r68with_capacity(n,1024);
C->_mem_str=(T0*)n;
}
r104add2(C,((T0*)ms14_1990),0);
r104add2(C,((T0*)ms14_6412),1);
r104add2(C,((T0*)ms14_6748),2);
r104add2(C,((T0*)ms14_9936),3);
r104add2(C,((T0*)ms14_1208),4);
r104add2(C,((T0*)ms14_4818),5);
r104add2(C,((T0*)ms14_6510),6);
r104add2(C,((T0*)ms14_5046),7);
r104add2(C,((T0*)ms14_6881),8);
r104add2(C,((T0*)ms14_58420),9);
}
/*No:ID_PROVIDER.us_real*/
/*No:ID_PROVIDER.us_array*/
/*No:ID_PROVIDER.us_integer*/
/*No:ID_PROVIDER.mem_str*/
/*No:ID_PROVIDER.mem_id*/


void r104add2(T104* C,T0* a1,T2 a2){
r68add_last((T68*)((C)->_mem_str/*4*/),a1);
r48add_last((T48*)((C)->_mem_id/*0*/),a2);
}


T2 r104hash_code(T0* a1){
T2 R=0;
T2 _max=0;
T2 _val=0;
T3 _c=0;
T2 _i=0;
_i=1;
while (!((_i)>((((T7*)a1))->_count/*4*/))) {
_c=r3to_upper(/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/);
{int z1=_c;

if(((65<=z1)&&(z1<=90))){
_val=(((unsigned char)_c))-(((unsigned char)'A'));
}
 else 
if(((48<=z1)&&(z1<=57))){
_val=((25)+(((unsigned char)_c)))-(((unsigned char)'0'));
}
 else{_val=0;
}}
R=(R)+((_i)*(_val));
_i=(_i)+(1);
}
/*[IF*/
if((R)<(0)){
R=-(R);
}
/*FI]*/
/*[IF*/
if(r76boost((T76*)(oBC12run_control))){
_max=2048;
}
else{
_max=8192;
}
/*FI]*/
while (!((R)<=(_max))) {
R=(R)-(999);
}
return R;
}
/*No:ID_PROVIDER.us_boolean*/
/*No:E_WHEN.nb_errors*/


void r237add_when_item_1(T237* C,T0* a1){
T2 _v=0;
_v=(((T244*)a1))->_expression_value/*12*/;
/*[IF*/
if(/*(IRF4.6includes*/r238includes_integer(((T238*)(((T236*)(/*(IRF4.6e_inspect*/(((T238*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_when_list/*12*/)),_v)/*)*/){
r237err_occ(C,_v,r244start_position(((T244*)a1)));
}
 else if(((C)->_values/*20*/)==((void*)(NULL))){
{T370*n=malloc(sizeof(*n));
*n=M370;
r370make(n,_v,_v);
C->_values=(T0*)n;
}
/*[IRF3.6put*/{T370* C1=(T370*)((C)->_values/*20*/);
T6 b1=1;
T2 b2=_v;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
else{
r370force((T370*)((C)->_values/*20*/),1,_v);
}
/*FI]*/
}
/*No:E_WHEN.compound*/


T0* r237to_runnable_integer(T237* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((C)->_when_list/*16*/)==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/;
C->_when_list=a1;
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
r21add_position(((T236*)(/*(IRF4.6e_inspect*/(((T238*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
r237error((C)->_start_position/*0*/,((T0*)ms237_54404));
}
else{
_i=((T242*)((C)->_list/*4*/))->_lower/*12*/;
while (!(((_i)>(((T242*)((C)->_list/*4*/))->_upper/*8*/))||(((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)-(_ne))>(0)))) {
_when_item=X241to_runnable_integer(r242item((T242*)((C)->_list/*4*/),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r237error((C)->_start_position/*0*/,((T0*)ms237_18640));
}
else{
/*[IRF3.6put*/{T242* C1=(T242*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
_ct=/*X27current_type*/((T0*)((T26*)(r22top_rf((T22*)(oBC12small_eiffel))))->_current_type/*4*/);
C->_compound=r220to_runnable((T220*)((C)->_compound/*12*/),_ct);
/*[IF*/
if(((C)->_compound/*12*/)==((void*)(NULL))){
r237error((C)->_start_position/*0*/,((T0*)ms237_18640));
}
/*FI]*/
}
/*FI]*/
R=(T0*)C;
}
else{
{T237*n=malloc(sizeof(*n));
*n=M237;
r237from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r237to_runnable_integer(((T237*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_WHEN.start_position*/


void r237add_slice(T237* C,T0* a1,T0* a2){
T0* _element=NULL;
{T245*n=malloc(sizeof(*n));
*n=M245;
r245make(n,a1,a2);
_element=(T0*)n;
}
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
C->_list=se_ma242(1,
_element);
}
else{
r242add_last((T242*)((C)->_list/*4*/),_element);
}
/*FI]*/
}


void r237from_e_when(T237* C,T0* a1){
T0* _when_item=NULL;
T2 _i=0;
C->_start_position=(((T237*)a1))->_start_position/*0*/;
C->_list=r242twin((T242*)((((T237*)a1))->_list/*4*/));
_i=((T242*)((C)->_list/*4*/))->_lower/*12*/;
while (!((_i)>(((T242*)((C)->_list/*4*/))->_upper/*8*/))) {
_when_item=X241twin(r242item((T242*)((C)->_list/*4*/),_i));
/*X241clear_e_when*//*[IRF3.3clear_e_when*/((((T244*)(((T244*)_when_item))))->_e_when)=(NULL);
/*]*/
/*[IRF3.6put*/{T242* C1=(T242*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
_i=(_i)+(1);
}
C->_header_comment=(((T237*)a1))->_header_comment/*8*/;
C->_compound=(((T237*)a1))->_compound/*12*/;
}
/*No:E_WHEN.em1*/


T6 r237use_current(T237* C){
T6 R=0;
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
R=r220use_current((T220*)((C)->_compound/*12*/));
}
/*FI]*/
return R;
}
/*No:E_WHEN.point2*/
/*No:E_WHEN.em2*/


T6 r237includes_integer(T237* C,T2 a1){
T6 R=0;
R=((((C)->_values/*20*/)!=((void*)(NULL)))&&(r370valid_index((T370*)((C)->_values/*20*/),a1)))&&(r370item((T370*)((C)->_values/*20*/),a1));
return R;
}


void r237add_when_item_2(T237* C,T0* a1){
T2 _i=0;
T2 _u=0;
T2 _l=0;
_l=(((T245*)a1))->_lower_value/*20*/;
_u=(((T245*)a1))->_upper_value/*16*/;
/*[IF*/
if((_l)>=(_u)){
r237error(r245start_position(((T245*)a1)),((T0*)ms237_20927));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
_i=_l;
while (!((_i)>(_u))) {
/*[IF*/
if(/*(IRF4.6includes*/r238includes_integer(((T238*)(((T236*)(/*(IRF4.6e_inspect*/(((T238*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_when_list/*12*/)),_i)/*)*/){
r237err_occ(C,_i,r245start_position(((T245*)a1)));
_i=(_u)+(1);
}
else{
_i=(_i)+(1);
}
/*FI]*/
}
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_values/*20*/)==((void*)(NULL))){
{T370*n=malloc(sizeof(*n));
*n=M370;
r370make(n,_l,_u);
C->_values=(T0*)n;
}
/*[IRF3.6set_all_with*/{T370* C1=(T370*)((C)->_values/*20*/);
T6 b1=1;
r371set_all_with((C1)->_storage/*0*/,b1,((C1)->_upper/*8*/)-((C1)->_lower/*12*/));
}/*]*/
}
else{
r370force((T370*)((C)->_values/*20*/),1,_l);
r370force((T370*)((C)->_values/*20*/),1,_u);
r370set_slice_with((T370*)((C)->_values/*20*/),1,_l,_u);
}
/*FI]*/
}
/*FI]*/
}
/*No:E_WHEN.header_comment*/


void r237add_value(T237* C,T0* a1){
T0* _element=NULL;
{T244*n=malloc(sizeof(*n));
*n=M244;
/*[IRF3.3make*/((((T244*)(n)))->_expression)=(a1);
/*]*/
_element=(T0*)n;
}
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
C->_list=se_ma242(1,
_element);
}
else{
r242add_last((T242*)((C)->_list/*4*/),_element);
}
/*FI]*/
}
T0*oBC237points1=NULL;
/*No:E_WHEN.compile_to_jvm_resolve_branch*/
/*No:E_WHEN.e_inspect*/
/*No:E_WHEN.set_compound*/


void r237err_occ(T237* C,T2 a1,T0* a2){
r21add_position(((T236*)(/*(IRF4.6e_inspect*/(((T238*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
/*[IRF3.6append*/{T0* b1=((T0*)ms237_63886);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=r2to_string(a1);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r237error(a2,((T0*)ms237_29634));
}


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


void r237make(T237* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_header_comment=a2;
}
/*No:E_WHEN.values*/
/*No:E_WHEN.when_list*/


void r237compile_to_jvm(T237* C,T0* a1,T2 a2){
T0* _ca=NULL;
T6 _must_test=0;
T2 _bs=0;
T2 _bi=0;
T2 _point4=0;
T2 _point3=0;
_ca=oBC12code_attribute;
/*[IF*/
if((a2)>(0)){
_must_test=1;
}
 else if(r76no_check((T76*)(oBC12run_control))){
_must_test=1;
}
else{
_must_test=(a1)!=((void*)(NULL));
}
/*FI]*/
/*[IRF3.3clear*/((((T48*)((T48*)(oBC237points1))))->_upper)=(-(1));
/*]*/
/*[IF*/
if(_must_test){
_bi=((T370*)((C)->_values/*20*/))->_lower/*12*/;
while (!((_bi)>(((T370*)((C)->_values/*20*/))->_upper/*8*/))) {
_bs=(_bi)+(1);
while (!(((_bs)>(((T370*)((C)->_values/*20*/))->_upper/*8*/))||(!(r370item((T370*)((C)->_values/*20*/),_bs))))) {
_bs=(_bs)+(1);
}
_bs=(_bs)-(1);
/*[IF*/
if((_bi)==(_bs)){
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
r28opcode_push_integer(((T28*)_ca),_bi);
r48add_last((T48*)(oBC237points1),r28opcode_if_icmpeq(((T28*)_ca)));
}
else{
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
r28opcode_push_integer(((T28*)_ca),_bi);
_point3=r28opcode_if_icmplt(((T28*)_ca));
/*[IRF3.4opcode_dup*/r28opcode(((T28*)_ca),89,1);
/*]*/
r28opcode_push_integer(((T28*)_ca),_bs);
r48add_last((T48*)(oBC237points1),r28opcode_if_icmple(((T28*)_ca)));
r28resolve_u2_branch(_point3);
}
/*FI]*/
_bi=(_bs)+(1);
while (!(((_bi)>(((T370*)((C)->_values/*20*/))->_upper/*8*/))||(r370item((T370*)((C)->_values/*20*/),_bi)))) {
_bi=(_bi)+(1);
}
}
_point4=r28opcode_goto(((T28*)_ca));
}
/*FI]*/
r28resolve_with(oBC237points1);
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_compound/*12*/));
}
/*FI]*/
C->_point2=r28opcode_goto(((T28*)_ca));
/*[IF*/
if(_must_test){
r28resolve_u2_branch(_point4);
}
/*FI]*/
}


void r237afd_check(T237* C){
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
r220afd_check((T220*)((C)->_compound/*12*/));
}
/*FI]*/
}
/*No:E_WHEN.list*/


T0* r237to_runnable_character(T237* C,T0* a1){
T0* R=NULL;
T0* _when_item=NULL;
T2 _i=0;
T2 _ne=0;
T0* _ct=NULL;
/*[IF*/
if(((C)->_when_list/*16*/)==((void*)(NULL))){
_ne=/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/;
C->_when_list=a1;
/*[IF*/
if(((C)->_list/*4*/)==((void*)(NULL))){
r21add_position(((T236*)(/*(IRF4.6e_inspect*/(((T238*)((C)->_when_list/*16*/)))->_e_inspect/*0*//*)*/))->_start_position/*4*/);
r237error((C)->_start_position/*0*/,((T0*)ms237_54404));
}
else{
_i=((T242*)((C)->_list/*4*/))->_lower/*12*/;
while (!(((_i)>(((T242*)((C)->_list/*4*/))->_upper/*8*/))||(((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)-(_ne))>(0)))) {
_when_item=X241to_runnable_character(r242item((T242*)((C)->_list/*4*/),_i),(T0*)C);
/*[IF*/
if((_when_item)==((void*)(NULL))){
r237error((C)->_start_position/*0*/,((T0*)ms237_18640));
}
else{
/*[IRF3.6put*/{T242* C1=(T242*)((C)->_list/*4*/);
T0* b1=_when_item;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
/*[IF*/
if(((C)->_compound/*12*/)!=((void*)(NULL))){
_ct=/*X27current_type*/((T0*)((T26*)(r22top_rf((T22*)(oBC12small_eiffel))))->_current_type/*4*/);
C->_compound=r220to_runnable((T220*)((C)->_compound/*12*/),_ct);
/*[IF*/
if(((C)->_compound/*12*/)==((void*)(NULL))){
r237error((C)->_start_position/*0*/,((T0*)ms237_18640));
}
/*FI]*/
}
/*FI]*/
R=(T0*)C;
}
else{
{T237*n=malloc(sizeof(*n));
*n=M237;
r237from_e_when(n,(T0*)C);
R=(T0*)n;
}
R=r237to_runnable_character(((T237*)R),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.base_class*/
/*No:CST_ATT_BOOLEAN.value_mem*/


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


T6 r209is_merge_with(T209* 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){
r209merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.first_name*/
/*No:CST_ATT_BOOLEAN.em1*/
/*No:CST_ATT_BOOLEAN.header_comment*/
/*No:CST_ATT_BOOLEAN.names*/
/*No:CST_ATT_BOOLEAN.result_type*/
/*No:CST_ATT_BOOLEAN.code_require*/
/*No:CST_ATT_BOOLEAN.make_e_feature*/


void r209add_into(T209* 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 r209can_hide(T209* 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));
r209error(r209start_position(C),((T0*)ms95_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X95arguments(a1)))){
/*[IF*/
{/*AT*/r21add_position(X95start_position(a1));
r209error(r209start_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){
r209merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.ensure_assertion*/


T0* r209try_to_undefine(T209* 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=r209try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X289set_clients*//*[IRF3.3set_clients*/((((T292*)(((T292*)R))))->_clients)=((C)->_clients/*16*/);
/*]*/
r209merge_header_comments(C,R);
}
else{
r63fatal_undefine(((T63*)a2),a1);
}
/*FI]*/
return R;
}
/*No:CST_ATT_BOOLEAN.is_deferred*/
/*No:CST_ATT_BOOLEAN.set_clients*/
/*No:CST_ATT_BOOLEAN.value*/
/*No:CST_ATT_BOOLEAN.nb_errors*/


T0* r209to_run_feature(T209* 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 r209merge_header_comments(T209* 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_BOOLEAN.arguments*/
/*No:CST_ATT_BOOLEAN.require_assertion*/


T0* r209try_to_undefine_aux(T209* C,T0* a1,T0* a2){
T0* R=NULL;
r21add_position(r209start_position(C));
r209error(X50start_position(a1),((T0*)ms205_99414));
r63fatal_undefine(((T63*)a2),a1);
return R;
}
/*No:CST_ATT_BOOLEAN.fz_dot*/


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


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


void r209collect_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_BOOLEAN.set_header_comment*/
/*No:CST_ATT_BOOLEAN.clients*/


void r349fall_down(T349* 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_5.use_current_state*/
/*No:RUN_FEATURE_5.rescue_compound*/
/*No:RUN_FEATURE_5.actuals_clients*/
/*No:RUN_FEATURE_5.ucs_false*/
/*No:RUN_FEATURE_5.is_static*/


T0* r349start_position(T349* C){
T0* R=NULL;
R=r310start_position((T310*)((C)->_base_feature/*32*/));
return R;
}


void r349routine_mapping_jvm(T349* 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 r349use_current(T349* 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*/r349std_compute_use_current(C);
/*]*/
R=r349use_current(C);
}
 else {R=1;
}}
return R;
}
/*No:RUN_FEATURE_5.mapping_jvm*/


void r349routine_afd_check(T349* 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_5.ucs_not_computed*/
/*No:RUN_FEATURE_5.is_pre_computable*/


void r349std_compute_use_current(T349* 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* r349run_class(T349* C){
T0* R=NULL;
R=X52run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_5.result_type*/
/*No:RUN_FEATURE_5.base_feature*/
/*No:RUN_FEATURE_5.static_value_mem*/
/*No:RUN_FEATURE_5.ensure_assertion*/


T2 r349jvm_local_variable_offset(T349* 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 r349arg_count(T349* 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_5.fz_19*/


T6 r349is_exported_in(T349* C,T0* a1){
T6 R=0;
R=r103gives_permission_to((T103*)(r349clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_5.arguments*/


T2 r349jvm_argument_offset(T349* 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_5.can_be_dropped*/


void r349initialize(T349* C){
C->_arguments=((T310*)((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=((T310*)((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=((T310*)((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=r310run_require((T0*)C);
}
/*FI]*/
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
C->_ensure_assertion=r310run_ensure((T0*)C);
}
/*FI]*/
C->_rescue_compound=((T310*)((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]*/
r345add_procedure((T0*)C);
}
/*No:RUN_FEATURE_5.require_assertion*/
/*No:RUN_FEATURE_5.update_tmp_jvm_descriptor*/


T2 r349jvm_max_locals(T349* 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 r349jvm_define_opening(T349* 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 r349jvm_define_closing(T349* 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_5.clients_memory*/
/*No:RUN_FEATURE_5.current_type*/


void r349add_client(T349* 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*)(r349run_class(C)),a1);
}
/*No:RUN_FEATURE_5.ucs_in_computation*/
/*No:RUN_FEATURE_5.compute_use_current*/


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


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


void r349jvm_define(T349* C){
T2 _idx_flag=0;
T2 _branch=0;
_idx_flag=r345idx_fieldref_for_flag((T0*)C);
r349method_info_start(C);
r28opcode_getstatic((T28*)(oBC12code_attribute),_idx_flag,1);
_branch=r28opcode_ifne((T28*)(oBC12code_attribute));
/*[IRF3.4opcode_iconst_1*/r28opcode((T28*)(oBC12code_attribute),4,1);
/*]*/
r28opcode_putstatic((T28*)(oBC12code_attribute),_idx_flag,-(1));
r349jvm_define_opening(C);
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r220compile_to_jvm((T220*)((C)->_routine_body/*44*/));
}
/*FI]*/
r349jvm_define_closing(C);
r28resolve_u2_branch(_branch);
/*[IRF3.2opcode_return*//*[IRF3.6add_u1*/{T2 b1=177;
r48add_last((T48*)(oBC28code),b1);
}/*]*/
/*]*/
r39finish((T39*)(oBC12method_info));
}
/*No:RUN_FEATURE_5.name*/
/*No:RUN_FEATURE_5.local_vars*/


T2 r349jvm_result_offset(T349* 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 r349routine_update_tmp_jvm_descriptor(T349* 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_5.jvm_field_or_method*/
/*No:RUN_FEATURE_5.afd_check*/


T0* r349clients(T349* 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=((T310*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T310*)((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* r349jvm_descriptor(T349* C){
T0* R=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC27tmp_jvm_descriptor))))->_count)=(0);
/*]*/
/*[IRF3.4update_tmp_jvm_descriptor*/r349routine_update_tmp_jvm_descriptor(C);
/*]*/
R=oBC27tmp_jvm_descriptor;
return R;
}
/*No:COMMENT.start_position*/
/*No:COMMENT.add_last*/


void r85good_end(T85* C,T0* a1){
/*[IF*/
if(!(r7has_string((T7*)(r73item((T73*)((C)->_list/*4*/),1)),(((T70*)a1))->_to_string/*0*/))){
r21add_position((((T70*)a1))->_start_position/*4*/);
r85warning((C)->_start_position/*0*/,((T0*)ms85_44577));
}
/*FI]*/
}


void r85warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}
/*No:COMMENT.count*/


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


void r85append(T85* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>(((T73*)((((T85*)a1))->_list/*4*/))->_upper/*8*/))) {
/*[IRF3.5add_last*/r73add_last(((T73*)((C)->_list/*4*/)),r73item((T73*)((((T85*)a1))->_list/*4*/),_i));
/*]*/
_i=(_i)+(1);
}
}
/*No:COMMENT.list*/


T6 r368is_frozen(T368* C){
T6 R=0;
R=X50is_frozen((C)->_enclosing/*4*/);
return R;
}


void r368undefine_in(T368* C,T0* a1){
/*[IF*/
if(r368is_frozen(C)){
r368error(r368start_position(C),((T0*)ms50_117530));
r63fatal_undefine(((T63*)a1),(T0*)C);
}
/*FI]*/
}


T0* r368origin_base_class(T368* C){
T0* R=NULL;
T0* _sp=NULL;
_sp=r368start_position(C);
/*[IF*/
if((_sp)!=((void*)(NULL))){
R=r59base_class(((T59*)_sp));
}
/*FI]*/
return R;
}


T0* r368start_position(T368* C){
T0* R=NULL;
R=X50start_position((C)->_enclosing/*4*/);
return R;
}


T0* r368to_string(T368* C){
T0* R=NULL;
R=X50to_string((C)->_enclosing/*4*/);
return R;
}
/*No:PRECURSOR_NAME.declaration_in*/
/*No:PRECURSOR_NAME.to_key*/


void r368refer_to(T368* C,T2 a1,T0* a2){
C->_enclosing=a2;
C->_to_key=r86for_precursor(a1,X50to_key(a2));
}


void r368error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:PRECURSOR_NAME.enclosing*/

