/*
-- 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 "pretty.h"
/*No:ASSERTION.tag*/


T0* r85start_position(T85* C){
T0* R=NULL;
/*[IF*/
if(((C)->_tag/*0*/)!=((void*)(NULL))){
R=((T90*)((C)->_tag/*0*/))->_start_position/*4*/;
}
 else if(((C)->_expression/*4*/)!=((void*)(NULL))){
R=X89start_position((C)->_expression/*4*/);
}
else{
R=((T64*)((C)->_comment/*8*/))->_start_position/*0*/;
}
/*FI]*/
return R;
}
/*No:ASSERTION.expression*/
/*No:ASSERTION.fz_is_not_boolean*/


T0* r85to_runnable(T85* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
R=(T0*)C;
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
_e=X89to_runnable((C)->_expression/*4*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r85error(r85start_position(C),((T0*)ms12_14266));
}
else{
C->_expression=_e;
/*[IF*/
if(!(X62is_boolean(X89result_type((C)->_expression/*4*/)))){
r37add_type(X89result_type((C)->_expression/*4*/),((T0*)ms12_18320));
r85error(r85start_position(C),((T0*)ms12_14266));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
else{
{T85*n=malloc(sizeof(*n));
*n=M85;
r85make(n,(C)->_tag/*0*/,(C)->_expression/*4*/,(C)->_comment/*8*/);
R=(T0*)n;
}
R=r85to_runnable(((T85*)R),a1);
}
/*FI]*/
return R;
}
/*No:ASSERTION.fz_bad_assertion*/
/*No:ASSERTION.current_type*/


void r85error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}


void r85make(T85* C,T0* a1,T0* a2,T0* a3){
C->_tag=a1;
C->_expression=a2;
C->_comment=a3;
}


void r85pretty_print(T85* C){
/*[IF*/
if(((C)->_tag/*0*/)!=((void*)(NULL))){
r310put_string((T310*)(oBC11fmt),((T90*)((C)->_tag/*0*/))->_to_string/*0*/);
r310put_string((T310*)(oBC11fmt),((T0*)ms85_186));
}
/*FI]*/
/*[IF*/
if(((C)->_expression/*4*/)!=((void*)(NULL))){
X89pretty_print((C)->_expression/*4*/);
/*[IF*/
if(((T310*)(oBC11fmt))->_semi_colon_flag/*25*/){
r310put_string((T310*)(oBC11fmt),((T0*)ms85_188));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_comment/*8*/)!=((void*)(NULL))){
r64pretty_print((T64*)((C)->_comment/*8*/));
}
/*FI]*/
}
/*No:ASSERTION.comment*/
/*No:REVERSE_ASSIGNMENT.nb_errors*/
/*No:REVERSE_ASSIGNMENT.fz_brhsoa*/


T0* r268start_position(T268* C){
T0* R=NULL;
R=X89start_position((C)->_left_side/*4*/);
return R;
}


T0* r268add_comment(T268* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T0* r268right_type(T268* C){
T0* R=NULL;
R=X89result_type((C)->_right_side/*8*/);
return R;
}
/*No:REVERSE_ASSIGNMENT.right_side*/


T0* r268to_runnable(T268* C,T0* a1){
T0* R=NULL;
T0* _e=NULL;
/*[IF*/
if(((C)->_current_type/*12*/)==((void*)(NULL))){
C->_current_type=a1;
_e=X89to_runnable((C)->_left_side/*4*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r268error(X89start_position((C)->_left_side/*4*/),((T0*)ms12_63888));
}
else{
C->_left_side=_e;
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
_e=X89to_runnable((C)->_right_side/*8*/,a1);
/*[IF*/
if((_e)==((void*)(NULL))){
r268error(X89start_position((C)->_right_side/*8*/),((T0*)ms12_67592));
}
else{
C->_right_side=_e;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0))&&(X62is_a(X62run_type(r268right_type(C)),X62run_type(r268left_type(C))))){
/*[IF*/
if((!(X89is_current((C)->_right_side/*8*/)))&&(!(X62is_like_current(r268left_type(C))))){
r37add_type(r268right_type(C),((T0*)ms268_3528));
r37add_type(r268left_type(C),((T0*)ms268_101700));
r268warning(r268start_position(C),((T0*)ms268_34875));
}
/*FI]*/
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
if(!(X62is_reference(X62run_type(r268left_type(C))))){
r37add_type(X62run_type(r268left_type(C)),((T0*)ms268_38975));
r268error(r268start_position(C),((T0*)ms268_71925));
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
{T268*n=malloc(sizeof(*n));
*n=M268;
r268make(n,(C)->_left_side/*4*/,(C)->_right_side/*8*/);
R=(T0*)n;
}
R=r268to_runnable(((T268*)R),a1);
}
/*FI]*/
return R;
}


void r268warning(T0* a1,T0* a2){
r37add_position(a1);
r37warning((T37*)(oBC11eh),a2);
}
/*No:REVERSE_ASSIGNMENT.fz_blhsoa*/
/*No:REVERSE_ASSIGNMENT.current_type*/


T0* r268left_type(T268* C){
T0* R=NULL;
R=X89result_type((C)->_left_side/*4*/);
return R;
}
/*No:REVERSE_ASSIGNMENT.left_side*/


void r268error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:REVERSE_ASSIGNMENT.end_mark_comment*/


void r268make(T268* C,T0* a1,T0* a2){
C->_left_side=a1;
C->_right_side=a2;
}


void r268pretty_print_assignment(T0* a1,T0* a2,T0* a3){
T6 _semi_colon_flag=0;
X89pretty_print(a1);
r310put_character((T310*)(oBC11fmt),'\40');
r310put_string((T310*)(oBC11fmt),a2);
r310put_character((T310*)(oBC11fmt),'\40');
_semi_colon_flag=((T310*)(oBC11fmt))->_semi_colon_flag/*25*/;
r310level_incr((T310*)(oBC11fmt));
/*[IRF3.3set_semi_colon_flag*/((((T310*)((T310*)(oBC11fmt))))->_semi_colon_flag)=(0);
/*]*/
X89pretty_print(a3);
/*[IRF3.3set_semi_colon_flag*/((((T310*)((T310*)(oBC11fmt))))->_semi_colon_flag)=(_semi_colon_flag);
/*]*/
/*[IF*/
if(_semi_colon_flag){
r310put_character((T310*)(oBC11fmt),'\73');
}
/*FI]*/
r310level_decr((T310*)(oBC11fmt));
}
/*No:REVERSE_ASSIGNMENT.pretty_print*/


void r182set_require_else(T182* C,T0* a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T271*n=malloc(sizeof(*n));
*n=M271;
r271make(n,a1,a2,a3);
C->_require_assertion=(T0*)n;
}
/*[IRF3.3set_require_else*/((((T271*)((T271*)((C)->_require_assertion/*16*/))))->_is_require_else)=(1);
/*]*/
}
/*FI]*/
}
/*No:TMP_FEATURE.set_obsolete_mark*/


