+/* method rapid_type_analysis#RapidTypeAnalysis#live_types_to_csv for (self: RapidTypeAnalysis): CSVDocument */
+val* rapid_type_analysis__RapidTypeAnalysis__live_types_to_csv(val* self) {
+val* var /* : CSVDocument */;
+val* var1 /* : HashSet[MType] */;
+val* var_typeset /* var typeset: HashSet[MType] */;
+val* var2 /* : HashSet[MClassType] */;
+val* var3 /* : HashSet[MClassType] */;
+val* var4 /* : HashSet[MType] */;
+val* var5 /* : HashSet[MType] */;
+val* var6 /* : Array[nullable Object] */;
+val* var_types /* var types: Array[MType] */;
+val* var7 /* : CachedAlphaComparator */;
+val* var8 /* : CSVDocument */;
+val* var_res /* var res: CSVDocument */;
+static val* varonce;
+val* var9 /* : String */;
+char* var10 /* : NativeString */;
+long var11 /* : Int */;
+val* var12 /* : String */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+long var16 /* : Int */;
+val* var17 /* : String */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+long var21 /* : Int */;
+val* var22 /* : String */;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+long var26 /* : Int */;
+val* var27 /* : String */;
+val* var28 /* : Array[String] */;
+long var29 /* : Int */;
+val* var30 /* : NativeArray[String] */;
+val* var31 /* : Iterator[nullable Object] */;
+short int var32 /* : Bool */;
+val* var33 /* : nullable Object */;
+val* var_t /* var t: MType */;
+short int var34 /* : Bool */;
+static val* varonce35;
+val* var36 /* : String */;
+char* var37 /* : NativeString */;
+long var38 /* : Int */;
+val* var39 /* : String */;
+val* var_reso /* var reso: nullable Object */;
+static val* varonce40;
+val* var41 /* : String */;
+char* var42 /* : NativeString */;
+long var43 /* : Int */;
+val* var44 /* : String */;
+short int var45 /* : Bool */;
+short int var46 /* : Bool */;
+int cltype;
+int idtype;
+short int var47 /* : Bool */;
+val* var48 /* : HashSet[MClassType] */;
+short int var49 /* : Bool */;
+val* var50 /* : HashSet[MClassType] */;
+short int var51 /* : Bool */;
+static val* varonce52;
+val* var53 /* : String */;
+char* var54 /* : NativeString */;
+long var55 /* : Int */;
+val* var56 /* : String */;
+val* var_live /* var live: nullable Object */;
+static val* varonce57;
+val* var58 /* : String */;
+char* var59 /* : NativeString */;
+long var60 /* : Int */;
+val* var61 /* : String */;
+short int var62 /* : Bool */;
+val* var63 /* : HashSet[MType] */;
+short int var64 /* : Bool */;
+val* var65 /* : HashSet[MType] */;
+short int var66 /* : Bool */;
+static val* varonce67;
+val* var68 /* : String */;
+char* var69 /* : NativeString */;
+long var70 /* : Int */;
+val* var71 /* : String */;
+val* var_cast /* var cast: nullable Object */;
+static val* varonce72;
+val* var73 /* : String */;
+char* var74 /* : NativeString */;
+long var75 /* : Int */;
+val* var76 /* : String */;
+val* var77 /* : Array[Object] */;
+long var78 /* : Int */;
+val* var79 /* : NativeArray[Object] */;
+var1 = NEW_hash_collection__HashSet(&type_hash_collection__HashSetmodel__MType);
+((void (*)(val*))(var1->class->vft[COLOR_hash_collection__HashSet__init]))(var1) /* init on <var1:HashSet[MType]>*/;
+var_typeset = var1;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on <self:RapidTypeAnalysis>*/;
+((void (*)(val*, val*))(var_typeset->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_typeset, var2) /* add_all on <var_typeset:HashSet[MType]>*/;
+var3 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_types]))(self) /* live_open_types on <self:RapidTypeAnalysis>*/;
+((void (*)(val*, val*))(var_typeset->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_typeset, var3) /* add_all on <var_typeset:HashSet[MType]>*/;
+var4 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_cast_types]))(self) /* live_cast_types on <self:RapidTypeAnalysis>*/;
+((void (*)(val*, val*))(var_typeset->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_typeset, var4) /* add_all on <var_typeset:HashSet[MType]>*/;
+var5 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types]))(self) /* live_open_cast_types on <self:RapidTypeAnalysis>*/;
+((void (*)(val*, val*))(var_typeset->class->vft[COLOR_abstract_collection__SimpleCollection__add_all]))(var_typeset, var5) /* add_all on <var_typeset:HashSet[MType]>*/;
+var6 = ((val* (*)(val*))(var_typeset->class->vft[COLOR_array__Collection__to_a]))(var_typeset) /* to_a on <var_typeset:HashSet[MType]>*/;
+var_types = var6;
+var7 = NEW_string__CachedAlphaComparator(&type_string__CachedAlphaComparator);
+((void (*)(val*))(var7->class->vft[COLOR_string__CachedAlphaComparator__init]))(var7) /* init on <var7:CachedAlphaComparator>*/;
+((void (*)(val*, val*))(var7->class->vft[COLOR_sorter__AbstractSorter__sort]))(var7, var_types) /* sort on <var7:CachedAlphaComparator>*/;
+var8 = NEW_csv__CSVDocument(&type_csv__CSVDocument);
+((void (*)(val*))(var8->class->vft[COLOR_csv__CSVDocument__init]))(var8) /* init on <var8:CSVDocument>*/;
+var_res = var8;
+if (varonce) {
+var9 = varonce;
+} else {
+var10 = "Type";
+var11 = 4;
+var12 = string__NativeString__to_s_with_length(var10, var11);
+var9 = var12;
+varonce = var9;
+}
+if (varonce13) {
+var14 = varonce13;
+} else {
+var15 = "Resolution";
+var16 = 10;
+var17 = string__NativeString__to_s_with_length(var15, var16);
+var14 = var17;
+varonce13 = var14;
+}
+if (varonce18) {
+var19 = varonce18;
+} else {
+var20 = "Liveness";
+var21 = 8;
+var22 = string__NativeString__to_s_with_length(var20, var21);
+var19 = var22;
+varonce18 = var19;
+}
+if (varonce23) {
+var24 = varonce23;
+} else {
+var25 = "Cast-liveness";
+var26 = 13;
+var27 = string__NativeString__to_s_with_length(var25, var26);
+var24 = var27;
+varonce23 = var24;
+}
+var28 = NEW_array__Array(&type_array__Arraystring__String);
+{ /* var28 = array_instance Array[String] */
+var29 = 4;
+var30 = NEW_array__NativeArray(var29, &type_array__NativeArraystring__String);
+((struct instance_array__NativeArray*)var30)->values[0] = (val*) var9;
+((struct instance_array__NativeArray*)var30)->values[1] = (val*) var14;
+((struct instance_array__NativeArray*)var30)->values[2] = (val*) var19;
+((struct instance_array__NativeArray*)var30)->values[3] = (val*) var24;
+((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[String]>*/;
+}
+((void (*)(val*, val*))(var_res->class->vft[COLOR_csv__CSVDocument__header_61d]))(var_res, var28) /* header= on <var_res:CSVDocument>*/;
+var31 = ((val* (*)(val*))(var_types->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_types) /* iterator on <var_types:Array[MType]>*/;
+for(;;) {
+var32 = ((short int (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var31) /* is_ok on <var31:Iterator[nullable Object]>*/;
+if(!var32) break;
+var33 = ((val* (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__item]))(var31) /* item on <var31:Iterator[nullable Object]>*/;
+var_t = var33;
+var34 = ((short int (*)(val*))(var_t->class->vft[COLOR_model__MType__need_anchor]))(var_t) /* need_anchor on <var_t:MType>*/;
+if (var34){
+if (varonce35) {
+var36 = varonce35;
+} else {
+var37 = "OPEN ";
+var38 = 5;
+var39 = string__NativeString__to_s_with_length(var37, var38);
+var36 = var39;
+varonce35 = var36;
+}
+var_reso = var36;
+} else {
+if (varonce40) {
+var41 = varonce40;
+} else {
+var42 = "CLOSED";
+var43 = 6;
+var44 = string__NativeString__to_s_with_length(var42, var43);
+var41 = var44;
+varonce40 = var41;
+}
+var_reso = var41;
+}
+/* <var_t:MType> isa MClassType */
+cltype = type_model__MClassType.color;
+idtype = type_model__MClassType.id;
+if(cltype >= var_t->type->table_size) {
+var46 = 0;
+} else {
+var46 = var_t->type->type_table[cltype] == idtype;
+}
+if (!var46) {
+var45 = 0;
+} else {
+var48 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_types]))(self) /* live_types on <self:RapidTypeAnalysis>*/;
+var49 = ((short int (*)(val*, val*))(var48->class->vft[COLOR_abstract_collection__Collection__has]))(var48, var_t) /* has on <var48:HashSet[MClassType]>*/;
+if (var49) {
+var47 = 1;
+} else {
+var50 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_types]))(self) /* live_open_types on <self:RapidTypeAnalysis>*/;
+var51 = ((short int (*)(val*, val*))(var50->class->vft[COLOR_abstract_collection__Collection__has]))(var50, var_t) /* has on <var50:HashSet[MClassType]>*/;
+var47 = var51;
+}
+var45 = var47;
+}
+if (var45){
+if (varonce52) {
+var53 = varonce52;
+} else {
+var54 = "LIVE";
+var55 = 4;
+var56 = string__NativeString__to_s_with_length(var54, var55);
+var53 = var56;
+varonce52 = var53;
+}
+var_live = var53;
+} else {
+if (varonce57) {
+var58 = varonce57;
+} else {
+var59 = "DEAD";
+var60 = 4;
+var61 = string__NativeString__to_s_with_length(var59, var60);
+var58 = var61;
+varonce57 = var58;
+}
+var_live = var58;
+}
+var63 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_cast_types]))(self) /* live_cast_types on <self:RapidTypeAnalysis>*/;
+var64 = ((short int (*)(val*, val*))(var63->class->vft[COLOR_abstract_collection__Collection__has]))(var63, var_t) /* has on <var63:HashSet[MType]>*/;
+if (var64) {
+var62 = 1;
+} else {
+var65 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_open_cast_types]))(self) /* live_open_cast_types on <self:RapidTypeAnalysis>*/;
+var66 = ((short int (*)(val*, val*))(var65->class->vft[COLOR_abstract_collection__Collection__has]))(var65, var_t) /* has on <var65:HashSet[MType]>*/;
+var62 = var66;
+}
+if (var62){
+if (varonce67) {
+var68 = varonce67;
+} else {
+var69 = "CAST LIVE";
+var70 = 9;
+var71 = string__NativeString__to_s_with_length(var69, var70);
+var68 = var71;
+varonce67 = var68;
+}
+var_cast = var68;
+} else {
+if (varonce72) {
+var73 = varonce72;
+} else {
+var74 = "CAST DEAD";
+var75 = 9;
+var76 = string__NativeString__to_s_with_length(var74, var75);
+var73 = var76;
+varonce72 = var73;
+}
+var_cast = var73;
+}
+var77 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var77 = array_instance Array[Object] */
+var78 = 4;
+var79 = NEW_array__NativeArray(var78, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var79)->values[0] = (val*) var_t;
+((struct instance_array__NativeArray*)var79)->values[1] = (val*) var_reso;
+((struct instance_array__NativeArray*)var79)->values[2] = (val*) var_live;
+((struct instance_array__NativeArray*)var79)->values[3] = (val*) var_cast;
+((void (*)(val*, val*, long))(var77->class->vft[COLOR_array__Array__with_native]))(var77, var79, var78) /* with_native on <var77:Array[Object]>*/;
+}
+((void (*)(val*, val*))(var_res->class->vft[COLOR_csv__CSVDocument__add_line]))(var_res, var77) /* add_line on <var_res:CSVDocument>*/;
+CONTINUE_label: (void)0;
+((void (*)(val*))(var31->class->vft[COLOR_abstract_collection__Iterator__next]))(var31) /* next on <var31:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+var = var_res;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#live_types_to_csv for (self: Object): CSVDocument */
+val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_types_to_csv(val* self) {
+val* var /* : CSVDocument */;
+val* var1 /* : CSVDocument */;
+var1 = rapid_type_analysis__RapidTypeAnalysis__live_types_to_csv(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#live_methods_to_tree for (self: RapidTypeAnalysis): OrderedTree[Object] */
+val* rapid_type_analysis__RapidTypeAnalysis__live_methods_to_tree(val* self) {
+val* var /* : OrderedTree[Object] */;
+val* var1 /* : OrderedTree[Object] */;
+val* var_tree /* var tree: OrderedTree[Object] */;
+val* var2 /* : HashSet[MMethod] */;
+val* var3 /* : Iterator[nullable Object] */;
+short int var4 /* : Bool */;
+val* var5 /* : nullable Object */;
+val* var_x /* var x: MMethod */;
+val* var6 /* : String */;
+val* var_xn /* var xn: String */;
+val* var7 /* : null */;
+val* var8 /* : Array[MPropDef] */;
+val* var9 /* : Iterator[nullable Object] */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable Object */;
+val* var_z /* var z: MMethodDef */;
+val* var12 /* : String */;
+val* var_zn /* var zn: String */;
+val* var13 /* : HashSet[MMethodDef] */;
+short int var14 /* : Bool */;
+val* var15 /* : HashSet[MMethodDef] */;
+short int var16 /* : Bool */;
+static val* varonce;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+long var19 /* : Int */;
+val* var20 /* : String */;
+val* var21 /* : String */;
+val* var22 /* : HashSet[MMethodDef] */;
+short int var23 /* : Bool */;
+static val* varonce24;
+val* var25 /* : String */;
+char* var26 /* : NativeString */;
+long var27 /* : Int */;
+val* var28 /* : String */;
+val* var29 /* : String */;
+val* var31 /* : AbstractSorter[Object] */;
+var1 = NEW_ordered_tree__OrderedTree(&type_ordered_tree__OrderedTreekernel__Object);
+((void (*)(val*))(var1->class->vft[COLOR_ordered_tree__OrderedTree__init]))(var1) /* init on <var1:OrderedTree[Object]>*/;
+var_tree = var1;
+var2 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_methods]))(self) /* live_methods on <self:RapidTypeAnalysis>*/;
+var3 = ((val* (*)(val*))(var2->class->vft[COLOR_abstract_collection__Collection__iterator]))(var2) /* iterator on <var2:HashSet[MMethod]>*/;
+for(;;) {
+var4 = ((short int (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var3) /* is_ok on <var3:Iterator[nullable Object]>*/;
+if(!var4) break;
+var5 = ((val* (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__item]))(var3) /* item on <var3:Iterator[nullable Object]>*/;
+var_x = var5;
+var6 = ((val* (*)(val*))(var_x->class->vft[COLOR_model__MProperty__full_name]))(var_x) /* full_name on <var_x:MMethod>*/;
+var_xn = var6;
+var7 = NULL;
+((void (*)(val*, val*, val*))(var_tree->class->vft[COLOR_ordered_tree__OrderedTree__add]))(var_tree, var7, var_xn) /* add on <var_tree:OrderedTree[Object]>*/;
+var8 = ((val* (*)(val*))(var_x->class->vft[COLOR_model__MProperty__mpropdefs]))(var_x) /* mpropdefs on <var_x:MMethod>*/;
+var9 = ((val* (*)(val*))(var8->class->vft[COLOR_abstract_collection__Collection__iterator]))(var8) /* iterator on <var8:Array[MPropDef](Array[MMethodDef])>*/;
+for(;;) {
+var10 = ((short int (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var9) /* is_ok on <var9:Iterator[nullable Object]>*/;
+if(!var10) break;
+var11 = ((val* (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__item]))(var9) /* item on <var9:Iterator[nullable Object]>*/;
+var_z = var11;
+var12 = ((val* (*)(val*))(var_z->class->vft[COLOR_string__Object__to_s]))(var_z) /* to_s on <var_z:MMethodDef>*/;
+var_zn = var12;
+var13 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_methoddefs]))(self) /* live_methoddefs on <self:RapidTypeAnalysis>*/;
+var14 = ((short int (*)(val*, val*))(var13->class->vft[COLOR_abstract_collection__Collection__has]))(var13, var_z) /* has on <var13:HashSet[MMethodDef]>*/;
+if (var14){
+((void (*)(val*, val*, val*))(var_tree->class->vft[COLOR_ordered_tree__OrderedTree__add]))(var_tree, var_xn, var_zn) /* add on <var_tree:OrderedTree[Object]>*/;
+var15 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_super_sends]))(self) /* live_super_sends on <self:RapidTypeAnalysis>*/;
+var16 = ((short int (*)(val*, val*))(var15->class->vft[COLOR_abstract_collection__Collection__has]))(var15, var_z) /* has on <var15:HashSet[MMethodDef]>*/;
+if (var16){
+if (varonce) {
+var17 = varonce;
+} else {
+var18 = "(super)";
+var19 = 7;
+var20 = string__NativeString__to_s_with_length(var18, var19);
+var17 = var20;
+varonce = var17;
+}
+var21 = ((val* (*)(val*, val*))(var_zn->class->vft[COLOR_string__String___43d]))(var_zn, var17) /* + on <var_zn:String>*/;
+((void (*)(val*, val*, val*))(var_tree->class->vft[COLOR_ordered_tree__OrderedTree__add]))(var_tree, var_zn, var21) /* add on <var_tree:OrderedTree[Object]>*/;
+} else {
+}
+} else {
+var22 = ((val* (*)(val*))(self->class->vft[COLOR_rapid_type_analysis__RapidTypeAnalysis__live_super_sends]))(self) /* live_super_sends on <self:RapidTypeAnalysis>*/;
+var23 = ((short int (*)(val*, val*))(var22->class->vft[COLOR_abstract_collection__Collection__has]))(var22, var_z) /* has on <var22:HashSet[MMethodDef]>*/;
+if (var23){
+if (varonce24) {
+var25 = varonce24;
+} else {
+var26 = "(super)";
+var27 = 7;
+var28 = string__NativeString__to_s_with_length(var26, var27);
+var25 = var28;
+varonce24 = var25;
+}
+var29 = ((val* (*)(val*, val*))(var_zn->class->vft[COLOR_string__String___43d]))(var_zn, var25) /* + on <var_zn:String>*/;
+((void (*)(val*, val*, val*))(var_tree->class->vft[COLOR_ordered_tree__OrderedTree__add]))(var_tree, var_xn, var29) /* add on <var_tree:OrderedTree[Object]>*/;
+} else {
+}
+}
+CONTINUE_label: (void)0;
+((void (*)(val*))(var9->class->vft[COLOR_abstract_collection__Iterator__next]))(var9) /* next on <var9:Iterator[nullable Object]>*/;
+}
+BREAK_label: (void)0;
+CONTINUE_label30: (void)0;
+((void (*)(val*))(var3->class->vft[COLOR_abstract_collection__Iterator__next]))(var3) /* next on <var3:Iterator[nullable Object]>*/;
+}
+BREAK_label30: (void)0;
+var31 = ((val* (*)(val*))(self->class->vft[COLOR_string__Object__alpha_comparator]))(self) /* alpha_comparator on <self:RapidTypeAnalysis>*/;
+((void (*)(val*, val*))(var_tree->class->vft[COLOR_ordered_tree__OrderedTree__sort_with]))(var_tree, var31) /* sort_with on <var_tree:OrderedTree[Object]>*/;
+var = var_tree;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method rapid_type_analysis#RapidTypeAnalysis#live_methods_to_tree for (self: Object): OrderedTree[Object] */
+val* VIRTUAL_rapid_type_analysis__RapidTypeAnalysis__live_methods_to_tree(val* self) {
+val* var /* : OrderedTree[Object] */;
+val* var1 /* : OrderedTree[Object] */;
+var1 = rapid_type_analysis__RapidTypeAnalysis__live_methods_to_tree(self);
+var = var1;
+RET_LABEL:;
+return var;
+}