+/* method toolcontext#ToolContext#tooldescription for (self: ToolContext): String */
+val* toolcontext__ToolContext__tooldescription(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 210);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#tooldescription for (self: Object): String */
+val* VIRTUAL_toolcontext__ToolContext__tooldescription(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+val* var3 /* : String */;
+{ /* Inline toolcontext#ToolContext#tooldescription (self) on <self:Object(ToolContext)> */
+var3 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:Object(ToolContext)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 210);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#tooldescription= for (self: ToolContext, String) */
+void toolcontext__ToolContext__tooldescription_61d(val* self, val* p0) {
+self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val = p0; /* _tooldescription on <self:ToolContext> */
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#tooldescription= for (self: Object, String) */
+void VIRTUAL_toolcontext__ToolContext__tooldescription_61d(val* self, val* p0) {
+{ /* Inline toolcontext#ToolContext#tooldescription= (self,p0) on <self:Object(ToolContext)> */
+self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val = p0; /* _tooldescription on <self:Object(ToolContext)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#accept_no_arguments for (self: ToolContext): Bool */
+short int toolcontext__ToolContext__accept_no_arguments(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = self->attrs[COLOR_toolcontext__ToolContext___accept_no_arguments].s; /* _accept_no_arguments on <self:ToolContext> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#accept_no_arguments for (self: Object): Bool */
+short int VIRTUAL_toolcontext__ToolContext__accept_no_arguments(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+short int var3 /* : Bool */;
+{ /* Inline toolcontext#ToolContext#accept_no_arguments (self) on <self:Object(ToolContext)> */
+var3 = self->attrs[COLOR_toolcontext__ToolContext___accept_no_arguments].s; /* _accept_no_arguments on <self:Object(ToolContext)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#usage for (self: ToolContext) */
+void toolcontext__ToolContext__usage(val* self) {
+val* var /* : String */;
+val* var2 /* : String */;
+val* var3 /* : OptionContext */;
+val* var5 /* : OptionContext */;
+{
+{ /* Inline toolcontext#ToolContext#tooldescription (self) on <self:ToolContext> */
+var2 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 210);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+{
+file__Object__print(self, var); /* Direct call file#Object#print on <self:ToolContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var5 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
+show_backtrace(1);
+}
+var3 = var5;
+RET_LABEL4:(void)0;
+}
+}
+{
+opts__OptionContext__usage(var3); /* Direct call opts#OptionContext#usage on <var3:OptionContext>*/
+}
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#usage for (self: Object) */
+void VIRTUAL_toolcontext__ToolContext__usage(val* self) {
+toolcontext__ToolContext__usage(self); /* Direct call toolcontext#ToolContext#usage on <self:Object(ToolContext)>*/
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#process_options for (self: ToolContext, Sequence[String]) */
+void toolcontext__ToolContext__process_options(val* self, val* p0) {
+val* var_args /* var args: Sequence[String] */;
+val* var /* : OptionCount */;
+val* var2 /* : OptionCount */;
+long var3 /* : Int */;
+short int var5 /* : Bool */;
+int cltype;
+int idtype;
+const struct type* type_struct;
+const char* var_class_name;
+val* var6 /* : nullable Object */;
+val* var7 /* : OptionContext */;
+val* var9 /* : OptionContext */;
+val* var10 /* : OptionBool */;
+val* var12 /* : OptionBool */;
+val* var13 /* : nullable Object */;
+val* var15 /* : nullable Object */;
+short int var16 /* : Bool */;
+long var17 /* : Int */;
+val* var19 /* : OptionBool */;
+val* var21 /* : OptionBool */;
+val* var22 /* : nullable Object */;
+val* var24 /* : nullable Object */;
+short int var25 /* : Bool */;
+val* var26 /* : String */;
+long var27 /* : Int */;
+val* var29 /* : OptionBool */;
+val* var31 /* : OptionBool */;
+val* var32 /* : nullable Object */;
+val* var34 /* : nullable Object */;
+short int var35 /* : Bool */;
+val* var36 /* : BashCompletion */;
+val* var_bash_completion /* var bash_completion: BashCompletion */;
+val* var37 /* : Sys */;
+val* var39 /* : Sys */;
+val* var40 /* : OStream */;
+val* var42 /* : OStream */;
+long var43 /* : Int */;
+val* var45 /* : OptionContext */;
+val* var47 /* : OptionContext */;
+val* var48 /* : Array[String] */;
+val* var_errors /* var errors: Array[String] */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+val* var51 /* : ArrayIterator[nullable Object] */;
+short int var52 /* : Bool */;
+val* var53 /* : nullable Object */;
+val* var_e /* var e: String */;
+static val* varonce;
+val* var54 /* : String */;
+char* var55 /* : NativeString */;
+long var56 /* : Int */;
+val* var57 /* : FlatString */;
+val* var58 /* : Array[Object] */;
+long var59 /* : Int */;
+val* var60 /* : NativeArray[Object] */;
+val* var61 /* : String */;
+val* var62 /* : String */;
+val* var64 /* : String */;
+static val* varonce65;
+val* var66 /* : String */;
+char* var67 /* : NativeString */;
+long var68 /* : Int */;
+val* var69 /* : FlatString */;
+long var70 /* : Int */;
+short int var72 /* : Bool */;
+val* var73 /* : OptionContext */;
+val* var75 /* : OptionContext */;
+val* var76 /* : Array[String] */;
+val* var78 /* : Array[String] */;
+short int var79 /* : Bool */;
+short int var_ /* var : Bool */;
+short int var80 /* : Bool */;
+short int var82 /* : Bool */;
+short int var83 /* : Bool */;
+val* var84 /* : String */;
+val* var86 /* : String */;
+static val* varonce87;
+val* var88 /* : String */;
+char* var89 /* : NativeString */;
+long var90 /* : Int */;
+val* var91 /* : FlatString */;
+long var92 /* : Int */;
+val* var94 /* : OptionCount */;
+val* var96 /* : OptionCount */;
+val* var97 /* : nullable Object */;
+val* var99 /* : nullable Object */;
+long var101 /* : Int */;
+val* var102 /* : OptionBool */;
+val* var104 /* : OptionBool */;
+val* var105 /* : nullable Object */;
+val* var107 /* : nullable Object */;
+short int var108 /* : Bool */;
+val* var109 /* : OptionCount */;
+val* var111 /* : OptionCount */;
+long var112 /* : Int */;
+short int var114 /* : Bool */;
+int cltype115;
+int idtype116;
+const struct type* type_struct117;
+const char* var_class_name118;
+val* var119 /* : nullable Object */;
+val* var120 /* : OptionString */;
+val* var122 /* : OptionString */;
+val* var123 /* : nullable Object */;
+val* var125 /* : nullable Object */;
+val* var126 /* : null */;
+short int var127 /* : Bool */;
+short int var128 /* : Bool */;
+val* var_other /* var other: nullable Object */;
+short int var130 /* : Bool */;
+short int var131 /* : Bool */;
+short int var132 /* : Bool */;
+val* var133 /* : OptionString */;
+val* var135 /* : OptionString */;
+val* var136 /* : nullable Object */;
+val* var138 /* : nullable Object */;
+val* var140 /* : OptionBool */;
+val* var142 /* : OptionBool */;
+val* var143 /* : nullable Object */;
+val* var145 /* : nullable Object */;
+short int var146 /* : Bool */;
+val* var147 /* : String */;
+val* var149 /* : String */;
+val* var150 /* : nullable String */;
+var_args = p0;
+{
+{ /* Inline toolcontext#ToolContext#opt_warn (self) on <self:ToolContext> */
+var2 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
+if (unlikely(var2 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 169);
+show_backtrace(1);
+}
+var = var2;
+RET_LABEL1:(void)0;
+}
+}
+var3 = 1;
+{
+{ /* Inline opts#Option#value= (var,var3) on <var:OptionCount> */
+/* Covariant cast for argument 0 (value) <var3:Int> isa VALUE */
+/* <var3:Int> isa VALUE */
+type_struct = var->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
+cltype = type_struct->color;
+idtype = type_struct->id;
+if(cltype >= (&type_kernel__Int)->table_size) {
+var5 = 0;
+} else {
+var5 = (&type_kernel__Int)->type_table[cltype] == idtype;
+}
+if (unlikely(!var5)) {
+var_class_name = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
+PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 40);
+show_backtrace(1);
+}
+var6 = BOX_kernel__Int(var3); /* autobox from Int to nullable Object */
+var->attrs[COLOR_opts__Option___value].val = var6; /* _value on <var:OptionCount> */
+RET_LABEL4:(void)0;
+}
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var9 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var9 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
+show_backtrace(1);
+}
+var7 = var9;
+RET_LABEL8:(void)0;
+}
+}
+{
+opts__OptionContext__parse(var7, var_args); /* Direct call opts#OptionContext#parse on <var7:OptionContext>*/
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_help (self) on <self:ToolContext> */
+var12 = self->attrs[COLOR_toolcontext__ToolContext___opt_help].val; /* _opt_help on <self:ToolContext> */
+if (unlikely(var12 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_help");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 181);
+show_backtrace(1);
+}
+var10 = var12;
+RET_LABEL11:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var10) on <var10:OptionBool> */
+var15 = var10->attrs[COLOR_opts__Option___value].val; /* _value on <var10:OptionBool> */
+var13 = var15;
+RET_LABEL14:(void)0;
+}
+}
+var16 = ((struct instance_kernel__Bool*)var13)->value; /* autounbox from nullable Object to Bool */;
+if (var16){
+{
+toolcontext__ToolContext__usage(self); /* Direct call toolcontext#ToolContext#usage on <self:ToolContext>*/
+}
+var17 = 0;
+{
+{ /* Inline kernel#Object#exit (self,var17) on <self:ToolContext> */
+exit(var17);
+RET_LABEL18:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_version (self) on <self:ToolContext> */
+var21 = self->attrs[COLOR_toolcontext__ToolContext___opt_version].val; /* _opt_version on <self:ToolContext> */
+if (unlikely(var21 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_version");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 184);
+show_backtrace(1);
+}
+var19 = var21;
+RET_LABEL20:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var19) on <var19:OptionBool> */
+var24 = var19->attrs[COLOR_opts__Option___value].val; /* _value on <var19:OptionBool> */
+var22 = var24;
+RET_LABEL23:(void)0;
+}
+}
+var25 = ((struct instance_kernel__Bool*)var22)->value; /* autounbox from nullable Object to Bool */;
+if (var25){
+{
+var26 = toolcontext__ToolContext__version(self);
+}
+{
+file__Object__print(self, var26); /* Direct call file#Object#print on <self:ToolContext>*/
+}
+var27 = 0;
+{
+{ /* Inline kernel#Object#exit (self,var27) on <self:ToolContext> */
+exit(var27);
+RET_LABEL28:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_bash_completion (self) on <self:ToolContext> */
+var31 = self->attrs[COLOR_toolcontext__ToolContext___opt_bash_completion].val; /* _opt_bash_completion on <self:ToolContext> */
+if (unlikely(var31 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_bash_completion");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 199);
+show_backtrace(1);
+}
+var29 = var31;
+RET_LABEL30:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var29) on <var29:OptionBool> */
+var34 = var29->attrs[COLOR_opts__Option___value].val; /* _value on <var29:OptionBool> */
+var32 = var34;
+RET_LABEL33:(void)0;
+}
+}
+var35 = ((struct instance_kernel__Bool*)var32)->value; /* autounbox from nullable Object to Bool */;
+if (var35){
+var36 = NEW_toolcontext__BashCompletion(&type_toolcontext__BashCompletion);
+{
+toolcontext__BashCompletion__init(var36, self); /* Direct call toolcontext#BashCompletion#init on <var36:BashCompletion>*/
+}
+var_bash_completion = var36;
+{
+{ /* Inline kernel#Object#sys (self) on <self:ToolContext> */
+var39 = glob_sys;
+var37 = var39;
+goto RET_LABEL38;
+RET_LABEL38:(void)0;
+}
+}
+{
+{ /* Inline file#Sys#stdout (var37) on <var37:Sys> */
+var42 = var37->attrs[COLOR_file__Sys___stdout].val; /* _stdout on <var37:Sys> */
+if (unlikely(var42 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _stdout");
+PRINT_ERROR(" (%s:%d)\n", "lib/standard/file.nit", 530);
+show_backtrace(1);
+}
+var40 = var42;
+RET_LABEL41:(void)0;
+}
+}
+{
+template__Template__write_to(var_bash_completion, var40); /* Direct call template#Template#write_to on <var_bash_completion:BashCompletion>*/
+}
+var43 = 0;
+{
+{ /* Inline kernel#Object#exit (self,var43) on <self:ToolContext> */
+exit(var43);
+RET_LABEL44:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var47 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var47 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
+show_backtrace(1);
+}
+var45 = var47;
+RET_LABEL46:(void)0;
+}
+}
+{
+var48 = opts__OptionContext__get_errors(var45);
+}
+var_errors = var48;
+{
+var49 = array__AbstractArrayRead__is_empty(var_errors);
+}
+var50 = !var49;
+if (var50){
+{
+var51 = array__AbstractArrayRead__iterator(var_errors);
+}
+for(;;) {
+{
+var52 = array__ArrayIterator__is_ok(var51);
+}
+if(!var52) break;
+{
+var53 = array__ArrayIterator__item(var51);
+}
+var_e = var53;
+if (varonce) {
+var54 = varonce;
+} else {
+var55 = "Error: ";
+var56 = 7;
+var57 = string__NativeString__to_s_with_length(var55, var56);
+var54 = var57;
+varonce = var54;
+}
+var58 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var58 = array_instance Array[Object] */
+var59 = 2;
+var60 = NEW_array__NativeArray(var59, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var60)->values[0] = (val*) var54;
+((struct instance_array__NativeArray*)var60)->values[1] = (val*) var_e;
+{
+((void (*)(val*, val*, long))(var58->class->vft[COLOR_array__Array__with_native]))(var58, var60, var59) /* with_native on <var58:Array[Object]>*/;
+}
+}
+{
+var61 = ((val* (*)(val*))(var58->class->vft[COLOR_string__Object__to_s]))(var58) /* to_s on <var58:Array[Object]>*/;
+}
+{
+file__Object__print(self, var61); /* Direct call file#Object#print on <self:ToolContext>*/
+}
+CONTINUE_label: (void)0;
+{
+array__ArrayIterator__next(var51); /* Direct call array#ArrayIterator#next on <var51:ArrayIterator[nullable Object]>*/
+}
+}
+BREAK_label: (void)0;
+{
+{ /* Inline toolcontext#ToolContext#tooldescription (self) on <self:ToolContext> */
+var64 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
+if (unlikely(var64 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 210);
+show_backtrace(1);
+}
+var62 = var64;
+RET_LABEL63:(void)0;
+}
+}
+{
+file__Object__print(self, var62); /* Direct call file#Object#print on <self:ToolContext>*/
+}
+if (varonce65) {
+var66 = varonce65;
+} else {
+var67 = "Use --help for help";
+var68 = 19;
+var69 = string__NativeString__to_s_with_length(var67, var68);
+var66 = var69;
+varonce65 = var66;
+}
+{
+file__Object__print(self, var66); /* Direct call file#Object#print on <self:ToolContext>*/
+}
+var70 = 1;
+{
+{ /* Inline kernel#Object#exit (self,var70) on <self:ToolContext> */
+exit(var70);
+RET_LABEL71:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline toolcontext#ToolContext#option_context (self) on <self:ToolContext> */
+var75 = self->attrs[COLOR_toolcontext__ToolContext___option_context].val; /* _option_context on <self:ToolContext> */
+if (unlikely(var75 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _option_context");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 166);
+show_backtrace(1);
+}
+var73 = var75;
+RET_LABEL74:(void)0;
+}
+}
+{
+{ /* Inline opts#OptionContext#rest (var73) on <var73:OptionContext> */
+var78 = var73->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <var73:OptionContext> */
+if (unlikely(var78 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
+PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 250);
+show_backtrace(1);
+}
+var76 = var78;
+RET_LABEL77:(void)0;
+}
+}
+{
+var79 = array__AbstractArrayRead__is_empty(var76);
+}
+var_ = var79;
+if (var79){
+{
+{ /* Inline toolcontext#ToolContext#accept_no_arguments (self) on <self:ToolContext> */
+var82 = self->attrs[COLOR_toolcontext__ToolContext___accept_no_arguments].s; /* _accept_no_arguments on <self:ToolContext> */
+var80 = var82;
+RET_LABEL81:(void)0;
+}
+}
+var83 = !var80;
+var72 = var83;
+} else {
+var72 = var_;
+}
+if (var72){
+{
+{ /* Inline toolcontext#ToolContext#tooldescription (self) on <self:ToolContext> */
+var86 = self->attrs[COLOR_toolcontext__ToolContext___tooldescription].val; /* _tooldescription on <self:ToolContext> */
+if (unlikely(var86 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _tooldescription");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 210);
+show_backtrace(1);
+}
+var84 = var86;
+RET_LABEL85:(void)0;
+}
+}
+{
+file__Object__print(self, var84); /* Direct call file#Object#print on <self:ToolContext>*/
+}
+if (varonce87) {
+var88 = varonce87;
+} else {
+var89 = "Use --help for help";
+var90 = 19;
+var91 = string__NativeString__to_s_with_length(var89, var90);
+var88 = var91;
+varonce87 = var88;
+}
+{
+file__Object__print(self, var88); /* Direct call file#Object#print on <self:ToolContext>*/
+}
+var92 = 1;
+{
+{ /* Inline kernel#Object#exit (self,var92) on <self:ToolContext> */
+exit(var92);
+RET_LABEL93:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_verbose (self) on <self:ToolContext> */
+var96 = self->attrs[COLOR_toolcontext__ToolContext___opt_verbose].val; /* _opt_verbose on <self:ToolContext> */
+if (unlikely(var96 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_verbose");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 190);
+show_backtrace(1);
+}
+var94 = var96;
+RET_LABEL95:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var94) on <var94:OptionCount> */
+var99 = var94->attrs[COLOR_opts__Option___value].val; /* _value on <var94:OptionCount> */
+var97 = var99;
+RET_LABEL98:(void)0;
+}
+}
+{
+{ /* Inline toolcontext#ToolContext#verbose_level= (self,var97) on <self:ToolContext> */
+var101 = ((struct instance_kernel__Int*)var97)->value; /* autounbox from nullable Object to Int */;
+self->attrs[COLOR_toolcontext__ToolContext___verbose_level].l = var101; /* _verbose_level on <self:ToolContext> */
+RET_LABEL100:(void)0;
+}
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_quiet (self) on <self:ToolContext> */
+var104 = self->attrs[COLOR_toolcontext__ToolContext___opt_quiet].val; /* _opt_quiet on <self:ToolContext> */
+if (unlikely(var104 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_quiet");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 172);
+show_backtrace(1);
+}
+var102 = var104;
+RET_LABEL103:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var102) on <var102:OptionBool> */
+var107 = var102->attrs[COLOR_opts__Option___value].val; /* _value on <var102:OptionBool> */
+var105 = var107;
+RET_LABEL106:(void)0;
+}
+}
+var108 = ((struct instance_kernel__Bool*)var105)->value; /* autounbox from nullable Object to Bool */;
+if (var108){
+{
+{ /* Inline toolcontext#ToolContext#opt_warn (self) on <self:ToolContext> */
+var111 = self->attrs[COLOR_toolcontext__ToolContext___opt_warn].val; /* _opt_warn on <self:ToolContext> */
+if (unlikely(var111 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_warn");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 169);
+show_backtrace(1);
+}
+var109 = var111;
+RET_LABEL110:(void)0;
+}
+}
+var112 = 0;
+{
+{ /* Inline opts#Option#value= (var109,var112) on <var109:OptionCount> */
+/* Covariant cast for argument 0 (value) <var112:Int> isa VALUE */
+/* <var112:Int> isa VALUE */
+type_struct117 = var109->type->resolution_table->types[COLOR_opts__Option_VTVALUE];
+cltype115 = type_struct117->color;
+idtype116 = type_struct117->id;
+if(cltype115 >= (&type_kernel__Int)->table_size) {
+var114 = 0;
+} else {
+var114 = (&type_kernel__Int)->type_table[cltype115] == idtype116;
+}
+if (unlikely(!var114)) {
+var_class_name118 = type_kernel__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name118);
+PRINT_ERROR(" (%s:%d)\n", "lib/opts.nit", 40);
+show_backtrace(1);
+}
+var119 = BOX_kernel__Int(var112); /* autobox from Int to nullable Object */
+var109->attrs[COLOR_opts__Option___value].val = var119; /* _value on <var109:OptionCount> */
+RET_LABEL113:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_log_dir (self) on <self:ToolContext> */
+var122 = self->attrs[COLOR_toolcontext__ToolContext___opt_log_dir].val; /* _opt_log_dir on <self:ToolContext> */
+if (unlikely(var122 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log_dir");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 178);
+show_backtrace(1);
+}
+var120 = var122;
+RET_LABEL121:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var120) on <var120:OptionString> */
+var125 = var120->attrs[COLOR_opts__Option___value].val; /* _value on <var120:OptionString> */
+var123 = var125;
+RET_LABEL124:(void)0;
+}
+}
+var126 = NULL;
+if (var123 == NULL) {
+var127 = 0; /* is null */
+} else {
+var127 = 1; /* arg is null and recv is not */
+}
+if (0) {
+{ /* Inline kernel#Object#!= (var123,var126) on <var123:nullable Object(nullable String)> */
+var_other = var126;
+{
+var131 = ((short int (*)(val*, val*))(var123->class->vft[COLOR_kernel__Object___61d_61d]))(var123, var_other) /* == on <var123:nullable String(String)>*/;
+var130 = var131;
+}
+var132 = !var130;
+var128 = var132;
+goto RET_LABEL129;
+RET_LABEL129:(void)0;
+}
+var127 = var128;
+}
+if (var127){
+{
+{ /* Inline toolcontext#ToolContext#opt_log_dir (self) on <self:ToolContext> */
+var135 = self->attrs[COLOR_toolcontext__ToolContext___opt_log_dir].val; /* _opt_log_dir on <self:ToolContext> */
+if (unlikely(var135 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log_dir");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 178);
+show_backtrace(1);
+}
+var133 = var135;
+RET_LABEL134:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var133) on <var133:OptionString> */
+var138 = var133->attrs[COLOR_opts__Option___value].val; /* _value on <var133:OptionString> */
+var136 = var138;
+RET_LABEL137:(void)0;
+}
+}
+if (unlikely(var136 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Cast failed");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 277);
+show_backtrace(1);
+}
+{
+{ /* Inline toolcontext#ToolContext#log_directory= (self,var136) on <self:ToolContext> */
+self->attrs[COLOR_toolcontext__ToolContext___log_directory].val = var136; /* _log_directory on <self:ToolContext> */
+RET_LABEL139:(void)0;
+}
+}
+} else {
+}
+{
+{ /* Inline toolcontext#ToolContext#opt_log (self) on <self:ToolContext> */
+var142 = self->attrs[COLOR_toolcontext__ToolContext___opt_log].val; /* _opt_log on <self:ToolContext> */
+if (unlikely(var142 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_log");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 175);
+show_backtrace(1);
+}
+var140 = var142;
+RET_LABEL141:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var140) on <var140:OptionBool> */
+var145 = var140->attrs[COLOR_opts__Option___value].val; /* _value on <var140:OptionBool> */
+var143 = var145;
+RET_LABEL144:(void)0;
+}
+}
+var146 = ((struct instance_kernel__Bool*)var143)->value; /* autounbox from nullable Object to Bool */;
+if (var146){
+{
+{ /* Inline toolcontext#ToolContext#log_directory (self) on <self:ToolContext> */
+var149 = self->attrs[COLOR_toolcontext__ToolContext___log_directory].val; /* _log_directory on <self:ToolContext> */
+if (unlikely(var149 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _log_directory");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 81);
+show_backtrace(1);
+}
+var147 = var149;
+RET_LABEL148:(void)0;
+}
+}
+{
+file__String__mkdir(var147); /* Direct call file#String#mkdir on <var147:String>*/
+}
+} else {
+}
+{
+var150 = toolcontext__ToolContext__compute_nit_dir(self);
+}
+{
+{ /* Inline toolcontext#ToolContext#nit_dir= (self,var150) on <self:ToolContext> */
+self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val = var150; /* _nit_dir on <self:ToolContext> */
+RET_LABEL151:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#process_options for (self: Object, Sequence[String]) */
+void VIRTUAL_toolcontext__ToolContext__process_options(val* self, val* p0) {
+toolcontext__ToolContext__process_options(self, p0); /* Direct call toolcontext#ToolContext#process_options on <self:Object(ToolContext)>*/
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#version for (self: ToolContext): String */
+val* toolcontext__ToolContext__version(val* self) {
+val* var /* : String */;
+val* var1 /* : OptionBool */;
+val* var3 /* : OptionBool */;
+val* var4 /* : nullable Object */;
+val* var6 /* : nullable Object */;
+short int var7 /* : Bool */;
+static val* varonce;
+val* var8 /* : String */;
+char* var9 /* : NativeString */;
+long var10 /* : Int */;
+val* var11 /* : FlatString */;
+val* var12 /* : String */;
+{
+{ /* Inline toolcontext#ToolContext#opt_set_dummy_tool (self) on <self:ToolContext> */
+var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_set_dummy_tool].val; /* _opt_set_dummy_tool on <self:ToolContext> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_set_dummy_tool");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 187);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var1) on <var1:OptionBool> */
+var6 = var1->attrs[COLOR_opts__Option___value].val; /* _value on <var1:OptionBool> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var7 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
+if (var7){
+if (varonce) {
+var8 = varonce;
+} else {
+var9 = "DUMMY_VERSION";
+var10 = 13;
+var11 = string__NativeString__to_s_with_length(var9, var10);
+var8 = var11;
+varonce = var8;
+}
+var = var8;
+goto RET_LABEL;
+} else {
+}
+{
+var12 = version__Object__nit_version(self);
+}
+var = var12;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#version for (self: Object): String */
+val* VIRTUAL_toolcontext__ToolContext__version(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = toolcontext__ToolContext__version(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#toolname for (self: ToolContext): String */
+val* toolcontext__ToolContext__toolname(val* self) {
+val* var /* : String */;
+val* var1 /* : OptionBool */;
+val* var3 /* : OptionBool */;
+val* var4 /* : nullable Object */;
+val* var6 /* : nullable Object */;
+short int var7 /* : Bool */;
+static val* varonce;
+val* var8 /* : String */;
+char* var9 /* : NativeString */;
+long var10 /* : Int */;
+val* var11 /* : FlatString */;
+val* var12 /* : Sys */;
+val* var14 /* : Sys */;
+val* var15 /* : String */;
+static val* varonce16;
+val* var17 /* : String */;
+char* var18 /* : NativeString */;
+long var19 /* : Int */;
+val* var20 /* : FlatString */;
+val* var21 /* : String */;
+{
+{ /* Inline toolcontext#ToolContext#opt_set_dummy_tool (self) on <self:ToolContext> */
+var3 = self->attrs[COLOR_toolcontext__ToolContext___opt_set_dummy_tool].val; /* _opt_set_dummy_tool on <self:ToolContext> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _opt_set_dummy_tool");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 187);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
+{
+{ /* Inline opts#Option#value (var1) on <var1:OptionBool> */
+var6 = var1->attrs[COLOR_opts__Option___value].val; /* _value on <var1:OptionBool> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var7 = ((struct instance_kernel__Bool*)var4)->value; /* autounbox from nullable Object to Bool */;
+if (var7){
+if (varonce) {
+var8 = varonce;
+} else {
+var9 = "DUMMY_TOOL";
+var10 = 10;
+var11 = string__NativeString__to_s_with_length(var9, var10);
+var8 = var11;
+varonce = var8;
+}
+var = var8;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline kernel#Object#sys (self) on <self:ToolContext> */
+var14 = glob_sys;
+var12 = var14;
+goto RET_LABEL13;
+RET_LABEL13:(void)0;
+}
+}
+{
+var15 = string__Sys__program_name(var12);
+}
+if (varonce16) {
+var17 = varonce16;
+} else {
+var18 = "";
+var19 = 0;
+var20 = string__NativeString__to_s_with_length(var18, var19);
+var17 = var20;
+varonce16 = var17;
+}
+{
+var21 = file__String__basename(var15, var17);
+}
+var = var21;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#toolname for (self: Object): String */
+val* VIRTUAL_toolcontext__ToolContext__toolname(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = toolcontext__ToolContext__toolname(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#nit_dir for (self: ToolContext): nullable String */
+val* toolcontext__ToolContext__nit_dir(val* self) {
+val* var /* : nullable String */;
+val* var1 /* : nullable String */;
+var1 = self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <self:ToolContext> */
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#nit_dir for (self: Object): nullable String */
+val* VIRTUAL_toolcontext__ToolContext__nit_dir(val* self) {
+val* var /* : nullable String */;
+val* var1 /* : nullable String */;
+val* var3 /* : nullable String */;
+{ /* Inline toolcontext#ToolContext#nit_dir (self) on <self:Object(ToolContext)> */
+var3 = self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val; /* _nit_dir on <self:Object(ToolContext)> */
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#nit_dir= for (self: ToolContext, nullable String) */
+void toolcontext__ToolContext__nit_dir_61d(val* self, val* p0) {
+self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val = p0; /* _nit_dir on <self:ToolContext> */
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#nit_dir= for (self: Object, nullable String) */
+void VIRTUAL_toolcontext__ToolContext__nit_dir_61d(val* self, val* p0) {
+{ /* Inline toolcontext#ToolContext#nit_dir= (self,p0) on <self:Object(ToolContext)> */
+self->attrs[COLOR_toolcontext__ToolContext___nit_dir].val = p0; /* _nit_dir on <self:Object(ToolContext)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method toolcontext#ToolContext#compute_nit_dir for (self: ToolContext): nullable String */
+val* toolcontext__ToolContext__compute_nit_dir(val* self) {
+val* var /* : nullable String */;
+static val* varonce;
+val* var1 /* : String */;
+char* var2 /* : NativeString */;
+long var3 /* : Int */;
+val* var4 /* : FlatString */;
+val* var5 /* : String */;
+val* var_res /* var res: String */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+val* var8 /* : Sys */;
+val* var10 /* : Sys */;
+val* var11 /* : String */;
+val* var12 /* : String */;
+static val* varonce13;
+val* var14 /* : String */;
+char* var15 /* : NativeString */;
+long var16 /* : Int */;
+val* var17 /* : FlatString */;
+val* var18 /* : Array[Object] */;
+long var19 /* : Int */;
+val* var20 /* : NativeArray[Object] */;
+val* var21 /* : String */;
+short int var22 /* : Bool */;
+short int var23 /* : Bool */;
+short int var_ /* var : Bool */;
+static val* varonce24;
+val* var25 /* : String */;
+char* var26 /* : NativeString */;
+long var27 /* : Int */;
+val* var28 /* : FlatString */;
+val* var29 /* : Array[Object] */;
+long var30 /* : Int */;
+val* var31 /* : NativeArray[Object] */;
+val* var32 /* : String */;
+short int var33 /* : Bool */;
+val* var34 /* : String */;
+static val* varonce35;
+val* var36 /* : String */;
+char* var37 /* : NativeString */;
+long var38 /* : Int */;
+val* var39 /* : FlatString */;
+val* var_exe /* var exe: String */;
+short int var40 /* : Bool */;
+val* var41 /* : String */;
+val* var42 /* : String */;
+static val* varonce43;
+val* var44 /* : String */;
+char* var45 /* : NativeString */;
+long var46 /* : Int */;
+val* var47 /* : FlatString */;
+val* var48 /* : String */;
+short int var49 /* : Bool */;
+short int var50 /* : Bool */;
+short int var_51 /* var : Bool */;
+static val* varonce52;
+val* var53 /* : String */;
+char* var54 /* : NativeString */;
+long var55 /* : Int */;
+val* var56 /* : FlatString */;
+val* var57 /* : Array[Object] */;
+long var58 /* : Int */;
+val* var59 /* : NativeArray[Object] */;
+val* var60 /* : String */;
+short int var61 /* : Bool */;
+val* var62 /* : String */;
+val* var63 /* : null */;
+if (varonce) {
+var1 = varonce;
+} else {
+var2 = "NIT_DIR";
+var3 = 7;
+var4 = string__NativeString__to_s_with_length(var2, var3);
+var1 = var4;
+varonce = var1;
+}
+{
+var5 = environ__String__environ(var1);
+}
+var_res = var5;
+{
+var6 = string__Text__is_empty(var_res);
+}
+var7 = !var6;
+if (var7){
+var = var_res;
+goto RET_LABEL;
+} else {
+}
+{
+{ /* Inline kernel#Object#sys (self) on <self:ToolContext> */
+var10 = glob_sys;
+var8 = var10;
+goto RET_LABEL9;
+RET_LABEL9:(void)0;
+}
+}
+{
+var11 = string__Sys__program_name(var8);
+}
+{
+var12 = file__String__dirname(var11);
+}
+if (varonce13) {
+var14 = varonce13;
+} else {
+var15 = "/..";
+var16 = 3;
+var17 = string__NativeString__to_s_with_length(var15, var16);
+var14 = var17;
+varonce13 = var14;
+}
+var18 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var18 = array_instance Array[Object] */
+var19 = 2;
+var20 = NEW_array__NativeArray(var19, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var20)->values[0] = (val*) var12;
+((struct instance_array__NativeArray*)var20)->values[1] = (val*) var14;
+{
+((void (*)(val*, val*, long))(var18->class->vft[COLOR_array__Array__with_native]))(var18, var20, var19) /* with_native on <var18:Array[Object]>*/;
+}
+}
+{
+var21 = ((val* (*)(val*))(var18->class->vft[COLOR_string__Object__to_s]))(var18) /* to_s on <var18:Array[Object]>*/;
+}
+var_res = var21;
+{
+var23 = file__String__file_exists(var_res);
+}
+var_ = var23;
+if (var23){
+if (varonce24) {
+var25 = varonce24;
+} else {
+var26 = "/src/nit.nit";
+var27 = 12;
+var28 = string__NativeString__to_s_with_length(var26, var27);
+var25 = var28;
+varonce24 = var25;
+}
+var29 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var29 = array_instance Array[Object] */
+var30 = 2;
+var31 = NEW_array__NativeArray(var30, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var31)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var31)->values[1] = (val*) var25;
+{
+((void (*)(val*, val*, long))(var29->class->vft[COLOR_array__Array__with_native]))(var29, var31, var30) /* with_native on <var29:Array[Object]>*/;
+}
+}
+{
+var32 = ((val* (*)(val*))(var29->class->vft[COLOR_string__Object__to_s]))(var29) /* to_s on <var29:Array[Object]>*/;
+}
+{
+var33 = file__String__file_exists(var32);
+}
+var22 = var33;
+} else {
+var22 = var_;
+}
+if (var22){
+{
+var34 = file__String__simplify_path(var_res);
+}
+var = var34;
+goto RET_LABEL;
+} else {
+}
+if (varonce35) {
+var36 = varonce35;
+} else {
+var37 = "/proc/self/exe";
+var38 = 14;
+var39 = string__NativeString__to_s_with_length(var37, var38);
+var36 = var39;
+varonce35 = var36;
+}
+var_exe = var36;
+{
+var40 = file__String__file_exists(var_exe);
+}
+if (var40){
+{
+var41 = file__String__realpath(var_exe);
+}
+var_res = var41;
+{
+var42 = file__String__dirname(var_res);
+}
+if (varonce43) {
+var44 = varonce43;
+} else {
+var45 = "..";
+var46 = 2;
+var47 = string__NativeString__to_s_with_length(var45, var46);
+var44 = var47;
+varonce43 = var44;
+}
+{
+var48 = file__String__join_path(var42, var44);
+}
+var_res = var48;
+{
+var50 = file__String__file_exists(var_res);
+}
+var_51 = var50;
+if (var50){
+if (varonce52) {
+var53 = varonce52;
+} else {
+var54 = "/src/nit.nit";
+var55 = 12;
+var56 = string__NativeString__to_s_with_length(var54, var55);
+var53 = var56;
+varonce52 = var53;
+}
+var57 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var57 = array_instance Array[Object] */
+var58 = 2;
+var59 = NEW_array__NativeArray(var58, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var59)->values[0] = (val*) var_res;
+((struct instance_array__NativeArray*)var59)->values[1] = (val*) var53;
+{
+((void (*)(val*, val*, long))(var57->class->vft[COLOR_array__Array__with_native]))(var57, var59, var58) /* with_native on <var57:Array[Object]>*/;
+}
+}
+{
+var60 = ((val* (*)(val*))(var57->class->vft[COLOR_string__Object__to_s]))(var57) /* to_s on <var57:Array[Object]>*/;
+}
+{
+var61 = file__String__file_exists(var60);
+}
+var49 = var61;
+} else {
+var49 = var_51;
+}
+if (var49){
+{
+var62 = file__String__simplify_path(var_res);
+}
+var = var62;
+goto RET_LABEL;
+} else {
+}
+} else {
+}
+var63 = NULL;
+var = var63;
+goto RET_LABEL;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#ToolContext#compute_nit_dir for (self: Object): nullable String */
+val* VIRTUAL_toolcontext__ToolContext__compute_nit_dir(val* self) {
+val* var /* : nullable String */;
+val* var1 /* : nullable String */;
+var1 = toolcontext__ToolContext__compute_nit_dir(self);
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#BashCompletion#toolcontext for (self: BashCompletion): ToolContext */
+val* toolcontext__BashCompletion__toolcontext(val* self) {
+val* var /* : ToolContext */;
+val* var1 /* : ToolContext */;
+var1 = self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val; /* _toolcontext on <self:BashCompletion> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 347);
+show_backtrace(1);
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#BashCompletion#toolcontext for (self: Object): ToolContext */
+val* VIRTUAL_toolcontext__BashCompletion__toolcontext(val* self) {
+val* var /* : ToolContext */;
+val* var1 /* : ToolContext */;
+val* var3 /* : ToolContext */;
+{ /* Inline toolcontext#BashCompletion#toolcontext (self) on <self:Object(BashCompletion)> */
+var3 = self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val; /* _toolcontext on <self:Object(BashCompletion)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _toolcontext");
+PRINT_ERROR(" (%s:%d)\n", "src/toolcontext.nit", 347);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+var = var1;
+RET_LABEL:;
+return var;
+}
+/* method toolcontext#BashCompletion#toolcontext= for (self: BashCompletion, ToolContext) */
+void toolcontext__BashCompletion__toolcontext_61d(val* self, val* p0) {
+self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val = p0; /* _toolcontext on <self:BashCompletion> */
+RET_LABEL:;
+}
+/* method toolcontext#BashCompletion#toolcontext= for (self: Object, ToolContext) */
+void VIRTUAL_toolcontext__BashCompletion__toolcontext_61d(val* self, val* p0) {
+{ /* Inline toolcontext#BashCompletion#toolcontext= (self,p0) on <self:Object(BashCompletion)> */
+self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val = p0; /* _toolcontext on <self:Object(BashCompletion)> */
+RET_LABEL1:(void)0;
+}
+RET_LABEL:;
+}
+/* method toolcontext#BashCompletion#init for (self: BashCompletion, ToolContext) */
+void toolcontext__BashCompletion__init(val* self, val* p0) {
+val* var_toolcontext /* var toolcontext: ToolContext */;
+{
+{ /* Inline template#Template#init (self) on <self:BashCompletion> */
+RET_LABEL1:(void)0;
+}
+}
+var_toolcontext = p0;
+{
+{ /* Inline toolcontext#BashCompletion#toolcontext= (self,var_toolcontext) on <self:BashCompletion> */
+self->attrs[COLOR_toolcontext__BashCompletion___toolcontext].val = var_toolcontext; /* _toolcontext on <self:BashCompletion> */
+RET_LABEL2:(void)0;
+}
+}
+RET_LABEL:;
+}
+/* method toolcontext#BashCompletion#init for (self: Object, ToolContext) */
+void VIRTUAL_toolcontext__BashCompletion__init(val* self, val* p0) {
+toolcontext__BashCompletion__init(self, p0); /* Direct call toolcontext#BashCompletion#init on <self:Object(BashCompletion)>*/
+RET_LABEL:;
+}
+/* method toolcontext#BashCompletion#extract_options_names for (self: BashCompletion): Array[String] */
+val* toolcontext__BashCompletion__extract_options_names(val* self) {
+val* var /* : Array[String] */;
+val* var1 /* : Array[String] */;
+val* var_names /* var names: Array[String] */;
+val* var2 /* : ToolContext */;
+val* var4 /* : ToolContext */;
+val* var5 /* : OptionContext */;
+val* var7 /* : OptionContext */;
+val* var8 /* : Array[Option] */;
+val* var10 /* : Array[Option] */;
+val* var11 /* : ArrayIterator[nullable Object] */;
+short int var12 /* : Bool */;
+val* var13 /* : nullable Object */;
+val* var_option /* var option: Option */;
+val* var14 /* : Array[String] */;
+val* var16 /* : Array[String] */;
+val* var17 /* : ArrayIterator[nullable Object] */;
+short int var18 /* : Bool */;