T0* r182to_cst_att_integer(T182* C,T0* a1){
T0* R=NULL;
r182to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_integer((C)->_type/*4*/)){
{T197*n=malloc(sizeof(*n));
*n=M197;
r197make(n,r182n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
 else if(X62is_real((C)->_type/*4*/)){
{T195*n=malloc(sizeof(*n));
*n=M195;
r195make(n,r182n(),(C)->_type/*4*/,r158to_real_constant(((T158*)a1)));
R=(T0*)n;
}
}
 else if(X62is_double((C)->_type/*4*/)){
{T196*n=malloc(sizeof(*n));
*n=M196;
r196make(n,r182n(),(C)->_type/*4*/,r158to_real_constant(((T158*)a1)));
R=(T0*)n;
}
}
else{
r182error(X62start_position((C)->_type/*4*/),((T0*)ms182_236778));
}
/*FI]*/
return R;
}


T0* r182to_external_routine(T182* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T275*n=malloc(sizeof(*n));
*n=M275;
r275make(n,r182n(),(C)->_arguments/*0*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,a1,a2);
R=(T0*)n;
}
}
else{
{T276*n=malloc(sizeof(*n));
*n=M276;
r276make(n,r182n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,a1,a2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T0* r182to_deferred_routine(T182* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T270*n=malloc(sizeof(*n));
*n=M270;
/*[IRF3.6make*/{T270* C1=n;
T0* b1=r182n();
T0* b2=(C)->_arguments/*0*/;
T0* b3=(C)->_obsolete_mark/*12*/;
T0* b4=(C)->_header_comment/*8*/;
T0* b5=(C)->_require_assertion/*16*/;
r270make_routine(C1,b1,b2,b3,b4,b5);
}/*]*/
R=(T0*)n;
}
}
else{
{T272*n=malloc(sizeof(*n));
*n=M272;
r272make(n,r182n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.header_comment*/
T0*oBC182names=NULL;


T0* r182to_cst_att_boolean(T182* C,T0* a1){
T0* R=NULL;
r182to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_boolean((C)->_type/*4*/)){
{T189*n=malloc(sizeof(*n));
*n=M189;
r189make(n,r182n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r182error(X62start_position((C)->_type/*4*/),((T0*)ms182_147888));
}
/*FI]*/
return R;
}


T0* r182to_writable_attribute(T182* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
r182error(X65start_position(/*(IRF4.5first*//*(IRF4.6item*/(((T68*)(oBC182names))->_storage/*0*/)[0]/*)*//*)*/),((T0*)ms182_33810));
}
 else if(((C)->_arguments/*0*/)!=((void*)(NULL))){
/*[IRF3.6ecp*/{T51* C1=(T51*)(oBC11eiffel_parser);
T0* b1=((T0*)ms182_99097);
r51error(r51current_position(C1),b1);
}/*]*/
}
/*FI]*/
{T299*n=malloc(sizeof(*n));
*n=M299;
r299make(n,r182n(),(C)->_type/*4*/);
R=(T0*)n;
}
return R;
}
/*No:TMP_FEATURE.us_void*/


T0* r182to_procedure_or_function(T182* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T287*n=malloc(sizeof(*n));
*n=M287;
r287make(n,r182n(),(C)->_arguments/*0*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
else{
{T288*n=malloc(sizeof(*n));
*n=M288;
r288make(n,r182n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.fatal_error*/
/*No:TMP_FEATURE.set_local_vars*/


void r182set_require(T182* C,T0* a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T271*n=malloc(sizeof(*n));
*n=M271;
r271make(n,a1,a2,a3);
C->_require_assertion=(T0*)n;
}
}
/*FI]*/
}
/*No:TMP_FEATURE.arguments*/


void r182initialize(T182* C){
/*[IRF3.3clear*/((((T68*)((T68*)(oBC182names))))->_upper)=(-(1));
/*]*/
C->_arguments=NULL;
C->_type=NULL;
C->_header_comment=NULL;
C->_obsolete_mark=NULL;
C->_require_assertion=NULL;
C->_local_vars=NULL;
C->_routine_body=NULL;
}


T0* r182n(void){
T0* R=NULL;
{T67*n=malloc(sizeof(*n));
*n=M67;
r67make_n(n,oBC182names);
R=(T0*)n;
}
return R;
}
/*No:TMP_FEATURE.type*/


T0* r182to_cst_att_bit(T182* C,T0* a1){
T0* R=NULL;
r182to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_bit((C)->_type/*4*/)){
{T194*n=malloc(sizeof(*n));
*n=M194;
r194make(n,r182n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r182error(X62start_position((C)->_type/*4*/),((T0*)ms182_127680));
}
/*FI]*/
return R;
}


void r182add_synonym(T0* a1){
/*[IF*/
if((X65to_string(a1))==((void*)(((T0*)ms13_1648)))){
r37add_position(X65start_position(a1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms182_116370);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
r68add_last((T68*)(oBC182names),a1);
}
/*No:TMP_FEATURE.require_assertion*/
/*No:TMP_FEATURE.em01*/


T0* r182to_cst_att_real(T182* C,T0* a1){
T0* R=NULL;
r182to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_real((C)->_type/*4*/)){
{T195*n=malloc(sizeof(*n));
*n=M195;
r195make(n,r182n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
 else if(X62is_double((C)->_type/*4*/)){
{T196*n=malloc(sizeof(*n));
*n=M196;
r196make(n,r182n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r37add_position(X62start_position((C)->_type/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms182_186794);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.set_routine_body*/
/*No:TMP_FEATURE.set_arguments*/


void r182to_cst_att_check_result_type(T182* C){
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
r37add_position(X65start_position(/*(IRF4.5first*//*(IRF4.6item*/(((T68*)(oBC182names))->_storage/*0*/)[0]/*)*//*)*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms182_98322);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
 else if(!(X62is_run_type((C)->_type/*4*/))){
r37add_position(X62start_position((C)->_type/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms182_84360);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}


T0* r182to_cst_att_unique(T182* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
r37add_position(X65start_position(/*(IRF4.5first*//*(IRF4.6item*/(((T68*)(oBC182names))->_storage/*0*/)[0]/*)*//*)*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms182_87134);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
 else if(X62is_integer((C)->_type/*4*/)){
{T183*n=malloc(sizeof(*n));
*n=M183;
r183make(n,r182n(),(C)->_type/*4*/);
R=(T0*)n;
}
}
else{
r37add_position(X62start_position((C)->_type/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms182_87134);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
return R;
}


void r182error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}


T0* r182to_cst_att_string(T182* C,T0* a1){
T0* R=NULL;
r182to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_string((C)->_type/*4*/)){
{T191*n=malloc(sizeof(*n));
*n=M191;
r191make(n,r182n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r182error(X62start_position((C)->_type/*4*/),((T0*)ms182_142698));
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.routine_body*/


T0* r182to_cst_att_character(T182* C,T0* a1){
T0* R=NULL;
r182to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_character((C)->_type/*4*/)){
{T190*n=malloc(sizeof(*n));
*n=M190;
r190make(n,r182n(),(C)->_type/*4*/,a1);
R=(T0*)n;
}
}
else{
r182error(X62start_position((C)->_type/*4*/),((T0*)ms182_158544));
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.set_type*/
/*No:TMP_FEATURE.local_vars*/
/*No:TMP_FEATURE.set_header_comment*/


T0* r182to_once_routine(T182* C){
T0* R=NULL;
/*[IF*/
if(((C)->_type/*4*/)==((void*)(NULL))){
{T290*n=malloc(sizeof(*n));
*n=M290;
r290make(n,r182n(),(C)->_arguments/*0*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
else{
{T291*n=malloc(sizeof(*n));
*n=M291;
r291make(n,r182n(),(C)->_arguments/*0*/,(C)->_type/*4*/,(C)->_obsolete_mark/*12*/,(C)->_header_comment/*8*/,(C)->_require_assertion/*16*/,(C)->_local_vars/*20*/,(C)->_routine_body/*24*/);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:TMP_FEATURE.obsolete_mark*/
/*No:WRITTEN_CURRENT.start_position*/


T0* r141add_comment(T141* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T214*n=malloc(sizeof(*n));
*n=M214;
r214make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:WRITTEN_CURRENT.is_written*/


T2 r141to_integer(T141* C){
T2 R=0;
r141error((C)->_start_position/*4*/,((T0*)ms12_45846));
return R;
}
/*No:WRITTEN_CURRENT.print_as_target*/
/*No:WRITTEN_CURRENT.bracketed_pretty_print*/


T0* r141to_runnable(T141* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_result_type/*8*/)==((void*)(NULL))){
C->_result_type=a1;
R=(T0*)C;
}
 else if(((C)->_result_type/*8*/)==((void*)(a1))){
R=(T0*)C;
}
else{
{T141*n=malloc(sizeof(*n));
*n=M141;
/*[IRF3.3make*/((((T141*)(n)))->_start_position)=((C)->_start_position/*4*/);
/*]*/
R=(T0*)n;
}
R=r141to_runnable(((T141*)R),a1);
}
/*FI]*/
return R;
}
/*No:WRITTEN_CURRENT.fz_iinaiv*/
/*No:WRITTEN_CURRENT.result_type*/


void r141error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:WRITTEN_CURRENT.precedence*/
/*No:WRITTEN_CURRENT.make*/
/*No:WRITTEN_CURRENT.is_current*/
/*No:WRITTEN_CURRENT.pretty_print*/
/*No:WRITTEN_CURRENT.is_void*/
/*No:WRITTEN_CURRENT.us_current*/
/*No:WRITTEN_CURRENT.atomic_precedence*/


T6 r310print_end_loop(T310* C){
T6 R=0;
{int z1=(C)->_mode/*4*/;

if((1==z1)){
}
 else 
if((0==z1)){
}
 else 
if((2==z1)){
R=1;
}
 else {R=1;
}}
return R;
}
/*No:FMT.line*/


void r310level_incr(T310* C){
C->_indent_level=((C)->_indent_level/*21*/)+(1);
}


void r310level_decr(T310* C){
C->_indent_level=((C)->_indent_level/*21*/)-(1);
}


T6 r310print_end_check(T310* C){
T6 R=0;
{int z1=(C)->_mode/*4*/;

if((1==z1)){
}
 else 
if((0==z1)){
}
 else 
if((2==z1)){
R=1;
}
 else {R=1;
}}
return R;
}
/*No:FMT.column*/
/*No:FMT.blank_lines*/
/*No:FMT.set_default*/
/*No:FMT.last_character*/


T6 r310print_end_inspect(T310* C){
T6 R=0;
{int z1=(C)->_mode/*4*/;

if((1==z1)){
}
 else 
if((0==z1)){
}
 else 
if((2==z1)){
R=1;
}
 else {R=1;
}}
return R;
}


T6 r310print_end_if(T310* C){
T6 R=0;
{int z1=(C)->_mode/*4*/;

if((1==z1)){
}
 else 
if((0==z1)){
}
 else 
if((2==z1)){
R=1;
}
 else {R=1;
}}
return R;
}


void r310connect_to(T310* C,T0* a1){
C->_sfw=a1;
C->_line=1;
C->_column=1;
C->_blank_lines=0;
C->_last_character='\0';
}
/*No:FMT.C_zen*/
/*No:FMT.set_end*/


void r310put_string(T310* C,T0* a1){
T2 _i=0;
_i=1;
while (!((_i)>((((T7*)a1))->_count/*4*/))) {
r310put_character(C,/*(IRF4.6item*/((((T7*)a1))->_storage/*0*/)[(_i)-(1)]/*)*/);
_i=(_i)+(1);
}
}
/*No:FMT.sfw*/


void r310skip(T310* C,T2 a1){
while (!(((C)->_blank_lines/*16*/)>=(a1))) {
r310put_character(C,'\n');
}
r310indent(C);
}


T6 r310print_end_debug(T310* C){
T6 R=0;
{int z1=(C)->_mode/*4*/;

if((1==z1)){
}
 else 
if((0==z1)){
}
 else 
if((2==z1)){
R=1;
}
 else {R=1;
}}
return R;
}
/*No:FMT.C_default*/


void r310keyword(T310* C,T0* a1){
{int z1=(C)->_last_character/*20*/;

if((0==z1)||(10==z1)||(32==z1)){
}
 else{r310put_character(C,'\40');
}}
r310put_string(C,a1);
/*[IF*/
if(((C)->_last_character/*20*/)!=('\40')){
r310put_character(C,'\40');
}
/*FI]*/
}
/*No:FMT.set_indent_level*/
/*No:FMT.set_mode*/
/*No:FMT.set_zen*/


void r310indent(T310* C){
T2 _goal=0;
_goal=(1)+(((C)->_indent_level/*21*/)*(3));
/*[IF*/
if(((C)->_column/*8*/)>(_goal)){
r310put_character(C,'\n');
}
/*FI]*/
while (!((_goal)==((C)->_column/*8*/))) {
r310put_character(C,'\40');
}
{int z1=(C)->_last_character/*20*/;

if((10==z1)||(32==z1)){
}
 else{r310put_character(C,'\n');
r310indent(C);
}}
}
/*No:FMT.set_parano*/


T6 r310zen_mode(T310* C){
T6 R=0;
R=((C)->_mode/*4*/)==(1);
return R;
}


T6 r310print_end_routine(T310* C){
T6 R=0;
{int z1=(C)->_mode/*4*/;

if((1==z1)){
}
 else 
if((0==z1)){
R=1;
}
 else 
if((2==z1)){
R=1;
}
 else {R=1;
}}
return R;
}
/*No:FMT.C_end*/
/*No:FMT.indent_increment*/
/*No:FMT.set_semi_colon_flag*/


void r310put_end(T310* C,T0* a1){
r310put_string(C,((T0*)ms310_384));
r310put_string(C,a1);
r310put_character(C,'\n');
}
/*No:FMT.indent_level*/


T6 r310print_current(T310* C){
T6 R=0;
{int z1=(C)->_mode/*4*/;

if((1==z1)){
}
 else 
if((0==z1)){
}
 else 
if((2==z1)){
}
 else {R=1;
}}
return R;
}
/*No:FMT.C_parano*/
/*No:FMT.make*/


void r310put_character(T310* C,T3 a1){
/*[IRF3.6put_character*/{T309* C1=(T309*)((C)->_sfw/*0*/);
T3 b1=a1;
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
C->_last_character=a1;
{int z1=a1;

if((10==z1)){
C->_line=((C)->_line/*12*/)+(1);
C->_column=1;
C->_blank_lines=((C)->_blank_lines/*16*/)+(1);
}
 else 
if((9==z1)||(32==z1)){
C->_column=((C)->_column/*8*/)+(1);
}
 else{C->_column=((C)->_column/*8*/)+(1);
C->_blank_lines=-(1);
}}
}
/*No:FMT.semi_colon_flag*/
T0*oBC310tmp_string=NULL;


void r310put_integer(T310* C,T2 a1){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC310tmp_string))))->_count)=(0);
/*]*/
r2append_in(a1,oBC310tmp_string);
r310put_string(C,oBC310tmp_string);
}
/*No:FMT.mode*/


void r188increment(T188* C){
C->_value=((C)->_value/*0*/)+(1);
}
/*No:COUNTER.value*/
/*No:ONCE_PROCEDURE.fz_once*/
/*No:ONCE_PROCEDURE.rescue_compound*/
/*No:ONCE_PROCEDURE.use_current_state*/


T0* r290run_require(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _ar=NULL;
T0* _hc=NULL;
T0* _er=NULL;
T0* _r=NULL;
T2 _i=0;
r332clear((T332*)(oBC75require_collector));
_ct=/*X312current_type*/((T0*)(((T325*)a1))->_current_type/*4*/);
r41collect_for((T41*)(X62base_class(_ct)),1,/*X312name*/((T0*)(((T325*)a1))->_name/*16*/));
/*[IF*/
if(!(r332empty((T332*)(oBC75require_collector)))){
_i=1;
while (!((_i)>(((T332*)(oBC75require_collector))->_upper/*8*/))) {
_er=r332item((T332*)(oBC75require_collector),_i);
_hc=(((T271*)_er))->_header_comment/*4*/;
/*[IF*/
if(!(/*(IRF4.7empty*/((((T271*)_er))->_list/*8*/)==(NULL)/*)*/)){
_r=r290runnable((((T271*)_er))->_list/*8*/,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T271*n=malloc(sizeof(*n));
*n=M271;
r271make_runnable(n,_r,_ct,a1);
_er=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T271*)(((T271*)_er))))->_header_comment)=(_hc);
/*]*/
/*[IF*/
if((_ar)==((void*)(NULL))){
_ar=se_ma332(1,
_er);
}
else{
r332add_last(((T332*)_ar),_er);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if((_ar)!=((void*)(NULL))){
{T334*n=malloc(sizeof(*n));
*n=M334;
/*[IRF3.3make*/((((T334*)(n)))->_list)=(_ar);
/*]*/
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:ONCE_PROCEDURE.base_class*/
/*No:ONCE_PROCEDURE.set_rescue_compound*/


T0* r290start_position(T290* C){
T0* R=NULL;
R=X65start_position(/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/);
return R;
}


T6 r290is_merge_with(T290* C,T0* a1,T0* a2){
T6 R=0;
R=1;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
{/*AT*/R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
R=0;
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
R=0;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)((C)->_arguments/*24*/),X75arguments(a1),a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
R=1;
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if((R)&&(((C)->_arguments/*24*/)!=((void*)(NULL)))){
R=r171is_a_in((T171*)(X75arguments(a1)),(C)->_arguments/*24*/,a2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(R){
r290merge_header_comments(C,a1);
}
/*FI]*/
return R;
}


T0* r290runnable(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _a=NULL;
T2 _i=0;
/*[IF*/
if(!(r88empty(((T88*)a1)))){
R=r88twin(((T88*)a1));
_i=(((T88*)R))->_upper/*8*/;
while (!((_i)==(0))) {
r42push((T42*)(oBC11small_eiffel),a3);
_a=r85to_runnable((T85*)(r88item(((T88*)R),_i)),a2);
/*[IF*/
if((_a)==((void*)(NULL))){
r290error(r85start_position((T85*)(r88item(((T88*)R),_i))),((T0*)ms12_14266));
}
else{
/*[IRF3.6put*/{T88* C1=((T88*)R);
T0* b1=_a;
T2 b2=_i;
((C1)->_storage/*0*/)[(b2)-((C1)->_lower/*12*/)]=(b1);
}/*]*/
}
/*FI]*/
r42pop((T42*)(oBC11small_eiffel));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}
/*No:ONCE_PROCEDURE.not_computed*/
/*No:ONCE_PROCEDURE.first_name*/
/*No:ONCE_PROCEDURE.em1*/
/*No:ONCE_PROCEDURE.header_comment*/


void r290pretty_print_profile(T290* C){
r290pretty_print_names(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r290pretty_print_arguments(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(3);
/*]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:ONCE_PROCEDURE.names*/
/*No:ONCE_PROCEDURE.fz_03*/
/*No:ONCE_PROCEDURE.result_type*/
/*No:ONCE_PROCEDURE.code_require*/
/*No:ONCE_PROCEDURE.make_e_feature*/


void r290add_into(T290* C,T0* a1){
T0* _fn=NULL;
T2 _i=0;
C->_base_class=r39base_class((T39*)(X65start_position(r67item((T67*)((C)->_names/*8*/),1))));
_i=1;
while (!((_i)>(r67count((T67*)((C)->_names/*8*/))))) {
_fn=r67item((T67*)((C)->_names/*8*/),_i);
/*[IF*/
if(r74has(((T74*)a1),X65to_key(_fn))){
_fn=/*X75first_name*/((T0*)/*(IRF4.6first_name*/r67item(((T67*)(((T183*)(r74at(((T74*)a1),X65to_key(_fn))))->_names/*8*/)),1)/*)*/);
r37add_position(X65start_position(_fn));
r37add_position(X65start_position(r67item((T67*)((C)->_names/*8*/),_i)));
r37error((T37*)(oBC11eh),((T0*)ms75_41905));
/*[IRF3.6append*/{T0* b1=X65to_string(_fn);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37error((T37*)(oBC11eh),((T0*)ms12_47));
}
else{
r74put(((T74*)a1),(T0*)C,X65to_key(_fn));
}
/*FI]*/
_i=(_i)+(1);
}
}


T6 r290can_hide(T290* C,T0* a1,T0* a2){
T6 R=0;
/*[IF*/
if((/*(IRF4.1result_type*/NULL/*)*/)!=((void*)(X75result_type(a1)))){
/*[IF*/
{/*AT*/r37add_position(X75start_position(a1));
r290error(r290start_position(C),((T0*)ms75_64647));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(X75arguments(a1)))){
/*[IF*/
if((((C)->_arguments/*24*/)==((void*)(NULL)))||((X75arguments(a1))==((void*)(NULL)))){
r37add_position(X75start_position(a1));
r290error(r290start_position(C),((T0*)ms75_83182));
}
 else if((/*(IRF4.6count*/(((T175*)(((T171*)((C)->_arguments/*24*/))->_flat_list/*8*/)))->_upper/*12*//*)*/)!=(/*(IRF4.6count*/(((T175*)(((T171*)(X75arguments(a1)))->_flat_list/*8*/)))->_upper/*12*//*)*/)){
r37add_position(X75start_position(a1));
r290error(r290start_position(C),((T0*)ms75_67155));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
/*[IF*/
if(!(r171is_a_in((T171*)((C)->_arguments/*24*/),X75arguments(a1),a2))){
r37add_position(X75start_position(a1));
r37add_position(r290start_position(C));
/*[IRF3.6append*/{T0* b1=((T0*)ms75_54285);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark((((T313*)a2))->_current_type/*0*/);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37error((T37*)(oBC11eh),((T0*)ms12_47));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
R=(/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0);
/*[IF*/
if(R){
r290merge_header_comments(C,a1);
}
/*FI]*/
return R;
}
/*No:ONCE_PROCEDURE.ensure_assertion*/
/*No:ONCE_PROCEDURE.fz_rescue*/


T0* r290run_ensure(T0* a1){
T0* R=NULL;
T0* _ct=NULL;
T0* _r=NULL;
r88clear((T88*)(oBC75assertion_collector));
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(_default_item);
}/*]*/
_ct=/*X312current_type*/((T0*)(((T325*)a1))->_current_type/*4*/);
r41collect_for((T41*)(X62base_class(_ct)),2,/*X312name*/((T0*)(((T325*)a1))->_name/*16*/));
_r=r290runnable(oBC75assertion_collector,_ct,a1);
/*[IF*/
if((_r)!=((void*)(NULL))){
{T199*n=malloc(sizeof(*n));
*n=M199;
r199make_runnable(n,_r,_ct,a1);
R=(T0*)n;
}
/*[IRF3.3set_header_comment*/((((T199*)(((T199*)R))))->_header_comment)=(((T331*)(oBC75header_comment_memory))->_item/*0*/);
/*]*/
/*[IRF3.3clear*/{T0* _default_item=NULL;
((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(_default_item);
}/*]*/
}
/*FI]*/
return R;
}


void r290check_obsolete(T290* C){
/*[IF*/
if(!(((T42*)(oBC11small_eiffel))->_short_flag/*0*/)){
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.6append*/{T0* b1=((T0*)ms198_39396);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T154*)((C)->_obsolete_mark/*28*/))->_to_string/*8*/;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r290warning(r290start_position(C),((T0*)ms12_166));
}
/*FI]*/
}
/*FI]*/
}
/*No:ONCE_PROCEDURE.fz_is*/


T0* r290try_to_undefine(T290* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _fn2=NULL;
r37add_position(X65start_position(a1));
_fn2=r67feature_name((T67*)((C)->_names/*8*/),X65to_key(a1));
/*[IF*/
if((_fn2)!=((void*)(NULL))){
X65undefine_in(_fn2,a2);
}
/*FI]*/
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
R=r290try_to_undefine_aux(C,a1,a2);
/*[IF*/
if((R)!=((void*)(NULL))){
/*X269set_clients*//*[IRF3.3set_clients*/((((T272*)(((T272*)R))))->_clients)=((C)->_clients/*20*/);
/*]*/
r290merge_header_comments(C,R);
}
else{
r41fatal_undefine(((T41*)a2),a1);
}
/*FI]*/
return R;
}
/*No:ONCE_PROCEDURE.is_deferred*/
/*No:ONCE_PROCEDURE.set_clients*/
/*No:ONCE_PROCEDURE.code_ensure*/
/*No:ONCE_PROCEDURE.nb_errors*/


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


T0* r290to_run_feature(T290* C,T0* a1,T0* a2){
T0* R=NULL;
r290check_obsolete(C);
{T338*n=malloc(sizeof(*n));
*n=M338;
r338make(n,a1,a2,(T0*)C);
R=(T0*)n;
}
return R;
}


void r290merge_header_comments(T290* C,T0* a1){
/*[IF*/
if(((T42*)(oBC11small_eiffel))->_short_flag/*0*/){
/*[IF*/
if(((C)->_header_comment/*12*/)==((void*)(NULL))){
C->_header_comment=/*X75header_comment*/((T0*)(((T183*)a1))->_header_comment/*12*/);
}
 else if((/*X75header_comment*/((T0*)(((T183*)a1))->_header_comment/*12*/))==((void*)(NULL))){
X75set_header_comment(a1,(C)->_header_comment/*12*/);
}
/*FI]*/
}
/*FI]*/
}
/*No:ONCE_PROCEDURE.arguments*/
/*No:ONCE_PROCEDURE.pretty_print_once_or_do*/
/*No:ONCE_PROCEDURE.require_assertion*/


void r290pretty_print_routine_body(T290* C){
/*[IF*/
if(((C)->_local_vars/*16*/)!=((void*)(NULL))){
r162pretty_print((T162*)((C)->_local_vars/*16*/));
}
/*FI]*/
r310indent((T310*)(oBC11fmt));
/*[IRF3.2pretty_print_once_or_do*/r310put_string((T310*)(oBC11fmt),((T0*)ms12_1724a));
/*]*/
r310put_character((T310*)(oBC11fmt),'\40');
/*[IF*/
if(((C)->_routine_body/*44*/)!=((void*)(NULL))){
r200pretty_print((T200*)((C)->_routine_body/*44*/));
}
/*FI]*/
}


void r290pretty_print_arguments(T290* C){
/*[IF*/
if(((C)->_arguments/*24*/)!=((void*)(NULL))){
r171pretty_print((T171*)((C)->_arguments/*24*/));
}
/*FI]*/
}


void r290pretty_print_rescue(T290* C){
/*[IF*/
if(((C)->_rescue_compound/*48*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_7002));
r200pretty_print((T200*)((C)->_rescue_compound/*48*/));
}
/*FI]*/
}


void r290warning(T0* a1,T0* a2){
r37add_position(a1);
r37warning((T37*)(oBC11eh),a2);
}


T0* r290try_to_undefine_aux(T290* C,T0* a1,T0* a2){
T0* R=NULL;
{T270*n=malloc(sizeof(*n));
*n=M270;
r270from_effective(n,a1,(C)->_arguments/*24*/,(C)->_require_assertion/*32*/,(C)->_ensure_assertion/*36*/,a2);
R=(T0*)n;
}
return R;
}
/*No:ONCE_PROCEDURE.set_ensure_assertion*/
/*No:ONCE_PROCEDURE.fz_bad_assertion*/
/*No:ONCE_PROCEDURE.fz_obsolete*/
/*No:ONCE_PROCEDURE.fz_end*/
/*No:ONCE_PROCEDURE.fz_dot*/


void r290error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}


void r290make(T290* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6,T0* a7){
r290make_routine(C,a1,a2,a3,a4,a5);
C->_local_vars=a6;
C->_routine_body=a7;
C->_use_current_state=11;
}


void r290pretty_print_names(T290* C){
T2 _i=0;
_i=1;
X65declaration_pretty_print(r67item((T67*)((C)->_names/*8*/),_i));
_i=(_i)+(1);
while (!((_i)>(r67count((T67*)((C)->_names/*8*/))))) {
r310put_string((T310*)(oBC11fmt),((T0*)ms75_158));
X65declaration_pretty_print(r67item((T67*)((C)->_names/*8*/),_i));
_i=(_i)+(1);
}
}


void r290pretty_print(T290* C){
T0* _fn=NULL;
r310indent((T310*)(oBC11fmt));
r290pretty_print_profile(C);
r310keyword((T310*)(oBC11fmt),((T0*)ms12_446));
/*[IF*/
if(((C)->_obsolete_mark/*28*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_10928));
r154pretty_print((T154*)((C)->_obsolete_mark/*28*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_header_comment/*12*/)!=((void*)(NULL))){
r64pretty_print((T64*)((C)->_header_comment/*12*/));
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*32*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r271pretty_print((T271*)((C)->_require_assertion/*32*/));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r290pretty_print_routine_body(C);
/*[IF*/
if(((C)->_ensure_assertion/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r199pretty_print((T199*)((C)->_ensure_assertion/*36*/));
}
/*FI]*/
r290pretty_print_rescue(C);
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_951));
/*[IF*/
if((((C)->_end_comment/*40*/)!=((void*)(NULL)))&&(!(r64dummy((T64*)((C)->_end_comment/*40*/))))){
r64pretty_print((T64*)((C)->_end_comment/*40*/));
}
 else if(r310print_end_routine((T310*)(oBC11fmt))){
r310put_string((T310*)(oBC11fmt),((T0*)ms198_384));
_fn=/*(IRF4.6first_name*/r67item(((T67*)((C)->_names/*8*/)),1)/*)*/;
X65declaration_pretty_print(_fn);
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r310put_character((T310*)(oBC11fmt),'\n');
}
/*No:ONCE_PROCEDURE.routine_body*/


void r290collect_for(T290* C,T2 a1){
T0* _er=NULL;
/*[IF*/
if((a1)==(1)){
_er=(C)->_require_assertion/*32*/;
/*[IF*/
if((_er)!=((void*)(NULL))){
/*[IF*/
if(!(r332fast_has((T332*)(oBC75require_collector),_er))){
r332add_last((T332*)(oBC75require_collector),_er);
}
/*FI]*/
}
/*FI]*/
}
else{
/*[IF*/
if(((C)->_ensure_assertion/*36*/)!=((void*)(NULL))){
/*[IRF3.3set_item*/((((T331*)((T331*)(oBC75header_comment_memory))))->_item)=(((T199*)((C)->_ensure_assertion/*36*/))->_header_comment/*4*/);
/*]*/
r199add_into((T199*)((C)->_ensure_assertion/*36*/),oBC75assertion_collector);
}
/*FI]*/
}
/*FI]*/
}
/*No:ONCE_PROCEDURE.end_comment*/
/*No:ONCE_PROCEDURE.local_vars*/


void r290set_header_comment(T290* C,T0* a1){
/*[IF*/
if(((a1)!=((void*)(NULL)))&&((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)>(1))){
C->_end_comment=a1;
}
/*FI]*/
}
/*No:ONCE_PROCEDURE.clients*/
/*No:ONCE_PROCEDURE.obsolete_mark*/


void r37print_as_warning(T37* C){
/*[IF*/
if((C)->_no_warning/*8*/){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
else{
r37do_print(((T0*)ms37_8743));
r37incr_nb_warnings(C);
}
/*FI]*/
}
T0*oBC1std_error=NULL;
/*No:ERROR_HANDLER.nb_errors*/
T0*oBC37explanation=NULL;
/*No:ERROR_HANDLER.cancel*/
/*No:ERROR_HANDLER.nb_warnings*/


void r37print_as_fatal_error(T37* C){
r37do_print(((T0*)ms37_19327));
exit(1);
}


void r37print_as_error(T37* C){
r37do_print(((T0*)ms37_2685));
r37incr_nb_errors(C);
}


void r37incr_nb_errors(T37* C){
C->_nb_errors=((C)->_nb_errors/*4*/)+(1);
/*[IF*/
if(((C)->_nb_errors/*4*/)>=(6)){
r34put_string((T34*)(oBC1std_error),((T0*)ms12_3143));
r34put_string((T34*)(oBC1std_error),((T0*)ms37_10744));
exit(1);
}
/*FI]*/
}
/*No:ERROR_HANDLER.no_warning*/


void r37incr_nb_warnings(T37* C){
C->_nb_warnings=((C)->_nb_warnings/*0*/)+(1);
}


void r37warning(T37* C,T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37print_as_warning(C);
}


void r37error(T37* C,T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37print_as_error(C);
}
/*No:ERROR_HANDLER.make*/
/*No:ERROR_HANDLER.extend*/
/*No:ERROR_HANDLER.append*/
/*No:ERROR_HANDLER.set_no_warning*/
/*No:ERROR_HANDLER.exit_failure_code*/
T0*oBC37positions=NULL;
/*No:ERROR_HANDLER.fz_error_stars*/


void r37add_position(T0* a1){
/*[IF*/
if((a1)!=((void*)(NULL))){
/*[IF*/
if(!(r38has((T38*)(oBC37positions),a1))){
r38add_last((T38*)(oBC37positions),a1);
}
/*FI]*/
}
/*FI]*/
}


void r37add_type(T0* a1,T0* a2){
/*[IRF3.6append*/{T0* b1=((T0*)ms37_2325);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IF*/
if(X62is_run_type(a1)){
/*[IRF3.6append*/{T0* b1=X62run_time_mark(a1);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
}
else{
/*[IRF3.6append*/{T0* b1=X62written_mark(a1);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
}
/*FI]*/
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC37explanation),b1);
}/*]*/
r37add_position(X62start_position(a1));
}


void r37do_print(T0* a1){
T3 _previous_cc=0;
T3 _cc=0;
T2 _cpt=0;
T2 _i=0;
r34put_string((T34*)(oBC1std_error),((T0*)ms12_3143));
r34put_string((T34*)(oBC1std_error),a1);
r34put_string((T34*)(oBC1std_error),((T0*)ms37_384));
_i=1;
_cpt=(9)+((((T7*)a1))->_count/*4*/);
while (!((_i)>(((T7*)(oBC37explanation))->_count/*4*/))) {
_previous_cc=_cc;
_cc=/*(IRF4.6item*/(((T7*)(oBC37explanation))->_storage/*0*/)[(_i)-(1)]/*)*/;
_i=(_i)+(1);
/*[IF*/
if((_cpt)>(60)){
/*[IF*/
if((_cc)==('\40')){
/*[IRF3.6put_character*/{T34* C1=(T34*)(oBC1std_error);
T3 b1='\n';
putc(b1,((FILE*)(stderr)));
}/*]*/
_cpt=0;
}
 else if((_previous_cc)==('\54')){
/*[IRF3.6put_character*/{T34* C1=(T34*)(oBC1std_error);
T3 b1='\n';
putc(b1,((FILE*)(stderr)));
}/*]*/
/*[IRF3.6put_character*/{T34* C1=(T34*)(oBC1std_error);
T3 b1=_cc;
putc(b1,((FILE*)(stderr)));
}/*]*/
_cpt=1;
}
else{
/*[IRF3.6put_character*/{T34* C1=(T34*)(oBC1std_error);
T3 b1=_cc;
putc(b1,((FILE*)(stderr)));
}/*]*/
_cpt=(_cpt)+(1);
}
/*FI]*/
}
else{
/*[IRF3.6put_character*/{T34* C1=(T34*)(oBC1std_error);
T3 b1=_cc;
putc(b1,((FILE*)(stderr)));
}/*]*/
{int z1=_cc;

if((10==z1)){
_cpt=0;
}
 else{_cpt=(_cpt)+(1);
}}
}
/*FI]*/
}
/*[IRF3.6put_character*/{T34* C1=(T34*)(oBC1std_error);
T3 b1='\n';
putc(b1,((FILE*)(stderr)));
}/*]*/
_i=0;
while (!((_i)>(((T38*)(oBC37positions))->_upper/*8*/))) {
r39show((T39*)(/*(IRF4.6item*/(((T38*)(oBC37positions))->_storage/*0*/)[_i]/*)*/));
_i=(_i)+(1);
}
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
r34put_string((T34*)(oBC1std_error),((T0*)ms37_2170));
}


void r37fatal_error(T37* C,T0* a1){
r7append((T7*)(oBC37explanation),a1);
r37print_as_fatal_error(C);
}
/*No:PARENT.undefine_list*/


T6 r60has(T60* C,T0* a1){
T6 R=0;
T0* _fn2=NULL;
/*[IF*/
if(((C)->_rename_list/*12*/)==((void*)(NULL))){
R=r41has((T41*)(X62base_class((C)->_type/*4*/)),a1);
}
else{
_fn2=r69to_old_name((T69*)((C)->_rename_list/*12*/),a1);
/*[IF*/
if((_fn2)==((void*)(a1))){
_fn2=r69to_new_name((T69*)((C)->_rename_list/*12*/),a1);
/*[IF*/
if((_fn2)==((void*)(a1))){
R=r41has((T41*)(X62base_class((C)->_type/*4*/)),a1);
}
else{
R=r41has((T41*)(X62base_class((C)->_type/*4*/)),_fn2);
}
/*FI]*/
}
else{
R=r41has((T41*)(X62base_class((C)->_type/*4*/)),_fn2);
}
/*FI]*/
}
/*FI]*/
return R;
}
T0*oBC60forbidden_parent_list=NULL;


void r60select_conflict(T0* a1,T0* a2){
r37add_position(X65start_position(a1));
r37add_position(X65start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_74095);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}


T0* r60start_position(T60* C){
T0* R=NULL;
R=X62start_position((C)->_type/*4*/);
return R;
}
/*No:PARENT.undefine_memory2*/
/*No:PARENT.set_comment*/


T0* r60precursor_for(T60* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _original_fn=NULL;
_original_fn=/*X75first_name*/((T0*)/*(IRF4.6first_name*/r67item(((T67*)(((T183*)(X312base_feature(a2)))->_names/*8*/)),1)/*)*/);
/*[IF*/
if(r60has_redefine(C,_original_fn)){
/*[IF*/
if((/*X160parent*/((T0*)(((T161*)a1))->_parent/*8*/))==((void*)(NULL))){
R=r60look_up_for(C,X312run_class(a2),_original_fn);
}
 else if((((T49*)(/*X160parent*/((T0*)(((T161*)a1))->_parent/*8*/)))->_to_string/*0*/)==((void*)(((T49*)(X62base_class_name((C)->_type/*4*/)))->_to_string/*0*/))){
R=r60look_up_for(C,X312run_class(a2),_original_fn);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r60going_up(T60* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
T0* _bc=NULL;
_bc=X62base_class((C)->_type/*4*/);
/*[IF*/
if((_bc)==((void*)(a2))){
R=r60going_down(C,a1,a3);
}
 else if(r41is_general(((T41*)_bc))){
R=r60going_down(C,a1,a3);
}
 else if(r41is_subclass_of(((T41*)_bc),a2)){
r322add_last(((T322*)a1),(T0*)C);
R=r41going_up(((T41*)_bc),a1,a2,a3);
}
/*FI]*/
return R;
}
/*No:PARENT.em1*/


T0* r60look_up_for(T60* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _f=NULL;
T0* _fn2=NULL;
/*[IF*/
if((((C)->_rename_list/*12*/)==((void*)(NULL)))||(!(r69affect((T69*)((C)->_rename_list/*12*/),a2)))){
_f=X62look_up_for((C)->_type/*4*/,a1,a2);
R=r60apply_undefine(C,_f,a2);
}
else{
_fn2=r69to_old_name((T69*)((C)->_rename_list/*12*/),a2);
/*[IF*/
if((_fn2)!=((void*)(a2))){
_f=X62look_up_for((C)->_type/*4*/,a1,_fn2);
R=r60apply_undefine(C,_f,_fn2);
}
else{
_f=X62look_up_for((C)->_type/*4*/,a1,a2);
/*[IF*/
if((_f)==((void*)(NULL))){
r37add_position(X65start_position(a2));
/*[IRF3.6append*/{T0* b1=((T0*)ms12_7398);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X65to_string(a2);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_61083);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:PARENT.redefine_list*/


void r60get_started(T60* C,T0* a1){
T6 _all_check=0;
T0* _new_fn=NULL;
T0* _old_fn=NULL;
T0* _fn=NULL;
T0* _pbc=NULL;
T0* _wbc=NULL;
T2 _i=0;
_all_check=r54all_check((T54*)(oBC11run_control));
C->_parent_list=a1;
_pbc=X62base_class((C)->_type/*4*/);
_wbc=((T59*)((C)->_parent_list/*0*/))->_base_class/*0*/;
/*[IF*/
if(_all_check){
/*[IF*/
if(((((T41*)_pbc))->_formal_generic_list/*28*/)!=((void*)(NULL))){
/*[IF*/
if((X62generic_list((C)->_type/*4*/))==((void*)(NULL))){
}
/*FI]*/
}
 else if(X62is_generic((C)->_type/*4*/)){
r37add_position(((T49*)((((T41*)_pbc))->_name/*24*/))->_start_position/*4*/);
r37add_position(X62start_position((C)->_type/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_72275);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_all_check)&&(((C)->_rename_list/*12*/)!=((void*)(NULL)))){
r69get_started((T69*)((C)->_rename_list/*12*/),_pbc);
}
/*FI]*/
/*[IF*/
if((_all_check)&&(((C)->_undefine_list/*20*/)!=((void*)(NULL)))){
_i=r67count((T67*)((C)->_undefine_list/*20*/));
while (!((_i)==(0))) {
_fn=r67item((T67*)((C)->_undefine_list/*20*/),_i);
_old_fn=r60get_old_name(C,_fn);
/*[IF*/
if(((_old_fn)==((void*)(NULL)))&&(!(r41has(((T41*)_pbc),_fn)))){
r37add_position(X65start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_111496a);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
/*[IF*/
if(((C)->_redefine_list/*24*/)!=((void*)(NULL))){
_i=r67count((T67*)((C)->_redefine_list/*24*/));
while (!((_i)==(0))) {
_fn=r67item((T67*)((C)->_redefine_list/*24*/),_i);
/*[IF*/
if(!(r41proper_has(((T41*)_wbc),_fn))){
r37add_position(X65start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_35857);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(_all_check){
_old_fn=r60get_old_name(C,_fn);
/*[IF*/
if(((_old_fn)==((void*)(NULL)))&&(!(r41has(((T41*)_pbc),_fn)))){
r37add_position(X65start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_111496);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
/*[IF*/
if((_all_check)&&(((C)->_select_list/*28*/)!=((void*)(NULL)))){
_i=r67count((T67*)((C)->_select_list/*28*/));
while (!((_i)==(0))) {
_fn=r67item((T67*)((C)->_select_list/*28*/),_i);
_old_fn=r60get_old_name(C,_fn);
/*[IF*/
if(((_old_fn)==((void*)(NULL)))&&(!(r41has(((T41*)_pbc),_fn)))){
r37add_position(X65start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_94000);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
_new_fn=r60get_new_name(C,_fn);
/*[IF*/
if((_new_fn)!=((void*)(NULL))){
/*[IF*/
if((r60get_old_name(C,_new_fn))==((void*)(NULL))){
r37add_position(X65start_position(_new_fn));
r37add_position(X65start_position(_fn));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_94000);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
}


T0* r60apply_undefine(T60* C,T0* a1,T0* a2){
T0* R=NULL;
T2 _index=0;
T0* _fnkey=NULL;
T0* _ufn=NULL;
_ufn=r60has_undefine(C,a2);
/*[IF*/
if((_ufn)!=((void*)(NULL))){
/*[IF*/
if(((C)->_undefine_memory1/*32*/)==((void*)(NULL))){
{T23*n=malloc(sizeof(*n));
*n=M23;
r23with_capacity(n,r67count((T67*)((C)->_undefine_list/*20*/)));
C->_undefine_memory1=(T0*)n;
}
{T81*n=malloc(sizeof(*n));
*n=M81;
r81with_capacity(n,r67count((T67*)((C)->_undefine_list/*20*/)));
C->_undefine_memory2=(T0*)n;
}
}
/*FI]*/
_fnkey=X65to_key(_ufn);
_index=r23fast_index_of((T23*)((C)->_undefine_memory1/*32*/),_fnkey);
/*[IF*/
if((_index)>(((T23*)((C)->_undefine_memory1/*32*/))->_upper/*8*/)){
r23add_last((T23*)((C)->_undefine_memory1/*32*/),_fnkey);
R=X75try_to_undefine(a1,_ufn,((T59*)((C)->_parent_list/*0*/))->_base_class/*0*/);
r81add_last((T81*)((C)->_undefine_memory2/*36*/),R);
}
else{
R=/*(IRF4.6item*/(((T81*)((C)->_undefine_memory2/*36*/))->_storage/*0*/)[_index]/*)*/;
}
/*FI]*/
}
else{
R=a1;
}
/*FI]*/
return R;
}
/*No:PARENT.us_none*/
/*No:PARENT.us_integer*/
/*No:PARENT.rename_list*/
/*No:PARENT.set_select*/
/*No:PARENT.fz_09*/
/*No:PARENT.comment*/


T0* r60smallest_ancestor(T60* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(X62is_generic((C)->_type/*4*/)){
R=X62to_runnable((C)->_type/*4*/,a1);
}
else{
R=(C)->_type/*4*/;
}
/*FI]*/
return R;
}
/*No:PARENT.fatal_error*/


T6 r60has_redefine(T60* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_redefine_list/*24*/)!=((void*)(NULL))){
R=r67has((T67*)((C)->_redefine_list/*24*/),a1);
}
/*FI]*/
return R;
}
/*No:PARENT.set_redefine*/


T0* r60get_new_name(T60* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_rename_list/*12*/)!=((void*)(NULL))){
R=r69to_new_name((T69*)((C)->_rename_list/*12*/),a1);
/*[IF*/
if((R)==((void*)(a1))){
R=NULL;
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r60up_to_original(T60* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _bc=NULL;
T0* _old_name=NULL;
_bc=X62base_class((C)->_type/*4*/);
/*[IF*/
if(((C)->_rename_list/*12*/)==((void*)(NULL))){
R=r41up_to_original(((T41*)_bc),a1,a2);
}
 else if(r69affect((T69*)((C)->_rename_list/*12*/),a2)){
_old_name=r69to_old_name((T69*)((C)->_rename_list/*12*/),a2);
/*[IF*/
if((_old_name)!=((void*)(a2))){
R=r41up_to_original(((T41*)_bc),a1,_old_name);
}
/*FI]*/
}
else{
R=r41up_to_original(((T41*)_bc),a1,a2);
}
/*FI]*/
return R;
}
/*No:PARENT.us_double*/


void r60missing_select(T0* a1,T0* a2){
r37add_position(X65start_position(a1));
r37add_position(X65start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_99138);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*No:PARENT.parent_list*/
/*No:PARENT.us_character*/


T0* r60get_old_name(T60* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_rename_list/*12*/)!=((void*)(NULL))){
R=r69to_old_name((T69*)((C)->_rename_list/*12*/),a1);
/*[IF*/
if((R)==((void*)(a1))){
R=NULL;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:PARENT.type*/


T0* r60clients_for(T60* C,T0* a1){
T0* R=NULL;
T0* _old_fn=NULL;
/*[IF*/
if(((C)->_rename_list/*12*/)==((void*)(NULL))){
/*[IF*/
if(((C)->_export_list/*16*/)==((void*)(NULL))){
R=r41clients_for((T41*)(X62base_class((C)->_type/*4*/)),a1);
}
else{
R=r302clients_for((T302*)((C)->_export_list/*16*/),a1);
/*[IF*/
if((R)==((void*)(NULL))){
R=r41clients_for((T41*)(X62base_class((C)->_type/*4*/)),a1);
}
/*FI]*/
}
/*FI]*/
}
else{
_old_fn=r69to_old_name((T69*)((C)->_rename_list/*12*/),a1);
/*[IF*/
if(((C)->_export_list/*16*/)==((void*)(NULL))){
R=r41clients_for((T41*)(X62base_class((C)->_type/*4*/)),_old_fn);
}
else{
R=r302clients_for((T302*)((C)->_export_list/*16*/),_old_fn);
/*[IF*/
if((R)==((void*)(NULL))){
R=r41clients_for((T41*)(X62base_class((C)->_type/*4*/)),_old_fn);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r60has_undefine(T60* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_undefine_list/*20*/)!=((void*)(NULL))){
R=r67feature_name((T67*)((C)->_undefine_list/*20*/),X65to_key(a1));
}
/*FI]*/
return R;
}
/*No:PARENT.us_native_array*/
/*No:PARENT.set_undefine*/
/*No:PARENT.set_export*/


T0* r60do_rename(T60* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((C)->_rename_list/*12*/)==((void*)(NULL))){
R=a1;
}
else{
R=r69to_new_name((T69*)((C)->_rename_list/*12*/),a1);
}
/*FI]*/
return R;
}


void r60add_rename(T60* C,T0* a1){
/*[IF*/
if(((C)->_rename_list/*12*/)==((void*)(NULL))){
{T69*n=malloc(sizeof(*n));
*n=M69;
/*[IRF3.3make*/((((T69*)(n)))->_list)=(se_ma71(1,
a1));
/*]*/
C->_rename_list=(T0*)n;
}
}
else{
/*[IRF3.5add_last*/r71add_last(((T71*)(((T69*)((C)->_rename_list/*12*/))->_list/*0*/)),a1);
/*]*/
}
/*FI]*/
}
/*No:PARENT.undefine_memory1*/


T0* r60going_down(T60* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _previous=NULL;
/*[IF*/
if(((C)->_rename_list/*12*/)==((void*)(NULL))){
R=a2;
}
else{
R=r69to_new_name((T69*)((C)->_rename_list/*12*/),a2);
}
/*FI]*/
/*[IF*/
if(!(r322empty(((T322*)a1)))){
_previous=r322last(((T322*)a1));
r322remove_last(((T322*)a1));
R=r60going_down(((T60*)_previous),a1,R);
}
/*FI]*/
return R;
}
/*No:PARENT.us_bit*/


void r60multiple_check(T60* C,T0* a1){
T0* _fn2=NULL;
T0* _fn1=NULL;
T2 _i=0;
T0* _bc2=NULL;
T0* _bc1=NULL;
_bc1=X62base_class((C)->_type/*4*/);
_bc2=X62base_class((((T60*)a1))->_type/*4*/);
/*[IF*/
if((((_bc1)==((void*)(_bc2)))||(r41is_subclass_of(((T41*)_bc1),_bc2)))||(r41is_subclass_of(((T41*)_bc2),_bc1))){
/*[IF*/
if(((C)->_redefine_list/*24*/)!=((void*)(NULL))){
_i=r67count((T67*)((C)->_redefine_list/*24*/));
while (!((_i)==(0))) {
_fn1=r67item((T67*)((C)->_redefine_list/*24*/),_i);
/*[IF*/
if(((((T60*)a1))->_rename_list/*12*/)==((void*)(NULL))){
}
 else if(r69affect((T69*)((((T60*)a1))->_rename_list/*12*/),_fn1)){
_fn2=r69to_new_name((T69*)((((T60*)a1))->_rename_list/*12*/),_fn1);
/*[IF*/
if((_fn2)!=((void*)(_fn1))){
/*[IF*/
if(((C)->_select_list/*28*/)!=((void*)(NULL))){
/*[IF*/
if(r67has((T67*)((C)->_select_list/*28*/),_fn1)){
/*[IF*/
if(((((T60*)a1))->_select_list/*28*/)!=((void*)(NULL))){
/*[IF*/
if(r67has((T67*)((((T60*)a1))->_select_list/*28*/),_fn2)){
r60select_conflict(_fn1,_fn2);
}
/*FI]*/
}
/*FI]*/
}
 else if(((((T60*)a1))->_select_list/*28*/)==((void*)(NULL))){
r60missing_select(_fn1,_fn2);
}
 else if(!(r67has((T67*)((((T60*)a1))->_select_list/*28*/),_fn2))){
r60missing_select(_fn1,_fn2);
}
/*FI]*/
}
 else if(((((T60*)a1))->_select_list/*28*/)==((void*)(NULL))){
r60missing_select(_fn1,_fn2);
}
 else if(!(r67has((T67*)((((T60*)a1))->_select_list/*28*/),_fn2))){
r60missing_select(_fn1,_fn2);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
_i=(_i)-(1);
}
}
/*FI]*/
}
/*FI]*/
}
/*No:PARENT.us_pointer*/


T6 r60has_select_for(T60* C,T0* a1){
T6 R=0;
/*[IF*/
if(((C)->_select_list/*28*/)!=((void*)(NULL))){
R=r67has((T67*)((C)->_select_list/*28*/),a1);
}
/*FI]*/
return R;
}


void r60make(T60* C,T0* a1){
C->_type=a1;
/*[IF*/
if(r32fast_has((T32*)(oBC60forbidden_parent_list),X62written_mark((C)->_type/*4*/))){
r37add_position(X62start_position((C)->_type/*4*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms60_22860);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62written_mark((C)->_type/*4*/);
r7append((T7*)(oBC37explanation),b1);
}/*]*/
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_34704);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
}
/*No:PARENT.us_real*/


void r60pretty_print(T60* C){
T6 _end_needed=0;
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r310indent((T310*)(oBC11fmt));
X62pretty_print((C)->_type/*4*/);
/*[IF*/
if(((((((C)->_rename_list/*12*/)==((void*)(NULL)))&&(((C)->_export_list/*16*/)==((void*)(NULL))))&&(((C)->_undefine_list/*20*/)==((void*)(NULL))))&&(((C)->_redefine_list/*24*/)==((void*)(NULL))))&&(((C)->_select_list/*28*/)==((void*)(NULL)))){
r310put_character((T310*)(oBC11fmt),'\73');
}
/*FI]*/
/*[IF*/
if(((C)->_comment/*8*/)!=((void*)(NULL))){
r310put_character((T310*)(oBC11fmt),'\40');
r64pretty_print((T64*)((C)->_comment/*8*/));
}
/*FI]*/
/*[IF*/
if(((C)->_rename_list/*12*/)!=((void*)(NULL))){
_end_needed=1;
r69pretty_print((T69*)((C)->_rename_list/*12*/));
}
/*FI]*/
/*[IF*/
if(((C)->_export_list/*16*/)!=((void*)(NULL))){
_end_needed=1;
r302pretty_print((T302*)((C)->_export_list/*16*/));
}
/*FI]*/
/*[IF*/
if(((C)->_undefine_list/*20*/)!=((void*)(NULL))){
_end_needed=1;
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms60_10824));
r67pretty_print((T67*)((C)->_undefine_list/*20*/));
}
/*FI]*/
/*[IF*/
if(((C)->_redefine_list/*24*/)!=((void*)(NULL))){
_end_needed=1;
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms60_10728));
r67pretty_print((T67*)((C)->_redefine_list/*24*/));
}
/*FI]*/
/*[IF*/
if(((C)->_select_list/*28*/)!=((void*)(NULL))){
_end_needed=1;
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms60_7410));
r67pretty_print((T67*)((C)->_select_list/*28*/));
}
/*FI]*/
/*[IF*/
if(_end_needed){
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(2);
/*]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms60_1520));
}
/*FI]*/
/*[IRF3.3set_indent_level*/((((T310*)((T310*)(oBC11fmt))))->_indent_level)=(1);
/*]*/
r310indent((T310*)(oBC11fmt));
}


void r60collect_for(T60* C,T2 a1,T0* a2){
T0* _fn2=NULL;
/*[IF*/
if((((C)->_rename_list/*12*/)==((void*)(NULL)))||(!(r69affect((T69*)((C)->_rename_list/*12*/),a2)))){
r41collect_for((T41*)(X62base_class((C)->_type/*4*/)),a1,a2);
}
else{
_fn2=r69to_old_name((T69*)((C)->_rename_list/*12*/),a2);
/*[IF*/
if((_fn2)!=((void*)(a2))){
r41collect_for((T41*)(X62base_class((C)->_type/*4*/)),a1,_fn2);
}
/*FI]*/
}
/*FI]*/
}


T6 r60is_a_vncg(T60* C,T0* a1,T0* a2){
T6 R=0;
T0* _t2_bcn=NULL;
T0* _type_bcn=NULL;
T0* _t2_bc=NULL;
T0* _type_bc=NULL;
T0* _rt=NULL;
T0* _tfg=NULL;
T0* _gl2=NULL;
T0* _gl1=NULL;
T0* _gl=NULL;
T2 _i=0;
T2 _rank=0;
_type_bc=X62base_class((C)->_type/*4*/);
_type_bcn=((T49*)((((T41*)_type_bc))->_name/*24*/))->_to_string/*0*/;
_t2_bc=X62base_class(a2);
_t2_bcn=((T49*)((((T41*)_t2_bc))->_name/*24*/))->_to_string/*0*/;
/*[IF*/
if((_type_bcn)==((void*)(_t2_bcn))){
_gl=X62generic_list((C)->_type/*4*/);
_gl2=X62generic_list(a2);
/*[IF*/
if(((_gl)==((void*)(NULL)))||((r245count(((T245*)_gl)))!=(r245count(((T245*)_gl2))))){
r37add_position(X62start_position((C)->_type/*4*/));
r37add_position(X62start_position(a2));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms60_60544);
r37fatal_error((T37*)(oBC11eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(X62is_generic(a1)){
_gl1=X62generic_list(a1);
R=1;
_i=r245count(((T245*)_gl2));
while (!((!(R))||((_i)==(0)))) {
/*[IF*/
if(X62is_formal_generic(r245item(((T245*)_gl),_i))){
_tfg=r245item(((T245*)_gl),_i);
if(NULL!=(_tfg))switch(((T0*)_tfg)->id) {
case 265: 
break;
default:
_tfg=NULL;
};_rank=(((T265*)_tfg))->_rank/*8*/;
R=X62is_a(r245item(((T245*)_gl1),_rank),r245item(((T245*)_gl2),_i));
}
else{
_rt=X62run_type(X62to_runnable(r245item(((T245*)_gl),_i),a1));
R=X62is_a(_rt,r245item(((T245*)_gl2),_i));
}
/*FI]*/
_i=(_i)-(1);
}
}
else{
R=X62is_a((C)->_type/*4*/,a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
/*FI]*/
}
 else if(r41is_subclass_of(((T41*)_type_bc),_t2_bc)){
/*[IF*/
if(X62is_generic(a1)){
_rt=X62run_type(X62to_runnable((C)->_type/*4*/,a1));
R=r41is_a_vncg(((T41*)_type_bc),_rt,a2);
}
else{
R=r41is_a_vncg(((T41*)_type_bc),(C)->_type/*4*/,a2);
}
/*FI]*/
/*[IF*/
if(!(R)){
/*[IRF3.2cancel*//*[IRF3.3clear*/((((T7*)((T7*)(oBC37explanation))))->_count)=(0);
/*]*/
/*[IRF3.3clear*/((((T38*)((T38*)(oBC37positions))))->_upper)=(-(1));
/*]*/
/*]*/
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:PARENT.export_list*/
/*No:PARENT.select_list*/
/*No:PARENT.us_boolean*/
/*No:E_LOOP.nb_errors*/
/*No:E_LOOP.fz_variant*/
/*No:E_LOOP.initialize*/
/*No:E_LOOP.start_position*/


T0* r228add_comment(T228* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
 else {/*AT*//*[IF*/
if((/*(IRF4.6count*/r32count(((T32*)((((T64*)a1))->_list/*4*/)))/*)*/)==(1)){
R=(T0*)C;
}
else{
{T209*n=malloc(sizeof(*n));
*n=M209;
r209make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:E_LOOP.fz_is_not_boolean*/


T0* r228to_runnable(T228* C,T0* a1){
T0* R=NULL;
T6 _loop_check=0;
T0* _ue=NULL;
_loop_check=r54loop_check((T54*)(oBC11run_control));
/*[IF*/
if(((C)->_current_type/*28*/)==((void*)(NULL))){
C->_current_type=a1;
/*[IF*/
if(((C)->_initialize/*8*/)!=((void*)(NULL))){
C->_initialize=r200to_runnable((T200*)((C)->_initialize/*8*/),a1);
/*[IF*/
if(((C)->_initialize/*8*/)==((void*)(NULL))){
r228error((C)->_start_position/*4*/,((T0*)ms228_36456));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((C)->_invariant_clause/*12*/)!=((void*)(NULL)))){
C->_invariant_clause=r227to_runnable((T227*)((C)->_invariant_clause/*12*/),a1);
/*[IF*/
if(((C)->_invariant_clause/*12*/)==((void*)(NULL))){
r228error((C)->_start_position/*4*/,((T0*)ms228_14826));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((_loop_check)&&(((C)->_variant_clause/*16*/)!=((void*)(NULL)))){
C->_variant_clause=X226to_runnable((C)->_variant_clause/*16*/,a1);
/*[IF*/
if(((C)->_variant_clause/*16*/)==((void*)(NULL))){
r228error((C)->_start_position/*4*/,((T0*)ms228_42224));
}
/*FI]*/
}
/*FI]*/
_ue=X89to_runnable((C)->_until_expression/*20*/,a1);
/*[IF*/
if((_ue)!=((void*)(NULL))){
/*[IF*/
if(!(X62is_boolean(X89result_type(_ue)))){
r228error(X89start_position(_ue),((T0*)ms228_78732));
r37add_type(X89result_type(_ue),((T0*)ms12_18320));
r37print_as_error((T37*)(oBC11eh));
}
/*FI]*/
C->_until_expression=_ue;
}
else{
r228error((C)->_start_position/*4*/,((T0*)ms228_75996));
}
/*FI]*/
/*[IF*/
if(((C)->_loop_body/*24*/)!=((void*)(NULL))){
C->_loop_body=r200to_runnable((T200*)((C)->_loop_body/*24*/),a1);
/*[IF*/
if(((C)->_loop_body/*24*/)==((void*)(NULL))){
r228error((C)->_start_position/*4*/,((T0*)ms228_24282));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if((/*(IRF4.9nb_errors*/((T37*)(oBC11eh))->_nb_errors/*4*//*)*/)==(0)){
R=(T0*)C;
}
/*FI]*/
}
else{
{T228*n=malloc(sizeof(*n));
*n=M228;
r228make(n,(C)->_start_position/*4*/,(C)->_initialize/*8*/,(C)->_invariant_clause/*12*/,(C)->_variant_clause/*16*/,(C)->_until_expression/*20*/,(C)->_loop_body/*24*/);
R=(T0*)n;
}
R=r228to_runnable(((T228*)R),a1);
}
/*FI]*/
return R;
}
/*No:E_LOOP.fz_loop*/
/*No:E_LOOP.current_type*/
/*No:E_LOOP.invariant_clause*/
/*No:E_LOOP.until_expression*/


void r228error(T0* a1,T0* a2){
r37add_position(a1);
r37error((T37*)(oBC11eh),a2);
}
/*No:E_LOOP.end_mark_comment*/


void r228make(T228* C,T0* a1,T0* a2,T0* a3,T0* a4,T0* a5,T0* a6){
C->_start_position=a1;
C->_initialize=a2;
C->_invariant_clause=a3;
C->_variant_clause=a4;
C->_until_expression=a5;
C->_loop_body=a6;
}
/*No:E_LOOP.fz_from*/
/*No:E_LOOP.fz_until*/


void r228pretty_print(T228* C){
T6 _semi_colon_flag=0;
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_1784));
/*[IF*/
if(((C)->_initialize/*8*/)!=((void*)(NULL))){
r200pretty_print((T200*)((C)->_initialize/*8*/));
}
/*FI]*/
/*[IF*/
if(((C)->_invariant_clause/*12*/)!=((void*)(NULL))){
r227pretty_print((T227*)((C)->_invariant_clause/*12*/));
}
/*FI]*/
/*[IF*/
if(((C)->_variant_clause/*16*/)!=((void*)(NULL))){
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_9506));
_semi_colon_flag=((T310*)(oBC11fmt))->_semi_colon_flag/*25*/;
/*[IRF3.3set_semi_colon_flag*/((((T310*)((T310*)(oBC11fmt))))->_semi_colon_flag)=(0);
/*]*/
X226pretty_print((C)->_variant_clause/*16*/);
/*[IRF3.3set_semi_colon_flag*/((((T310*)((T310*)(oBC11fmt))))->_semi_colon_flag)=(_semi_colon_flag);
/*]*/
}
/*FI]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_2855));
r310level_incr((T310*)(oBC11fmt));
r310indent((T310*)(oBC11fmt));
/*[IRF3.3set_semi_colon_flag*/((((T310*)((T310*)(oBC11fmt))))->_semi_colon_flag)=(0);
/*]*/
X89pretty_print((C)->_until_expression/*20*/);
r310level_decr((T310*)(oBC11fmt));
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms12_1808));
r310indent((T310*)(oBC11fmt));
/*[IF*/
if(((C)->_loop_body/*24*/)!=((void*)(NULL))){
r200pretty_print((T200*)((C)->_loop_body/*24*/));
}
/*FI]*/
r310indent((T310*)(oBC11fmt));
r310keyword((T310*)(oBC11fmt),((T0*)ms228_1520));
/*[IF*/
if(r310print_end_loop((T310*)(oBC11fmt))){
r310put_end((T310*)(oBC11fmt),((T0*)ms12_1808));
}
/*FI]*/
}
/*No:E_LOOP.variant_clause*/
/*No:E_LOOP.loop_body*/

