class X var _intvar as int var _string1 as String var _string2 as String cue init(i as int) .init(i, '', '') cue init(i as int, s as String) .init(i, s, '') cue init(s as String, i as int) .init(i, s, '') cue init(i as int, s1 as String, s2 as String) base.init _intvar = i _string1 = s1 _string2 = s2 cue init(s1 as String, i as int, s2 as String) .init(i, s1, s2) cue init(s1 as String, s2 as String, i as int) .init(i, s1, s2) def toString as String is override return '[_intvar],[_string1],[_string2]' class F def main myint = 5 mystr1 = 'mystr1' mystr2 = 'mystr2' dyint = 6 to dynamic dystr1 = 'dystr1' to dynamic dystr2 = 'dystr2' to dynamic assert X(myint).toString == '5,,' assert X(dyint).toString == '6,,' assert X(myint, mystr1).toString == '5,mystr1,' assert X(dyint, mystr1).toString == '6,mystr1,' assert X(myint, dystr1).toString == '5,dystr1,' assert X(dyint to int, dystr1).toString == '6,dystr1,' assert X(dyint, dystr1 to String).toString == '6,dystr1,' assert X(mystr1, myint).toString == '5,mystr1,' assert X(dystr1, dyint to int).toString == '6,dystr1,' assert X(dyint to int, dystr1, mystr2).toString == '6,dystr1,mystr2' assert X(mystr1, dyint, mystr2).toString == '6,mystr1,mystr2' assert X(dystr1, dystr2, myint).toString == '5,dystr1,dystr2'