class Foo { construct new() {} [a] { "1-subscript %(a)" } [a, b] { "2-subscript %(a) %(b)" } [a, b, c] { "3-subscript %(a) %(b) %(c)" } [a]=(value) { "1-subscript setter %(a) = %(value)" } [a, b]=(value) { "2-subscript setter %(a) %(b) = %(value)" } [a, b, c]=(value) { "3-subscript setter %(a) %(b) %(c) = %(value)" } } var foo = Foo.new() System.print(foo["a"]) // expect: 1-subscript a System.print(foo["a", "b"]) // expect: 2-subscript a b System.print(foo["a", "b", "c"]) // expect: 3-subscript a b c System.print(foo["a"] = "value") // expect: 1-subscript setter a = value System.print(foo["a", "b"] = "value") // expect: 2-subscript setter a b = value System.print(foo["a", "b", "c"] = "value") // expect: 3-subscript setter a b c = value