--- source: src/main.rs expression: parsed input_file: test-data/lua5.3-tests/events.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing metatables'", ), ], ], ), ], line: 4, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "'debug'", ), ], ], ), ], line: 6, }, ], ], line: 6, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "X", ), ], line: 6, }, ], values: [ [ Symbol( "20", ), ], ], line: 8, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 8, }, ], values: [ [ Symbol( "30", ), ], ], line: 8, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), ], line: 8, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 10, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "_G", ), ], line: 10, }, ], ), ], line: 10, column: 12, }, ], ], ), ], line: 10, }, ], ], line: 10, column: 13, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 10, }, Alter { names: [ Ident { expr: [ Symbol( "X", ), ], line: 12, }, ], values: [ [ Ident { expr: [ Symbol( "X", ), ], line: 14, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], line: 14, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "X", ), ], line: 15, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 14, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 15, }, ], values: [ [ Symbol( "false", ), ], ], line: 16, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "B", ), ], line: 17, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 16, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 17, }, ], values: [ [ Symbol( "nil", ), ], ], line: 18, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "B", ), ], line: 19, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 18, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Table { data: [], line: 21, column: 5, }, ], ], ), ], line: 21, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 22, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 23, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 22, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 23, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "name", ), ], ), [ Symbol( "\"NAME\"", ), ], ), ], line: 24, column: 7, }, ], ], line: 24, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 24, }, ], [ Table { data: [ ( Some( [ Symbol( "__metatable", ), ], ), [ Symbol( "\"xuxu\"", ), ], ), ( Some( [ Symbol( "__tostring", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 116, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "name", ), ], line: 25, }, ], ], ), ), ], end: 121, }, line: 25, column: 11, }, ], ), ], line: 25, column: 12, }, ], ], ), ], line: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 26, }, ], ], ), ], line: 26, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 27, }, ], ], ), ], line: 27, }, Operator( ( "==", true, ), ), Symbol( "\"NAME\"", ), ], ], ), ], line: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), ], line: 29, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 29, }, ], [ Table { data: [], line: 29, column: 10, }, ], ], ), ], line: 29, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 27, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "name", ), ], line: 29, }, ], values: [ [ Symbol( "\"gororoba\"", ), ], ], line: 30, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 31, }, ], ], ), ], line: 31, }, Operator( ( "==", true, ), ), Symbol( "\"gororoba\"", ), ], ], ), ], line: 30, }, Variable { names: [ ( "a", false, ), ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( Some( [ Symbol( "x", ), ], ), [ Symbol( "\"10\"", ), ], ), ( Some( [ Symbol( "y", ), ], ), [ Symbol( "\"20\"", ), ], ), ], line: 33, column: 20, }, ], [ Table { data: [], line: 33, column: 23, }, ], ], line: 33, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 34, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 34, }, ], ], ), ], line: 34, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 34, }, ], ], ), ], line: 33, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 35, }, ], ], ), ], line: 35, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 35, }, ], ], ), ], line: 34, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 36, }, ], [ Symbol( "nil", ), ], ], ), ], line: 36, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 36, }, ], ], ), ], line: 35, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 37, }, ], ], ), ], line: 37, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 36, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 38, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 38, }, ], ], ), ], line: 38, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 38, }, ], ], ), ], line: 37, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "i", "e", ], body: CodeBlock { start: 252, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "e", ), ], line: 42, }, ], ], ), ], line: 42, }, Variable { names: [ ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 43, }, ], [ Symbol( "\"parent\"", ), ], ], ), ], line: 43, }, ], ], line: 44, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "p", ), ], line: 44, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 44, }, ], ), Symbol( "]", ), ], line: 44, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 44, }, ], [ Symbol( "\"dummy return\"", ), ], ], ), ), ], end: 280, }, line: 45, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__index", ), ], line: 45, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 47, }, ], ], line: 47, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "parent", ), ], line: 47, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "z", ), ], ), [ Symbol( "25", ), ], ), ( Some( [ Symbol( "x", ), ], ), [ Symbol( "12", ), ], ), ( Some( [ Symbol( "4", ), ], ), [ Symbol( "24", ), ], ), ], line: 49, column: 19, }, ], ], line: 49, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 50, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "z", ), ], line: 50, }, Operator( ( "==", true, ), ), Symbol( "28", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 50, }, Operator( ( "==", true, ), ), Symbol( "27", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 50, }, Operator( ( "==", true, ), ), Symbol( "\"10\"", ), ], ], ), ], line: 49, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 50, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 52, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 54, column: 6, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 54, }, ], ], ), ], line: 54, }, ], ], line: 55, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "i", "v", ], body: CodeBlock { start: 353, code: [ Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 55, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 55, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 55, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ], ), ], line: 55, }, ], end: 364, }, line: 55, column: 20, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 56, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 56, }, ], ], ), ], line: 55, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 56, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 57, }, ], ], line: 57, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 57, }, ], values: [ [ Symbol( "30", ), ], ], line: 58, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 58, }, ], values: [ [ Symbol( "\"101\"", ), ], ], line: 58, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 58, }, ], values: [ [ Symbol( "200", ), ], ], line: 58, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "27", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "98", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 59, }, Operator( ( "==", true, ), ), Symbol( "197", ), ], ], ), ], line: 58, }, DoBlock( CodeBlock { start: 417, code: [ Variable { names: [ ( "mt", false, ), ], values: [ [ Table { data: [], line: 62, column: 5, }, ], ], line: 62, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 62, }, ], values: [ [ Ident { expr: [ Symbol( "mt", ), ], line: 63, }, ], ], line: 64, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 64, column: 7, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 64, }, ], ], ), ], line: 64, }, ], ], line: 64, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 64, }, ], values: [ [ Symbol( "10", ), ], ], line: 65, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "mt", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 66, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 65, }, ], end: 453, }, ), Variable { names: [ ( "c", false, ), ], values: [ [ Table { data: [], line: 70, column: 5, }, ], ], line: 70, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 70, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 71, column: 6, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 71, }, ], ], ), ], line: 71, }, ], ], line: 71, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 71, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 72, }, ], ], line: 72, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 72, }, ], values: [ [ Symbol( "10", ), ], ], line: 73, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 73, }, ], values: [ [ Symbol( "20", ), ], ], line: 73, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 73, }, ], values: [ [ Symbol( "90", ), ], ], line: 73, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 74, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 74, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 74, }, Operator( ( "==", true, ), ), Symbol( "90", ), ], ], ), ], line: 73, }, DoBlock( CodeBlock { start: 516, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 78, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 78, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 79, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 79, column: 14, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 80, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "_", "n", ], body: CodeBlock { start: 35, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 81, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 81, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], [ Symbol( "\"lixo\"", ), ], ], ), ), ], end: 47, }, line: 81, column: 21, }, ], ), ], line: 81, column: 22, }, ], ], ), ], line: 80, }, ], ), ], line: 81, column: 24, }, ], ], ), ], line: 79, }, ], ), ], line: 81, column: 26, }, ], ], ), ], line: 79, }, ], ], line: 81, column: 27, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 81, }, ], values: [ [ Symbol( "20", ), ], ], line: 83, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "0", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 66, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 84, }, Operator( ( "*", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 84, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 84, }, Operator( ( "*", true, ), ), Symbol( "4", ), ], ], ), ], line: 84, }, ], end: 82, }, line: 85, column: 1, }, ], end: 599, }, ), DoBlock( CodeBlock { start: 600, code: [ Variable { names: [ ( "foi", false, ), ], values: [], line: 90, column: 2, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 91, column: 5, }, ], ], line: 92, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 92, }, ], ), Symbol( "]", ), ], line: 92, }, ], values: [ [ Symbol( "0", ), ], ], line: 92, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a'", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 92, }, ], ), Symbol( "]", ), ], line: 92, }, ], values: [ [ Symbol( "0", ), ], ], line: 92, column: 16, }, ], end: 31, }, line: 92, column: 24, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 93, }, ], [ Table { data: [ ( Some( [ Symbol( "__newindex", ), ], ), [ Lambda { args: [ "t", "k", "v", ], body: CodeBlock { start: 46, code: [ Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 93, }, ], values: [ [ Symbol( "true", ), ], ], line: 93, column: 4, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 93, }, ], [ Ident { expr: [ Symbol( "k", ), ], line: 93, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 93, }, ], ], ), ], line: 93, }, ], end: 59, }, line: 93, column: 28, }, ], ), ], line: 93, column: 29, }, ], ], ), ], line: 92, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 93, }, ], values: [ [ Symbol( "false", ), ], ], line: 94, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 94, }, ], values: [ [ Symbol( "0", ), ], ], line: 94, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 94, }, ], ], ), ], line: 94, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 94, }, ], values: [ [ Symbol( "false", ), ], ], line: 95, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a1'", ), ], ), Symbol( "]", ), ], line: 95, }, ], values: [ [ Symbol( "0", ), ], ], line: 95, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 95, }, ], ], ), ], line: 95, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 95, }, ], values: [ [ Symbol( "false", ), ], ], line: 96, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a11'", ), ], ), Symbol( "]", ), ], line: 96, }, ], values: [ [ Symbol( "0", ), ], ], line: 96, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 96, }, ], ], ), ], line: 96, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 96, }, ], values: [ [ Symbol( "false", ), ], ], line: 97, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "11", ), ], ), Symbol( "]", ), ], line: 97, }, ], values: [ [ Symbol( "0", ), ], ], line: 97, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 97, }, ], ], ), ], line: 97, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 97, }, ], values: [ [ Symbol( "false", ), ], ], line: 98, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 98, }, ], values: [ [ Symbol( "nil", ), ], ], line: 98, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 98, }, ], ], ), ], line: 98, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 98, }, ], values: [ [ Symbol( "false", ), ], ], line: 99, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 99, }, ], values: [ [ Symbol( "nil", ), ], ], line: 99, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 99, }, ], ], ), ], line: 99, }, ], end: 755, }, ), Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 103, }, ], [ Symbol( "nil", ), ], ], ), ], line: 100, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "...", ], body: CodeBlock { start: 768, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 104, }, ], [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 104, column: 6, }, ], ], ), ), ], end: 775, }, line: 104, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__call", ), ], line: 104, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 105, }, ], ], line: 107, column: 0, }, DoBlock( CodeBlock { start: 781, code: [ Variable { names: [ ( "x", false, ), ( "y", false, ), ], values: [ [ Ident { expr: [ Symbol( "a", ), Call( [ [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "unpack", ), Call( [ [ Table { data: [ ( None, [ Symbol( "'a'", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 108, column: 15, }, ], ], ), ], line: 108, }, ], ], ), ], line: 108, }, ], ], line: 108, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 109, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 109, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 109, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 109, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 109, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 108, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 109, }, Ident { expr: [ Symbol( "y", ), ], line: 110, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 110, }, ], ], line: 110, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 111, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 111, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 111, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 110, }, ], end: 845, }, ), Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 115, column: 7, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 115, }, ], ], ), ], line: 115, }, ], ], line: 115, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 116, }, ], ], ), ], line: 115, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "op", ], body: CodeBlock { start: 866, code: [ Return( Some( [ [ Lambda { args: [ "...", ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "cap", ), ], line: 119, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "0", ), ], ), [ Ident { expr: [ Symbol( "op", ), ], line: 119, }, ], ), ( None, [ Symbol( "...", ), ], ), ], line: 119, column: 11, }, ], ], line: 119, column: 12, }, Return( Some( [ [ Expr( [ Symbol( "...", ), ], ), Ident { expr: [], line: 119, }, ], ], ), ), ], end: 22, }, line: 119, column: 22, }, ], ], ), ), ], end: 889, }, line: 120, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__add", ), ], line: 120, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"add\"", ), ], ], ), ], line: 121, }, ], ], line: 121, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__sub", ), ], line: 121, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"sub\"", ), ], ], ), ], line: 122, }, ], ], line: 122, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__mul", ), ], line: 122, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"mul\"", ), ], ], ), ], line: 123, }, ], ], line: 123, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__div", ), ], line: 123, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"div\"", ), ], ], ), ], line: 124, }, ], ], line: 124, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__idiv", ), ], line: 124, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"idiv\"", ), ], ], ), ], line: 125, }, ], ], line: 125, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__mod", ), ], line: 125, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"mod\"", ), ], ], ), ], line: 126, }, ], ], line: 126, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__unm", ), ], line: 126, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"unm\"", ), ], ], ), ], line: 127, }, ], ], line: 127, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__pow", ), ], line: 127, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"pow\"", ), ], ], ), ], line: 128, }, ], ], line: 128, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__len", ), ], line: 128, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"len\"", ), ], ], ), ], line: 129, }, ], ], line: 129, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__band", ), ], line: 129, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"band\"", ), ], ], ), ], line: 130, }, ], ], line: 130, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__bor", ), ], line: 130, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"bor\"", ), ], ], ), ], line: 131, }, ], ], line: 131, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__bxor", ), ], line: 131, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"bxor\"", ), ], ], ), ], line: 132, }, ], ], line: 132, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__shl", ), ], line: 132, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"shl\"", ), ], ], ), ], line: 133, }, ], ], line: 133, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__shr", ), ], line: 133, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"shr\"", ), ], ], ), ], line: 134, }, ], ], line: 134, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__bnot", ), ], line: 134, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"bnot\"", ), ], ], ), ], line: 135, }, ], ], line: 135, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 137, }, Operator( ( "+", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 137, }, ], ], ), ], line: 135, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 138, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 138, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 138, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 137, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 139, }, Operator( ( "+", true, ), ), Symbol( "'5'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 139, }, ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 140, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 140, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 140, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 140, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 140, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 139, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 142, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 142, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 141, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'5'", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), ], ], ), ], line: 142, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 144, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 144, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 143, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 144, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 145, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ], line: 145, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 145, }, ], ], ), ], line: 145, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 145, }, ], ], ), ], line: 145, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 146, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 145, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "\"sub\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 147, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 146, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'5'", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 148, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), ], ], ), ], line: 147, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 149, }, Operator( ( "==", true, ), ), Symbol( "\"sub\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 149, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 149, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 149, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 149, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 148, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 150, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 150, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 150, }, ], ], ), ], line: 149, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 151, }, Operator( ( "==", true, ), ), Symbol( "\"mul\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 151, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 151, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 151, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 151, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 151, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 150, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 152, }, Operator( ( "/", true, ), ), Symbol( "0", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 152, }, ], ], ), ], line: 151, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "\"div\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 153, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 153, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 154, }, Operator( ( "%", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 154, }, ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "\"mod\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 155, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 155, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 155, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 156, }, Operator( ( "//", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 156, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 156, }, ], ], ), ], line: 155, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "\"idiv\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 157, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 157, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 158, }, Operator( ( "&", true, ), ), Symbol( "\"hi\"", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 158, }, ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 159, }, Operator( ( "==", true, ), ), Symbol( "\"band\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 159, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 159, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 159, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 159, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 158, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 160, }, Operator( ( "|", true, ), ), Symbol( "\"hi\"", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 160, }, ], ], ), ], line: 159, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 161, }, Operator( ( "==", true, ), ), Symbol( "\"bor\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 161, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 161, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 161, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 161, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 160, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"hi\"", ), Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 162, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), ], ], ), ], line: 161, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "\"bxor\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 163, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 163, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 164, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 164, }, ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 165, }, Operator( ( "==", true, ), ), Symbol( "\"unm\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 165, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 165, }, ], ], ), ], line: 164, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 166, }, Operator( ( "^", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 166, }, ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 167, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 167, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 167, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 167, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 167, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 168, }, Operator( ( "^", true, ), ), Symbol( "'4'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 168, }, ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 169, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 169, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 169, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 169, }, Operator( ( "==", true, ), ), Symbol( "'4'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 169, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 168, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "4", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 169, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 171, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 171, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 171, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'4'", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 172, }, Operator( ( "==", true, ), ), Symbol( "'4'", ), ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "'4'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 173, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 173, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 174, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 174, }, ], ], ), ], line: 173, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 175, }, Operator( ( "==", true, ), ), Symbol( "\"len\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 175, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 175, }, ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 176, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 176, }, ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "\"bnot\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 177, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 177, }, ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 178, }, Operator( ( "<<", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 178, }, ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 179, }, Operator( ( "==", true, ), ), Symbol( "\"shl\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 179, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 179, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 179, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 178, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1.5", ), Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 180, }, Operator( ( "==", true, ), ), Symbol( "1.5", ), ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 181, }, Operator( ( "==", true, ), ), Symbol( "\"shr\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 181, }, Operator( ( "==", true, ), ), Symbol( "1.5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 181, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 181, }, ], ], ), ], line: 180, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 181, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 185, column: 11, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 1825, code: [ Return( Some( [ [ Symbol( "10", ), ], ], ), ), ], end: 1828, }, line: 185, column: 21, }, ], ), ], line: 185, column: 22, }, ], ], ), ], line: 185, }, ], ], line: 185, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 186, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 186, }, ], ], ), ], line: 186, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 185, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Symbol( "\"abc\"", ), ], ], ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 188, }, ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 188, }, ], ], ), ], line: 188, }, ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 189, }, ], [ Symbol( "34", ), ], ], ), ], line: 189, }, ], ], ), ], line: 188, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 190, }, ], ], ), ], line: 190, }, ], ], ), ], line: 189, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'a'", ), ], [ Symbol( "1000", ), ], ], ), ], line: 193, }, ], ], ), ], line: 193, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 190, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 193, }, ], values: [ [ Table { data: [], line: 196, column: 4, }, ], ], line: 196, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 196, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 1913, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 198, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 199, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 198, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 200, }, ], ], ), ], line: 200, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 200, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 200, }, ], ], line: 200, column: 5, }, ], end: 23, }, next: None, line: 200, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 201, }, ], ], ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 31, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 201, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 201, }, ], ], line: 201, column: 5, }, ], end: 37, }, next: None, line: 201, column: 14, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 202, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 202, }, ], [ Symbol( "\"dummy\"", ), ], ], ), ), ], end: 1957, }, line: 203, column: 1, }, ], ], line: 205, column: 0, }, Function { local: false, name: [ Symbol( "Op", ), ], args: [ "x", ], body: CodeBlock { start: 1962, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Ident { expr: [ Symbol( "x", ), ], line: 205, }, ], ), ], line: 205, column: 8, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 205, }, ], ], ), ], line: 205, }, ], ], ), ), ], end: 1974, }, line: 205, column: 17, }, Function { local: true, name: [ Symbol( "test", ), ], args: [], body: CodeBlock { start: 1979, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 208, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 208, }, ], ), Ident { expr: [], line: 208, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 208, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 208, }, ], ), Ident { expr: [], line: 208, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 208, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 208, }, ], ), Ident { expr: [], line: 208, }, ], ], ), ], line: 208, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 209, }, ], ), Ident { expr: [], line: 209, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 209, }, Operator( ( "<", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 209, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 209, }, ], ), Ident { expr: [], line: 209, }, ], ], ), ], line: 208, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 210, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 210, }, ], ), Ident { expr: [], line: 210, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 210, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 210, }, ], ), Ident { expr: [], line: 210, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 210, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 210, }, ], ), Ident { expr: [], line: 210, }, ], ], ), ], line: 209, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'a'", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 211, }, ], ), Ident { expr: [], line: 211, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 211, }, Operator( ( "<", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 211, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 211, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 211, }, ], ), Ident { expr: [], line: 211, }, ], ], ), ], line: 210, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 212, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 212, }, ], ), Ident { expr: [], line: 212, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 212, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 212, }, ], ), Ident { expr: [], line: 212, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 212, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 212, }, ], ), Ident { expr: [], line: 212, }, ], ], ), ], line: 211, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 213, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 213, }, ], ), Ident { expr: [], line: 213, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 213, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 213, }, ], ), Ident { expr: [], line: 213, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 213, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 213, }, ], ), Ident { expr: [], line: 213, }, ], ], ), ], line: 212, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 214, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 214, }, ], ), Ident { expr: [], line: 214, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 214, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 214, }, ], ), Ident { expr: [], line: 214, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 214, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 214, }, ], ), Ident { expr: [], line: 214, }, ], ], ), ], line: 213, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 215, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 215, }, ], ), Ident { expr: [], line: 215, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 215, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 215, }, ], ), Ident { expr: [], line: 215, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 215, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 215, }, ], ), Ident { expr: [], line: 215, }, ], ], ), ], line: 214, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 216, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 216, }, ], ), Ident { expr: [], line: 216, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 216, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 216, }, ], ), Ident { expr: [], line: 216, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 216, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 216, }, ], ), Ident { expr: [], line: 216, }, ], ], ), ], line: 215, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 217, }, ], ), Ident { expr: [], line: 217, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 217, }, ], ), Ident { expr: [], line: 217, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 217, }, Operator( ( ">=", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 217, }, ], ], ), ], line: 216, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 218, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 218, }, ], ), Ident { expr: [], line: 218, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 218, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 218, }, ], ), Ident { expr: [], line: 218, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 218, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 218, }, ], ), Ident { expr: [], line: 218, }, ], ], ), ], line: 217, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "'a'", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 219, }, ], ), Ident { expr: [], line: 219, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 219, }, Operator( ( ">=", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 219, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 219, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 219, }, ], ), Ident { expr: [], line: 219, }, ], ], ), ], line: 218, }, ], end: 2424, }, line: 220, column: 1, }, Ident { expr: [ Symbol( "test", ), Call( [], ), ], line: 220, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 222, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 2439, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 225, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 225, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 226, }, ], ], ), ], line: 226, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 226, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 226, }, ], ], line: 226, column: 5, }, ], end: 20, }, next: None, line: 226, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 227, }, ], ], ), ], line: 227, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 227, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 227, }, ], ], line: 227, column: 5, }, ], end: 34, }, next: None, line: 227, column: 14, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 228, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 228, }, ], [ Symbol( "\"dummy\"", ), ], ], ), ), ], end: 2480, }, line: 229, column: 1, }, ], ], line: 229, column: 1, }, Ident { expr: [ Symbol( "test", ), Call( [], ), ], line: 229, }, Function { local: true, name: [ Symbol( "rawSet", ), ], args: [ "x", ], body: CodeBlock { start: 2489, code: [ Variable { names: [ ( "y", false, ), ], values: [ [ Table { data: [], line: 237, column: 5, }, ], ], line: 238, column: 0, }, ForFuncLoop { iters: [ "_", "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 238, }, ], ], ), ], line: 238, }, ], stop: None, initial: None, code: CodeBlock { start: 15, code: [ Alter { names: [ Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 238, }, ], ), Symbol( "]", ), ], line: 238, }, ], values: [ [ Symbol( "1", ), ], ], line: 238, column: 6, }, ], end: 22, }, line: 238, column: 17, }, Return( Some( [ [ Ident { expr: [ Symbol( "y", ), ], line: 239, }, ], ], ), ), ], end: 2514, }, line: 240, column: 1, }, Function { local: true, name: [ Symbol( "Set", ), ], args: [ "x", ], body: CodeBlock { start: 2520, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "rawSet", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 243, }, ], ], ), ], line: 243, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 243, }, ], ], ), ], line: 243, }, ], ], ), ), ], end: 2531, }, line: 244, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 244, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2541, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 247, }, ], ], ), ], line: 247, }, ], stop: None, initial: None, code: CodeBlock { start: 8, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 248, }, ], ), Symbol( "]", ), ], line: 248, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 248, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 249, }, ], ), Symbol( "]", ), ], line: 248, }, ], values: [ [ Symbol( "nil", ), ], ], line: 249, column: 6, }, ], end: 25, }, line: 250, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 251, }, ], ], ), ], line: 251, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], ), ), ], end: 2574, }, line: 252, column: 1, }, ], ], line: 252, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 252, }, ], values: [ [ Symbol( "nil", ), ], ], line: 254, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 256, column: 10, }, ], ], ), ], line: 256, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 256, column: 21, }, ], ], ), ], line: 256, }, ], ], ), ], line: 254, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 257, column: 14, }, ], ], ), ], line: 257, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 257, column: 25, }, ], ], ), ], line: 257, }, ], ), Ident { expr: [], line: 257, }, ], ], ), ], line: 256, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 258, column: 13, }, ], ], ), ], line: 258, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 258, column: 24, }, ], ], ), ], line: 258, }, ], ), Ident { expr: [], line: 258, }, ], ], ), ], line: 257, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 259, column: 13, }, ], ], ), ], line: 259, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 259, column: 24, }, ], ], ), ], line: 259, }, ], ), Ident { expr: [], line: 259, }, ], ], ), ], line: 258, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 260, column: 9, }, ], ], ), ], line: 260, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 260, column: 16, }, ], ], ), ], line: 260, }, ], ), Ident { expr: [], line: 260, }, ], ], ), ], line: 259, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 260, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2708, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 263, }, ], ], ), ], line: 263, }, ], stop: None, initial: None, code: CodeBlock { start: 8, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 264, }, ], ), Symbol( "]", ), ], line: 264, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 264, column: 10, }, ], end: 19, }, line: 265, column: 1, }, Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 2730, }, line: 267, column: 1, }, ], ], line: 267, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 269, column: 10, }, ], ], ), ], line: 269, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 269, column: 17, }, ], ], ), ], line: 269, }, ], ), Ident { expr: [], line: 269, }, ], ], ), ], line: 267, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 270, column: 10, }, ], ], ), ], line: 270, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 270, column: 17, }, ], ], ), ], line: 270, }, ], ), Ident { expr: [], line: 270, }, ], ], ), ], line: 269, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 271, column: 10, }, ], ], ), ], line: 271, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 271, column: 17, }, ], ], ), ], line: 271, }, ], ), Ident { expr: [], line: 271, }, ], ], ), ], line: 270, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 271, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2797, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 274, }, ], ], ), ], line: 274, }, ], stop: None, initial: None, code: CodeBlock { start: 8, code: [ IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 275, }, ], ), Symbol( "]", ), ], line: 275, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 275, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 276, }, ], ), Symbol( "]", ), ], line: 275, }, ], values: [ [ Symbol( "nil", ), ], ], line: 276, column: 6, }, ], end: 25, }, line: 277, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 278, }, ], ], ), ], line: 278, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ), ], end: 2830, }, line: 279, column: 1, }, ], ], line: 281, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 281, column: 11, }, ], ], ), ], line: 281, }, ], ], line: 281, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 282, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 282, column: 12, }, ], ], ), ], line: 282, }, ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 283, }, ], [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 283, column: 15, }, ], ], ), ], line: 283, }, ], ], ), ], line: 283, }, ], ], ), ], line: 282, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 284, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 284, }, ], ], ), ], line: 284, }, ], ], ), ], line: 283, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 285, column: 12, }, ], ], ), ], line: 285, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "rawSet", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 285, column: 21, }, ], ], ), ], line: 285, }, ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawSet", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 286, column: 12, }, ], ], ), ], line: 286, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 286, column: 21, }, ], ], ), ], line: 286, }, ], ], ), ], line: 285, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 287, column: 10, }, ], ], ), ], line: 287, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "6", ), ], ), ], line: 287, column: 21, }, ], ], ), ], line: 287, }, ], ], ), ], line: 286, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 290, column: 10, }, ], ], ), ], line: 290, }, ], ), Symbol( "]", ), ], line: 287, }, ], values: [ [ Symbol( "1", ), ], ], line: 290, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 291, column: 12, }, ], ], ), ], line: 291, }, ], ), Symbol( "]", ), ], line: 291, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 290, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), ], line: 294, }, ], body: CodeBlock { start: 2979, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 295, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 295, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\n >>> testC not active: skipping tests for \\z\nuserdata equality <<<\\n'", ), ], ], ), ], line: 295, }, ], end: 2988, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 2988, code: [ Variable { names: [ ( "u1", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 298, }, ], ], line: 299, column: 0, }, Variable { names: [ ( "u2", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 299, }, ], ], line: 300, column: 0, }, Variable { names: [ ( "u3", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 300, }, ], ], line: 300, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 301, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 301, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 301, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 301, }, ], ], ), ], line: 300, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 302, }, ], [ Symbol( "1", ), ], ], ), ], line: 301, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 303, }, ], [ Symbol( "2", ), ], ], ), ], line: 302, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "u3", ), ], line: 304, }, ], [ Symbol( "1", ), ], ], ), ], line: 303, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 305, }, ], [ Table { data: [ ( Some( [ Symbol( "__eq", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 79, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 306, }, ], ], ), ], line: 306, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 306, }, ], ], ), ], line: 306, }, ], ], ), ), ], end: 94, }, line: 307, column: 1, }, ], ), ], line: 307, column: 2, }, ], ], ), ], line: 304, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 308, }, ], [ Table { data: [ ( Some( [ Symbol( "__eq", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 111, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 114, }, line: 310, column: 1, }, ], ), ], line: 310, column: 2, }, ], ], ), ], line: 307, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 311, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 311, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 311, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 311, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 311, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 311, }, ], ], ), ], line: 310, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 312, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 312, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 312, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 312, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 312, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 312, }, ], ], ), ], line: 311, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 313, }, Operator( ( "~=", true, ), ), Table { data: [], line: 313, column: 6, }, ], ], ), ], line: 312, }, ], end: 3140, }, next: None, line: 314, column: 1, }, ), line: 314, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__concat", ), ], line: 314, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 3152, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 318, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 318, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 319, }, ], ], ), ], line: 319, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 319, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "val", ), ], line: 319, }, ], ], line: 319, column: 5, }, ], end: 20, }, next: None, line: 319, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 320, }, ], ], ), ], line: 320, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 320, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "val", ), ], line: 320, }, ], ], line: 320, column: 5, }, ], end: 34, }, next: None, line: 320, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "A", ), ], line: 321, }, ], body: CodeBlock { start: 37, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 321, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 321, }, ], ], ), ), ], end: 42, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 42, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 323, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 323, }, ], ), ], line: 323, column: 10, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 323, }, ], ], ), ], line: 323, }, ], ], ), ), ], end: 56, }, next: None, line: 324, column: 1, }, ), line: 324, column: 1, }, ], end: 3209, }, line: 325, column: 1, }, ], ], line: 325, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 325, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Symbol( "\"c\"", ), ], ), ], line: 327, column: 7, }, ], ], line: 327, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 327, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 327, }, ], ], ), ], line: 327, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 327, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Symbol( "\"d\"", ), ], ), ], line: 328, column: 7, }, ], ], line: 328, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 328, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 328, }, ], ], ), ], line: 328, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 328, }, ], values: [ [ Symbol( "true", ), ], ], line: 330, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 331, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 331, }, Operator( ( "==", true, ), ), Symbol( "'cd'", ), ], ], ), ], line: 330, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0", ), Operator( ( "..", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 332, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 332, }, Operator( ( "..", true, ), ), Symbol( "\"e\"", ), Operator( ( "..", true, ), ), Symbol( "\"f\"", ), Operator( ( "..", true, ), ), Expr( [ Symbol( "5", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 332, }, Operator( ( "..", true, ), ), Symbol( "\"g\"", ), Operator( ( "==", true, ), ), Symbol( "\"0abcdef8g\"", ), ], ], ), ], line: 331, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 332, }, ], values: [ [ Symbol( "false", ), ], ], line: 334, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "c", ), ], line: 335, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 335, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 335, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 335, }, ], ), Ident { expr: [ Symbol( ".", ), Symbol( "val", ), ], line: 335, }, Operator( ( "==", true, ), ), Symbol( "'cdcd'", ), ], ], ), ], line: 334, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 335, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 336, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 336, }, ], ], line: 336, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 337, }, ], ], ), ], line: 337, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 337, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "val", ), ], line: 337, }, Operator( ( "==", true, ), ), Symbol( "'cd'", ), ], ], ), ], line: 336, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 337, }, ], values: [ [ Symbol( "0", ), Operator( ( "..", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 338, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 338, }, Operator( ( "..", true, ), ), Symbol( "\"e\"", ), Operator( ( "..", true, ), ), Symbol( "\"f\"", ), Operator( ( "..", true, ), ), Symbol( "\"g\"", ), ], ], line: 338, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "val", ), ], line: 339, }, Operator( ( "==", true, ), ), Symbol( "\"0abcdefg\"", ), ], ], ), ], line: 338, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 339, }, ], values: [ [ Table { data: [], line: 343, column: 4, }, ], ], line: 344, column: 0, }, Variable { names: [ ( "x", false, ), ], values: [], line: 344, column: 2, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 345, }, ], [ Table { data: [ ( Some( [ Symbol( "__concat", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3357, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 346, }, ], ], ), ], line: 346, }, Operator( ( "==", true, ), ), Symbol( "\"number\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 346, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 346, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 346, }, ], ], ), ], line: 346, }, Operator( ( "==", true, ), ), Symbol( "\"number\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 346, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 346, }, ], ], ), ], line: 346, }, Return( Some( [ [ Ident { expr: [ Symbol( "c", ), ], line: 347, }, ], ], ), ), ], end: 3384, }, line: 348, column: 1, }, ], ), ], line: 348, column: 2, }, ], ], ), ], line: 344, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 349, }, Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 349, }, Operator( ( "and", true, ), ), Symbol( "5", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 349, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 349, }, ], ], ), ], line: 348, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "4", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 350, }, Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 350, }, Operator( ( "and", true, ), ), Symbol( "4", ), Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "..", true, ), ), Symbol( "6", ), Operator( ( "..", true, ), ), Symbol( "7", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 350, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 350, }, ], ], ), ], line: 349, }, Variable { names: [ ( "t1", false, ), ( "t2", false, ), ( "c", false, ), ( "d", false, ), ], values: [], line: 354, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), ], line: 354, }, ], values: [ [ Table { data: [], line: 355, column: 4, }, ], ], line: 355, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 355, }, ], values: [ [ Table { data: [], line: 355, column: 9, }, ], ], line: 355, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 355, }, ], [ Ident { expr: [ Symbol( "t1", ), ], line: 355, }, ], ], ), ], line: 355, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 355, }, ], values: [ [ Table { data: [], line: 356, column: 4, }, ], ], line: 356, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 356, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 3457, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 3460, }, line: 357, column: 10, }, ], ], line: 357, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 357, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 3467, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 3470, }, line: 358, column: 10, }, ], ], line: 358, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 359, }, ], [ Ident { expr: [ Symbol( "t1", ), ], line: 359, }, ], ], ), ], line: 358, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 360, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 360, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 360, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 360, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 360, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 360, }, ], ), Ident { expr: [], line: 360, }, ], ], ), ], line: 359, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), ], line: 360, }, ], values: [ [ Table { data: [], line: 361, column: 4, }, ], ], line: 361, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 361, }, ], values: [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 362, }, ], ], line: 362, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 362, }, ], values: [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 363, }, ], ], line: 363, column: 7, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 364, }, ], [ Ident { expr: [ Symbol( "t2", ), ], line: 364, }, ], ], ), ], line: 363, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 365, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 365, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 365, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 365, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 365, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 365, }, ], ), Ident { expr: [], line: 365, }, ], ], ), ], line: 364, }, Variable { names: [ ( "i", false, ), ], values: [], line: 370, column: 2, }, Variable { names: [ ( "tt", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__call", ), ], ), [ Lambda { args: [ "t", "...", ], body: CodeBlock { start: 3548, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 373, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 373, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 374, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "f", ), ], line: 374, }, ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "f", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 374, }, ], ], ), ), ], end: 18, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 18, code: [ Return( Some( [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 375, column: 4, }, ], ], ), ), ], end: 23, }, next: None, line: 376, column: 1, }, ), line: 376, column: 1, }, ], end: 3572, }, line: 377, column: 1, }, ], ), ], line: 378, column: 1, }, ], ], line: 380, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 380, column: 7, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 380, }, ], ], ), ], line: 380, }, ], ], line: 381, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 381, }, ], ), ], line: 381, column: 10, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 381, }, ], ], ), ], line: 381, }, ], ], line: 382, column: 0, }, Variable { names: [ ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Ident { expr: [ Symbol( "b", ), ], line: 382, }, ], ), ], line: 382, column: 10, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 382, }, ], ], ), ], line: 382, }, ], ], line: 382, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 382, }, ], values: [ [ Symbol( "0", ), ], ], line: 384, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 384, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), Call( [ [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 385, }, ], ], line: 385, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 386, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 386, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 386, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 385, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "X", ), ], line: 389, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 386, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 389, }, Variable { names: [ ( "_g", false, ), ], values: [ [ Ident { expr: [ Symbol( "_G", ), ], line: 393, }, ], ], line: 393, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), ], line: 393, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 394, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "_", "k", ], body: CodeBlock { start: 3672, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "_g", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 394, }, ], ), Symbol( "]", ), ], line: 394, }, ], ], ), ), ], end: 3678, }, line: 394, column: 22, }, ], ), ], line: 394, column: 23, }, ], ], ), ], line: 394, }, ], ], line: 394, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 394, }, ], values: [ [ Table { data: [], line: 397, column: 4, }, ], ], line: 397, column: 4, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 398, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 397, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 399, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 399, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 399, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 398, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 399, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 401, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3728, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 404, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 404, }, ], ], ), ), ], end: 3733, }, line: 404, column: 16, }, ], ), ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 3740, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 405, }, ], ], ), ], line: 405, }, ], ], ), ), ], end: 3748, }, line: 405, column: 14, }, ], ), ], line: 405, column: 15, }, ], ], line: 405, column: 15, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 406, }, ], ], ), ], line: 405, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 407, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 407, }, ], ], ), ], line: 406, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 408, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 407, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "\"3\"", ), ], ), Symbol( "]", ), ], line: 409, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 408, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Symbol( "3.45", ), Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 409, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "23", ), ], [ Symbol( "nil", ), ], ], ), ], line: 410, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 412, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 411, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "true", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 414, }, ], ], ), ], line: 412, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 415, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 415, }, ], ], ), ], line: 414, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__index", ), ], line: 415, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3841, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 416, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 416, }, ], ], ), ), ], end: 3846, }, line: 416, column: 15, }, ], ], line: 416, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "true", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 417, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 416, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "false", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 418, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 417, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "false", ), ], [ Symbol( "nil", ), ], ], ), ], line: 418, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 420, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 419, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 422, }, ], ], ), ], line: 420, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 423, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 423, }, ], ], ), ], line: 422, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__add", ), ], line: 423, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3912, code: [ Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 424, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 424, }, Operator( ( "+", true, ), ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 424, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 424, }, ], ], ), ), ], end: 3925, }, line: 424, column: 23, }, ], ], line: 424, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 424, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), Operator( ( "+", true, ), ), Symbol( "23", ), Operator( ( "==", true, ), ), Symbol( "23", ), ], ], ), ], line: 425, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), Operator( ( "+", true, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 426, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), ], line: 427, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 429, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 428, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Table { data: [], line: 431, column: 8, }, ], ], ), ], line: 429, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 431, }, ], values: [ [ Table { data: [], line: 435, column: 4, }, ], ], line: 435, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 435, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 435, }, ], ], ), ], line: 435, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "__index", ), ], line: 435, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 435, }, ], ], line: 435, column: 18, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 435, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 435, }, ], ], line: 435, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 4009, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 436, }, ], ), Symbol( "]", ), ], line: 436, }, ], ], ), ), ], end: 4015, }, line: 436, column: 17, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 436, }, ], [ Symbol( "10", ), ], ], ), ], line: 436, }, ], ], ), ], line: 435, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 4034, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 437, }, ], ), Symbol( "]", ), ], line: 437, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 437, }, ], ], line: 437, column: 6, }, ], end: 4041, }, line: 437, column: 20, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 437, }, ], [ Symbol( "10", ), ], [ Symbol( "true", ), ], ], ), ], line: 437, }, ], ], ), ], line: 436, }, Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 437, }, Ident { expr: [ Symbol( "K", ), ], line: 440, }, Ident { expr: [ Symbol( "V", ), ], line: 440, }, ], values: [ [ Symbol( "nil", ), ], ], line: 440, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "grandparent", ), ], line: 440, }, ], values: [ [ Table { data: [], line: 441, column: 4, }, ], ], line: 441, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "grandparent", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 441, }, ], values: [ [ Lambda { args: [ "t", "k", "v", ], body: CodeBlock { start: 4072, code: [ Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 442, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 442, }, ], ], line: 442, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "K", ), ], line: 442, }, ], values: [ [ Ident { expr: [ Symbol( "k", ), ], line: 442, }, ], ], line: 442, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "V", ), ], line: 442, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 442, }, ], ], line: 442, column: 11, }, ], end: 4084, }, line: 442, column: 24, }, ], ], line: 442, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "parent", ), ], line: 442, }, ], values: [ [ Table { data: [], line: 444, column: 4, }, ], ], line: 444, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "parent", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 444, }, ], values: [ [ Ident { expr: [ Symbol( "parent", ), ], line: 445, }, ], ], line: 445, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "parent", ), ], line: 446, }, ], [ Ident { expr: [ Symbol( "grandparent", ), ], line: 446, }, ], ], ), ], line: 445, }, Alter { names: [ Ident { expr: [ Symbol( "child", ), ], line: 446, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 448, column: 6, }, ], [ Ident { expr: [ Symbol( "parent", ), ], line: 448, }, ], ], ), ], line: 448, }, ], ], line: 448, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "child", ), Symbol( ".", ), Symbol( "foo", ), ], line: 448, }, ], values: [ [ Symbol( "10", ), ], ], line: 449, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), ], line: 450, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "parent", ), ], line: 450, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "K", ), ], line: 450, }, Operator( ( "==", true, ), ), Symbol( "\"foo\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "V", ), ], line: 450, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 449, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 450, }, Return( Some( [ [ Symbol( "12", ), ], ], ), ), ]