/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.82)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "compile_to_jvm.h"
/*No:CALL_PREFIX_NOT.arguments*/
T0* r180add_comment(T180* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
else {
{T529*n=malloc(sizeof(*n));
*n=M529;
r529make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
int r180to_integer(T180* C){
int R=0;
T0* _rf1=NULL;
_rf1=(((T180*)C))->_run_feature/*16*/;
if(NULL!=(_rf1))switch(((T0*)_rf1)->id) {
case 808: 
break;
default:
_rf1=NULL;
};/*IF*/if ((_rf1)==((void*)(NULL))) {
r180error(/*(IRF4.6start_position*/(((T406*)((T406*)((((T180*)C))->_feature_name/*24*/))))->_start_position/*8*//*)*/,((T0*)ms69_470));
}
else {
R=X662to_integer((((T808*)((T808*)_rf1)))->_value/*48*/);
}
/*FI*/return R;
}
int r180is_a(T180* C,T0* a1){
int R=0;
R=X291is_a(X291run_type((((T180*)C))->_result_type/*20*/),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position(/*(IRF4.6start_position*/(((T406*)((T406*)((((T180*)C))->_feature_name/*24*/))))->_start_position/*8*//*)*/);
r180error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:CALL_PREFIX_NOT.is_current*/
int r180jvm_branch_if_false(T180* C){
int R=0;
/*IF*/if (X291is_boolean((((T180*)C))->_current_type/*8*/)) {
X662compile_to_jvm((((T180*)C))->_target/*12*/);
R=r256opcode_ifne(((T256*)(oBC364code_attribute)));
}
else {
R=r180jvm_standard_branch_if_false(C);
}
/*FI*/return R;
}
/*No:CALL_PREFIX_NOT.static_value*/
void r180make(T180* C,T0* a1,T0* a2){
{T406*n=malloc(sizeof(*n));
*n=M406;
r406make(n,r180operator(),a1);
C->_feature_name=(T0*)n;
}
r180make_call0(C,a2,(((T180*)C))->_feature_name/*24*/);
}
/*No:CALL_PREFIX_NOT.nb_errors*/
/*No:CALL_PREFIX_NOT.feature_name*/
/*No:CALL_PREFIX_NOT.compile_to_jvm_assignment*/
/*No:CALL_PREFIX_NOT.fz_iinaiv*/
/*No:CALL_PREFIX_NOT.arg_count*/
int r180jvm_branch_if_true(T180* C){
int R=0;
/*IF*/if (X291is_boolean((((T180*)C))->_current_type/*8*/)) {
X662compile_to_jvm((((T180*)C))->_target/*12*/);
R=r256opcode_ifeq(((T256*)(oBC364code_attribute)));
}
else {
R=r180jvm_standard_branch_if_true(C);
}
/*FI*/return R;
}
/*No:CALL_PREFIX_NOT.run_feature*/
/*No:CALL_PREFIX_NOT.start_position*/
void r180compile_to_jvm_old(T180* C){
X662compile_to_jvm_old((((T180*)C))->_target/*12*/);
/*IF*//*AF*//*AE*/
/*FI*/}
/*No:CALL_PREFIX_NOT.target*/
T0* r180to_runnable(T180* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T180*)C))->_current_type/*8*/)==((void*)(NULL))) {
r180to_runnable_0(C,a1);
/*IF*/if (((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0))&&((X496arg_count((((T180*)C))->_run_feature/*16*/))>(0))) {
r683add_position((((T406*)((T406*)((((T180*)C))->_feature_name/*24*/))))->_start_position/*8*/);
r180error(X496start_position((((T180*)C))->_run_feature/*16*/),((T0*)ms1_752));
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
R=r180twin(C);
/*[IRF3.3set_current_type*/((((T180*)(((T180*)R))))->_current_type)=(NULL);
/*]*/
R=r180to_runnable(((T180*)R),a1);
}
/*FI*/return R;
}
/*No:CALL_PREFIX_NOT.result_type*/
/*No:CALL_PREFIX_NOT.is_result*/
T0* r180twin(T180* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T180*)R)=*C;
return R;
}
/*No:CALL_PREFIX_NOT.set_current_type*/
T0* r180operator(void){
T0* R=NULL;
R=((T0*)ms40_473);
return R;
}
int r180is_static(T180* C){
int R=0;
/*IF*/if (X291is_boolean(X662result_type((((T180*)C))->_target/*12*/))) {
/*IF*/if (X662is_static((((T180*)C))->_target/*12*/)) {
R=1;
/*IF*/if ((X662static_value((((T180*)C))->_target/*12*/))==(0)) {
C->_static_value_mem=1;
}
/*FI*/}
/*FI*/}
/*FI*/return R;
}
void r180standard_compile_target_to_jvm(T180* C){
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T180* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
X291jvm_check_class_invariant((((T180*)C))->_result_type/*20*/);
}
int r180compile_to_jvm_into(T180* C,T0* a1){
int R=0;
R=r180standard_compile_to_jvm_into(C,a1);
return R;
}
/*No:CALL_PREFIX_NOT.compile_target_to_jvm*/
/*No:CALL_PREFIX_NOT.fz_07*/
int r180can_be_dropped(T180* C){
int R=0;
/*IF*/if (X662can_be_dropped((((T180*)C))->_target/*12*/)) {
R=X496can_be_dropped((((T180*)C))->_run_feature/*16*/);
}
/*FI*/return R;
}
/*No:CALL_PREFIX_NOT.current_type*/
/*No:CALL_PREFIX_NOT.jvm_assign*/
/*No:CALL_PREFIX_NOT.static_value_mem*/
/*No:CALL_PREFIX_NOT.is_manifest_string*/
/*No:CALL_PREFIX_NOT.is_void*/
int r180jvm_standard_branch_if_false(T180* C){
int R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T180* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
R=r256opcode_ifeq(((T256*)(oBC364code_attribute)));
return R;
}
/*No:CALL_PREFIX_NOT.compile_to_jvm*/
void r180to_runnable_0(T180* C,T0* a1){
C->_current_type=a1;
r180cpc_to_runnable(C,a1);
C->_result_type=/*X496*/((T0*)(((T832*)((T832*)((((T180*)C))->_run_feature/*16*/))))->_result_type/*24*/);
/*IF*/if (((((T180*)C))->_result_type/*20*/)==((void*)(NULL))) {
r683add_position(X496start_position((((T180*)C))->_run_feature/*16*/));
r180error((((T406*)((T406*)((((T180*)C))->_feature_name/*24*/))))->_start_position/*8*/,((T0*)ms1_295));
}
 else if (X291is_like_current((((T180*)C))->_result_type/*20*/)) {
C->_result_type=X662result_type((((T180*)C))->_target/*12*/);
}
/*FI*/}
/*No:CALL_PREFIX_NOT.is_pre_computable*/
int r180jvm_standard_branch_if_true(T180* C){
int R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T180* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
R=r256opcode_ifne(((T256*)(oBC364code_attribute)));
return R;
}
int r180use_current(T180* C){
int R=0;
/*IF*//*AF*//*AE*/
/*FI*//*IF*/if (R) {
}
 else if (X662is_current((((T180*)C))->_target/*12*/)) {
R=X496use_current((((T180*)C))->_run_feature/*16*/);
}
else {
R=X662use_current((((T180*)C))->_target/*12*/);
}
/*FI*/return R;
}
void r180cpc_to_runnable(T180* C,T0* a1){
T0* _rc=NULL;
T0* _t=NULL;
_t=X662to_runnable((((T180*)C))->_target/*12*/,a1);
/*IF*/if ((_t)==((void*)(NULL))) {
r683add_position(X662start_position((((T180*)C))->_target/*12*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/C->_target=_t;
_rc=X291run_class(X662result_type((((T180*)C))->_target/*12*/));
C->_run_feature=r355get_rf(((T355*)_rc),(T0*)C);
r576update((((T180*)C))->_target/*12*/,(((T180*)C))->_run_feature/*16*/);
}
/*No:CALL_PREFIX_NOT.us_not*/
void r180make_call0(T180* C,T0* a1,T0* a2){
C->_target=a1;
C->_feature_name=a2;
}
void r180error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CALL_PREFIX_NOT.isa_dca_inline_argument*/
/*No:CALL_PREFIX_NOT.fatal_error*/
int r180standard_compile_to_jvm_into(T180* C,T0* a1){
int R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T180* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
R=X291jvm_convert_to(X291run_type((((T180*)C))->_result_type/*20*/),a1);
return R;
}
/*No:CALL_PREFIX_NOT.call_proc_call_c2jvm*/
void r180afd_check(T180* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X291run_class(X662result_type((((T180*)C))->_target/*12*/));
_running=(((T355*)((T355*)_rc)))->_running/*12*/;
/*IF*/if ((_running)==((void*)(NULL))) {
r683add_position(X662start_position((((T180*)C))->_target/*12*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms1_135);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)_rc)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms141_470);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_warning(((T683*)(oBC364eh)));
r355set_at_run_time(((T355*)_rc));
}
 else if ((r396count(((T396*)_running)))>(0)) {
r576update((((T180*)C))->_target/*12*/,(((T180*)C))->_run_feature/*16*/);
}
/*FI*/X662afd_check((((T180*)C))->_target/*12*/);
/*IF*//*AF*//*AE*/
/*FI*/}
/*No:CALL_INFIX_INT_DIV.arguments*/
T0* r460add_comment(T460* C,T0* a1){
T0* R=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)==(0))) {
R=(T0*)C;
}
else {
{T529*n=malloc(sizeof(*n));
*n=M529;
r529make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI*/return R;
}
int r460to_integer(T460* C){
int R=0;
r460error(/*(IRF4.6start_position*/(((T454*)((T454*)((((T460*)C))->_feature_name/*28*/))))->_start_position/*8*//*)*/,((T0*)ms69_470));
return R;
}
int r460is_a(T460* C,T0* a1){
int R=0;
R=X291is_a(X291run_type((((T460*)C))->_result_type/*20*/),X291run_type(X662result_type(a1)));
/*IF*/if (!(R)) {
r683add_position(/*(IRF4.6start_position*/(((T454*)((T454*)((((T460*)C))->_feature_name/*28*/))))->_start_position/*8*//*)*/);
r460error(X662start_position(a1),((T0*)ms4_662));
}
/*FI*/return R;
}
/*No:CALL_INFIX_INT_DIV.is_current*/
/*No:CALL_INFIX_INT_DIV.jvm_branch_if_false*/
/*No:CALL_INFIX_INT_DIV.static_value*/
void r460make(T460* C,T0* a1,T0* a2,T0* a3){
T0* _eal=NULL;
/*IF*/if (((a1)==((void*)(NULL)))||((a3)==((void*)(NULL)))) {
r683add_position(a2);
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_618);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/{T454*n=malloc(sizeof(*n));
*n=M454;
r454make(n,((T0*)ms1_460),a2);
C->_feature_name=(T0*)n;
}
{T431*n=malloc(sizeof(*n));
*n=M431;
/*[IRF3.3make*/((((T431*)(n)))->_list)=(se_ma96(1,a3));
/*]*/
_eal=(T0*)n;
}
r460make_call_1(C,a1,(((T460*)C))->_feature_name/*28*/,_eal);
}
/*No:CALL_INFIX_INT_DIV.nb_errors*/
/*No:CALL_INFIX_INT_DIV.feature_name*/
/*No:CALL_INFIX_INT_DIV.compile_to_jvm_assignment*/
/*No:CALL_INFIX_INT_DIV.fz_iinaiv*/
/*No:CALL_INFIX_INT_DIV.arg_count*/
/*No:CALL_INFIX_INT_DIV.jvm_branch_if_true*/
/*No:CALL_INFIX_INT_DIV.run_feature*/
/*No:CALL_INFIX_INT_DIV.start_position*/
void r460compile_to_jvm_old(T460* C){
X662compile_to_jvm_old((((T460*)C))->_target/*12*/);
/*IF*/{/*AT*/r431compile_to_jvm_old(((T431*)((((T460*)C))->_arguments/*24*/)));
}
/*FI*/}
/*No:CALL_INFIX_INT_DIV.target*/
T0* r460to_runnable(T460* C,T0* a1){
T0* R=NULL;
T0* _tla=NULL;
T0* _a=NULL;
/*IF*/if (((((T460*)C))->_current_type/*8*/)==((void*)(NULL))) {
r460to_runnable_0(C,a1);
_a=r431to_runnable(((T431*)((((T460*)C))->_arguments/*24*/)),a1);
/*IF*/if ((_a)==((void*)(NULL))) {
r460error(X662start_position(/*(IRF4.6arg1*/r431first(((T431*)((((T460*)C))->_arguments/*24*/)))/*)*/),((T0*)ms55_470));
}
else {
C->_arguments=_a;
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
r431match_with(((T431*)((((T460*)C))->_arguments/*24*/)),(((T460*)C))->_run_feature/*16*/);
}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
_tla=(((T460*)C))->_result_type/*20*/;
if(NULL!=(_tla))switch(((T0*)_tla)->id) {
case 239: 
break;
default:
_tla=NULL;
};/*IF*/if ((_tla)!=((void*)(NULL))) {
C->_result_type=X291run_type(X662result_type(/*(IRF4.6arg1*/r431first(((T431*)((((T460*)C))->_arguments/*24*/)))/*)*/));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
R=r460twin(C);
/*[IRF3.3set_current_type*/((((T460*)(((T460*)R))))->_current_type)=(NULL);
/*]*/
R=r460to_runnable(((T460*)R),a1);
}
/*FI*/return R;
}
/*No:CALL_INFIX_INT_DIV.result_type*/
/*No:CALL_INFIX_INT_DIV.is_result*/
T0* r460twin(T460* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T460*)R)=*C;
return R;
}
/*No:CALL_INFIX_INT_DIV.set_current_type*/
/*No:CALL_INFIX_INT_DIV.operator*/
int r460is_static(T460* C){
int R=0;
/*IF*/if (X291is_integer((((T460*)C))->_result_type/*20*/)) {
/*IF*/if ((X662is_static((((T460*)C))->_target/*12*/))&&(X662is_static(/*(IRF4.6arg1*/r431first(((T431*)((((T460*)C))->_arguments/*24*/)))/*)*/))) {
R=1;
C->_static_value_mem=(X662static_value((((T460*)C))->_target/*12*/))/(X662static_value(/*(IRF4.6arg1*/r431first(((T431*)((((T460*)C))->_arguments/*24*/)))/*)*/));
}
/*FI*/}
/*FI*/return R;
}
void r460standard_compile_target_to_jvm(T460* C){
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T460* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
X291jvm_check_class_invariant((((T460*)C))->_result_type/*20*/);
}
int r460compile_to_jvm_into(T460* C,T0* a1){
int R=0;
R=r460standard_compile_to_jvm_into(C,a1);
return R;
}
/*No:CALL_INFIX_INT_DIV.compile_target_to_jvm*/
/*No:CALL_INFIX_INT_DIV.fz_07*/
/*No:CALL_INFIX_INT_DIV.can_be_dropped*/
/*No:CALL_INFIX_INT_DIV.current_type*/
/*No:CALL_INFIX_INT_DIV.jvm_assign*/
/*No:CALL_INFIX_INT_DIV.static_value_mem*/
void r460make_call_1(T460* C,T0* a1,T0* a2,T0* a3){
C->_target=a1;
C->_feature_name=a2;
C->_arguments=a3;
}
/*No:CALL_INFIX_INT_DIV.is_manifest_string*/
/*No:CALL_INFIX_INT_DIV.is_void*/
int r460jvm_standard_branch_if_false(T460* C){
int R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T460* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
R=r256opcode_ifeq(((T256*)(oBC364code_attribute)));
return R;
}
/*No:CALL_INFIX_INT_DIV.compile_to_jvm*/
void r460to_runnable_0(T460* C,T0* a1){
C->_current_type=a1;
r460cpc_to_runnable(C,a1);
C->_result_type=/*X496*/((T0*)(((T832*)((T832*)((((T460*)C))->_run_feature/*16*/))))->_result_type/*24*/);
/*IF*/if (((((T460*)C))->_result_type/*20*/)==((void*)(NULL))) {
r683add_position(X496start_position((((T460*)C))->_run_feature/*16*/));
r460error((((T454*)((T454*)((((T460*)C))->_feature_name/*28*/))))->_start_position/*8*/,((T0*)ms1_295));
}
 else if (X291is_like_current((((T460*)C))->_result_type/*20*/)) {
C->_result_type=X662result_type((((T460*)C))->_target/*12*/);
}
/*FI*/}
/*No:CALL_INFIX_INT_DIV.is_pre_computable*/
int r460jvm_standard_branch_if_true(T460* C){
int R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T460* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
R=r256opcode_ifne(((T256*)(oBC364code_attribute)));
return R;
}
int r460use_current(T460* C){
int R=0;
/*IF*/{/*AT*/R=r431use_current(((T431*)((((T460*)C))->_arguments/*24*/)));
}
/*FI*//*IF*/if (R) {
}
 else if (X662is_current((((T460*)C))->_target/*12*/)) {
R=X496use_current((((T460*)C))->_run_feature/*16*/);
}
else {
R=X662use_current((((T460*)C))->_target/*12*/);
}
/*FI*/return R;
}
void r460cpc_to_runnable(T460* C,T0* a1){
T0* _rc=NULL;
T0* _t=NULL;
_t=X662to_runnable((((T460*)C))->_target/*12*/,a1);
/*IF*/if ((_t)==((void*)(NULL))) {
r683add_position(X662start_position((((T460*)C))->_target/*12*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms2_135);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/C->_target=_t;
_rc=X291run_class(X662result_type((((T460*)C))->_target/*12*/));
C->_run_feature=r355get_rf(((T355*)_rc),(T0*)C);
r576update((((T460*)C))->_target/*12*/,(((T460*)C))->_run_feature/*16*/);
}
void r460error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CALL_INFIX_INT_DIV.isa_dca_inline_argument*/
/*No:CALL_INFIX_INT_DIV.fatal_error*/
/*No:CALL_INFIX_INT_DIV.fz_bad_argument*/
/*No:CALL_INFIX_INT_DIV.arg1*/
int r460standard_compile_to_jvm_into(T460* C,T0* a1){
int R=0;
/*[IRF3.4compile_to_jvm*//*[IRF3.6call_proc_call_c2jvm*/{T460* C1=C;
r228b_put_cpc(((T228*)(oBC364jvm)),(T0*)C1);
}/*]*/
/*]*/
R=X291jvm_convert_to(X291run_type((((T460*)C))->_result_type/*20*/),a1);
return R;
}
/*No:CALL_INFIX_INT_DIV.call_proc_call_c2jvm*/
void r460afd_check(T460* C){
T0* _running=NULL;
T0* _rc=NULL;
_rc=X291run_class(X662result_type((((T460*)C))->_target/*12*/));
_running=(((T355*)((T355*)_rc)))->_running/*12*/;
/*IF*/if ((_running)==((void*)(NULL))) {
r683add_position(X662start_position((((T460*)C))->_target/*12*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms1_135);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)_rc)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms141_470);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_warning(((T683*)(oBC364eh)));
r355set_at_run_time(((T355*)_rc));
}
 else if ((r396count(((T396*)_running)))>(0)) {
r576update((((T460*)C))->_target/*12*/,(((T460*)C))->_run_feature/*16*/);
}
/*FI*/X662afd_check((((T460*)C))->_target/*12*/);
/*IF*/{/*AT*/r431afd_check(((T431*)((((T460*)C))->_arguments/*24*/)));
}
/*FI*/}
void r158make(T158* C,T0* a1,T0* a2,T0* a3){
C->_comment=a3;
C->_tag=a1;
C->_expression=a2;
}
/*No:LOOP_VARIANT_2.nb_errors*/
/*No:LOOP_VARIANT_2.expression*/
T0* r158start_position(T158* C){
T0* R=NULL;
R=X662start_position((((T158*)C))->_expression/*8*/);
return R;
}
/*No:LOOP_VARIANT_2.comment*/
T0* r158to_runnable(T158* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
/*IF*/if (((((T158*)C))->_current_type/*12*/)==((void*)(NULL))) {
C->_current_type=a1;
_e=X662to_runnable((((T158*)C))->_expression/*8*/,a1);
/*IF*/if ((_e)==((void*)(NULL))) {
r158error(r158start_position(C),((T0*)ms1_856));
}
else {
C->_expression=_e;
/*IF*/if (!(X291is_integer(X662result_type((((T158*)C))->_expression/*8*/)))) {
r158error(X662start_position((((T158*)C))->_expression/*8*/),((T0*)ms2_856));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
R=r158twin(C);
/*[IRF3.3set_current_type*/((((T158*)(((T158*)R))))->_current_type)=(NULL);
/*]*/
R=r158to_runnable(((T158*)R),a1);
}
/*FI*/return R;
}
T0* r158twin(T158* C){
T0* R=NULL;
R=malloc(sizeof(*C));
*((T158*)R)=*C;
return R;
}
/*No:LOOP_VARIANT_2.set_current_type*/
/*No:LOOP_VARIANT_2.tag*/
/*No:LOOP_VARIANT_2.current_type*/
int r158use_current(T158* C){
int R=0;
R=X662use_current((((T158*)C))->_expression/*8*/);
return R;
}
void r158error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
void r158afd_check(T158* C){
X662afd_check((((T158*)C))->_expression/*8*/);
}
/*No:DEFERRED_FUNCTION.arguments*/
T0* r649try_to_undefine(T649* C,T0* a1,T0* a2){
T0* R=NULL;
X776undefine_in(a1,a2);
R=/*(IRF4.4try_to_undefine_aux*/((T0*)(C))/*)*/;
/*IF*/if ((R)!=((void*)(NULL))) {
/*X249*//*[IRF3.3set_clients*/((((T853*)(((T853*)R))))->_clients)=((((T649*)C))->_clients/*20*/);
/*]*/
}
else {
r605fatal_undefine(((T605*)a2),a1);
}
/*FI*/return R;
}
/*No:DEFERRED_FUNCTION.is_deferred*/
/*No:DEFERRED_FUNCTION.rescue_compound*/
void r649add_into(T649* C,T0* a1){
T0* _fn=NULL;
int _i=0;
C->_base_class=r627base_class(((T627*)(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T649*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*/))));
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T649*)C))->_names/*8*/))))->_list/*0*/))))->_upper/*8*//*)*/))) {
_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T649*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/;
/*IF*/if (r237has(((T237*)a1),X776to_key(_fn))) {
_fn=/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r237at(((T237*)a1),X776to_key(_fn))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
r683add_position(X776start_position(_fn));
r683add_position(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T649*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/));
r683error(((T683*)(oBC364eh)),((T0*)ms11_359));
/*[IRF3.6append*/{T0* b1=X776to_string(_fn);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
else {
r237put(((T237*)a1),(T0*)C,X776to_key(_fn));
}
/*FI*/_i=(_i)+(1);
}
}
/*No:DEFERRED_FUNCTION.end_comment*/
/*No:DEFERRED_FUNCTION.try_to_undefine_aux*/
void r649make(T649* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
r649make_routine(C,a1,a2,a4,a5,a6);
C->_result_type=a3;
}
/*No:DEFERRED_FUNCTION.nb_errors*/
void r649make_routine(T649* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5){
r649make_e_feature(C,a1,NULL);
C->_header_comment=a4;
C->_arguments=a2;
C->_obsolete_mark=a3;
C->_require_assertion=a5;
}
void r649set_header_comment(T649* C,T0* a1){
/*IF*/if (((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r52count(((T52*)((((T393*)((T393*)a1)))->_list/*4*/)))/*)*/)>(1))) {
C->_end_comment=a1;
}
/*FI*/}
T0* r649start_position(T649* C){
T0* R=NULL;
R=X776start_position(/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T649*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
return R;
}
T0* r649to_run_feature(T649* C,T0* a1,T0* a2){
T0* R=NULL;
r649check_obsolete(C);
{T904*n=malloc(sizeof(*n));
*n=M904;
r904make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}
/*No:DEFERRED_FUNCTION.ensure_assertion*/
/*No:DEFERRED_FUNCTION.code_require*/
/*No:DEFERRED_FUNCTION.result_type*/
/*No:DEFERRED_FUNCTION.fz_03*/
/*No:DEFERRED_FUNCTION.em1*/
/*No:DEFERRED_FUNCTION.obsolete_mark*/
/*No:DEFERRED_FUNCTION.em2*/
/*No:DEFERRED_FUNCTION.set_clients*/
/*No:DEFERRED_FUNCTION.names*/
/*No:DEFERRED_FUNCTION.require_assertion*/
void r649from_effective(T649* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
{T953*n=malloc(sizeof(*n));
*n=M953;
r953make(n,se_ma855(1,a1));
C->_names=(T0*)n;
}
r649make(C,(((T649*)C))->_names/*8*/,a2,a3,NULL,NULL,a4);
/*[IRF3.3set_ensure_assertion*/((((T649*)(C)))->_ensure_assertion)=(a5);
/*]*/
C->_base_class=a6;
}
void r649set_rescue_compound(T649* C,T0* a1){
/*IF*/if (((a1)!=((void*)(NULL)))&&(/*(IRF4.2is_deferred*/(1)/*)*/)) {
r649error(r649start_position(C),((T0*)ms6_368));
}
/*FI*/C->_rescue_compound=a1;
}
int r649can_hide(T649* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T649*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T649*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r649error(r649start_position(C),((T0*)ms5_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T649*)C))->_arguments/*24*/)!=((void*)(X359arguments(a1)))) {
/*IF*/if ((((((T649*)C))->_arguments/*24*/)==((void*)(NULL)))||((X359arguments(a1))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r649error(r649start_position(C),((T0*)ms6_359));
}
 else if ((/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T649*)C))->_arguments/*24*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)(X359arguments(a1)))))->_flat_list/*12*/))))->_upper/*12*//*)*/)) {
r683add_position(X359start_position(a1));
r649error(r649start_position(C),((T0*)ms7_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T649*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T649*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms13_359);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)a2)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T649*)C))->_arguments/*24*/)!=((void*)(NULL))) {
/*IF*/if (!(r31is_a_in(((T31*)((((T649*)C))->_arguments/*24*/)),X359arguments(a1),a2))) {
r683add_position(X359start_position(a1));
r683add_position(r649start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms13_359);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)a2)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
/*FI*/}
/*FI*/}
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:DEFERRED_FUNCTION.header_comment*/
int r649is_merge_with(T649* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T649*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T649*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r649error(r649start_position(C),((T0*)ms2_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T649*)C))->_arguments/*24*/)!=((void*)(X359arguments(a1)))) {
/*IF*/if ((((((T649*)C))->_arguments/*24*/)==((void*)(NULL)))||((X359arguments(a1))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r649error(r649start_position(C),((T0*)ms3_359));
}
 else if ((/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)((((T649*)C))->_arguments/*24*/))))->_flat_list/*12*/))))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T65*)((T65*)((((T31*)((T31*)(X359arguments(a1)))))->_flat_list/*12*/))))->_upper/*12*//*)*/)) {
r683add_position(X359start_position(a1));
r649error(r649start_position(C),((T0*)ms4_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T649*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T649*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
r683error(((T683*)(oBC364eh)),((T0*)ms12_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T649*)C))->_arguments/*24*/)!=((void*)(NULL))) {
/*IF*/if (!(r31is_a_in(((T31*)((((T649*)C))->_arguments/*24*/)),X359arguments(a1),a2))) {
r683add_position(X359start_position(a1));
r649error(r649start_position(C),((T0*)ms12_359));
}
/*FI*/}
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:DEFERRED_FUNCTION.fz_dot*/
/*No:DEFERRED_FUNCTION.set_ensure_assertion*/
/*No:DEFERRED_FUNCTION.first_name*/
/*No:DEFERRED_FUNCTION.clients*/
void r649collect_for(T649* C,int a1){
/*IF*/if ((a1)==(1001)) {
/*IF*/if (((((T649*)C))->_require_assertion/*32*/)!=((void*)(NULL))) {
/*IF*/if (!(r522fast_has(((T522*)(oBC359require_collector)),(((T649*)C))->_require_assertion/*32*/))) {
r522add_last(((T522*)(oBC359require_collector)),(((T649*)C))->_require_assertion/*32*/);
}
/*FI*/}
/*FI*/}
else {
/*IF*/if (((((T649*)C))->_ensure_assertion/*36*/)!=((void*)(NULL))) {
/*[IRF3.3set_item*/((((T56*)(((T56*)(oBC359header_comment_memory)))))->_item)=((((T633*)((T633*)((((T649*)C))->_ensure_assertion/*36*/))))->_header_comment/*4*/);
/*]*/
r633add_into(((T633*)((((T649*)C))->_ensure_assertion/*36*/)),oBC359assertion_collector);
}
/*FI*/}
/*FI*/}
void r649error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:DEFERRED_FUNCTION.base_class*/
void r649make_e_feature(T649* C,T0* a1,T0* a2){
C->_names=a1;
C->_result_type=a2;
}
void r649check_obsolete(T649* C){
/*IF*/if (!((((T604*)((T604*)(oBC364small_eiffel))))->_short_flag/*4*/)) {
/*IF*/if (((((T649*)C))->_obsolete_mark/*28*/)!=((void*)(NULL))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms7_368);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T805*)((T805*)((((T649*)C))->_obsolete_mark/*28*/))))->_to_string/*16*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r649warning(r649start_position(C),((T0*)ms137_470));
}
/*FI*/}
/*FI*/}
void r649warning(T0* a1,T0* a2){
r683add_position(a1);
r683warning(((T683*)(oBC364eh)),a2);
}
void r953make(T953* C,T0* a1){
int _i2=0;
int _i=0;
C->_list=a1;
_i=(((T855*)((T855*)a1)))->_upper/*8*/;
while (!((_i)==(0))) {
_i2=r953index_of(C,r855item(((T855*)a1),_i));
/*IF*/if ((_i2)!=(_i)) {
r683add_position(X776start_position(r855item(((T855*)a1),_i2)));
r683add_position(X776start_position(r855item(((T855*)a1),_i)));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_953);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/_i=(_i)-(1);
}
}
/*No:FEATURE_NAME_LIST.item*/
/*No:FEATURE_NAME_LIST.list*/
int r953has(T953* C,T0* a1){
int R=0;
R=(r953index_of(C,a1))>(0);
return R;
}
/*No:FEATURE_NAME_LIST.count*/
/*No:FEATURE_NAME_LIST.fatal_error*/
int r953index_of(T953* C,T0* a1){
int R=0;
T0* _fn_key=NULL;
_fn_key=X776to_key(a1);
R=(((T855*)((T855*)((((T953*)C))->_list/*0*/))))->_upper/*8*/;
while (!(((R)==(0))||((_fn_key)==((void*)(X776to_key(/*(IRF4.6item*/r855item(((T855*)((((T953*)C))->_list/*0*/)),R)/*)*/)))))) {
R=(R)-(1);
}
return R;
}
/*No:IFTHEN.fz_is_not_boolean*/
/*No:IFTHEN.static_false*/
void r809make(T809* C,T0* a1,T0* a2){
C->_expression=a1;
C->_then_compound=a2;
}
/*No:IFTHEN.nb_errors*/
/*No:IFTHEN.expression*/
/*No:IFTHEN.point2*/
/*No:IFTHEN.static_true*/
T0* r809to_runnable(T809* C,T0* a1){
T0* R=NULL;
T0* _t=NULL;
T0* _tc=NULL;
T0* _e=NULL;
/*IF*/if (((((T809*)C))->_run_compound/*8*/)==((void*)(NULL))) {
C->_run_compound=a1;
_e=X662to_runnable((((T809*)C))->_expression/*0*/,/*(IRF4.6current_type*/(((T592*)((T592*)((((T809*)C))->_run_compound/*8*/))))->_current_type/*4*//*)*/);
/*IF*/if ((_e)==((void*)(NULL))) {
r809error(X662start_position((((T809*)C))->_expression/*0*/),((T0*)ms8_809));
}
else {
C->_expression=_e;
_t=X662result_type((((T809*)C))->_expression/*0*/);
/*IF*/if (!(X291is_boolean(_t))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms9_809);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_type(X662result_type((((T809*)C))->_expression/*0*/),((T0*)ms73_470));
r683add_position(X662start_position((((T809*)C))->_expression/*0*/));
r683print_as_error(((T683*)(oBC364eh)));
}
/*FI*/}
/*FI*//*IF*/if (((((T809*)C))->_then_compound/*4*/)!=((void*)(NULL))) {
_tc=r592to_runnable(((T592*)((((T809*)C))->_then_compound/*4*/)),/*(IRF4.6current_type*/(((T592*)((T592*)((((T809*)C))->_run_compound/*8*/))))->_current_type/*4*//*)*/);
/*IF*/if ((_tc)!=((void*)(NULL))) {
C->_then_compound=_tc;
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
R=(T0*)C;
}
/*FI*/}
else {
{T809*n=malloc(sizeof(*n));
*n=M809;
r809make(n,(((T809*)C))->_expression/*0*/,(((T809*)C))->_then_compound/*4*/);
R=(T0*)n;
}
R=r809to_runnable(((T809*)R),a1);
}
/*FI*/return R;
}
/*No:IFTHEN.then_compound*/
/*No:IFTHEN.current_type*/
/*No:IFTHEN.run_compound*/
/*No:IFTHEN.non_static*/
int r809compile_to_jvm(T809* C){
int R=0;
int _point1=0;
/*IF*/if (X662is_static((((T809*)C))->_expression/*0*/)) {
r228incr_static_expression_count(((T228*)(oBC364jvm)));
/*IF*/if ((X662static_value((((T809*)C))->_expression/*0*/))==(1)) {
/*IF*/if (((((T809*)C))->_then_compound/*4*/)!=((void*)(NULL))) {
r592compile_to_jvm(((T592*)((((T809*)C))->_then_compound/*4*/)));
}
/*FI*/R=1019;
}
else {
R=1020;
}
/*FI*/}
else {
R=1021;
_point1=X662jvm_branch_if_false((((T809*)C))->_expression/*0*/);
/*IF*/if (((((T809*)C))->_then_compound/*4*/)!=((void*)(NULL))) {
r592compile_to_jvm(((T592*)((((T809*)C))->_then_compound/*4*/)));
}
/*FI*/C->_point2=r256opcode_goto(((T256*)(oBC364code_attribute)));
r256resolve_u2_branch(_point1);
}
/*FI*/return R;
}
int r809use_current(T809* C){
int R=0;
R=X662use_current((((T809*)C))->_expression/*0*/);
/*IF*/if ((!(R))&&(((((T809*)C))->_then_compound/*4*/)!=((void*)(NULL)))) {
R=r592use_current(((T592*)((((T809*)C))->_then_compound/*4*/)));
}
/*FI*/return R;
}
void r809error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
int r809compile_to_jvm_resolve_branch(T809* C){
int R=0;
/*IF*/if (X662is_static((((T809*)C))->_expression/*0*/)) {
/*IF*/if ((X662static_value((((T809*)C))->_expression/*0*/))==(1)) {
R=1019;
}
else {
R=1020;
}
/*FI*/}
else {
R=1021;
/*IF*/if (((((T809*)C))->_point2/*12*/)>(0)) {
r256resolve_u2_branch((((T809*)C))->_point2/*12*/);
}
/*FI*/}
/*FI*/return R;
}
void r809afd_check(T809* C){
X662afd_check((((T809*)C))->_expression/*0*/);
/*IF*/if (((((T809*)C))->_then_compound/*4*/)!=((void*)(NULL))) {
r592afd_check(((T592*)((((T809*)C))->_then_compound/*4*/)));
}
/*FI*/}
/*No:CST_ATT_INTEGER.arguments*/
T0* r689try_to_undefine(T689* C,T0* a1,T0* a2){
T0* R=NULL;
X776undefine_in(a1,a2);
R=r689try_to_undefine_aux(C,a1,a2);
/*IF*/if ((R)!=((void*)(NULL))) {
/*X249*//*[IRF3.3set_clients*/((((T853*)(((T853*)R))))->_clients)=((((T689*)C))->_clients/*20*/);
/*]*/
}
else {
r605fatal_undefine(((T605*)a2),a1);
}
/*FI*/return R;
}
/*No:CST_ATT_INTEGER.is_deferred*/
void r689add_into(T689* C,T0* a1){
T0* _fn=NULL;
int _i=0;
C->_base_class=r627base_class(((T627*)(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*/))));
_i=1;
while (!((_i)>(/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/))))->_upper/*8*//*)*/))) {
_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/;
/*IF*/if (r237has(((T237*)a1),X776to_key(_fn))) {
_fn=/*X359*/((T0*)/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T398*)((T398*)(r237at(((T237*)a1),X776to_key(_fn))))))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
r683add_position(X776start_position(_fn));
r683add_position(X776start_position(/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),_i)/*)*/));
r683error(((T683*)(oBC364eh)),((T0*)ms11_359));
/*[IRF3.6append*/{T0* b1=X776to_string(_fn);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
else {
r237put(((T237*)a1),(T0*)C,X776to_key(_fn));
}
/*FI*/_i=(_i)+(1);
}
}
T0* r689try_to_undefine_aux(T689* C,T0* a1,T0* a2){
T0* R=NULL;
r683add_position(r689start_position(C));
r689error(X776start_position(a1),((T0*)ms1_321));
r605fatal_undefine(((T605*)a2),a1);
return R;
}
void r689make(T689* C,T0* a1,T0* a2,T0* a3){
r689make_e_feature(C,a1,a2);
C->_value_mem=a3;
}
/*No:CST_ATT_INTEGER.nb_errors*/
/*No:CST_ATT_INTEGER.set_header_comment*/
T0* r689start_position(T689* C){
T0* R=NULL;
R=X776start_position(/*(IRF4.6first_name*//*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)((((T689*)C))->_names/*8*/))))->_list/*0*/)),1)/*)*//*)*/);
return R;
}
T0* r689to_run_feature(T689* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _rc=NULL;
_rc=X291run_class(a1);
R=r355at(((T355*)_rc),a2);
if(NULL!=(R))switch(((T0*)R)->id) {
case 808: 
break;
default:
R=NULL;
};/*IF*/if ((R)==((void*)(NULL))) {
{T808*n=malloc(sizeof(*n));
*n=M808;
r808make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
}
/*FI*/return R;
}
/*No:CST_ATT_INTEGER.ensure_assertion*/
/*No:CST_ATT_INTEGER.code_require*/
/*No:CST_ATT_INTEGER.result_type*/
/*No:CST_ATT_INTEGER.em1*/
/*No:CST_ATT_INTEGER.set_clients*/
/*No:CST_ATT_INTEGER.em2*/
/*No:CST_ATT_INTEGER.value*/
/*No:CST_ATT_INTEGER.require_assertion*/
/*No:CST_ATT_INTEGER.names*/
/*No:CST_ATT_INTEGER.value_mem*/
int r689can_hide(T689* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T689*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r689error(r689start_position(C),((T0*)ms5_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X359arguments(a1)))) {
/*IF*/{/*AT*/r683add_position(X359start_position(a1));
r689error(r689start_position(C),((T0*)ms6_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T689*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms13_359);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X291run_time_mark((((T355*)((T355*)a2)))->_current_type/*0*/);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683error(((T683*)(oBC364eh)),((T0*)ms67_470));
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0)) {
/*IF*//*AF*//*AE*/
/*FI*/}
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:CST_ATT_INTEGER.header_comment*/
int r689is_merge_with(T689* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/)))) {
/*IF*/if ((((((T689*)C))->_result_type/*12*/)==((void*)(NULL)))||((/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/))==((void*)(NULL)))) {
r683add_position(X359start_position(a1));
r689error(r689start_position(C),((T0*)ms2_359));
}
/*FI*/}
/*FI*//*IF*/if ((/*(IRF4.1arguments*/NULL/*)*/)!=((void*)(X359arguments(a1)))) {
/*IF*/{/*AT*/r683add_position(X359start_position(a1));
r689error(r689start_position(C),((T0*)ms3_359));
}
/*FI*/}
/*FI*//*IF*/if (((((T689*)C))->_result_type/*12*/)!=((void*)(NULL))) {
/*IF*/if (!(X291is_a_in((((T689*)C))->_result_type/*12*/,/*X359*/((T0*)(((T398*)((T398*)a1)))->_result_type/*12*/),a2))) {
r683error(((T683*)(oBC364eh)),((T0*)ms12_359));
}
/*FI*/}
/*FI*//*IF*//*AF*//*AE*/
/*FI*/R=(/*(IRF4.9nb_errors*/(((T683*)((T683*)(oBC364eh))))->_nb_errors/*0*//*)*/)==(0);
return R;
}
/*No:CST_ATT_INTEGER.fz_dot*/
/*No:CST_ATT_INTEGER.first_name*/
/*No:CST_ATT_INTEGER.clients*/
void r689collect_for(int a1){
/*IF*/if ((a1)==(1001)) {
/*IF*//*AF*//*AE*/
/*FI*/}
else {
/*IF*//*AF*//*AE*/
/*FI*/}
/*FI*/}
void r689error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:CST_ATT_INTEGER.base_class*/
void r689make_e_feature(T689* C,T0* a1,T0* a2){
C->_names=a1;
C->_result_type=a2;
}
/*No:BASE_CLASS.fz_is_invalid*/
/*No:BASE_CLASS.set_end_comment*/
/*No:BASE_CLASS.id*/
void r605add_feature_clause(T605* C,T0* a1){
/*IF*/if (((((T605*)C))->_feature_clause_list/*48*/)==((void*)(NULL))) {
{T913*n=malloc(sizeof(*n));
*n=M913;
/*[IRF3.3make*/((((T913*)(n)))->_list)=(se_ma764(1,a1));
/*]*/
C->_feature_clause_list=(T0*)n;
}
}
else {
/*[IRF3.5add_last*/r764add_last(((T764*)((((T913*)((T913*)((((T605*)C))->_feature_clause_list/*48*/))))->_list/*0*/)),a1);
/*]*/
}
/*FI*/}
void r605set_parent_list(T605* C,T0* a1,T0* a2,T0* a3){
{T673*n=malloc(sizeof(*n));
*n=M673;
r673make(n,(T0*)C,a1,a2,a3);
C->_parent_list=(T0*)n;
}
}
/*No:BASE_CLASS.is_deferred*/
int r605has_creation(T605* C,T0* a1){
int R=0;
T0* _cn=NULL;
T0* _bc=NULL;
T0* _cc=NULL;
/*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)==((void*)(NULL))) {
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms7_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683add_position(X776start_position(a1));
r683print_as_error(((T683*)(oBC364eh)));
}
else {
_cc=r391get_clause(((T391*)((((T605*)C))->_creation_clause_list/*44*/)),a1);
/*IF*/if ((_cc)==((void*)(NULL))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms143_470);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X776to_string(a1);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms8_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r605error(X776start_position(a1),((T0*)ms67_470));
}
else {
R=1;
_bc=X776origin_base_class(a1);
/*IF*/if ((_bc)!=((void*)(NULL))) {
_cn=(((T605*)((T605*)_bc)))->_base_class_name/*24*/;
R=r636gives_permission_to(((T636*)((((T583*)((T583*)_cc)))->_clients/*4*/)),_cn);
}
/*FI*/}
/*FI*/}
/*FI*//*IF*/if (!(R)) {
r605error(X776start_position(a1),((T0*)ms9_605));
}
/*FI*/return R;
}
void r605add_creation_clause(T605* C,T0* a1){
/*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)==((void*)(NULL))) {
{T391*n=malloc(sizeof(*n));
*n=M391;
/*[IRF3.3make*/((((T391*)(n)))->_list)=(se_ma235(1,a1));
/*]*/
C->_creation_clause_list=(T0*)n;
}
}
else {
/*[IRF3.5add_last*/r235add_last(((T235*)((((T391*)((T391*)((((T605*)C))->_creation_clause_list/*44*/))))->_list/*0*/)),a1);
/*]*/
}
/*FI*/}
/*No:BASE_CLASS.us_copy*/
/*No:BASE_CLASS.feature_clause_list*/
void r605get_started(T605* C){
C->_id=r410item(((T410*)(r605id_provider())),(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/);
/*IF*/if (((((T605*)C))->_feature_clause_list/*48*/)!=((void*)(NULL))) {
r913get_started(((T913*)((((T605*)C))->_feature_clause_list/*48*/)),(((T605*)C))->_feature_dictionary/*60*/);
}
/*FI*//*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
r673get_started(((T673*)((((T605*)C))->_parent_list/*40*/)));
}
/*FI*//*IF*/if (((((T605*)C))->_end_comment/*56*/)!=((void*)(NULL))) {
r393good_end(((T393*)((((T605*)C))->_end_comment/*56*/)),(((T605*)C))->_base_class_name/*24*/);
}
/*FI*//*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
r863clear(((T863*)(oBC605visited)));
r863add_last(((T863*)(oBC605visited)),(T0*)C);
r673inherit_cycle_check(((T673*)((((T605*)C))->_parent_list/*40*/)));
}
/*FI*//*IF*/if (((r590all_check(((T590*)(oBC364run_control))))&&((((T605*)C))->_is_deferred/*16*/))&&(((((T605*)C))->_creation_clause_list/*44*/)!=((void*)(NULL)))) {
r683add_position((((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_start_position/*4*/);
r605warning(r391start_position(((T391*)((((T605*)C))->_creation_clause_list/*44*/))),((T0*)ms6_605));
}
/*FI*/}
int r605is_subclass_of(T605* C,T0* a1){
int R=0;
/*IF*/if (r863fast_has(((T863*)((((T605*)C))->_isom/*64*/)),a1)) {
R=1;
}
else {
/*IF*/if (r605is_any(((T605*)a1))) {
R=1;
}
else {
r863clear(((T863*)(oBC605visited)));
R=r605is_subclass_of_aux(C,a1);
}
/*FI*//*IF*/if (R) {
r863add_last(((T863*)((((T605*)C))->_isom/*64*/)),a1);
}
/*FI*/}
/*FI*/return R;
}
int fBC364class_any=0;
T0*oBC364class_any=NULL;
T0* r605class_any(void){
if (fBC364class_any==0){
T0* R=NULL;
fBC364class_any=1;
R=r605class_with(((T0*)ms1_473));
oBC364class_any=R;}
return oBC364class_any;}
int r605has_feature(T605* C,T0* a1){
int R=0;
r446make(((T446*)(r605mem_fn())),a1,NULL);
R=r605has(C,r605mem_fn());
return R;
}
int fBC605mem_fn=0;
T0*oBC605mem_fn=NULL;
T0* r605mem_fn(void){
if (fBC605mem_fn==0){
T0* R=NULL;
fBC605mem_fn=1;
{T446*n=malloc(sizeof(*n));
*n=M446;
r446make(n,((T0*)ms27_605),NULL);
R=(T0*)n;
}
oBC605mem_fn=R;}
return oBC605mem_fn;}
int r605is_subclass_of_aux(T605* C,T0* a1){
int R=0;
/*IF*/if (r863fast_has(((T863*)(oBC605visited)),(T0*)C)) {
}
else {
r863add_last(((T863*)(oBC605visited)),(T0*)C);
/*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
R=r673has_parent(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
}
 else if (!(r863fast_has(((T863*)(oBC605visited)),r605class_any()))) {
R=r605is_subclass_of_aux(((T605*)(r605class_any())),a1);
}
/*FI*/}
/*FI*/return R;
}
/*No:BASE_CLASS.end_comment*/
void r605add_index_clause(T605* C,T0* a1){
/*IF*/if (((((T605*)C))->_index_list/*8*/)==((void*)(NULL))) {
{T688*n=malloc(sizeof(*n));
*n=M688;
/*[IRF3.3make*/((((T688*)(n)))->_list)=(se_ma848(1,a1));
/*]*/
C->_index_list=(T0*)n;
}
}
else {
r848add_last(((T848*)((((T688*)((T688*)((((T605*)C))->_index_list/*8*/))))->_list/*0*/)),a1);
}
/*FI*/}
/*No:BASE_CLASS.obsolete_type_string*/
T0* r605class_with(T0* a1){
T0* R=NULL;
R=r604get_class(a1);
return R;
}
/*No:BASE_CLASS.has_creation_clause*/
void r605make(T605* C){
{T863*n=malloc(sizeof(*n));
*n=M863;
r863with_capacity(n,6,1);
C->_isom=(T0*)n;
}
C->_path=r902item((((T676*)((T676*)(oBC364parser_buffer))))->_path/*0*/);
{T451*n=malloc(sizeof(*n));
*n=M451;
r451make_unknown(n);
C->_base_class_name=(T0*)n;
}
{T237*n=malloc(sizeof(*n));
*n=M237;
r237with_capacity(n,32);
C->_feature_dictionary=(T0*)n;
}
}
/*No:BASE_CLASS.parent_list*/
T0* r605root_procedure(T605* C,T0* a1){
T0* R=NULL;
T0* _f=NULL;
T0* _rc=NULL;
/*IF*/if (/*(IRF4.7is_generic*/((((T605*)C))->_formal_generic_list/*28*/)!=(NULL)/*)*/) {
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms10_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*//*IF*/if ((((T605*)C))->_is_deferred/*16*/) {
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms11_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/r446make(((T446*)(r605mem_rpn())),a1,(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_start_position/*4*/);
/*IF*/if (!(r605has_creation(C,r605mem_rpn()))) {
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6extend*/{char b1='\57';
r7extend(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms12_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*//*IF*/if (!(r605has_feature(C,a1))) {
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms13_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms14_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_fatal_error(((T683*)(oBC364eh)));
}
/*FI*/_rc=r605run_class(C);
r355set_at_run_time(((T355*)_rc));
_f=r605look_up_for(C,_rc,r605mem_rpn());
/*IF*/if ((_f)==((void*)(NULL))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms15_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms16_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/R=_f;
if(NULL!=(R))switch(((T0*)R)->id) {
case 297: 
break;
default:
R=NULL;
};/*IF*/if ((R)==((void*)(NULL))) {
r683add_position(X359start_position(_f));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms17_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/return R;
}
/*No:BASE_CLASS.error_vtec1*/
/*No:BASE_CLASS.path*/
/*No:BASE_CLASS.next_parent_for*/
void r605check_expanded_with(T605* C,T0* a1){
T0* _rf=NULL;
/*IF*/if ((((T605*)C))->_is_deferred/*16*/) {
r683add_type(a1,((T0*)ms72_470));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms1_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*//*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)!=((void*)(NULL))) {
r391check_expanded_with(((T391*)((((T605*)C))->_creation_clause_list/*44*/)),a1);
}
/*FI*/_rf=r605expanded_initializer(C,a1);
}
/*No:BASE_CLASS.isom*/
/*No:BASE_CLASS.first_parent_for*/
/*No:BASE_CLASS.index_list*/
/*No:BASE_CLASS.set_heading_comment1*/
void r605inherit_cycle_check(T605* C){
int _i=0;
r863add_last(((T863*)(oBC605visited)),(T0*)C);
/*IF*/if ((r863first(((T863*)(oBC605visited))))==((void*)(C))) {
/*[IRF3.6append*/{T0* b1=((T0*)ms19_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
_i=1;
while (!((_i)>((((T863*)((T863*)(oBC605visited))))->_upper/*8*/))) {
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)(r863item(((T863*)(oBC605visited)),_i)))))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*IF*/if ((_i)<((((T863*)((T863*)(oBC605visited))))->_upper/*8*/)) {
/*[IRF3.6append*/{T0* b1=((T0*)ms20_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
}
/*FI*/_i=(_i)+(1);
}
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms21_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
 else if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
r673inherit_cycle_check(((T673*)((((T605*)C))->_parent_list/*40*/)));
}
/*FI*/}
T0* r605new_name_of(T605* C,T0* a1,T0* a2){
T0* R=NULL;
/*IF*/if ((C)==((void*)(a1))) {
R=a2;
}
else {
R=r605up_to_original(((T605*)a1),(T0*)C,a2);
/*IF*/if ((R)==((void*)(NULL))) {
r683add_position(X776start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms143_470);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X776to_string(a2);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms2_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)((T605*)a1)))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms3_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms4_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/}
/*FI*/return R;
}
void r605set_is_expanded(T605* C){
/*IF*/if ((((T605*)C))->_is_deferred/*16*/) {
/*[IRF3.6error_vtec1*/{T605* C1=C;
r605error((((T451*)((T451*)((((T605*)C1))->_base_class_name/*24*/))))->_start_position/*4*/,((T0*)ms33_605));
}/*]*/
}
/*FI*/C->_is_expanded=1;
}
int r605super_has(T605* C,T0* a1){
int R=0;
/*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
/*IF*/if (r605is_general(C)) {
R=0;
}
else {
R=r605has(((T605*)(r605class_any())),a1);
}
/*FI*/}
else {
R=r673has(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
}
/*FI*/return R;
}
T0* r605up_to_original(T605* C,T0* a1,T0* a2){
T0* R=NULL;
/*IF*/if (r605proper_has(C,a2)) {
/*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
R=r605new_name_of_original(((T605*)a1),(T0*)C,a2);
}
else {
R=r673up_to_original(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
/*IF*/if ((R)==((void*)(NULL))) {
R=r605new_name_of_original(((T605*)a1),(T0*)C,a2);
}
/*FI*/}
/*FI*/}
 else if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
R=r673up_to_original(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
}
 else if (r605is_general(C)) {
}
else {
R=r605up_to_original(((T605*)(r605class_any())),a1,a2);
}
/*FI*/return R;
}
void r605collect_invariant(T605* C,T0* a1){
/*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
r673collect_invariant(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
}
/*FI*//*IF*/if (((((T605*)C))->_invariant_assertion/*52*/)!=((void*)(NULL))) {
/*[IRF3.6collect_invariant*/{T0* b1=(((T605*)C))->_invariant_assertion/*52*/;
r699add_into(((T699*)b1),oBC355ci_collector);
}/*]*/
}
/*FI*/}
int fBC605mem_rpn=0;
T0*oBC605mem_rpn=NULL;
T0* r605mem_rpn(void){
if (fBC605mem_rpn==0){
T0* R=NULL;
fBC605mem_rpn=1;
{T446*n=malloc(sizeof(*n));
*n=M446;
r446make(n,((T0*)ms28_605),NULL);
R=(T0*)n;
}
oBC605mem_rpn=R;}
return oBC605mem_rpn;}
/*No:BASE_CLASS.set_heading_comment2*/
int r605has(T605* C,T0* a1){
int R=0;
/*IF*/if (r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),X776to_key(a1))) {
R=1;
}
else {
R=r605super_has(C,a1);
}
/*FI*/return R;
}
int fBC364id_provider=0;
T0*oBC364id_provider=NULL;
T0* r605id_provider(void){
if (fBC364id_provider==0){
T0* R=NULL;
fBC364id_provider=1;
{T410*n=malloc(sizeof(*n));
*n=M410;
r410make(n);
R=(T0*)n;
}
oBC364id_provider=R;}
return oBC364id_provider;}
T0* r605run_class(T605* C){
T0* R=NULL;
T0* _type=NULL;
T0* _name=NULL;
T0* _rcd=NULL;
_name=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
/*IF*/if ((!((((T605*)C))->_is_deferred/*16*/))&&(!(/*(IRF4.7is_generic*/((((T605*)C))->_formal_generic_list/*28*/)!=(NULL)/*)*/))) {
_rcd=oBC604run_class_dictionary;
/*IF*/if (r250has(((T250*)_rcd),_name)) {
R=r250at(((T250*)_rcd),_name);
}
else {
{T657*n=malloc(sizeof(*n));
*n=M657;
/*[IRF3.3make*/((((T657*)(n)))->_base_class_name)=((((T605*)C))->_base_class_name/*24*/);
/*]*/
_type=(T0*)n;
}
R=r657run_class(((T657*)_type));
}
/*FI*/}
else {
r605error(NULL,((T0*)ms18_605));
}
/*FI*/return R;
}
/*No:BASE_CLASS.fz_09*/
int r605has_redefine(T605* C,T0* a1){
int R=0;
/*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
R=r673has_redefine(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
}
/*FI*/return R;
}
T0* r605look_up_for(T605* C,T0* a1,T0* a2){
T0* R=NULL;
int _i=0;
T0* _super_fn=NULL;
T0* _fnl=NULL;
T0* _cst_att=NULL;
T0* _fn_key=NULL;
T0* _super=NULL;
_fn_key=X776to_key(a2);
/*IF*/if (r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key)) {
R=r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key);
_super=r605super_look_up_for(C,a1,a2);
/*IF*/if ((_super)!=((void*)(NULL))) {
_cst_att=_super;
if(NULL!=(_cst_att))switch(((T0*)_cst_att)->id) {
case 380: case 588: case 398: case 689: case 554: case 580: case 835: case 118: 
break;
default:
_cst_att=NULL;
};/*IF*/if ((_cst_att)!=((void*)(NULL))) {
r683add_position(X359start_position(_super));
r683add_position(X359start_position(R));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms22_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/_fnl=/*X359*/((T0*)(((T398*)((T398*)_super)))->_names/*8*/);
_i=/*(IRF4.6count*/(((T855*)((T855*)((((T953*)((T953*)_fnl)))->_list/*0*/))))->_upper/*8*//*)*/;
while (!((_i)<(1))) {
_super_fn=/*(IRF4.6item*/r855item(((T855*)((((T953*)((T953*)_fnl)))->_list/*0*/)),_i)/*)*/;
/*IF*/if (X776is_frozen(_super_fn)) {
/*IF*/if ((X776to_key(_super_fn))==((void*)(_fn_key))) {
r683add_position(X776start_position(_super_fn));
r683add_position(X359start_position(R));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms23_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
/*FI*/}
/*FI*/_i=(_i)-(1);
}
/*IF*/if (!(X359can_hide(R,_super,a1))) {
r683add_position(X359start_position(_super));
r683add_position(X359start_position(R));
/*[IRF3.6append*/{T0* b1=((T0*)ms24_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_warning(((T683*)(oBC364eh)));
}
/*FI*//*IF*/if (X359is_deferred(_super)) {
}
 else if (r605has_redefine(C,a2)) {
}
else {
r683add_position(X359start_position(R));
r683add_position(X359start_position(_super));
/*[IRF3.6append*/{T0* b1=((T0*)ms25_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms26_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
r683print_as_error(((T683*)(oBC364eh)));
}
/*FI*/}
/*FI*/}
else {
R=r605super_look_up_for(C,a1,a2);
}
/*FI*/return R;
}
T0* r605get_copy(T605* C){
T0* R=NULL;
R=r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),((T0*)ms64_473));
return R;
}
void r605fatal_undefine(T605* C,T0* a1){
/*[IRF3.6append*/{T0* b1=((T0*)ms34_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X776to_string(a1);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms35_605);
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=(((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/;
r7append(((T7*)(oBC683explanation)),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms36_605);
r683fatal_error(((T683*)(oBC364eh)),b1);
}/*]*/
}
T0* r605expanded_initializer(T605* C,T0* a1){
T0* R=NULL;
/*IF*/if (((((T605*)C))->_creation_clause_list/*44*/)!=((void*)(NULL))) {
R=r391expanded_initializer(((T391*)((((T605*)C))->_creation_clause_list/*44*/)),a1);
}
/*FI*/return R;
}
T0* r605super_look_up_for(T605* C,T0* a1,T0* a2){
T0* R=NULL;
/*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
/*IF*/if (r605is_general(C)) {
R=NULL;
}
else {
R=r605look_up_for(((T605*)(r605class_any())),a1,a2);
}
/*FI*/}
else {
R=r673look_up_for(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
}
/*FI*/return R;
}
/*No:BASE_CLASS.invariant_assertion*/
void r605set_invariant(T605* C,T0* a1,T0* a2,T0* a3){
/*IF*/if (((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))) {
{T699*n=malloc(sizeof(*n));
*n=M699;
r699make(n,a1,a2,a3);
C->_invariant_assertion=(T0*)n;
}
}
/*FI*/}
/*No:BASE_CLASS.fz_dot*/
/*No:BASE_CLASS.set_formal_generic_list*/
T0* r605clients_for(T605* C,T0* a1){
T0* R=NULL;
/*IF*/if (r605proper_has(C,a1)) {
R=X359clients(r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),X776to_key(a1)));
}
 else if (r605is_general(C)) {
}
 else if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
R=r605clients_for(((T605*)(r605class_any())),a1);
}
else {
R=r673clients_for(((T673*)((((T605*)C))->_parent_list/*40*/)),a1);
}
/*FI*/return R;
}
/*No:BASE_CLASS.is_generic*/
T0*oBC605going_up_trace=NULL;
/*No:BASE_CLASS.heading_comment1*/
void r605set_is_deferred(T605* C){
/*IF*/if ((((T605*)C))->_is_expanded/*20*/) {
/*[IRF3.6error_vtec1*/{T605* C1=C;
r605error((((T451*)((T451*)((((T605*)C1))->_base_class_name/*24*/))))->_start_position/*4*/,((T0*)ms33_605));
}/*]*/
}
/*FI*/C->_is_deferred=1;
}
int r605proper_has(T605* C,T0* a1){
int R=0;
R=r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),X776to_key(a1));
return R;
}
T0* r605going_up(T605* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
R=r605going_up(((T605*)(r605class_any())),a1,a2,a3);
}
else {
R=r673going_up(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2,a3);
}
/*FI*/return R;
}
/*No:BASE_CLASS.set_obsolete_type_string*/
/*No:BASE_CLASS.formal_generic_list*/
int r605is_a_vncg(T605* C,T0* a1,T0* a2){
int R=0;
/*IF*/if (((((T605*)C))->_parent_list/*40*/)!=((void*)(NULL))) {
R=r673is_a_vncg(((T673*)((((T605*)C))->_parent_list/*40*/)),X291run_type(a1),X291run_type(a2));
}
/*FI*/return R;
}
void r605collect_for(T605* C,int a1,T0* a2){
T0* _fn_key=NULL;
_fn_key=X776to_key(a2);
/*IF*/if (r237has(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key)) {
X359collect_for(r237at(((T237*)((((T605*)C))->_feature_dictionary/*60*/)),_fn_key),a1);
}
/*FI*//*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
/*IF*/if (r605is_general(C)) {
}
else {
r605collect_for(((T605*)(r605class_any())),a1,a2);
}
/*FI*/}
else {
r673collect_for(((T673*)((((T605*)C))->_parent_list/*40*/)),a1,a2);
}
/*FI*/}
void r605error(T0* a1,T0* a2){
r683add_position(a1);
r683error(((T683*)(oBC364eh)),a2);
}
/*No:BASE_CLASS.fatal_error*/
int r605is_any(T605* C){
int R=0;
R=(((T0*)ms1_473))==((void*)((((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/));
return R;
}
/*No:BASE_CLASS.heading_comment2*/
int r605is_general(T605* C){
int R=0;
R=(((T0*)ms14_473))==((void*)((((T451*)((T451*)((((T605*)C))->_base_class_name/*24*/))))->_to_string/*0*/));
return R;
}
/*No:BASE_CLASS.feature_dictionary*/
T0* r605new_name_of_original(T605* C,T0* a1,T0* a2){
T0* R=NULL;
/*IF*/if ((C)==((void*)(a1))) {
R=a2;
}
 else if (r605is_general(C)) {
R=a2;
}
else {
/*IF*/if (((((T605*)C))->_parent_list/*40*/)==((void*)(NULL))) {
R=r605new_name_of(((T605*)(r605class_any())),a1,a2);
}
else {
/*[IRF3.3clear*/((((T854*)(((T854*)(oBC605going_up_trace)))))->_upper)=(-(1));
/*]*/
R=r673going_up(((T673*)((((T605*)C))->_parent_list/*40*/)),oBC605going_up_trace,a1,a2);
}
/*FI*/}
/*FI*/return R;
}
T0*oBC605visited=NULL;
/*No:BASE_CLASS.base_class_name*/
/*No:BASE_CLASS.is_expanded*/
/*No:BASE_CLASS.creation_clause_list*/
/*No:BASE_CLASS.us_any*/
/*No:BASE_CLASS.us_general*/
void r605warning(T0* a1,T0* a2){
r683add_position(a1);
r683warning(((T683*)(oBC364eh)),a2);
}
int r958id(T958* C){
int R=0;
R=(((T355*)((T355*)(r958run_class(C)))))->_id/*4*/;
return R;
}

