Merge: Update xymus.net to activate the full API for the mobile client
[nit.git] / c_src / opts.sep.1.c
index b3ce7ee..ff06e30 100644 (file)
@@ -193,6 +193,11 @@ PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 46);
 fatal_exit(1);
 }
+{
+{ /* Inline kernel#Object#init (self) on <self:Option> */
+RET_LABEL1:(void)0;
+}
+}
 var_help = p0;
 var_default = p1;
 var_names = p2;
@@ -258,13 +263,13 @@ var1 = 1; /* is null */
 var1 = 0; /* arg is null but recv is not */
 }
 if (0) {
-var2 = standard___standard__Array___standard__kernel__Object___61d_61d(var_names, ((val*)NULL));
+var2 = core___core__Array___core__kernel__Object___61d_61d(var_names, ((val*)NULL));
 var1 = var2;
 }
 if (var1){
-var3 = NEW_standard__Array(&type_standard__Array__standard__String);
+var3 = NEW_core__Array(&type_core__Array__core__String);
 {
-standard___standard__Array___standard__kernel__Object__init(var3); /* Direct call array#Array#init on <var3:Array[String]>*/
+core___core__Array___core__kernel__Object__init(var3); /* Direct call array#Array#init on <var3:Array[String]>*/
 }
 {
 { /* Inline opts#Option#names= (self,var3) on <self:Option> */
@@ -274,7 +279,7 @@ RET_LABEL4:(void)0;
 }
 } else {
 {
-var5 = standard__array___Collection___to_a(var_names);
+var5 = core__array___Collection___to_a(var_names);
 }
 {
 { /* Inline opts#Option#names= (self,var5) on <self:Option> */
@@ -346,7 +351,7 @@ RET_LABEL15:(void)0;
 RET_LABEL:;
 }
 /* method opts#Option#to_s for (self: Option): String */
-val* opts___opts__Option___standard__string__Object__to_s(val* self) {
+val* opts___opts__Option___core__abstract_text__Object__to_s(val* self) {
 val* var /* : String */;
 val* var1 /* : String */;
 {
@@ -365,19 +370,19 @@ val* var1 /* : FlatBuffer */;
 static val* varonce;
 val* var2 /* : String */;
 char* var3 /* : NativeString */;
-val* var4 /* : FlatString */;
+val* var4 /* : String */;
 val* var_text /* var text: FlatBuffer */;
 val* var5 /* : Array[String] */;
 val* var7 /* : Array[String] */;
 static val* varonce8;
 val* var9 /* : String */;
 char* var10 /* : NativeString */;
-val* var11 /* : FlatString */;
+val* var11 /* : String */;
 val* var12 /* : String */;
 static val* varonce13;
 val* var14 /* : String */;
 char* var15 /* : NativeString */;
-val* var16 /* : FlatString */;
+val* var16 /* : String */;
 long var17 /* : Int */;
 long var19 /* : Int */;
 long var20 /* : Int */;
@@ -396,23 +401,23 @@ short int var30 /* : Bool */;
 static val* varonce31;
 val* var32 /* : String */;
 char* var33 /* : NativeString */;
-val* var34 /* : FlatString */;
+val* var34 /* : String */;
 val* var35 /* : String */;
 val* var36 /* : String */;
 val* var38 /* : String */;
 val* var39 /* : String */;
 var_off = p0;
-var1 = NEW_standard__FlatBuffer(&type_standard__FlatBuffer);
+var1 = NEW_core__FlatBuffer(&type_core__FlatBuffer);
 if (likely(varonce!=NULL)) {
 var2 = varonce;
 } else {
 var3 = "  ";
-var4 = standard___standard__NativeString___to_s_with_length(var3, 2l);
+var4 = core__flat___NativeString___to_s_full(var3, 2l, 2l);
 var2 = var4;
 varonce = var2;
 }
 {
-standard___standard__FlatBuffer___from(var1, var2); /* Direct call string#FlatBuffer#from on <var1:FlatBuffer>*/
+core___core__FlatBuffer___from(var1, var2); /* Direct call flat#FlatBuffer#from on <var1:FlatBuffer>*/
 }
 var_text = var1;
 {
@@ -431,30 +436,30 @@ if (likely(varonce8!=NULL)) {
 var9 = varonce8;
 } else {
 var10 = ", ";
-var11 = standard___standard__NativeString___to_s_with_length(var10, 2l);
+var11 = core__flat___NativeString___to_s_full(var10, 2l, 2l);
 var9 = var11;
 varonce8 = var9;
 }
 {
-var12 = standard__string___Collection___join(var5, var9);
+var12 = core__abstract_text___Collection___join(var5, var9);
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_text, var12); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
+core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var12); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
 }
 if (likely(varonce13!=NULL)) {
 var14 = varonce13;
 } else {
 var15 = "  ";
-var16 = standard___standard__NativeString___to_s_with_length(var15, 2l);
+var16 = core__flat___NativeString___to_s_full(var15, 2l, 2l);
 var14 = var16;
 varonce13 = var14;
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_text, var14); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
+core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var14); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
 }
 {
-{ /* Inline string#FlatText#length (var_text) on <var_text:FlatBuffer> */
-var19 = var_text->attrs[COLOR_standard__string__FlatText___length].l; /* _length on <var_text:FlatBuffer> */
+{ /* Inline abstract_text#FlatText#length (var_text) on <var_text:FlatBuffer> */
+var19 = var_text->attrs[COLOR_core__abstract_text__FlatText___length].l; /* _length on <var_text:FlatBuffer> */
 var17 = var19;
 RET_LABEL18:(void)0;
 }
@@ -465,9 +470,9 @@ RET_LABEL18:(void)0;
 /* <var17:Int> isa OTHER */
 var22 = 1; /* easy <var17:Int> isa OTHER*/
 if (unlikely(!var22)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 540);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 734);
 fatal_exit(1);
 }
 var23 = var_off - var17;
@@ -483,9 +488,9 @@ var_rest = var20;
 /* <0l:Int> isa OTHER */
 var26 = 1; /* easy <0l:Int> isa OTHER*/
 if (unlikely(!var26)) {
-var_class_name29 = type_standard__Int.name;
+var_class_name29 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name29);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
 fatal_exit(1);
 }
 var30 = var_rest > 0l;
@@ -499,15 +504,15 @@ if (likely(varonce31!=NULL)) {
 var32 = varonce31;
 } else {
 var33 = " ";
-var34 = standard___standard__NativeString___to_s_with_length(var33, 1l);
+var34 = core__flat___NativeString___to_s_full(var33, 1l, 1l);
 var32 = var34;
 varonce31 = var32;
 }
 {
-var35 = ((val*(*)(val* self, long p0))(var32->class->vft[COLOR_standard__string__String___42d]))(var32, var_rest); /* * on <var32:String>*/
+var35 = ((val*(*)(val* self, long p0))(var32->class->vft[COLOR_core__abstract_text__String___42d]))(var32, var_rest); /* * on <var32:String>*/
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_text, var35); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
+core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var35); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
 }
 } else {
 }
@@ -524,20 +529,22 @@ RET_LABEL37:(void)0;
 }
 }
 {
-standard___standard__FlatBuffer___Buffer__append(var_text, var36); /* Direct call string#FlatBuffer#append on <var_text:FlatBuffer>*/
+core___core__FlatBuffer___core__abstract_text__Buffer__append(var_text, var36); /* Direct call flat#FlatBuffer#append on <var_text:FlatBuffer>*/
 }
 {
-var39 = standard___standard__FlatBuffer___Object__to_s(var_text);
+var39 = core___core__FlatBuffer___core__abstract_text__Object__to_s(var_text);
 }
 var = var39;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method opts#Option#read_param for (self: Option, Iterator[String]) */
