-return var;
-}
-/* method typing#CallSite#anchor for (self: CallSite): nullable MClassType */
-val* typing__CallSite__anchor(val* self) {
-val* var /* : nullable MClassType */;
-val* var1 /* : nullable MClassType */;
-var1 = self->attrs[COLOR_typing__CallSite___anchor].val; /* _anchor on <self:CallSite> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#anchor for (self: Object): nullable MClassType */
-val* VIRTUAL_typing__CallSite__anchor(val* self) {
-val* var /* : nullable MClassType */;
-val* var1 /* : nullable MClassType */;
-val* var3 /* : nullable MClassType */;
-{ /* Inline typing#CallSite#anchor (self) on <self:Object(CallSite)> */
-var3 = self->attrs[COLOR_typing__CallSite___anchor].val; /* _anchor on <self:Object(CallSite)> */
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#mproperty for (self: CallSite): MMethod */
-val* typing__CallSite__mproperty(val* self) {
-val* var /* : MMethod */;
-val* var1 /* : MMethod */;
-var1 = self->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <self:CallSite> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 422);
-show_backtrace(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#mproperty for (self: Object): MMethod */
-val* VIRTUAL_typing__CallSite__mproperty(val* self) {
-val* var /* : MMethod */;
-val* var1 /* : MMethod */;
-val* var3 /* : MMethod */;
-{ /* Inline typing#CallSite#mproperty (self) on <self:Object(CallSite)> */
-var3 = self->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <self:Object(CallSite)> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 422);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#mpropdef for (self: CallSite): MMethodDef */
-val* typing__CallSite__mpropdef(val* self) {
-val* var /* : MMethodDef */;
-val* var1 /* : MMethodDef */;
-var1 = self->attrs[COLOR_typing__CallSite___mpropdef].val; /* _mpropdef on <self:CallSite> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 425);
-show_backtrace(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#mpropdef for (self: Object): MMethodDef */
-val* VIRTUAL_typing__CallSite__mpropdef(val* self) {
-val* var /* : MMethodDef */;
-val* var1 /* : MMethodDef */;
-val* var3 /* : MMethodDef */;
-{ /* Inline typing#CallSite#mpropdef (self) on <self:Object(CallSite)> */
-var3 = self->attrs[COLOR_typing__CallSite___mpropdef].val; /* _mpropdef on <self:Object(CallSite)> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mpropdef");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 425);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#msignature for (self: CallSite): MSignature */
-val* typing__CallSite__msignature(val* self) {
-val* var /* : MSignature */;
-val* var1 /* : MSignature */;
-var1 = self->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <self:CallSite> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
-show_backtrace(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#msignature for (self: Object): MSignature */
-val* VIRTUAL_typing__CallSite__msignature(val* self) {
-val* var /* : MSignature */;
-val* var1 /* : MSignature */;
-val* var3 /* : MSignature */;
-{ /* Inline typing#CallSite#msignature (self) on <self:Object(CallSite)> */
-var3 = self->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <self:Object(CallSite)> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#erasure_cast for (self: CallSite): Bool */
-short int typing__CallSite__erasure_cast(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = self->attrs[COLOR_typing__CallSite___erasure_cast].s; /* _erasure_cast on <self:CallSite> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#erasure_cast for (self: Object): Bool */
-short int VIRTUAL_typing__CallSite__erasure_cast(val* self) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-short int var3 /* : Bool */;
-{ /* Inline typing#CallSite#erasure_cast (self) on <self:Object(CallSite)> */
-var3 = self->attrs[COLOR_typing__CallSite___erasure_cast].s; /* _erasure_cast on <self:Object(CallSite)> */
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#check_signature for (self: CallSite, TypeVisitor, Array[AExpr]): Bool */
-short int typing__CallSite__check_signature(val* self, val* p0, val* p1) {
-short int var /* : Bool */;
-val* var_v /* var v: TypeVisitor */;
-val* var_args /* var args: Array[AExpr] */;
-val* var1 /* : ANode */;
-val* var3 /* : ANode */;
-val* var4 /* : MMethod */;
-val* var6 /* : MMethod */;
-val* var7 /* : String */;
-val* var9 /* : String */;
-val* var10 /* : MSignature */;
-val* var12 /* : MSignature */;
-short int var13 /* : Bool */;
-var_v = p0;
-var_args = p1;
-{
-{ /* Inline typing#CallSite#node (self) on <self:CallSite> */
-var3 = self->attrs[COLOR_typing__CallSite___node].val; /* _node on <self:CallSite> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _node");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 405);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-{ /* Inline typing#CallSite#mproperty (self) on <self:CallSite> */
-var6 = self->attrs[COLOR_typing__CallSite___mproperty].val; /* _mproperty on <self:CallSite> */
-if (unlikely(var6 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _mproperty");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 422);
-show_backtrace(1);
-}
-var4 = var6;
-RET_LABEL5:(void)0;
-}
-}
-{
-{ /* Inline model#MProperty#name (var4) on <var4:MMethod> */
-var9 = var4->attrs[COLOR_model__MProperty___name].val; /* _name on <var4:MMethod> */
-if (unlikely(var9 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _name");
-PRINT_ERROR(" (%s:%d)\n", "src/model/model.nit", 1607);
-show_backtrace(1);
-}
-var7 = var9;
-RET_LABEL8:(void)0;
-}
-}
-{
-{ /* Inline typing#CallSite#msignature (self) on <self:CallSite> */
-var12 = self->attrs[COLOR_typing__CallSite___msignature].val; /* _msignature on <self:CallSite> */
-if (unlikely(var12 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _msignature");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 429);
-show_backtrace(1);
-}
-var10 = var12;
-RET_LABEL11:(void)0;
-}
-}
-{
-var13 = typing__TypeVisitor__check_signature(var_v, var1, var_args, var7, var10);
-}
-var = var13;
-goto RET_LABEL;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#check_signature for (self: Object, TypeVisitor, Array[AExpr]): Bool */
-short int VIRTUAL_typing__CallSite__check_signature(val* self, val* p0, val* p1) {
-short int var /* : Bool */;
-short int var1 /* : Bool */;
-var1 = typing__CallSite__check_signature(self, p0, p1);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#CallSite#init for (self: CallSite, ANode, MType, MModule, nullable MClassType, Bool, MMethod, MMethodDef, MSignature, Bool) */
-void typing__CallSite__init(val* self, val* p0, val* p1, val* p2, val* p3, short int p4, val* p5, val* p6, val* p7, short int p8) {
-self->attrs[COLOR_typing__CallSite___node].val = p0; /* _node on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___recv].val = p1; /* _recv on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___mmodule].val = p2; /* _mmodule on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___anchor].val = p3; /* _anchor on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___recv_is_self].s = p4; /* _recv_is_self on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___mproperty].val = p5; /* _mproperty on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___mpropdef].val = p6; /* _mpropdef on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___msignature].val = p7; /* _msignature on <self:CallSite> */
-self->attrs[COLOR_typing__CallSite___erasure_cast].s = p8; /* _erasure_cast on <self:CallSite> */
-RET_LABEL:;
-}
-/* method typing#CallSite#init for (self: Object, ANode, MType, MModule, nullable MClassType, Bool, MMethod, MMethodDef, MSignature, Bool) */
-void VIRTUAL_typing__CallSite__init(val* self, val* p0, val* p1, val* p2, val* p3, short int p4, val* p5, val* p6, val* p7, short int p8) {
-{ /* Inline typing#CallSite#init (self,p0,p1,p2,p3,p4,p5,p6,p7,p8) on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___node].val = p0; /* _node on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___recv].val = p1; /* _recv on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___mmodule].val = p2; /* _mmodule on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___anchor].val = p3; /* _anchor on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___recv_is_self].s = p4; /* _recv_is_self on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___mproperty].val = p5; /* _mproperty on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___mpropdef].val = p6; /* _mpropdef on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___msignature].val = p7; /* _msignature on <self:Object(CallSite)> */
-self->attrs[COLOR_typing__CallSite___erasure_cast].s = p8; /* _erasure_cast on <self:Object(CallSite)> */
-RET_LABEL1:(void)0;
-}
-RET_LABEL:;
-}
-/* method typing#Variable#declared_type for (self: Variable): nullable MType */
-val* typing__Variable__declared_type(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-var1 = self->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <self:Variable> */
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#Variable#declared_type for (self: Object): nullable MType */
-val* VIRTUAL_typing__Variable__declared_type(val* self) {
-val* var /* : nullable MType */;
-val* var1 /* : nullable MType */;
-val* var3 /* : nullable MType */;
-{ /* Inline typing#Variable#declared_type (self) on <self:Object(Variable)> */
-var3 = self->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <self:Object(Variable)> */
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#Variable#declared_type= for (self: Variable, nullable MType) */
-void typing__Variable__declared_type_61d(val* self, val* p0) {
-self->attrs[COLOR_typing__Variable___declared_type].val = p0; /* _declared_type on <self:Variable> */
-RET_LABEL:;
-}
-/* method typing#Variable#declared_type= for (self: Object, nullable MType) */
-void VIRTUAL_typing__Variable__declared_type_61d(val* self, val* p0) {
-{ /* Inline typing#Variable#declared_type= (self,p0) on <self:Object(Variable)> */
-self->attrs[COLOR_typing__Variable___declared_type].val = p0; /* _declared_type on <self:Object(Variable)> */
-RET_LABEL1:(void)0;
-}
-RET_LABEL:;
-}
-/* method typing#FlowContext#vars for (self: FlowContext): HashMap[Variable, nullable MType] */
-val* typing__FlowContext__vars(val* self) {
-val* var /* : HashMap[Variable, nullable MType] */;
-val* var1 /* : HashMap[Variable, nullable MType] */;
-var1 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 447);
-show_backtrace(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#FlowContext#vars for (self: Object): HashMap[Variable, nullable MType] */
-val* VIRTUAL_typing__FlowContext__vars(val* self) {
-val* var /* : HashMap[Variable, nullable MType] */;
-val* var1 /* : HashMap[Variable, nullable MType] */;
-val* var3 /* : HashMap[Variable, nullable MType] */;
-{ /* Inline typing#FlowContext#vars (self) on <self:Object(FlowContext)> */
-var3 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:Object(FlowContext)> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 447);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#FlowContext#cache for (self: FlowContext): HashMap[Variable, nullable Array[nullable MType]] */
-val* typing__FlowContext__cache(val* self) {
-val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-var1 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
-if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 449);
-show_backtrace(1);
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#FlowContext#cache for (self: Object): HashMap[Variable, nullable Array[nullable MType]] */
-val* VIRTUAL_typing__FlowContext__cache(val* self) {
-val* var /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-{ /* Inline typing#FlowContext#cache (self) on <self:Object(FlowContext)> */
-var3 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:Object(FlowContext)> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 449);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method typing#FlowContext#set_var for (self: FlowContext, Variable, nullable MType) */
-void typing__FlowContext__set_var(val* self, val* p0, val* p1) {
-val* var_variable /* var variable: Variable */;
-val* var_mtype /* var mtype: nullable MType */;
-val* var /* : HashMap[Variable, nullable MType] */;
-val* var2 /* : HashMap[Variable, nullable MType] */;
-val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var5 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var6 /* : RemovableCollection[Object] */;
-val* var8 /* : RemovableCollection[Object] */;
-var_variable = p0;
-var_mtype = p1;
-{
-{ /* Inline typing#FlowContext#vars (self) on <self:FlowContext> */
-var2 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
-if (unlikely(var2 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 447);
-show_backtrace(1);
-}
-var = var2;
-RET_LABEL1:(void)0;
-}
-}
-{
-hash_collection__HashMap___91d_93d_61d(var, var_variable, var_mtype); /* Direct call hash_collection#HashMap#[]= on <var:HashMap[Variable, nullable MType]>*/
-}
-{
-{ /* Inline typing#FlowContext#cache (self) on <self:FlowContext> */
-var5 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
-if (unlikely(var5 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 449);
-show_backtrace(1);
-}
-var3 = var5;
-RET_LABEL4:(void)0;
-}
-}
-{
-{ /* Inline hash_collection#HashMap#keys (var3) on <var3:HashMap[Variable, nullable Array[nullable MType]]> */
-var8 = var3->attrs[COLOR_hash_collection__HashMap___keys].val; /* _keys on <var3:HashMap[Variable, nullable Array[nullable MType]]> */
-if (unlikely(var8 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _keys");
-PRINT_ERROR(" (%s:%d)\n", "lib/standard/collection/hash_collection.nit", 245);
-show_backtrace(1);
-}
-var6 = var8;
-RET_LABEL7:(void)0;
-}
-}
-{
-((void (*)(val*, val*))(var6->class->vft[COLOR_abstract_collection__RemovableCollection__remove]))(var6, var_variable) /* remove on <var6:RemovableCollection[Object](RemovableCollection[Variable])>*/;
-}
-RET_LABEL:;
-}
-/* method typing#FlowContext#set_var for (self: Object, Variable, nullable MType) */
-void VIRTUAL_typing__FlowContext__set_var(val* self, val* p0, val* p1) {
-typing__FlowContext__set_var(self, p0, p1); /* Direct call typing#FlowContext#set_var on <self:Object(FlowContext)>*/
-RET_LABEL:;
-}
-/* method typing#FlowContext#collect_types for (self: FlowContext, Variable): nullable Array[nullable MType] */
-val* typing__FlowContext__collect_types(val* self, val* p0) {
-val* var /* : nullable Array[nullable MType] */;
-val* var_variable /* var variable: Variable */;
-val* var1 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var3 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-short int var4 /* : Bool */;
-val* var5 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var7 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var8 /* : nullable Object */;
-val* var9 /* : null */;
-val* var_res /* var res: nullable Array[nullable MType] */;
-val* var10 /* : HashMap[Variable, nullable MType] */;
-val* var12 /* : HashMap[Variable, nullable MType] */;
-short int var13 /* : Bool */;
-val* var14 /* : HashMap[Variable, nullable MType] */;
-val* var16 /* : HashMap[Variable, nullable MType] */;
-val* var17 /* : nullable Object */;
-val* var_mtype /* var mtype: nullable MType */;
-val* var18 /* : Array[nullable MType] */;
-long var19 /* : Int */;
-val* var_ /* var : Array[nullable MType] */;
-val* var20 /* : Array[FlowContext] */;
-val* var22 /* : Array[FlowContext] */;
-short int var23 /* : Bool */;
-val* var24 /* : Array[nullable MType] */;
-long var25 /* : Int */;
-val* var_26 /* var : Array[nullable MType] */;
-val* var27 /* : nullable MType */;
-val* var29 /* : nullable MType */;
-val* var30 /* : Array[FlowContext] */;
-val* var32 /* : Array[FlowContext] */;
-val* var33 /* : ArrayIterator[nullable Object] */;
-short int var34 /* : Bool */;
-val* var35 /* : nullable Object */;
-val* var_flow /* var flow: FlowContext */;
-short int var36 /* : Bool */;
-val* var37 /* : nullable Array[nullable MType] */;
-val* var_r2 /* var r2: nullable Array[nullable MType] */;
-val* var38 /* : null */;
-short int var39 /* : Bool */;
-short int var40 /* : Bool */;
-val* var41 /* : null */;
-short int var42 /* : Bool */;
-short int var43 /* : Bool */;
-val* var44 /* : Array[nullable Object] */;
-val* var45 /* : ArrayIterator[nullable Object] */;
-short int var46 /* : Bool */;
-val* var47 /* : nullable Object */;
-val* var_t /* var t: nullable MType */;
-short int var48 /* : Bool */;
-short int var49 /* : Bool */;
-val* var51 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-val* var53 /* : HashMap[Variable, nullable Array[nullable MType]] */;
-var_variable = p0;
-{
-{ /* Inline typing#FlowContext#cache (self) on <self:FlowContext> */
-var3 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
-if (unlikely(var3 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 449);
-show_backtrace(1);
-}
-var1 = var3;
-RET_LABEL2:(void)0;
-}
-}
-{
-var4 = abstract_collection__MapRead__has_key(var1, var_variable);
-}
-if (var4){
-{
-{ /* Inline typing#FlowContext#cache (self) on <self:FlowContext> */
-var7 = self->attrs[COLOR_typing__FlowContext___cache].val; /* _cache on <self:FlowContext> */
-if (unlikely(var7 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cache");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 449);
-show_backtrace(1);
-}
-var5 = var7;
-RET_LABEL6:(void)0;
-}
-}
-{
-var8 = hash_collection__HashMap___91d_93d(var5, var_variable);
-}
-var = var8;
-goto RET_LABEL;
-} else {
-}
-var9 = NULL;
-var_res = var9;
-{
-{ /* Inline typing#FlowContext#vars (self) on <self:FlowContext> */
-var12 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
-if (unlikely(var12 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 447);
-show_backtrace(1);
-}
-var10 = var12;
-RET_LABEL11:(void)0;
-}
-}
-{
-var13 = abstract_collection__MapRead__has_key(var10, var_variable);
-}
-if (var13){
-{
-{ /* Inline typing#FlowContext#vars (self) on <self:FlowContext> */
-var16 = self->attrs[COLOR_typing__FlowContext___vars].val; /* _vars on <self:FlowContext> */
-if (unlikely(var16 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _vars");
-PRINT_ERROR(" (%s:%d)\n", "src/typing.nit", 447);
-show_backtrace(1);
-}
-var14 = var16;
-RET_LABEL15:(void)0;
-}
-}
-{
-var17 = hash_collection__HashMap___91d_93d(var14, var_variable);
-}
-var_mtype = var17;
-var18 = NEW_array__Array(&type_array__Arraynullable_model__MType);
-var19 = 1;
-{
-array__Array__with_capacity(var18, var19); /* Direct call array#Array#with_capacity on <var18:Array[nullable MType]>*/
-}
-var_ = var18;
-{
-array__AbstractArray__push(var_, var_mtype); /* Direct call array#AbstractArray#push on <var_:Array[nullable MType]>*/
-}
-var_res = var_;
-} else {
-{
-{ /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
-var22 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
-if (unlikely(var22 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
-show_backtrace(1);
-}
-var20 = var22;
-RET_LABEL21:(void)0;
-}
-}
-{
-var23 = array__AbstractArrayRead__is_empty(var20);
-}
-if (var23){
-var24 = NEW_array__Array(&type_array__Arraynullable_model__MType);
-var25 = 1;
-{
-array__Array__with_capacity(var24, var25); /* Direct call array#Array#with_capacity on <var24:Array[nullable MType]>*/
-}
-var_26 = var24;
-{
-{ /* Inline typing#Variable#declared_type (var_variable) on <var_variable:Variable> */
-var29 = var_variable->attrs[COLOR_typing__Variable___declared_type].val; /* _declared_type on <var_variable:Variable> */
-var27 = var29;
-RET_LABEL28:(void)0;
-}
-}
-{
-array__AbstractArray__push(var_26, var27); /* Direct call array#AbstractArray#push on <var_26:Array[nullable MType]>*/
-}
-var_res = var_26;
-} else {
-{
-{ /* Inline flow#FlowContext#previous (self) on <self:FlowContext> */
-var32 = self->attrs[COLOR_flow__FlowContext___previous].val; /* _previous on <self:FlowContext> */
-if (unlikely(var32 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _previous");
-PRINT_ERROR(" (%s:%d)\n", "src/flow.nit", 192);
-show_backtrace(1);
-}
-var30 = var32;
-RET_LABEL31:(void)0;
-}
-}
-{
-var33 = array__AbstractArrayRead__iterator(var30);
-}
-for(;;) {
-{
-var34 = array__ArrayIterator__is_ok(var33);
-}
-if(!var34) break;
-{
-var35 = array__ArrayIterator__item(var33);
-}
-var_flow = var35;
-{
-var36 = flow__FlowContext__is_unreachable(var_flow);
-}
-if (var36){
-goto CONTINUE_label;
-} else {