+static const char LOCATE_opts___OptionEnum___convert[] = "opts::OptionEnum::(opts::OptionParameter::convert)";
+val_t opts___OptionEnum___convert(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[4];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ static val_t once_value_1; /* Once value */
+ static val_t once_value_2; /* Once value */
+ static val_t once_value_3; /* Once value */
+ static val_t once_value_4; /* Once value */
+ static val_t once_value_5; /* Once value */
+ static val_t once_value_6; /* Once value */
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_opts;
+ fra.me.line = 179;
+ fra.me.meth = LOCATE_opts___OptionEnum___convert;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 5;
+ fra.me.nitni_local_ref_head = NULL;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[4] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ /* ../lib/opts.nit:181 */
+ REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 181);
+ }
+ fra.me.REG[2] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
+ REGB0 = CALL_standard___collection___abstract_collection___SequenceRead___index_of(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[1]);
+ /* ../lib/opts.nit:182 */
+ REGB1 = TAG_Int(1);
+ /* ../lib/standard/kernel.nit:239 */
+ REGB1 = TAG_Int(-UNTAG_Int(REGB1));
+ /* ../lib/opts.nit:182 */
+ REGB2 = TAG_Bool(IS_EQUAL_OO(REGB0,REGB1));
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ /* ../lib/standard/kernel.nit:230 */
+ REGB1 = TAG_Bool((REGB0)==(REGB1));
+ /* ../lib/opts.nit:182 */
+ REGB2 = REGB1;
+ }
+ if (UNTAG_Bool(REGB2)) {
+ /* ../lib/opts.nit:183 */
+ REGB2 = TAG_Int(3);
+ fra.me.REG[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+ if (!once_value_1) {
+ fra.me.REG[2] = BOX_NativeString("Unrecognized value for option ");
+ REGB2 = TAG_Int(30);
+ fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+ once_value_1 = fra.me.REG[2];
+ register_static_object(&once_value_1);
+ } else fra.me.REG[2] = once_value_1;
+ fra.me.REG[2] = fra.me.REG[2];
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[2]);
+ REGB2 = TAG_Bool(ATTR_opts___Option____names(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_names", LOCATE_opts, 183);
+ }
+ fra.me.REG[2] = ATTR_opts___Option____names(fra.me.REG[0]);
+ if (!once_value_2) {
+ fra.me.REG[3] = BOX_NativeString(", ");
+ REGB2 = TAG_Int(2);
+ fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+ once_value_2 = fra.me.REG[3];
+ register_static_object(&once_value_2);
+ } else fra.me.REG[3] = once_value_2;
+ fra.me.REG[3] = fra.me.REG[3];
+ fra.me.REG[3] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+ if (!once_value_3) {
+ fra.me.REG[3] = BOX_NativeString(".\n");
+ REGB2 = TAG_Int(2);
+ fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB2);
+ once_value_3 = fra.me.REG[3];
+ register_static_object(&once_value_3);
+ } else fra.me.REG[3] = once_value_3;
+ fra.me.REG[3] = fra.me.REG[3];
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+ fra.me.REG[1] = CALL_standard___string___Object___to_s(fra.me.REG[1])(fra.me.REG[1]);
+ /* ../lib/opts.nit:184 */
+ REGB2 = TAG_Int(3);
+ fra.me.REG[3] = NEW_Array_standard___collection___array___Array___with_capacity(REGB2);
+ if (!once_value_4) {
+ fra.me.REG[2] = BOX_NativeString("Expected values are: ");
+ REGB2 = TAG_Int(21);
+ fra.me.REG[2] = NEW_String_standard___string___String___with_native(fra.me.REG[2], REGB2);
+ once_value_4 = fra.me.REG[2];
+ register_static_object(&once_value_4);
+ } else fra.me.REG[2] = once_value_4;
+ fra.me.REG[2] = fra.me.REG[2];
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[2]);
+ REGB2 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 184);
+ }
+ fra.me.REG[2] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
+ if (!once_value_5) {
+ fra.me.REG[4] = BOX_NativeString(", ");
+ REGB2 = TAG_Int(2);
+ fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+ once_value_5 = fra.me.REG[4];
+ register_static_object(&once_value_5);
+ } else fra.me.REG[4] = once_value_5;
+ fra.me.REG[4] = fra.me.REG[4];
+ fra.me.REG[4] = CALL_standard___string___Collection___join(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[4]);
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+ if (!once_value_6) {
+ fra.me.REG[4] = BOX_NativeString(".");
+ REGB2 = TAG_Int(1);
+ fra.me.REG[4] = NEW_String_standard___string___String___with_native(fra.me.REG[4], REGB2);
+ once_value_6 = fra.me.REG[4];
+ register_static_object(&once_value_6);
+ } else fra.me.REG[4] = once_value_6;
+ fra.me.REG[4] = fra.me.REG[4];
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[4]);
+ fra.me.REG[3] = CALL_standard___string___Object___to_s(fra.me.REG[3])(fra.me.REG[3]);
+ fra.me.REG[3] = CALL_standard___string___String_____plus(fra.me.REG[1])(fra.me.REG[1], fra.me.REG[3]);
+ fra.me.REG[1] = fra.me.REG[3];
+ /* ../lib/opts.nit:185 */
+ REGB2 = TAG_Bool(ATTR_opts___Option____errors(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_errors", LOCATE_opts, 185);
+ }
+ fra.me.REG[0] = ATTR_opts___Option____errors(fra.me.REG[0]);
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[0])(fra.me.REG[0], fra.me.REG[1]);
+ }
+ /* ../lib/opts.nit:187 */
+ goto label7;
+ label7: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+static const char LOCATE_opts___OptionEnum___value_name[] = "opts::OptionEnum::value_name";
+val_t opts___OptionEnum___value_name(val_t p0){
+ struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_opts;
+ fra.me.line = 190;
+ fra.me.meth = LOCATE_opts___OptionEnum___value_name;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 2;
+ fra.me.nitni_local_ref_head = NULL;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ../lib/opts.nit:190 */
+ REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[0])!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 190);
+ }
+ fra.me.REG[1] = ATTR_opts___OptionEnum____values(fra.me.REG[0]);
+ fra.me.REG[0] = CALL_opts___Option___value(fra.me.REG[0])(fra.me.REG[0]);
+ /* ../lib/standard/collection/array.nit:278 */
+ REGB0 = fra.me.REG[0];
+ /* ../lib/standard/collection/array.nit:280 */
+ REGB1 = TAG_Int(0);
+ REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+ }
+ /* ../lib/standard/kernel.nit:236 */
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+ /* ../lib/standard/collection/array.nit:280 */
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+ }
+ REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[1]);
+ REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+ }
+ /* ../lib/standard/kernel.nit:235 */
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ } else {
+ /* ../lib/standard/collection/array.nit:280 */
+ REGB2 = TAG_Bool(0);
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+ }
+ /* ../lib/standard/collection/array.nit:281 */
+ fra.me.REG[1] = ATTR_standard___collection___array___Array____items(fra.me.REG[1]);
+ REGB1 = TAG_Bool(fra.me.REG[1]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+ }
+ /* ../lib/standard/collection/array.nit:718 */
+ fra.me.REG[1] = ((Nit_NativeArray)fra.me.REG[1])->val[UNTAG_Int(REGB0)];
+ /* ../lib/standard/collection/array.nit:281 */
+ goto label1;
+ label1: while(0);
+ /* ../lib/opts.nit:190 */
+ goto label2;
+ label2: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[1];
+}
+static const char LOCATE_opts___OptionEnum___pretty_default[] = "opts::OptionEnum::(opts::Option::pretty_default)";
+val_t opts___OptionEnum___pretty_default(val_t p0){
+ struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t REGB2;
+ val_t tmp;
+ static val_t once_value_1; /* Once value */
+ static val_t once_value_3; /* Once value */
+ static val_t once_value_5; /* Once value */
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_opts;
+ fra.me.line = 192;
+ fra.me.meth = LOCATE_opts___OptionEnum___pretty_default;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 4;
+ fra.me.nitni_local_ref_head = NULL;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ /* ../lib/opts.nit:192 */
+ fra.me.REG[1] = fra.me.REG[0];
+ /* ../lib/opts.nit:194 */
+ fra.me.REG[2] = CALL_opts___Option___default_value(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ REGB1 = TAG_Bool(fra.me.REG[2]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(0);
+ REGB0 = REGB1;
+ } else {
+ /* ../lib/standard/kernel.nit:230 */
+ REGB1 = TAG_Bool((fra.me.REG[2])==(NIT_NULL));
+ /* ../lib/opts.nit:194 */
+ REGB0 = REGB1;
+ }
+ }
+ REGB0 = TAG_Bool(!UNTAG_Bool(REGB0));
+ if (UNTAG_Bool(REGB0)) {
+ /* ../lib/opts.nit:195 */
+ REGB0 = TAG_Int(3);
+ fra.me.REG[2] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0);
+ if (!once_value_1) {
+ fra.me.REG[3] = BOX_NativeString(" (");
+ REGB0 = TAG_Int(2);
+ fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+ once_value_1 = fra.me.REG[3];
+ register_static_object(&once_value_1);
+ } else fra.me.REG[3] = once_value_1;
+ fra.me.REG[3] = fra.me.REG[3];
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+ REGB0 = TAG_Bool(ATTR_opts___OptionEnum____values(fra.me.REG[1])!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 195);
+ }
+ fra.me.REG[3] = ATTR_opts___OptionEnum____values(fra.me.REG[1]);
+ fra.me.REG[1] = CALL_opts___Option___default_value(fra.me.REG[1])(fra.me.REG[1]);
+ REGB0 = TAG_Bool((fra.me.REG[1]!=NIT_NULL) && VAL_ISA(fra.me.REG[1], VTCOLOR_opts___Option___VALUE(fra.me.REG[0]), VTID_opts___Option___VALUE(fra.me.REG[0]))) /*cast VALUE*/;
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_opts, 195);
+ }
+ /* ../lib/standard/collection/array.nit:278 */
+ REGB0 = fra.me.REG[1];
+ /* ../lib/standard/collection/array.nit:280 */
+ REGB1 = TAG_Int(0);
+ REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+ }
+ /* ../lib/standard/kernel.nit:236 */
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)>=UNTAG_Int(REGB1));
+ /* ../lib/standard/collection/array.nit:280 */
+ if (UNTAG_Bool(REGB1)) {
+ REGB1 = TAG_Bool(ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3])!=NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_length", LOCATE_standard___collection___array, 280);
+ }
+ REGB1 = ATTR_standard___collection___array___AbstractArrayRead____length(fra.me.REG[3]);
+ REGB2 = TAG_Bool(VAL_ISA(REGB1, VTCOLOR_standard___kernel___Comparable___OTHER(REGB0), VTID_standard___kernel___Comparable___OTHER(REGB0))) /*cast OTHER*/;
+ if (UNTAG_Bool(REGB2)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_standard___kernel, 0);
+ }
+ /* ../lib/standard/kernel.nit:235 */
+ REGB1 = TAG_Bool(UNTAG_Int(REGB0)<UNTAG_Int(REGB1));
+ } else {
+ /* ../lib/standard/collection/array.nit:280 */
+ REGB2 = TAG_Bool(0);
+ REGB1 = REGB2;
+ }
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Assert '%s' failed", "index", LOCATE_standard___collection___array, 280);
+ }
+ /* ../lib/standard/collection/array.nit:281 */
+ fra.me.REG[3] = ATTR_standard___collection___array___Array____items(fra.me.REG[3]);
+ REGB1 = TAG_Bool(fra.me.REG[3]==NIT_NULL);
+ if (UNTAG_Bool(REGB1)) {
+ nit_abort("Reciever is null", NULL, LOCATE_standard___collection___array, 281);
+ }
+ /* ../lib/standard/collection/array.nit:718 */
+ fra.me.REG[3] = ((Nit_NativeArray)fra.me.REG[3])->val[UNTAG_Int(REGB0)];
+ /* ../lib/standard/collection/array.nit:281 */
+ goto label2;
+ label2: while(0);
+ /* ../lib/opts.nit:195 */
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+ if (!once_value_3) {
+ fra.me.REG[3] = BOX_NativeString(")");
+ REGB0 = TAG_Int(1);
+ fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+ once_value_3 = fra.me.REG[3];
+ register_static_object(&once_value_3);
+ } else fra.me.REG[3] = once_value_3;
+ fra.me.REG[3] = fra.me.REG[3];
+ CALL_standard___collection___abstract_collection___SimpleCollection___add(fra.me.REG[2])(fra.me.REG[2], fra.me.REG[3]);
+ fra.me.REG[2] = CALL_standard___string___Object___to_s(fra.me.REG[2])(fra.me.REG[2]);
+ goto label4;
+ } else {
+ /* ../lib/opts.nit:197 */
+ if (!once_value_5) {
+ fra.me.REG[3] = BOX_NativeString("");
+ REGB0 = TAG_Int(0);
+ fra.me.REG[3] = NEW_String_standard___string___String___with_native(fra.me.REG[3], REGB0);
+ once_value_5 = fra.me.REG[3];
+ register_static_object(&once_value_5);
+ } else fra.me.REG[3] = once_value_5;
+ fra.me.REG[3] = fra.me.REG[3];
+ fra.me.REG[2] = fra.me.REG[3];
+ goto label4;
+ }
+ label4: while(0);
+ stack_frame_head = fra.me.prev;
+ return fra.me.REG[2];
+}
+static const char LOCATE_opts___OptionInt___init[] = "opts::OptionInt::init";
+void opts___OptionInt___init(val_t p0, val_t p1, val_t p2, val_t p3, int* init_table){
+ int itpos7 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_opts___OptionInt].i;
+ struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+ val_t REGB0;
+ val_t REGB1;
+ val_t tmp;
+ if (init_table[itpos7]) return;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_opts;
+ fra.me.line = 206;
+ fra.me.meth = LOCATE_opts___OptionInt___init;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 4;
+ fra.me.nitni_local_ref_head = NULL;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ REGB0 = p2;
+ fra.me.REG[2] = p3;
+ /* ../lib/opts.nit:206 */
+ fra.me.REG[3] = fra.me.REG[0];
+ REGB1 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
+ if (UNTAG_Bool(REGB1)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_opts, 206);
+ }
+ CALL_opts___OptionParameter___init_opt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], REGB0, fra.me.REG[2], init_table);
+ stack_frame_head = fra.me.prev;
+ init_table[itpos7] = 1;
+ return;
+}
+static const char LOCATE_opts___OptionInt___convert[] = "opts::OptionInt::(opts::OptionParameter::convert)";
+val_t opts___OptionInt___convert(val_t p0, val_t p1){
+ struct {struct stack_frame_t me; val_t MORE_REG[1];} fra;
+ val_t REGB0;
+ val_t tmp;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_opts;
+ fra.me.line = 208;
+ fra.me.meth = LOCATE_opts___OptionInt___convert;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 2;
+ fra.me.nitni_local_ref_head = NULL;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ /* ../lib/opts.nit:208 */
+ REGB0 = CALL_standard___string___AbstractString___to_i(fra.me.REG[1])(fra.me.REG[1]);
+ goto label1;
+ label1: while(0);
+ stack_frame_head = fra.me.prev;
+ return REGB0;
+}
+static const char LOCATE_opts___OptionArray___init[] = "opts::OptionArray::init";
+void opts___OptionArray___init(val_t p0, val_t p1, val_t p2, int* init_table){
+ int itpos8 = VAL2OBJ(p0)->vft[INIT_TABLE_POS_opts___OptionArray].i;
+ struct {struct stack_frame_t me; val_t MORE_REG[3];} fra;
+ val_t REGB0;
+ val_t tmp;
+ if (init_table[itpos8]) return;
+ fra.me.prev = stack_frame_head; stack_frame_head = &fra.me;
+ fra.me.file = LOCATE_opts;
+ fra.me.line = 215;
+ fra.me.meth = LOCATE_opts___OptionArray___init;
+ fra.me.has_broke = 0;
+ fra.me.REG_size = 4;
+ fra.me.nitni_local_ref_head = NULL;
+ fra.me.REG[0] = NIT_NULL;
+ fra.me.REG[1] = NIT_NULL;
+ fra.me.REG[2] = NIT_NULL;
+ fra.me.REG[3] = NIT_NULL;
+ fra.me.REG[0] = p0;
+ fra.me.REG[1] = p1;
+ fra.me.REG[2] = p2;
+ /* ../lib/opts.nit:215 */
+ fra.me.REG[3] = fra.me.REG[0];
+ REGB0 = TAG_Bool(VAL_ISA(fra.me.REG[2], COLOR_standard___collection___array___Array, ID_standard___collection___array___Array)) /*cast Array[String]*/;
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Cast failed", NULL, LOCATE_opts, 215);
+ }
+ /* ../lib/opts.nit:217 */
+ fra.me.REG[0] = NEW_Array_standard___collection___array___Array___init();
+ ATTR_opts___OptionArray____values(fra.me.REG[3]) = fra.me.REG[0];
+ /* ../lib/opts.nit:218 */
+ REGB0 = TAG_Bool(ATTR_opts___OptionArray____values(fra.me.REG[3])!=NIT_NULL);
+ if (UNTAG_Bool(REGB0)) {
+ } else {
+ nit_abort("Uninitialized attribute %s", "_values", LOCATE_opts, 218);
+ }
+ fra.me.REG[0] = ATTR_opts___OptionArray____values(fra.me.REG[3]);
+ CALL_opts___OptionParameter___init_opt(fra.me.REG[3])(fra.me.REG[3], fra.me.REG[1], fra.me.REG[0], fra.me.REG[2], init_table);
+ stack_frame_head = fra.me.prev;
+ init_table[itpos8] = 1;