-void opts___opts__Option___read_param(val* self, val* p0) {
+/* method opts#Option#read_param for (self: Option, OptionContext, Iterator[String]) */
+void opts___opts__Option___read_param(val* self, val* p0, val* p1) {
+val* var_opts /* var opts: OptionContext */;
 val* var_it /* var it: Iterator[String] */;
-var_it = p0;
+var_opts = p0;
+var_it = p1;
 {
 { /* Inline opts#Option#read= (self,1) on <self:Option> */
 self->attrs[COLOR_opts__Option___read].s = 1; /* _read on <self:Option> */
@@ -559,8 +566,9 @@ opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#
 }
 RET_LABEL:;
 }
-/* method opts#OptionBool#read_param for (self: OptionBool, Iterator[String]) */
-void opts___opts__OptionBool___Option__read_param(val* self, val* p0) {
+/* method opts#OptionBool#read_param for (self: OptionBool, OptionContext, Iterator[String]) */
+void opts___opts__OptionBool___Option__read_param(val* self, val* p0, val* p1) {
+val* var_opts /* var opts: OptionContext */;
 val* var_it /* var it: Iterator[String] */;
 short int var /* : Bool */;
 int cltype;
@@ -568,9 +576,10 @@ int idtype;
 const struct type* type_struct;
 const char* var_class_name;
 val* var2 /* : nullable Object */;
-var_it = p0;
+var_opts = p0;
+var_it = p1;
 {
-((void(*)(val* self, val* p0))(self->class->vft[COLOR_opts___opts__OptionBool___Option__read_param]))(self, p0); /* read_param on <self:OptionBool>*/
+((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionBool___Option__read_param]))(self, p0, p1); /* read_param on <self:OptionBool>*/
 }
 {
 { /* Inline opts#Option#value= (self,1) on <self:OptionBool> */
@@ -579,13 +588,13 @@ var_it = p0;
 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
 cltype = type_struct->color;
 idtype = type_struct->id;
-if(cltype >= (&type_standard__Bool)->table_size) {
+if(cltype >= (&type_core__Bool)->table_size) {
 var = 0;
 } else {
-var = (&type_standard__Bool)->type_table[cltype] == idtype;
+var = (&type_core__Bool)->type_table[cltype] == idtype;
 }
 if (unlikely(!var)) {
-var_class_name = type_standard__Bool.name;
+var_class_name = type_core__Bool.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
 fatal_exit(1);
@@ -610,8 +619,9 @@ opts___opts__Option___init(self, var_help, var, var_names); /* Direct call opts#
 }
 RET_LABEL:;
 }
-/* method opts#OptionCount#read_param for (self: OptionCount, Iterator[String]) */
-void opts___opts__OptionCount___Option__read_param(val* self, val* p0) {
+/* method opts#OptionCount#read_param for (self: OptionCount, OptionContext, Iterator[String]) */
+void opts___opts__OptionCount___Option__read_param(val* self, val* p0, val* p1) {
+val* var_opts /* var opts: OptionContext */;
 val* var_it /* var it: Iterator[String] */;
 val* var_ /* var : OptionCount */;
 val* var /* : nullable Object */;
@@ -629,9 +639,10 @@ int idtype11;
 const struct type* type_struct;
 const char* var_class_name12;
 val* var13 /* : nullable Object */;
-var_it = p0;
+var_opts = p0;
+var_it = p1;
 {
-((void(*)(val* self, val* p0))(self->class->vft[COLOR_opts___opts__OptionCount___Option__read_param]))(self, p0); /* read_param on <self:OptionCount>*/
+((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionCount___Option__read_param]))(self, p0, p1); /* read_param on <self:OptionCount>*/
 }
 var_ = self;
 {
@@ -647,9 +658,9 @@ RET_LABEL1:(void)0;
 /* <1l:Int> isa OTHER */
 var5 = 1; /* easy <1l:Int> isa OTHER*/
 if (unlikely(!var5)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
 var6 = (long)(var)>>2;
@@ -666,13 +677,13 @@ RET_LABEL4:(void)0;
 type_struct = var_->type->resolution_table->types[COLOR_opts__Option__VALUE];
 cltype10 = type_struct->color;
 idtype11 = type_struct->id;
-if(cltype10 >= (&type_standard__Int)->table_size) {
+if(cltype10 >= (&type_core__Int)->table_size) {
 var9 = 0;
 } else {
-var9 = (&type_standard__Int)->type_table[cltype10] == idtype11;
+var9 = (&type_core__Int)->type_table[cltype10] == idtype11;
 }
 if (unlikely(!var9)) {
-var_class_name12 = type_standard__Int.name;
+var_class_name12 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name12);
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
 fatal_exit(1);
@@ -693,199 +704,285 @@ var = var1;
 RET_LABEL:;
 return var;
 }
-/* method opts#OptionParameter#read_param for (self: OptionParameter, Iterator[String]) */
-void opts___opts__OptionParameter___Option__read_param(val* self, val* p0) {
+/* method opts#OptionParameter#read_param for (self: OptionParameter, OptionContext, Iterator[String]) */
+void opts___opts__OptionParameter___Option__read_param(val* self, val* p0, val* p1) {
+val* var_opts /* var opts: OptionContext */;
 val* var_it /* var it: Iterator[String] */;
 short int var /* : Bool */;
+short int var_ok /* var ok: Bool */;
 short int var1 /* : Bool */;
-short int var_ /* var : Bool */;
 short int var2 /* : Bool */;
-val* var3 /* : nullable Object */;
+short int var3 /* : Bool */;
+short int var_ /* var : Bool */;
 short int var4 /* : Bool */;
-short int var_5 /* var : Bool */;
-val* var6 /* : nullable Object */;
-val* var7 /* : SequenceRead[Char] */;
-val* var8 /* : nullable Object */;
-short int var9 /* : Bool */;
+short int var6 /* : Bool */;
+short int var7 /* : Bool */;
+short int var_8 /* var : Bool */;
+val* var9 /* : nullable Object */;
+short int var10 /* : Bool */;
 short int var11 /* : Bool */;
-uint32_t var12 /* : Char */;
-short int var13 /* : Bool */;
-val* var14 /* : nullable Object */;
+short int var_12 /* var : Bool */;
+val* var13 /* : nullable Object */;
+val* var14 /* : SequenceRead[Char] */;
 val* var15 /* : nullable Object */;
-short int var17 /* : Bool */;
+short int var16 /* : Bool */;
+short int var18 /* : Bool */;
+uint32_t var19 /* : Char */;
+val* var20 /* : Array[Option] */;
+val* var22 /* : Array[Option] */;
+val* var_23 /* var : Array[Option] */;
+val* var24 /* : IndexedIterator[nullable Object] */;
+val* var_25 /* var : IndexedIterator[Option] */;
+short int var26 /* : Bool */;
+val* var27 /* : nullable Object */;
+val* var_opt /* var opt: Option */;
+val* var28 /* : Array[String] */;
+val* var30 /* : Array[String] */;
+val* var31 /* : nullable Object */;
+short int var32 /* : Bool */;
+val* var33 /* : nullable Object */;
+val* var34 /* : nullable Object */;
+short int var36 /* : Bool */;
 int cltype;
 int idtype;
 const struct type* type_struct;
 short int is_nullable;
 const char* var_class_name;
-short int var18 /* : Bool */;
-short int var20 /* : Bool */;
-val* var21 /* : Array[String] */;
-val* var23 /* : Array[String] */;
-val* var24 /* : NativeArray[String] */;
+val* var37 /* : Array[String] */;
+val* var39 /* : Array[String] */;
+val* var40 /* : NativeArray[String] */;
 static val* varonce;
-static val* varonce25;
-val* var26 /* : String */;
-char* var27 /* : NativeString */;
-val* var28 /* : FlatString */;
-static val* varonce29;
-val* var30 /* : String */;
-char* var31 /* : NativeString */;
-val* var32 /* : FlatString */;
-val* var33 /* : Array[String] */;
-val* var35 /* : Array[String] */;
-val* var36 /* : nullable Object */;
-val* var37 /* : String */;
-var_it = p0;
+static val* varonce41;
+val* var42 /* : String */;
+char* var43 /* : NativeString */;
+val* var44 /* : String */;
+static val* varonce45;
+val* var46 /* : String */;
+char* var47 /* : NativeString */;
+val* var48 /* : String */;
+val* var49 /* : Array[String] */;
+val* var51 /* : Array[String] */;
+val* var52 /* : nullable Object */;
+val* var53 /* : String */;
+var_opts = p0;
+var_it = p1;
 {
-((void(*)(val* self, val* p0))(self->class->vft[COLOR_opts___opts__OptionParameter___Option__read_param]))(self, p0); /* read_param on <self:OptionParameter>*/
+((void(*)(val* self, val* p0, val* p1))(self->class->vft[COLOR_opts___opts__OptionParameter___Option__read_param]))(self, p0, p1); /* read_param on <self:OptionParameter>*/
 }
 {
-var1 = ((short int(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_it); /* is_ok on <var_it:Iterator[String]>*/
+var = ((short int(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_it); /* is_ok on <var_it:Iterator[String]>*/
+}
+var_ok = var;
+var_ = var_ok;
+if (var_ok){
+{
+{ /* Inline opts#OptionParameter#parameter_mandatory (self) on <self:OptionParameter> */
+var6 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
+var4 = var6;
+RET_LABEL5:(void)0;
+}
+}
+var7 = !var4;
+var3 = var7;
+} else {
+var3 = var_;
+}
+var_8 = var3;
+if (var3){
+{
+var9 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+}
+{
+var10 = ((short int(*)(val* self))(var9->class->vft[COLOR_core__abstract_text__Text__is_empty]))(var9); /* is_empty on <var9:nullable Object(String)>*/
+}
+var11 = !var10;
+var2 = var11;
+} else {
+var2 = var_8;
+}
+var_12 = var2;
+if (var2){
+{
+var13 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+}
+{
+var14 = ((val*(*)(val* self))(var13->class->vft[COLOR_core__abstract_text__Text__chars]))(var13); /* chars on <var13:nullable Object(String)>*/
+}
+{
+var15 = ((val*(*)(val* self))((((long)var14&3)?class_info[((long)var14&3)]:var14->class)->vft[COLOR_core__abstract_collection__Collection__first]))(var14); /* first on <var14:SequenceRead[Char]>*/
+}
+{
+{ /* Inline kernel#Char#== (var15,'-') on <var15:nullable Object(Char)> */
+var19 = (uint32_t)((long)(var15)>>2);
+var18 = var19 == '-';
+var16 = var18;
+goto RET_LABEL17;
+RET_LABEL17:(void)0;
+}
+}
+var1 = var16;
+} else {
+var1 = var_12;
 }
-var_ = var1;
 if (var1){
 {
-var3 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+{ /* Inline opts#OptionContext#options (var_opts) on <var_opts:OptionContext> */
+var22 = var_opts->attrs[COLOR_opts__OptionContext___options].val; /* _options on <var_opts:OptionContext> */
+if (unlikely(var22 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
+fatal_exit(1);
 }
+var20 = var22;
+RET_LABEL21:(void)0;
+}
+}
+var_23 = var20;
 {
-var4 = standard___standard__Text___is_empty(var3);
+var24 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_23);
 }
-var_5 = var4;
-if (var4){
-var2 = var_5;
+var_25 = var24;
+for(;;) {
+{
+var26 = ((short int(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_25); /* is_ok on <var_25:IndexedIterator[Option]>*/
+}
+if (var26){
 } else {
+goto BREAK_label;
+}
 {
-var6 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+var27 = ((val*(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_25); /* item on <var_25:IndexedIterator[Option]>*/
 }
+var_opt = var27;
 {
-var7 = ((val*(*)(val* self))(var6->class->vft[COLOR_standard__string__Text__chars]))(var6); /* chars on <var6:nullable Object(String)>*/
+{ /* Inline opts#Option#names (var_opt) on <var_opt:Option> */
+var30 = var_opt->attrs[COLOR_opts__Option___names].val; /* _names on <var_opt:Option> */
+if (unlikely(var30 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
+fatal_exit(1);
+}
+var28 = var30;
+RET_LABEL29:(void)0;
+}
 }
 {
-var8 = ((val*(*)(val* self))((((long)var7&3)?class_info[((long)var7&3)]:var7->class)->vft[COLOR_standard__abstract_collection__Collection__first]))(var7); /* first on <var7:SequenceRead[Char]>*/
+var31 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+}
+{
+var32 = core___core__AbstractArrayRead___core__abstract_collection__Collection__has(var28, var31);
+}
+if (var32){
+var_ok = 0;
+goto BREAK_label;
+} else {
 }
 {
-{ /* Inline kernel#Char#!= (var8,'-') on <var8:nullable Object(Char)> */
-var12 = (uint32_t)((long)(var8)>>2);
-var11 = (var8 != NULL) && (var12 == '-');
-var13 = !var11;
-var9 = var13;
-goto RET_LABEL10;
-RET_LABEL10:(void)0;
+((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_25); /* next on <var_25:IndexedIterator[Option]>*/
 }
 }
-var2 = var9;
+BREAK_label: (void)0;
+{
+((void(*)(val* self))((((long)var_25&3)?class_info[((long)var_25&3)]:var_25->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_25); /* finish on <var_25:IndexedIterator[Option]>*/
 }
-var = var2;
 } else {
-var = var_;
 }
-if (var){
+if (var_ok){
 {
-var14 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+var33 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
 }
 {
-var15 = ((val*(*)(val* self, val* p0))(self->class->vft[COLOR_opts__OptionParameter__convert]))(self, var14); /* convert on <self:OptionParameter>*/
+var34 = ((val*(*)(val* self, val* p0))(self->class->vft[COLOR_opts__OptionParameter__convert]))(self, var33); /* convert on <self:OptionParameter>*/
 }
 {
-{ /* Inline opts#Option#value= (self,var15) on <self:OptionParameter> */
-/* Covariant cast for argument 0 (value) <var15:nullable Object> isa VALUE */
-/* <var15:nullable Object> isa VALUE */
+{ /* Inline opts#Option#value= (self,var34) on <self:OptionParameter> */
+/* Covariant cast for argument 0 (value) <var34:nullable Object> isa VALUE */
+/* <var34:nullable Object> isa VALUE */
 type_struct = self->type->resolution_table->types[COLOR_opts__Option__VALUE];
 cltype = type_struct->color;
 idtype = type_struct->id;
 is_nullable = type_struct->is_nullable;
-if(var15 == NULL) {
-var17 = is_nullable;
+if(var34 == NULL) {
+var36 = is_nullable;
 } else {
-if(cltype >= (((long)var15&3)?type_info[((long)var15&3)]:var15->type)->table_size) {
-var17 = 0;
+if(cltype >= (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->table_size) {
+var36 = 0;
 } else {
-var17 = (((long)var15&3)?type_info[((long)var15&3)]:var15->type)->type_table[cltype] == idtype;
+var36 = (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->type_table[cltype] == idtype;
 }
 }
-if (unlikely(!var17)) {
-var_class_name = var15 == NULL ? "null" : (((long)var15&3)?type_info[((long)var15&3)]:var15->type)->name;
+if (unlikely(!var36)) {
+var_class_name = var34 == NULL ? "null" : (((long)var34&3)?type_info[((long)var34&3)]:var34->type)->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 40);
 fatal_exit(1);
 }
-self->attrs[COLOR_opts__Option___value].val = var15; /* _value on <self:OptionParameter> */
-RET_LABEL16:(void)0;
+self->attrs[COLOR_opts__Option___value].val = var34; /* _value on <self:OptionParameter> */
+RET_LABEL35:(void)0;
 }
 }
 {
-((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
+((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
 }
 } else {
 {
-{ /* Inline opts#OptionParameter#parameter_mandatory (self) on <self:OptionParameter> */
-var20 = self->attrs[COLOR_opts__OptionParameter___parameter_mandatory].s; /* _parameter_mandatory on <self:OptionParameter> */
-var18 = var20;
-RET_LABEL19:(void)0;
-}
-}
-if (var18){
-{
 { /* Inline opts#Option#errors (self) on <self:OptionParameter> */
-var23 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:OptionParameter> */
-if (unlikely(var23 == NULL)) {
+var39 = self->attrs[COLOR_opts__Option___errors].val; /* _errors on <self:OptionParameter> */
+if (unlikely(var39 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28);
 fatal_exit(1);
 }
-var21 = var23;
-RET_LABEL22:(void)0;
+var37 = var39;
+RET_LABEL38:(void)0;
 }
 }
 if (unlikely(varonce==NULL)) {
-var24 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
-if (likely(varonce25!=NULL)) {
-var26 = varonce25;
+var40 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce41!=NULL)) {
+var42 = varonce41;
 } else {
-var27 = "Parameter expected for option ";
-var28 = standard___standard__NativeString___to_s_with_length(var27, 30l);
-var26 = var28;
-varonce25 = var26;
+var43 = "Parameter expected for option ";
+var44 = core__flat___NativeString___to_s_full(var43, 30l, 30l);
+var42 = var44;
+varonce41 = var42;
 }
-((struct instance_standard__NativeArray*)var24)->values[0]=var26;
-if (likely(varonce29!=NULL)) {
-var30 = varonce29;
+((struct instance_core__NativeArray*)var40)->values[0]=var42;
+if (likely(varonce45!=NULL)) {
+var46 = varonce45;
 } else {
-var31 = ".";
-var32 = standard___standard__NativeString___to_s_with_length(var31, 1l);
-var30 = var32;
-varonce29 = var30;
+var47 = ".";
+var48 = core__flat___NativeString___to_s_full(var47, 1l, 1l);
+var46 = var48;
+varonce45 = var46;
 }
-((struct instance_standard__NativeArray*)var24)->values[2]=var30;
+((struct instance_core__NativeArray*)var40)->values[2]=var46;
 } else {
-var24 = varonce;
+var40 = varonce;
 varonce = NULL;
 }
 {
 { /* Inline opts#Option#names (self) on <self:OptionParameter> */
-var35 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:OptionParameter> */
-if (unlikely(var35 == NULL)) {
+var51 = self->attrs[COLOR_opts__Option___names].val; /* _names on <self:OptionParameter> */
+if (unlikely(var51 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
 fatal_exit(1);
 }
-var33 = var35;
-RET_LABEL34:(void)0;
+var49 = var51;
+RET_LABEL50:(void)0;
 }
 }
 {
-var36 = standard___standard__SequenceRead___Collection__first(var33);
+var52 = core___core__SequenceRead___Collection__first(var49);
 }
-((struct instance_standard__NativeArray*)var24)->values[1]=var36;
+((struct instance_core__NativeArray*)var40)->values[1]=var52;
 {
-var37 = ((val*(*)(val* self))(var24->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var24); /* native_to_s on <var24:NativeArray[String]>*/
+var53 = ((val*(*)(val* self))(var40->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var40); /* native_to_s on <var40:NativeArray[String]>*/
 }
-varonce = var24;
+varonce = var40;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var21, var37); /* Direct call array#Array#add on <var21:Array[String]>*/
-}
-} else {
+core___core__Array___core__abstract_collection__SimpleCollection__add(var37, var53); /* Direct call array#Array#add on <var37:Array[String]>*/
 }
 }
 RET_LABEL:;
@@ -919,7 +1016,7 @@ var = ((val*)NULL)->type->type_table[cltype] == idtype;
 if (unlikely(!var)) {
 var_class_name = ((val*)NULL) == NULL ? "null" : ((val*)NULL)->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 172);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 184);
 fatal_exit(1);
 }
 {
@@ -949,7 +1046,7 @@ var1 = var_str->type->type_table[cltype] == idtype;
 if (unlikely(!var1)) {
 var_class_name = var_str == NULL ? "null" : var_str->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 174);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 186);
 fatal_exit(1);
 }
 var = var_str;
@@ -979,7 +1076,7 @@ val* var_str /* var str: String */;
 long var1 /* : Int */;
 var_str = p0;
 {
-var1 = standard___standard__Text___to_i(var_str);
+var1 = core__fixed_ints___Text___to_i(var_str);
 }
 var = var1;
 goto RET_LABEL;
@@ -1011,9 +1108,9 @@ const struct type* type_struct;
 const char* var_class_name;
 var_help = p0;
 var_names = p1;
-var = NEW_standard__Array(&type_standard__Array__standard__String);
+var = NEW_core__Array(&type_core__Array__core__String);
 {
-standard___standard__Array___standard__kernel__Object__init(var); /* Direct call array#Array#init on <var:Array[String]>*/
+core___core__Array___core__kernel__Object__init(var); /* Direct call array#Array#init on <var:Array[String]>*/
 }
 {
 { /* Inline opts#OptionArray#values= (self,var) on <self:OptionArray> */
@@ -1026,7 +1123,7 @@ RET_LABEL1:(void)0;
 var4 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
 if (unlikely(var4 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 254);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
 fatal_exit(1);
 }
 var2 = var4;
@@ -1045,7 +1142,7 @@ var5 = var2->type->type_table[cltype] == idtype;
 if (unlikely(!var5)) {
 var_class_name = var2 == NULL ? "null" : var2->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 251);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
 fatal_exit(1);
 }
 {
@@ -1060,7 +1157,7 @@ val* var1 /* : Array[String] */;
 var1 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 254);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
 fatal_exit(1);
 }
 var = var1;
@@ -1091,7 +1188,7 @@ var_str = p0;
 var3 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
 if (unlikely(var3 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 254);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
 fatal_exit(1);
 }
 var1 = var3;
@@ -1099,14 +1196,14 @@ RET_LABEL2:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var1, var_str); /* Direct call array#Array#add on <var1:Array[String]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var1, var_str); /* Direct call array#Array#add on <var1:Array[String]>*/
 }
 {
 { /* Inline opts#OptionArray#values (self) on <self:OptionArray> */
 var6 = self->attrs[COLOR_opts__OptionArray___values].val; /* _values on <self:OptionArray> */
 if (unlikely(var6 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _values");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 254);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
 fatal_exit(1);
 }
 var4 = var6;
@@ -1125,7 +1222,7 @@ var7 = var4->type->type_table[cltype] == idtype;
 if (unlikely(!var7)) {
 var_class_name = var4 == NULL ? "null" : var4->type->name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "VALUE", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 258);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 271);
 fatal_exit(1);
 }
 var = var4;
@@ -1140,7 +1237,7 @@ val* var1 /* : Array[Option] */;
 var1 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
 fatal_exit(1);
 }
 var = var1;
@@ -1154,21 +1251,21 @@ val* var1 /* : Array[String] */;
 var1 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 280);
 fatal_exit(1);
 }
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method opts#OptionContext#errors for (self: OptionContext): Array[String] */
-val* opts___opts__OptionContext___errors(val* self) {
+/* method opts#OptionContext#context_errors for (self: OptionContext): Array[String] */
+val* opts___opts__OptionContext___context_errors(val* self) {
 val* var /* : Array[String] */;
 val* var1 /* : Array[String] */;
-var1 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
+var1 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on <self:OptionContext> */
 if (unlikely(var1 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 270);
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors");
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283);
 fatal_exit(1);
 }
 var = var1;
@@ -1182,7 +1279,7 @@ val* var1 /* : HashMap[String, Option] */;
 var1 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
 if (unlikely(var1 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 273);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
 fatal_exit(1);
 }
 var = var1;
@@ -1200,7 +1297,7 @@ var_opts = p0;
 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
 fatal_exit(1);
 }
 var = var2;
@@ -1208,7 +1305,7 @@ RET_LABEL1:(void)0;
 }
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var, var_opts); /* Direct call array#Array#add_all on <var:Array[Option]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add_all(var, var_opts); /* Direct call array#Array#add_all on <var:Array[Option]>*/
 }
 RET_LABEL:;
 }
@@ -1218,8 +1315,8 @@ long var_lmax /* var lmax: Int */;
 val* var /* : Array[Option] */;
 val* var2 /* : Array[Option] */;
 val* var_ /* var : Array[Option] */;
-val* var3 /* : ArrayIterator[nullable Object] */;
-val* var_4 /* var : ArrayIterator[Option] */;
+val* var3 /* : IndexedIterator[nullable Object] */;
+val* var_4 /* var : IndexedIterator[Option] */;
 short int var5 /* : Bool */;
 val* var6 /* : nullable Object */;
 val* var_i /* var i: Option */;
@@ -1227,50 +1324,50 @@ long var_l /* var l: Int */;
 val* var7 /* : Array[String] */;
 val* var9 /* : Array[String] */;
 val* var_10 /* var : Array[String] */;
-val* var11 /* : ArrayIterator[nullable Object] */;
-val* var_12 /* var : ArrayIterator[String] */;
+val* var11 /* : IndexedIterator[nullable Object] */;
+val* var_12 /* var : IndexedIterator[String] */;
 short int var13 /* : Bool */;
-val* var14 /* : nullable Object */;
+val* var15 /* : nullable Object */;
 val* var_n /* var n: String */;
-long var15 /* : Int */;
 long var16 /* : Int */;
-short int var18 /* : Bool */;
+long var17 /* : Int */;
+short int var19 /* : Bool */;
 int cltype;
 int idtype;
 const char* var_class_name;
-long var19 /* : Int */;
 long var20 /* : Int */;
-short int var22 /* : Bool */;
-int cltype23;
-int idtype24;
-const char* var_class_name25;
-long var26 /* : Int */;
-short int var27 /* : Bool */;
-short int var29 /* : Bool */;
-int cltype30;
-int idtype31;
-const char* var_class_name32;
-short int var33 /* : Bool */;
+long var21 /* : Int */;
+short int var23 /* : Bool */;
+int cltype24;
+int idtype25;
+const char* var_class_name26;
+long var27 /* : Int */;
+short int var28 /* : Bool */;
+short int var30 /* : Bool */;
+int cltype31;
+int idtype32;
+const char* var_class_name33;
+short int var34 /* : Bool */;
 val* var35 /* : Array[Option] */;
 val* var37 /* : Array[Option] */;
 val* var_38 /* var : Array[Option] */;
-val* var39 /* : ArrayIterator[nullable Object] */;
-val* var_40 /* var : ArrayIterator[Option] */;
+val* var39 /* : IndexedIterator[nullable Object] */;
+val* var_40 /* var : IndexedIterator[Option] */;
 short int var41 /* : Bool */;
-val* var42 /* : nullable Object */;
-val* var_i43 /* var i: Option */;
-short int var44 /* : Bool */;
-short int var46 /* : Bool */;
+val* var43 /* : nullable Object */;
+val* var_i44 /* var i: Option */;
+short int var45 /* : Bool */;
 short int var47 /* : Bool */;
-val* var48 /* : Sys */;
-val* var49 /* : String */;
+short int var48 /* : Bool */;
+val* var49 /* : Sys */;
+val* var50 /* : String */;
 var_lmax = 1l;
 {
 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
 fatal_exit(1);
 }
 var = var2;
@@ -1279,16 +1376,19 @@ RET_LABEL1:(void)0;
 }
 var_ = var;
 {
-var3 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
 }
 var_4 = var3;
 for(;;) {
 {
-var5 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_4);
+var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[Option]>*/
 }
 if (var5){
+} else {
+goto BREAK_label;
+}
 {
-var6 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_4);
+var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[Option]>*/
 }
 var_i = var6;
 var_l = 3l;
@@ -1306,105 +1406,102 @@ RET_LABEL8:(void)0;
 }
 var_10 = var7;
 {
-var11 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_10);
+var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_10);
 }
 var_12 = var11;
 for(;;) {
 {
-var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_12);
+var13 = ((short int(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_12); /* is_ok on <var_12:IndexedIterator[String]>*/
 }
 if (var13){
+} else {
+goto BREAK_label14;
+}
 {
-var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_12);
+var15 = ((val*(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_12); /* item on <var_12:IndexedIterator[String]>*/
 }
-var_n = var14;
+var_n = var15;
 {
-var15 = ((long(*)(val* self))(var_n->class->vft[COLOR_standard__string__Text__length]))(var_n); /* length on <var_n:String>*/
+var16 = ((long(*)(val* self))(var_n->class->vft[COLOR_core__abstract_text__Text__length]))(var_n); /* length on <var_n:String>*/
 }
 {
-{ /* Inline kernel#Int#+ (var15,2l) on <var15:Int> */
+{ /* Inline kernel#Int#+ (var16,2l) on <var16:Int> */
 /* Covariant cast for argument 0 (i) <2l:Int> isa OTHER */
 /* <2l:Int> isa OTHER */
-var18 = 1; /* easy <2l:Int> isa OTHER*/
-if (unlikely(!var18)) {
-var_class_name = type_standard__Int.name;
+var19 = 1; /* easy <2l:Int> isa OTHER*/
+if (unlikely(!var19)) {
+var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
-var19 = var15 + 2l;
-var16 = var19;
-goto RET_LABEL17;
-RET_LABEL17:(void)0;
+var20 = var16 + 2l;
+var17 = var20;
+goto RET_LABEL18;
+RET_LABEL18:(void)0;
 }
 }
 {
-{ /* Inline kernel#Int#+ (var_l,var16) on <var_l:Int> */
-/* Covariant cast for argument 0 (i) <var16:Int> isa OTHER */
-/* <var16:Int> isa OTHER */
-var22 = 1; /* easy <var16:Int> isa OTHER*/
-if (unlikely(!var22)) {
-var_class_name25 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name25);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 537);
+{ /* Inline kernel#Int#+ (var_l,var17) on <var_l:Int> */
+/* Covariant cast for argument 0 (i) <var17:Int> isa OTHER */
+/* <var17:Int> isa OTHER */
+var23 = 1; /* easy <var17:Int> isa OTHER*/
+if (unlikely(!var23)) {
+var_class_name26 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name26);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 731);
 fatal_exit(1);
 }
-var26 = var_l + var16;
-var20 = var26;
-goto RET_LABEL21;
-RET_LABEL21:(void)0;
+var27 = var_l + var17;
+var21 = var27;
+goto RET_LABEL22;
+RET_LABEL22:(void)0;
 }
 }
-var_l = var20;
+var_l = var21;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_12); /* Direct call array#ArrayIterator#next on <var_12:ArrayIterator[String]>*/
+((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_12); /* next on <var_12:IndexedIterator[String]>*/
 }
-} else {
-goto BREAK_label;
 }
-}
-BREAK_label: (void)0;
+BREAK_label14: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_12); /* Direct call array#ArrayIterator#finish on <var_12:ArrayIterator[String]>*/
+((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_12); /* finish on <var_12:IndexedIterator[String]>*/
 }
 {
 { /* Inline kernel#Int#< (var_lmax,var_l) on <var_lmax:Int> */
 /* Covariant cast for argument 0 (i) <var_l:Int> isa OTHER */
 /* <var_l:Int> isa OTHER */
-var29 = 1; /* easy <var_l:Int> isa OTHER*/
-if (unlikely(!var29)) {
-var_class_name32 = type_standard__Int.name;
-PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name32);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+var30 = 1; /* easy <var_l:Int> isa OTHER*/
+if (unlikely(!var30)) {
+var_class_name33 = type_core__Int.name;
+PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name33);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
-var33 = var_lmax < var_l;
-var27 = var33;
-goto RET_LABEL28;
-RET_LABEL28:(void)0;
+var34 = var_lmax < var_l;
+var28 = var34;
+goto RET_LABEL29;
+RET_LABEL29:(void)0;
 }
 }
-if (var27){
+if (var28){
 var_lmax = var_l;
 } else {
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_4); /* Direct call array#ArrayIterator#next on <var_4:ArrayIterator[Option]>*/
-}
-} else {
-goto BREAK_label34;
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[Option]>*/
 }
 }
-BREAK_label34: (void)0;
+BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_4); /* Direct call array#ArrayIterator#finish on <var_4:ArrayIterator[Option]>*/
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[Option]>*/
 }
 {
 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
 var37 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
 if (unlikely(var37 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
 fatal_exit(1);
 }
 var35 = var37;
@@ -1413,59 +1510,80 @@ RET_LABEL36:(void)0;
 }
 var_38 = var35;
 {
-var39 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_38);
+var39 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_38);
 }
 var_40 = var39;
 for(;;) {
 {
-var41 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_40);
+var41 = ((short int(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_40); /* is_ok on <var_40:IndexedIterator[Option]>*/
 }
 if (var41){
+} else {
+goto BREAK_label42;
+}
 {
-var42 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_40);
+var43 = ((val*(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_40); /* item on <var_40:IndexedIterator[Option]>*/
 }
-var_i43 = var42;
+var_i44 = var43;
 {
-{ /* Inline opts#Option#hidden (var_i43) on <var_i43:Option> */
-var46 = var_i43->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <var_i43:Option> */
-var44 = var46;
-RET_LABEL45:(void)0;
+{ /* Inline opts#Option#hidden (var_i44) on <var_i44:Option> */
+var47 = var_i44->attrs[COLOR_opts__Option___hidden].s; /* _hidden on <var_i44:Option> */
+var45 = var47;
+RET_LABEL46:(void)0;
 }
 }
-var47 = !var44;
-if (var47){
-var48 = glob_sys;
+var48 = !var45;
+if (var48){
+var49 = glob_sys;
 {
-var49 = opts___opts__Option___pretty(var_i43, var_lmax);
+var50 = opts___opts__Option___pretty(var_i44, var_lmax);
 }
 {
-standard__file___Sys___print(var48, var49); /* Direct call file#Sys#print on <var48:Sys>*/
+core__file___Sys___print(var49, var50); /* Direct call file#Sys#print on <var49:Sys>*/
 }
 } else {
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_40); /* Direct call array#ArrayIterator#next on <var_40:ArrayIterator[Option]>*/
-}
-} else {
-goto BREAK_label50;
+((void(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_40); /* next on <var_40:IndexedIterator[Option]>*/
 }
 }
-BREAK_label50: (void)0;
+BREAK_label42: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_40); /* Direct call array#ArrayIterator#finish on <var_40:ArrayIterator[Option]>*/
+((void(*)(val* self))((((long)var_40&3)?class_info[((long)var_40&3)]:var_40->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_40); /* finish on <var_40:IndexedIterator[Option]>*/
 }
 RET_LABEL:;
 }
-/* method opts#OptionContext#parse for (self: OptionContext, Collection[String]) */
+/* method opts#OptionContext#parse for (self: OptionContext, nullable Collection[String]) */
 void opts___opts__OptionContext___parse(val* self, val* p0) {
-val* var_argv /* var argv: Collection[String] */;
-val* var /* : Iterator[nullable Object] */;
+val* var_argv /* var argv: nullable Collection[String] */;
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+val* var2 /* : Sys */;
+val* var3 /* : Sequence[String] */;
+val* var4 /* : Iterator[nullable Object] */;
 val* var_it /* var it: Iterator[String] */;
 var_argv = p0;
+if (var_argv == NULL) {
+var = 1; /* is null */
+} else {
+var = 0; /* arg is null but recv is not */
+}
+if (0) {
+var1 = ((short int(*)(val* self, val* p0))((((long)var_argv&3)?class_info[((long)var_argv&3)]:var_argv->class)->vft[COLOR_core__kernel__Object___61d_61d]))(var_argv, ((val*)NULL)); /* == on <var_argv:nullable Collection[String]>*/
+var = var1;
+}
+if (var){
+var2 = glob_sys;
 {
-var = ((val*(*)(val* self))((((long)var_argv&3)?class_info[((long)var_argv&3)]:var_argv->class)->vft[COLOR_standard__abstract_collection__Collection__iterator]))(var_argv); /* iterator on <var_argv:Collection[String]>*/
+var3 = core__abstract_text___Sys___args(var2);
+}
+var_argv = var3;
+} else {
 }
-var_it = var;
+{
+var4 = ((val*(*)(val* self))((((long)var_argv&3)?class_info[((long)var_argv&3)]:var_argv->class)->vft[COLOR_core__abstract_collection__Collection__iterator]))(var_argv); /* iterator on <var_argv:nullable Collection[String](Collection[String])>*/
+}
+var_it = var4;
 {
 opts___opts__OptionContext___parse_intern(self, var_it); /* Direct call opts#OptionContext#parse_intern on <self:OptionContext>*/
 }
@@ -1495,7 +1613,7 @@ val* var_str /* var str: String */;
 static val* varonce;
 val* var6 /* : String */;
 char* var7 /* : NativeString */;
-val* var8 /* : FlatString */;
+val* var8 /* : String */;
 short int var9 /* : Bool */;
 val* var10 /* : Array[nullable Object] */;
 short int var11 /* : Bool */;
@@ -1525,7 +1643,7 @@ short int var32 /* : Bool */;
 static val* varonce33;
 val* var34 /* : String */;
 char* var35 /* : NativeString */;
-val* var36 /* : FlatString */;
+val* var36 /* : String */;
 val* var37 /* : SequenceRead[Char] */;
 val* var38 /* : nullable Object */;
 val* var39 /* : String */;
@@ -1558,38 +1676,38 @@ val* var67 /* : Array[nullable Object] */;
 val* var69 /* : Array[Option] */;
 val* var71 /* : Array[Option] */;
 val* var_72 /* var : Array[Option] */;
-val* var73 /* : ArrayIterator[nullable Object] */;
-val* var_74 /* var : ArrayIterator[Option] */;
+val* var73 /* : IndexedIterator[nullable Object] */;
+val* var_74 /* var : IndexedIterator[Option] */;
 short int var75 /* : Bool */;
-val* var76 /* : nullable Object */;
-val* var_opt77 /* var opt: Option */;
-short int var78 /* : Bool */;
+val* var77 /* : nullable Object */;
+val* var_opt78 /* var opt: Option */;
 short int var79 /* : Bool */;
-short int var81 /* : Bool */;
-short int var_82 /* var : Bool */;
-short int var83 /* : Bool */;
-short int var85 /* : Bool */;
+short int var80 /* : Bool */;
+short int var82 /* : Bool */;
+short int var_83 /* var : Bool */;
+short int var84 /* : Bool */;
 short int var86 /* : Bool */;
-val* var87 /* : Array[String] */;
-val* var89 /* : Array[String] */;
-val* var91 /* : NativeArray[String] */;
-static val* varonce90;
-static val* varonce92;
-val* var93 /* : String */;
-char* var94 /* : NativeString */;
-val* var95 /* : FlatString */;
-static val* varonce96;
-val* var97 /* : String */;
-char* var98 /* : NativeString */;
-val* var99 /* : FlatString */;
-val* var100 /* : Array[String] */;
-val* var102 /* : Array[String] */;
-static val* varonce103;
-val* var104 /* : String */;
-char* var105 /* : NativeString */;
-val* var106 /* : FlatString */;
+short int var87 /* : Bool */;
+val* var88 /* : Array[String] */;
+val* var90 /* : Array[String] */;
+val* var92 /* : NativeArray[String] */;
+static val* varonce91;
+static val* varonce93;
+val* var94 /* : String */;
+char* var95 /* : NativeString */;
+val* var96 /* : String */;
+static val* varonce97;
+val* var98 /* : String */;
+char* var99 /* : NativeString */;
+val* var100 /* : String */;
+val* var101 /* : Array[String] */;
+val* var103 /* : Array[String] */;
+static val* varonce104;
+val* var105 /* : String */;
+char* var106 /* : NativeString */;
 val* var107 /* : String */;
 val* var108 /* : String */;
+val* var109 /* : String */;
 var_it = p0;
 var_parseargs = 1;
 {
@@ -1600,7 +1718,7 @@ opts___opts__OptionContext___build(self); /* Direct call opts#OptionContext#buil
 var2 = self->attrs[COLOR_opts__OptionContext___rest].val; /* _rest on <self:OptionContext> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _rest");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 267);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 280);
 fatal_exit(1);
 }
 var = var2;
@@ -1612,7 +1730,7 @@ for(;;) {
 var_ = var_parseargs;
 if (var_parseargs){
 {
-var4 = ((short int(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__is_ok]))(var_it); /* is_ok on <var_it:Iterator[String]>*/
+var4 = ((short int(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_it); /* is_ok on <var_it:Iterator[String]>*/
 }
 var3 = var4;
 } else {
@@ -1620,38 +1738,38 @@ var3 = var_;
 }
 if (var3){
 {
-var5 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+var5 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
 }
 var_str = var5;
 if (likely(varonce!=NULL)) {
 var6 = varonce;
 } else {
 var7 = "--";
-var8 = standard___standard__NativeString___to_s_with_length(var7, 2l);
+var8 = core__flat___NativeString___to_s_full(var7, 2l, 2l);
 var6 = var8;
 varonce = var6;
 }
 {
-var9 = ((short int(*)(val* self, val* p0))(var_str->class->vft[COLOR_standard__kernel__Object___61d_61d]))(var_str, var6); /* == on <var_str:String>*/
+var9 = ((short int(*)(val* self, val* p0))(var_str->class->vft[COLOR_core__kernel__Object___61d_61d]))(var_str, var6); /* == on <var_str:String>*/
 }
 if (var9){
 {
-((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
+((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
 }
 {
-var10 = standard__array___Iterator___to_a(var_it);
+var10 = core__array___Iterator___to_a(var_it);
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var_rest, var10); /* Direct call array#Array#add_all on <var_rest:Array[String]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_rest, var10); /* Direct call array#Array#add_all on <var_rest:Array[String]>*/
 }
 var_parseargs = 0;
 } else {
 {
-var12 = ((val*(*)(val* self))(var_str->class->vft[COLOR_standard__string__Text__chars]))(var_str); /* chars on <var_str:String>*/
+var12 = ((val*(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__chars]))(var_str); /* chars on <var_str:String>*/
 }
 {
 var13 = (val*)((long)('-')<<2|2);
-var14 = ((long(*)(val* self, val* p0))((((long)var12&3)?class_info[((long)var12&3)]:var12->class)->vft[COLOR_standard__abstract_collection__SequenceRead__last_index_of]))(var12, var13); /* last_index_of on <var12:SequenceRead[Char]>*/
+var14 = ((long(*)(val* self, val* p0))((((long)var12&3)?class_info[((long)var12&3)]:var12->class)->vft[COLOR_core__abstract_collection__SequenceRead__last_index_of]))(var12, var13); /* last_index_of on <var12:SequenceRead[Char]>*/
 }
 {
 { /* Inline kernel#Int#== (var14,0l) on <var14:Int> */
@@ -1664,7 +1782,7 @@ RET_LABEL16:(void)0;
 var_18 = var15;
 if (var15){
 {
-var19 = ((long(*)(val* self))(var_str->class->vft[COLOR_standard__string__Text__length]))(var_str); /* length on <var_str:String>*/
+var19 = ((long(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__length]))(var_str); /* length on <var_str:String>*/
 }
 {
 { /* Inline kernel#Int#> (var19,2l) on <var19:Int> */
@@ -1672,9 +1790,9 @@ var19 = ((long(*)(val* self))(var_str->class->vft[COLOR_standard__string__Text__
 /* <2l:Int> isa OTHER */
 var22 = 1; /* easy <2l:Int> isa OTHER*/
 if (unlikely(!var22)) {
-var_class_name = type_standard__Int.name;
+var_class_name = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 536);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 730);
 fatal_exit(1);
 }
 var23 = var19 > 2l;
@@ -1691,7 +1809,7 @@ if (var11){
 var_next_called = 0;
 var_i = 1l;
 {
-var24 = ((long(*)(val* self))(var_str->class->vft[COLOR_standard__string__Text__length]))(var_str); /* length on <var_str:String>*/
+var24 = ((long(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__length]))(var_str); /* length on <var_str:String>*/
 }
 var_25 = var24;
 for(;;) {
@@ -1701,9 +1819,9 @@ for(;;) {
 /* <var_25:Int> isa OTHER */
 var28 = 1; /* easy <var_25:Int> isa OTHER*/
 if (unlikely(!var28)) {
-var_class_name31 = type_standard__Int.name;
+var_class_name31 = type_core__Int.name;
 PRINT_ERROR("Runtime error: Cast failed. Expected `%s`, got `%s`", "OTHER", var_class_name31);
-PRINT_ERROR(" (%s:%d)\n", FILE_standard__kernel, 534);
+PRINT_ERROR(" (%s:%d)\n", FILE_core__kernel, 728);
 fatal_exit(1);
 }
 var32 = var_i < var_25;
@@ -1713,26 +1831,29 @@ RET_LABEL27:(void)0;
 }
 }
 if (var26){
+} else {
+goto BREAK_label;
+}
 if (likely(varonce33!=NULL)) {
 var34 = varonce33;
 } else {
 var35 = "-";
-var36 = standard___standard__NativeString___to_s_with_length(var35, 1l);
+var36 = core__flat___NativeString___to_s_full(var35, 1l, 1l);
 var34 = var36;
 varonce33 = var34;
 }
 {
-var37 = ((val*(*)(val* self))(var_str->class->vft[COLOR_standard__string__Text__chars]))(var_str); /* chars on <var_str:String>*/
+var37 = ((val*(*)(val* self))(var_str->class->vft[COLOR_core__abstract_text__Text__chars]))(var_str); /* chars on <var_str:String>*/
 }
 {
-var38 = ((val*(*)(val* self, long p0))((((long)var37&3)?class_info[((long)var37&3)]:var37->class)->vft[COLOR_standard__abstract_collection__SequenceRead___91d_93d]))(var37, var_i); /* [] on <var37:SequenceRead[Char]>*/
+var38 = ((val*(*)(val* self, long p0))((((long)var37&3)?class_info[((long)var37&3)]:var37->class)->vft[COLOR_core__abstract_collection__SequenceRead___91d_93d]))(var37, var_i); /* [] on <var37:SequenceRead[Char]>*/
 }
 {
 var40 = (uint32_t)((long)(var38)>>2);
-var39 = standard__string___Char___Object__to_s(var40);
+var39 = core__abstract_text___Char___Object__to_s(var40);
 }
 {
-var41 = ((val*(*)(val* self, val* p0))(var34->class->vft[COLOR_standard__string__String___43d]))(var34, var39); /* + on <var34:String>*/
+var41 = ((val*(*)(val* self, val* p0))(var34->class->vft[COLOR_core__abstract_text__String___43d]))(var34, var39); /* + on <var34:String>*/
 }
 var_short_opt = var41;
 {
@@ -1740,7 +1861,7 @@ var_short_opt = var41;
 var44 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
 if (unlikely(var44 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 273);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
 fatal_exit(1);
 }
 var42 = var44;
@@ -1748,7 +1869,7 @@ RET_LABEL43:(void)0;
 }
 }
 {
-var45 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var42, var_short_opt);
+var45 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var42, var_short_opt);
 }
 if (var45){
 {
@@ -1756,7 +1877,7 @@ if (var45){
 var48 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
 if (unlikely(var48 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 273);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
 fatal_exit(1);
 }
 var46 = var48;
@@ -1764,7 +1885,7 @@ RET_LABEL47:(void)0;
 }
 }
 {
-var49 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var46, var_short_opt);
+var49 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var46, var_short_opt);
 }
 var_option = var49;
 /* <var_option:Option> isa OptionParameter */
@@ -1777,29 +1898,26 @@ var50 = var_option->type->type_table[cltype51] == idtype52;
 }
 if (var50){
 {
-((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
+((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
 }
 var_next_called = 1;
 } else {
 }
 {
-((void(*)(val* self, val* p0))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, var_it); /* read_param on <var_option:Option>*/
+((void(*)(val* self, val* p0, val* p1))(var_option->class->vft[COLOR_opts__Option__read_param]))(var_option, self, var_it); /* read_param on <var_option:Option>*/
 }
 } else {
 }
 {
-var53 = standard___standard__Int___Discrete__successor(var_i, 1l);
+var53 = core___core__Int___Discrete__successor(var_i, 1l);
 }
 var_i = var53;
-} else {
-goto BREAK_label;
-}
 }
 BREAK_label: (void)0;
 var54 = !var_next_called;
 if (var54){
 {
-((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
+((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
 }
 } else {
 }
@@ -1809,7 +1927,7 @@ if (var54){
 var57 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
 if (unlikely(var57 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 273);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
 fatal_exit(1);
 }
 var55 = var57;
@@ -1817,7 +1935,7 @@ RET_LABEL56:(void)0;
 }
 }
 {
-var58 = standard___standard__HashMap___standard__abstract_collection__MapRead__has_key(var55, var_str);
+var58 = core___core__HashMap___core__abstract_collection__MapRead__has_key(var55, var_str);
 }
 if (var58){
 {
@@ -1825,7 +1943,7 @@ if (var58){
 var61 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
 if (unlikely(var61 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 273);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
 fatal_exit(1);
 }
 var59 = var61;
@@ -1833,24 +1951,24 @@ RET_LABEL60:(void)0;
 }
 }
 {
-var62 = standard___standard__HashMap___standard__abstract_collection__MapRead___91d_93d(var59, var_str);
+var62 = core___core__HashMap___core__abstract_collection__MapRead___91d_93d(var59, var_str);
 }
 var_opt = var62;
 {
-((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
+((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
 }
 {
-((void(*)(val* self, val* p0))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, var_it); /* read_param on <var_opt:Option>*/
+((void(*)(val* self, val* p0, val* p1))(var_opt->class->vft[COLOR_opts__Option__read_param]))(var_opt, self, var_it); /* read_param on <var_opt:Option>*/
 }
 } else {
 {
-var63 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
+var63 = ((val*(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_it); /* item on <var_it:Iterator[String]>*/
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_rest, var63); /* Direct call array#Array#add on <var_rest:Array[String]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_rest, var63); /* Direct call array#Array#add on <var_rest:Array[String]>*/
 }
 {
-((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_standard__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
+((void(*)(val* self))((((long)var_it&3)?class_info[((long)var_it&3)]:var_it->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_it); /* next on <var_it:Iterator[String]>*/
 }
 {
 { /* Inline opts#OptionContext#options_before_rest (self) on <self:OptionContext> */
@@ -1861,10 +1979,10 @@ RET_LABEL65:(void)0;
 }
 if (var64){
 {
-var67 = standard__array___Iterator___to_a(var_it);
+var67 = core__array___Iterator___to_a(var_it);
 }
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var_rest, var67); /* Direct call array#Array#add_all on <var_rest:Array[String]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_rest, var67); /* Direct call array#Array#add_all on <var_rest:Array[String]>*/
 }
 var_parseargs = 0;
 } else {
@@ -1882,7 +2000,7 @@ BREAK_label68: (void)0;
 var71 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
 if (unlikely(var71 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
 fatal_exit(1);
 }
 var69 = var71;
@@ -1891,119 +2009,119 @@ RET_LABEL70:(void)0;
 }
 var_72 = var69;
 {
-var73 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_72);
+var73 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_72);
 }
 var_74 = var73;
 for(;;) {
 {
-var75 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_74);
+var75 = ((short int(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_74); /* is_ok on <var_74:IndexedIterator[Option]>*/
 }
 if (var75){
+} else {
+goto BREAK_label76;
+}
 {
-var76 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_74);
+var77 = ((val*(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_74); /* item on <var_74:IndexedIterator[Option]>*/
 }
-var_opt77 = var76;
+var_opt78 = var77;
 {
-{ /* Inline opts#Option#mandatory (var_opt77) on <var_opt77:Option> */
-var81 = var_opt77->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <var_opt77:Option> */
-var79 = var81;
-RET_LABEL80:(void)0;
+{ /* Inline opts#Option#mandatory (var_opt78) on <var_opt78:Option> */
+var82 = var_opt78->attrs[COLOR_opts__Option___mandatory].s; /* _mandatory on <var_opt78:Option> */
+var80 = var82;
+RET_LABEL81:(void)0;
 }
 }
-var_82 = var79;
-if (var79){
+var_83 = var80;
+if (var80){
 {
-{ /* Inline opts#Option#read (var_opt77) on <var_opt77:Option> */
-var85 = var_opt77->attrs[COLOR_opts__Option___read].s; /* _read on <var_opt77:Option> */
-var83 = var85;
-RET_LABEL84:(void)0;
+{ /* Inline opts#Option#read (var_opt78) on <var_opt78:Option> */
+var86 = var_opt78->attrs[COLOR_opts__Option___read].s; /* _read on <var_opt78:Option> */
+var84 = var86;
+RET_LABEL85:(void)0;
 }
 }
-var86 = !var83;
-var78 = var86;
+var87 = !var84;
+var79 = var87;
 } else {
-var78 = var_82;
+var79 = var_83;
 }
-if (var78){
+if (var79){
 {
-{ /* Inline opts#OptionContext#errors (self) on <self:OptionContext> */
-var89 = self->attrs[COLOR_opts__OptionContext___errors].val; /* _errors on <self:OptionContext> */
-if (unlikely(var89 == NULL)) {
-PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 270);
+{ /* Inline opts#OptionContext#context_errors (self) on <self:OptionContext> */
+var90 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on <self:OptionContext> */
+if (unlikely(var90 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors");
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283);
 fatal_exit(1);
 }
-var87 = var89;
-RET_LABEL88:(void)0;
+var88 = var90;
+RET_LABEL89:(void)0;
 }
 }
-if (unlikely(varonce90==NULL)) {
-var91 = NEW_standard__NativeArray(3l, &type_standard__NativeArray__standard__String);
-if (likely(varonce92!=NULL)) {
-var93 = varonce92;
+if (unlikely(varonce91==NULL)) {
+var92 = NEW_core__NativeArray(3l, &type_core__NativeArray__core__String);
+if (likely(varonce93!=NULL)) {
+var94 = varonce93;
 } else {
-var94 = "Mandatory option ";
-var95 = standard___standard__NativeString___to_s_with_length(var94, 17l);
-var93 = var95;
-varonce92 = var93;
+var95 = "Mandatory option ";
+var96 = core__flat___NativeString___to_s_full(var95, 17l, 17l);
+var94 = var96;
+varonce93 = var94;
 }
-((struct instance_standard__NativeArray*)var91)->values[0]=var93;
-if (likely(varonce96!=NULL)) {
-var97 = varonce96;
+((struct instance_core__NativeArray*)var92)->values[0]=var94;
+if (likely(varonce97!=NULL)) {
+var98 = varonce97;
 } else {
-var98 = " not found.";
-var99 = standard___standard__NativeString___to_s_with_length(var98, 11l);
-var97 = var99;
-varonce96 = var97;
+var99 = " not found.";
+var100 = core__flat___NativeString___to_s_full(var99, 11l, 11l);
+var98 = var100;
+varonce97 = var98;
 }
-((struct instance_standard__NativeArray*)var91)->values[2]=var97;
+((struct instance_core__NativeArray*)var92)->values[2]=var98;
 } else {
-var91 = varonce90;
-varonce90 = NULL;
+var92 = varonce91;
+varonce91 = NULL;
 }
 {
-{ /* Inline opts#Option#names (var_opt77) on <var_opt77:Option> */
-var102 = var_opt77->attrs[COLOR_opts__Option___names].val; /* _names on <var_opt77:Option> */
-if (unlikely(var102 == NULL)) {
+{ /* Inline opts#Option#names (var_opt78) on <var_opt78:Option> */
+var103 = var_opt78->attrs[COLOR_opts__Option___names].val; /* _names on <var_opt78:Option> */
+if (unlikely(var103 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _names");
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 19);
 fatal_exit(1);
 }
-var100 = var102;
-RET_LABEL101:(void)0;
+var101 = var103;
+RET_LABEL102:(void)0;
 }
 }
-if (likely(varonce103!=NULL)) {
-var104 = varonce103;
+if (likely(varonce104!=NULL)) {
+var105 = varonce104;
 } else {
-var105 = ", ";
-var106 = standard___standard__NativeString___to_s_with_length(var105, 2l);
-var104 = var106;
-varonce103 = var104;
+var106 = ", ";
+var107 = core__flat___NativeString___to_s_full(var106, 2l, 2l);
+var105 = var107;
+varonce104 = var105;
 }
 {
-var107 = standard__string___Collection___join(var100, var104);
+var108 = core__abstract_text___Collection___join(var101, var105);
 }
-((struct instance_standard__NativeArray*)var91)->values[1]=var107;
+((struct instance_core__NativeArray*)var92)->values[1]=var108;
 {
-var108 = ((val*(*)(val* self))(var91->class->vft[COLOR_standard__string__NativeArray__native_to_s]))(var91); /* native_to_s on <var91:NativeArray[String]>*/
+var109 = ((val*(*)(val* self))(var92->class->vft[COLOR_core__abstract_text__NativeArray__native_to_s]))(var92); /* native_to_s on <var92:NativeArray[String]>*/
 }
-varonce90 = var91;
+varonce91 = var92;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var87, var108); /* Direct call array#Array#add on <var87:Array[String]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var88, var109); /* Direct call array#Array#add on <var88:Array[String]>*/
 }
 } else {
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_74); /* Direct call array#ArrayIterator#next on <var_74:ArrayIterator[Option]>*/
-}
-} else {
-goto BREAK_label109;
+((void(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_74); /* next on <var_74:IndexedIterator[Option]>*/
 }
 }
-BREAK_label109: (void)0;
+BREAK_label76: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_74); /* Direct call array#ArrayIterator#finish on <var_74:ArrayIterator[Option]>*/
+((void(*)(val* self))((((long)var_74&3)?class_info[((long)var_74&3)]:var_74->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_74); /* finish on <var_74:IndexedIterator[Option]>*/
 }
 RET_LABEL:;
 }
@@ -2012,27 +2130,27 @@ void opts___opts__OptionContext___build(val* self) {
 val* var /* : Array[Option] */;
 val* var2 /* : Array[Option] */;
 val* var_ /* var : Array[Option] */;
-val* var3 /* : ArrayIterator[nullable Object] */;
-val* var_4 /* var : ArrayIterator[Option] */;
+val* var3 /* : IndexedIterator[nullable Object] */;
+val* var_4 /* var : IndexedIterator[Option] */;
 short int var5 /* : Bool */;
 val* var6 /* : nullable Object */;
 val* var_o /* var o: Option */;
 val* var7 /* : Array[String] */;
 val* var9 /* : Array[String] */;
 val* var_10 /* var : Array[String] */;
-val* var11 /* : ArrayIterator[nullable Object] */;
-val* var_12 /* var : ArrayIterator[String] */;
+val* var11 /* : IndexedIterator[nullable Object] */;
+val* var_12 /* var : IndexedIterator[String] */;
 short int var13 /* : Bool */;
-val* var14 /* : nullable Object */;
+val* var15 /* : nullable Object */;
 val* var_n /* var n: String */;
-val* var15 /* : HashMap[String, Option] */;
-val* var17 /* : HashMap[String, Option] */;
+val* var16 /* : HashMap[String, Option] */;
+val* var18 /* : HashMap[String, Option] */;
 {
 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
 var2 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
 if (unlikely(var2 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
 fatal_exit(1);
 }
 var = var2;
@@ -2041,16 +2159,19 @@ RET_LABEL1:(void)0;
 }
 var_ = var;
 {
-var3 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var3 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
 }
 var_4 = var3;
 for(;;) {
 {
-var5 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_4);
+var5 = ((short int(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_4); /* is_ok on <var_4:IndexedIterator[Option]>*/
 }
 if (var5){
+} else {
+goto BREAK_label;
+}
 {
-var6 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_4);
+var6 = ((val*(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_4); /* item on <var_4:IndexedIterator[Option]>*/
 }
 var_o = var6;
 {
@@ -2067,162 +2188,173 @@ RET_LABEL8:(void)0;
 }
 var_10 = var7;
 {
-var11 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_10);
+var11 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_10);
 }
 var_12 = var11;
 for(;;) {
 {
-var13 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_12);
+var13 = ((short int(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_12); /* is_ok on <var_12:IndexedIterator[String]>*/
 }
 if (var13){
+} else {
+goto BREAK_label14;
+}
 {
-var14 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_12);
+var15 = ((val*(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_12); /* item on <var_12:IndexedIterator[String]>*/
 }
-var_n = var14;
+var_n = var15;
 {
 { /* Inline opts#OptionContext#optmap (self) on <self:OptionContext> */
-var17 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
-if (unlikely(var17 == NULL)) {
+var18 = self->attrs[COLOR_opts__OptionContext___optmap].val; /* _optmap on <self:OptionContext> */
+if (unlikely(var18 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _optmap");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 273);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 286);
 fatal_exit(1);
 }
-var15 = var17;
-RET_LABEL16:(void)0;
+var16 = var18;
+RET_LABEL17:(void)0;
 }
 }
 {
-standard___standard__HashMap___standard__abstract_collection__Map___91d_93d_61d(var15, var_n, var_o); /* Direct call hash_collection#HashMap#[]= on <var15:HashMap[String, Option]>*/
+core___core__HashMap___core__abstract_collection__Map___91d_93d_61d(var16, var_n, var_o); /* Direct call hash_collection#HashMap#[]= on <var16:HashMap[String, Option]>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_12); /* Direct call array#ArrayIterator#next on <var_12:ArrayIterator[String]>*/
-}
-} else {
-goto BREAK_label;
+((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_12); /* next on <var_12:IndexedIterator[String]>*/
 }
 }
-BREAK_label: (void)0;
+BREAK_label14: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_12); /* Direct call array#ArrayIterator#finish on <var_12:ArrayIterator[String]>*/
+((void(*)(val* self))((((long)var_12&3)?class_info[((long)var_12&3)]:var_12->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_12); /* finish on <var_12:IndexedIterator[String]>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_4); /* Direct call array#ArrayIterator#next on <var_4:ArrayIterator[Option]>*/
-}
-} else {
-goto BREAK_label18;
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_4); /* next on <var_4:IndexedIterator[Option]>*/
 }
 }
-BREAK_label18: (void)0;
+BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_4); /* Direct call array#ArrayIterator#finish on <var_4:ArrayIterator[Option]>*/
+((void(*)(val* self))((((long)var_4&3)?class_info[((long)var_4&3)]:var_4->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_4); /* finish on <var_4:IndexedIterator[Option]>*/
 }
 RET_LABEL:;
 }
-/* method opts#OptionContext#get_errors for (self: OptionContext): Array[String] */
-val* opts___opts__OptionContext___get_errors(val* self) {
+/* method opts#OptionContext#errors for (self: OptionContext): Array[String] */
+val* opts___opts__OptionContext___errors(val* self) {
 val* var /* : Array[String] */;
 val* var1 /* : Array[String] */;
 val* var_errors /* var errors: Array[String] */;
-val* var2 /* : Array[Option] */;
-val* var4 /* : Array[Option] */;
+val* var2 /* : Array[String] */;
+val* var4 /* : Array[String] */;
+val* var5 /* : Array[Option] */;
+val* var7 /* : Array[Option] */;
 val* var_ /* var : Array[Option] */;
-val* var5 /* : ArrayIterator[nullable Object] */;
-val* var_6 /* var : ArrayIterator[Option] */;
-short int var7 /* : Bool */;
-val* var8 /* : nullable Object */;
+val* var8 /* : IndexedIterator[nullable Object] */;
+val* var_9 /* var : IndexedIterator[Option] */;
+short int var10 /* : Bool */;
+val* var11 /* : nullable Object */;
 val* var_o /* var o: Option */;
-val* var9 /* : Array[String] */;
-val* var11 /* : Array[String] */;
-val* var_12 /* var : Array[String] */;
-val* var13 /* : ArrayIterator[nullable Object] */;
-val* var_14 /* var : ArrayIterator[String] */;
-short int var15 /* : Bool */;
-val* var16 /* : nullable Object */;
+val* var12 /* : Array[String] */;
+val* var14 /* : Array[String] */;
+val* var_15 /* var : Array[String] */;
+val* var16 /* : IndexedIterator[nullable Object] */;
+val* var_17 /* var : IndexedIterator[String] */;
+short int var18 /* : Bool */;
+val* var20 /* : nullable Object */;
 val* var_e /* var e: String */;
-var1 = NEW_standard__Array(&type_standard__Array__standard__String);
+var1 = NEW_core__Array(&type_core__Array__core__String);
 {
-standard___standard__Array___standard__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[String]>*/
+core___core__Array___core__kernel__Object__init(var1); /* Direct call array#Array#init on <var1:Array[String]>*/
 }
 var_errors = var1;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add_all(var_errors, var_errors); /* Direct call array#Array#add_all on <var_errors:Array[String]>*/
+{ /* Inline opts#OptionContext#context_errors (self) on <self:OptionContext> */
+var4 = self->attrs[COLOR_opts__OptionContext___context_errors].val; /* _context_errors on <self:OptionContext> */
+if (unlikely(var4 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _context_errors");
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 283);
+fatal_exit(1);
+}
+var2 = var4;
+RET_LABEL3:(void)0;
+}
+}
+{
+core___core__Array___core__abstract_collection__SimpleCollection__add_all(var_errors, var2); /* Direct call array#Array#add_all on <var_errors:Array[String]>*/
 }
 {
 { /* Inline opts#OptionContext#options (self) on <self:OptionContext> */
-var4 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
-if (unlikely(var4 == NULL)) {
+var7 = self->attrs[COLOR_opts__OptionContext___options].val; /* _options on <self:OptionContext> */
+if (unlikely(var7 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _options");
-PRINT_ERROR(" (%s:%d)\n", FILE_opts, 264);
+PRINT_ERROR(" (%s:%d)\n", FILE_opts, 277);
 fatal_exit(1);
 }
-var2 = var4;
-RET_LABEL3:(void)0;
+var5 = var7;
+RET_LABEL6:(void)0;
 }
 }
-var_ = var2;
+var_ = var5;
 {
-var5 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_);
+var8 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_);
 }
-var_6 = var5;
+var_9 = var8;
 for(;;) {
 {
-var7 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_6);
+var10 = ((short int(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_9); /* is_ok on <var_9:IndexedIterator[Option]>*/
+}
+if (var10){
+} else {
+goto BREAK_label;
 }
-if (var7){
 {
-var8 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_6);
+var11 = ((val*(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_9); /* item on <var_9:IndexedIterator[Option]>*/
 }
-var_o = var8;
+var_o = var11;
 {
 { /* Inline opts#Option#errors (var_o) on <var_o:Option> */
-var11 = var_o->attrs[COLOR_opts__Option___errors].val; /* _errors on <var_o:Option> */
-if (unlikely(var11 == NULL)) {
+var14 = var_o->attrs[COLOR_opts__Option___errors].val; /* _errors on <var_o:Option> */
+if (unlikely(var14 == NULL)) {
 PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _errors");
 PRINT_ERROR(" (%s:%d)\n", FILE_opts, 28);
 fatal_exit(1);
 }
-var9 = var11;
-RET_LABEL10:(void)0;
+var12 = var14;
+RET_LABEL13:(void)0;
 }
 }
-var_12 = var9;
+var_15 = var12;
 {
-var13 = standard___standard__AbstractArrayRead___standard__abstract_collection__Collection__iterator(var_12);
+var16 = core___core__AbstractArrayRead___core__abstract_collection__Collection__iterator(var_15);
 }
-var_14 = var13;
+var_17 = var16;
 for(;;) {
 {
-var15 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__is_ok(var_14);
+var18 = ((short int(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__is_ok]))(var_17); /* is_ok on <var_17:IndexedIterator[String]>*/
 }
-if (var15){
-{
-var16 = standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__item(var_14);
+if (var18){
+} else {
+goto BREAK_label19;
 }
-var_e = var16;
 {
-standard___standard__Array___standard__abstract_collection__SimpleCollection__add(var_errors, var_e); /* Direct call array#Array#add on <var_errors:Array[String]>*/
+var20 = ((val*(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__item]))(var_17); /* item on <var_17:IndexedIterator[String]>*/
 }
+var_e = var20;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_14); /* Direct call array#ArrayIterator#next on <var_14:ArrayIterator[String]>*/
+core___core__Array___core__abstract_collection__SimpleCollection__add(var_errors, var_e); /* Direct call array#Array#add on <var_errors:Array[String]>*/
 }
-} else {
-goto BREAK_label;
+{
+((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_17); /* next on <var_17:IndexedIterator[String]>*/
 }
 }
-BREAK_label: (void)0;
+BREAK_label19: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_14); /* Direct call array#ArrayIterator#finish on <var_14:ArrayIterator[String]>*/
+((void(*)(val* self))((((long)var_17&3)?class_info[((long)var_17&3)]:var_17->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_17); /* finish on <var_17:IndexedIterator[String]>*/
 }
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__next(var_6); /* Direct call array#ArrayIterator#next on <var_6:ArrayIterator[Option]>*/
-}
-} else {
-goto BREAK_label17;
+((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__next]))(var_9); /* next on <var_9:IndexedIterator[Option]>*/
 }
 }
-BREAK_label17: (void)0;
+BREAK_label: (void)0;
 {
-standard__array___standard__array__ArrayIterator___standard__abstract_collection__Iterator__finish(var_6); /* Direct call array#ArrayIterator#finish on <var_6:ArrayIterator[Option]>*/
+((void(*)(val* self))((((long)var_9&3)?class_info[((long)var_9&3)]:var_9->class)->vft[COLOR_core__abstract_collection__Iterator__finish]))(var_9); /* finish on <var_9:IndexedIterator[Option]>*/
 }
 var = var_errors;
 goto RET_LABEL;