--- source: src/main.rs expression: parsed input_file: test-data/lua5.4-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( "_ENV", ), Symbol( "[", ), Expr( [ Symbol( "\"B\"", ), ], ), Symbol( "]", ), ], line: 17, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 18, }, ], ], line: 18, column: 6, }, 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: 119, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "name", ), ], line: 25, }, ], ], ), ), ], end: 124, }, 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: 255, 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: 283, }, 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: 356, 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: 367, }, 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: 420, 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: 456, }, ), 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( "t", ), Symbol( ".", ), Symbol( "__index", ), ], line: 72, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 73, }, ], ], line: 73, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 73, }, ], values: [ [ Symbol( "10", ), ], ], line: 74, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 74, }, ], values: [ [ Symbol( "20", ), ], ], line: 74, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 74, }, ], values: [ [ Symbol( "90", ), ], ], line: 74, column: 21, }, ForLoop { iter: "i", start: [ Symbol( "4", ), ], end: [ Symbol( "20", ), ], step: None, code: CodeBlock { start: 508, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 75, }, ], ), Symbol( "]", ), ], line: 75, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 75, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], line: 75, column: 8, }, ], end: 517, }, line: 75, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 76, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 76, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 76, }, Operator( ( "==", true, ), ), Symbol( "90", ), ], ], ), ], line: 75, }, ForLoop { iter: "i", start: [ Symbol( "4", ), ], end: [ Symbol( "20", ), ], step: None, code: CodeBlock { start: 547, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 77, }, ], ), Symbol( "]", ), ], line: 77, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 77, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ], line: 77, }, ], end: 559, }, line: 77, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 78, }, ], ], ), ], line: 78, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 77, }, DoBlock( CodeBlock { start: 569, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 82, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 82, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 83, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 83, column: 14, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 84, 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: 85, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 85, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], [ Symbol( "\"lixo\"", ), ], ], ), ), ], end: 47, }, line: 85, column: 21, }, ], ), ], line: 85, column: 22, }, ], ], ), ], line: 84, }, ], ), ], line: 85, column: 24, }, ], ], ), ], line: 83, }, ], ), ], line: 85, column: 26, }, ], ], ), ], line: 83, }, ], ], line: 85, column: 27, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 85, }, ], values: [ [ Symbol( "20", ), ], ], line: 87, 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: 88, }, Operator( ( "*", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 88, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 88, }, Operator( ( "*", true, ), ), Symbol( "4", ), ], ], ), ], line: 88, }, ], end: 82, }, line: 89, column: 1, }, ], end: 652, }, ), DoBlock( CodeBlock { start: 653, code: [ Variable { names: [ ( "foi", false, ), ], values: [], line: 94, column: 2, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 95, column: 5, }, ], ], line: 96, 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: 96, }, ], ), Symbol( "]", ), ], line: 96, }, ], values: [ [ Symbol( "0", ), ], ], line: 96, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a'", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 96, }, ], ), Symbol( "]", ), ], line: 96, }, ], values: [ [ Symbol( "0", ), ], ], line: 96, column: 16, }, ], end: 31, }, line: 96, column: 24, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 97, }, ], [ Table { data: [ ( Some( [ Symbol( "__newindex", ), ], ), [ Lambda { args: [ "t", "k", "v", ], body: CodeBlock { start: 46, code: [ Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 97, }, ], values: [ [ Symbol( "true", ), ], ], line: 97, column: 4, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 97, }, ], [ Ident { expr: [ Symbol( "k", ), ], line: 97, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 97, }, ], ], ), ], line: 97, }, ], end: 59, }, line: 97, column: 28, }, ], ), ], line: 97, column: 29, }, ], ], ), ], line: 96, }, 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( "0", ), ], ], 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( "'a1'", ), ], ), Symbol( "]", ), ], line: 99, }, ], values: [ [ Symbol( "0", ), ], ], line: 99, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 99, }, ], ], ), ], line: 99, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 99, }, ], values: [ [ Symbol( "false", ), ], ], line: 100, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a11'", ), ], ), Symbol( "]", ), ], line: 100, }, ], values: [ [ Symbol( "0", ), ], ], line: 100, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 100, }, ], ], ), ], line: 100, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 100, }, ], values: [ [ Symbol( "false", ), ], ], line: 101, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "11", ), ], ), Symbol( "]", ), ], line: 101, }, ], values: [ [ Symbol( "0", ), ], ], line: 101, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 101, }, ], ], ), ], line: 101, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 101, }, ], values: [ [ Symbol( "false", ), ], ], line: 102, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 102, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 102, }, ], ], line: 102, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 102, }, ], ], ), ], line: 102, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 102, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 103, }, ], ], line: 103, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 103, }, ], values: [ [ Symbol( "false", ), ], ], line: 104, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 104, }, ], values: [ [ Symbol( "nil", ), ], ], line: 104, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 104, }, ], ], ), ], line: 104, }, ], end: 814, }, ), Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 108, }, ], [ Symbol( "nil", ), ], ], ), ], line: 105, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "...", ], body: CodeBlock { start: 827, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 109, }, ], [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 109, column: 6, }, ], ], ), ), ], end: 834, }, line: 109, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__call", ), ], line: 109, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 110, }, ], ], line: 112, column: 0, }, DoBlock( CodeBlock { start: 840, 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: 113, column: 15, }, ], ], ), ], line: 113, }, ], ], ), ], line: 113, }, ], ], line: 113, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 114, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 114, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 114, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 114, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 114, }, ], ], ), ], line: 113, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 114, }, Ident { expr: [ Symbol( "y", ), ], line: 115, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 115, }, ], ], line: 115, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 116, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 116, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 116, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 116, }, ], ], ), ], line: 115, }, ], end: 904, }, ), Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 120, column: 7, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 120, }, ], ], ), ], line: 120, }, ], ], line: 120, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 121, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 121, }, ], ], ), ], line: 120, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "op", ], body: CodeBlock { start: 925, code: [ Return( Some( [ [ Lambda { args: [ "...", ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "cap", ), ], line: 124, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "0", ), ], ), [ Ident { expr: [ Symbol( "op", ), ], line: 124, }, ], ), ( None, [ Symbol( "...", ), ], ), ], line: 124, column: 11, }, ], ], line: 124, column: 12, }, Return( Some( [ [ Expr( [ Symbol( "...", ), ], ), Ident { expr: [], line: 124, }, ], ], ), ), ], end: 22, }, line: 124, column: 22, }, ], ], ), ), ], end: 948, }, line: 125, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__add", ), ], line: 125, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"add\"", ), ], ], ), ], line: 126, }, ], ], line: 126, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__sub", ), ], line: 126, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"sub\"", ), ], ], ), ], line: 127, }, ], ], line: 127, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__mul", ), ], line: 127, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"mul\"", ), ], ], ), ], line: 128, }, ], ], line: 128, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__div", ), ], line: 128, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"div\"", ), ], ], ), ], line: 129, }, ], ], line: 129, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__idiv", ), ], line: 129, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"idiv\"", ), ], ], ), ], line: 130, }, ], ], line: 130, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__mod", ), ], line: 130, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"mod\"", ), ], ], ), ], line: 131, }, ], ], line: 131, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__unm", ), ], line: 131, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"unm\"", ), ], ], ), ], line: 132, }, ], ], line: 132, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__pow", ), ], line: 132, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"pow\"", ), ], ], ), ], line: 133, }, ], ], line: 133, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__len", ), ], line: 133, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"len\"", ), ], ], ), ], line: 134, }, ], ], line: 134, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__band", ), ], line: 134, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"band\"", ), ], ], ), ], line: 135, }, ], ], line: 135, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__bor", ), ], line: 135, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"bor\"", ), ], ], ), ], line: 136, }, ], ], line: 136, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__bxor", ), ], line: 136, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"bxor\"", ), ], ], ), ], line: 137, }, ], ], line: 137, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__shl", ), ], line: 137, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"shl\"", ), ], ], ), ], line: 138, }, ], ], line: 138, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__shr", ), ], line: 138, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"shr\"", ), ], ], ), ], line: 139, }, ], ], line: 139, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__bnot", ), ], line: 139, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"bnot\"", ), ], ], ), ], line: 140, }, ], ], line: 140, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 140, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"lt\"", ), ], ], ), ], line: 141, }, ], ], line: 141, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 141, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"le\"", ), ], ], ), ], line: 142, }, ], ], line: 145, column: 0, }, Function { local: true, name: [ Symbol( "checkcap", ), ], args: [ "t", ], body: CodeBlock { start: 1090, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "cap", ), ], line: 146, }, Operator( ( "+", true, ), ), Symbol( "1", ), Operator( ( "==", true, ), ), Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 146, }, ], ], ), ], line: 146, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 147, }, ], step: None, code: CodeBlock { start: 18, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 148, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 148, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 148, }, ], ), Symbol( "]", ), ], line: 148, }, ], ], ), ], line: 148, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 149, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 149, }, ], ], ), ], line: 149, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 149, }, ], ), Symbol( "]", ), ], line: 149, }, ], ], ), ], line: 149, }, ], ], ), ], line: 148, }, ], end: 57, }, line: 150, column: 1, }, ], end: 1148, }, line: 151, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 156, }, Operator( ( "+", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 156, }, ], ], ), ], line: 151, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"add\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 156, }, ], ), ( None, [ Symbol( "5", ), ], ), ], line: 156, column: 17, }, ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5.2", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 157, }, Operator( ( "==", true, ), ), Symbol( "5.2", ), ], ], ), ], line: 156, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"add\"", ), ], ), ( None, [ Symbol( "5.2", ), ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 157, }, ], ), ], line: 157, column: 17, }, ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 158, }, Operator( ( "+", true, ), ), Symbol( "'5'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 158, }, ], ], ), ], line: 157, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"add\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 158, }, ], ), ( None, [ Symbol( "'5'", ), ], ), ], line: 158, column: 17, }, ], ], ), ], line: 158, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 159, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 158, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"add\"", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 159, }, ], ), ], line: 159, column: 17, }, ], ], ), ], line: 159, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'5'", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 160, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), ], ], ), ], line: 159, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"add\"", ), ], ), ( None, [ Symbol( "'5'", ), ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 160, }, ], ), ], line: 160, column: 17, }, ], ], ), ], line: 160, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 160, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 161, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ], line: 161, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 161, }, ], ], ), ], line: 161, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 161, }, ], ], ), ], line: 161, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"sub\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "b", ), ], line: 161, }, ], ), ( None, [ Symbol( "3", ), ], ), ], line: 161, column: 24, }, ], ], ), ], line: 161, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 162, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 161, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"sub\"", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 162, }, ], ), ], line: 162, column: 17, }, ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'5'", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), ], ], ), ], line: 162, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"sub\"", ), ], ), ( None, [ Symbol( "'5'", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 163, }, ], ), ], line: 163, column: 17, }, ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 164, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 164, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 164, }, ], ], ), ], line: 163, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"mul\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 164, }, ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 164, }, ], ), ], line: 164, column: 17, }, ], ], ), ], line: 164, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 165, }, Operator( ( "/", true, ), ), Symbol( "0", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 165, }, ], ], ), ], line: 164, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"div\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 165, }, ], ), ( None, [ Symbol( "0", ), ], ), ], line: 165, column: 17, }, ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 166, }, Operator( ( "/", true, ), ), Symbol( "0.0", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 166, }, ], ], ), ], line: 165, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"div\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 166, }, ], ), ( None, [ Symbol( "0.0", ), ], ), ], line: 166, column: 17, }, ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 167, }, Operator( ( "%", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 167, }, ], ], ), ], line: 166, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"mod\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 167, }, ], ), ( None, [ Symbol( "2", ), ], ), ], line: 167, column: 17, }, ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 168, }, Operator( ( "//", true, ), ), Expr( [ Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 168, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 168, }, ], ], ), ], line: 167, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"idiv\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 168, }, ], ), ( None, [ Symbol( "1", ), Operator( ( "/", true, ), ), Symbol( "0", ), ], ), ], line: 168, column: 23, }, ], ], ), ], line: 168, }, Expr( [ Lambda { args: [], body: CodeBlock { start: 1387, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 169, }, Operator( ( "&", true, ), ), Symbol( "\"hi\"", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 169, }, ], ], ), ], line: 169, }, ], end: 1396, }, line: 169, column: 14, }, ], ), Ident { expr: [ Call( [], ), ], line: 169, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"band\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 169, }, ], ), ( None, [ Symbol( "\"hi\"", ), ], ), ], line: 169, column: 26, }, ], ], ), ], line: 169, }, Expr( [ Lambda { args: [], body: CodeBlock { start: 1413, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "10", ), Operator( ( "&", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 170, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 170, }, ], end: 1422, }, line: 170, column: 14, }, ], ), Ident { expr: [ Call( [], ), ], line: 170, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"band\"", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 170, }, ], ), ], line: 170, column: 26, }, ], ], ), ], line: 170, }, Expr( [ Lambda { args: [], body: CodeBlock { start: 1439, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 171, }, Operator( ( "|", true, ), ), Symbol( "10", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 171, }, ], ], ), ], line: 171, }, ], end: 1448, }, line: 171, column: 14, }, ], ), Ident { expr: [ Call( [], ), ], line: 171, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"bor\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 171, }, ], ), ( None, [ Symbol( "10", ), ], ), ], line: 171, column: 26, }, ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 172, }, Operator( ( "|", true, ), ), Symbol( "\"hi\"", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 172, }, ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"bor\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 172, }, ], ), ( None, [ Symbol( "\"hi\"", ), ], ), ], line: 172, column: 17, }, ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "\"hi\"", ), Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 173, }, Operator( ( "==", true, ), ), Symbol( "\"hi\"", ), ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"bxor\"", ), ], ), ( None, [ Symbol( "\"hi\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 173, }, ], ), ], line: 173, column: 17, }, ], ], ), ], line: 173, }, Expr( [ Lambda { args: [], body: CodeBlock { start: 1499, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "10", ), Operator( ( "~", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 174, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 174, }, ], end: 1508, }, line: 174, column: 14, }, ], ), Ident { expr: [ Call( [], ), ], line: 174, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"bxor\"", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 174, }, ], ), ], line: 174, column: 26, }, ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 175, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 175, }, ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"unm\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 175, }, ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 175, }, ], ), ], line: 175, column: 16, }, ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 176, }, Operator( ( "^", true, ), ), Symbol( "4.0", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 176, }, ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"pow\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 176, }, ], ), ( None, [ Symbol( "4.0", ), ], ), ], line: 176, column: 17, }, ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 177, }, Operator( ( "^", true, ), ), Symbol( "'4'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 177, }, ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"pow\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 177, }, ], ), ( None, [ Symbol( "'4'", ), ], ), ], line: 177, column: 17, }, ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "4", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"pow\"", ), ], ), ( None, [ Symbol( "4", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 178, }, ], ), ], line: 178, column: 17, }, ], ], ), ], line: 178, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'4'", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 179, }, Operator( ( "==", true, ), ), Symbol( "'4'", ), ], ], ), ], line: 178, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"pow\"", ), ], ), ( None, [ Symbol( "'4'", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 179, }, ], ), ], line: 179, column: 17, }, ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 180, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 180, }, ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"len\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 180, }, ], ), ], line: 180, column: 16, }, ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "~", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 181, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 181, }, ], ], ), ], line: 180, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"bnot\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 181, }, ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 181, }, ], ), ], line: 181, column: 16, }, ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 182, }, Operator( ( "<<", true, ), ), Symbol( "3", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 182, }, ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"shl\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 182, }, ], ), ( None, [ Symbol( "3", ), ], ), ], line: 182, column: 17, }, ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "1.5", ), Operator( ( ">>", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 183, }, Operator( ( "==", true, ), ), Symbol( "1.5", ), ], ], ), ], line: 182, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"shr\"", ), ], ), ( None, [ Symbol( "1.5", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 183, }, ], ), ], line: 183, column: 17, }, ], ], ), ], line: 183, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5.0", ), Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 186, }, ], ], ), ], line: 183, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"lt\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 186, }, ], ), ( None, [ Symbol( "5.0", ), ], ), ], line: 186, column: 15, }, ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 187, }, Operator( ( ">=", true, ), ), Symbol( "10", ), ], ], ), ], line: 186, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"le\"", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 187, }, ], ), ], line: 187, column: 15, }, ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 188, }, Operator( ( "<=", true, ), ), Operator( ( "-", false, ), ), Symbol( "10.0", ), ], ], ), ], line: 187, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"le\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 188, }, ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "10.0", ), ], ), ], line: 188, column: 17, }, ], ], ), ], line: 188, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 189, }, Operator( ( "<", true, ), ), Operator( ( "-", false, ), ), Symbol( "10", ), ], ], ), ], line: 188, }, Ident { expr: [ Symbol( "checkcap", ), Call( [ [ Table { data: [ ( None, [ Symbol( "\"lt\"", ), ], ), ( None, [ Ident { expr: [ Symbol( "a", ), ], line: 189, }, ], ), ( None, [ Operator( ( "-", false, ), ), Symbol( "10", ), ], ), ], line: 189, column: 17, }, ], ], ), ], line: 189, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 189, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 193, column: 11, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 1752, code: [ Return( Some( [ [ Symbol( "10", ), ], ], ), ), ], end: 1755, }, line: 193, column: 21, }, ], ), ], line: 193, column: 22, }, ], ], ), ], line: 193, }, ], ], line: 193, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 194, }, ], ], ), ], line: 194, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 193, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Symbol( "\"abc\"", ), ], ], ), ], line: 195, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 194, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 196, }, ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 196, }, ], ], ), ], line: 196, }, ], ], ), ], line: 195, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 197, }, ], [ Symbol( "34", ), ], ], ), ], line: 197, }, ], ], ), ], line: 196, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 198, }, ], ], ), ], line: 198, }, ], ], ), ], line: 197, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'a'", ), ], [ Symbol( "1000", ), ], ], ), ], line: 201, }, ], ], ), ], line: 201, }, Operator( ( "==", true, ), ), Symbol( "1000", ), ], ], ), ], line: 198, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 201, }, ], values: [ [ Table { data: [], line: 204, column: 4, }, ], ], line: 204, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 204, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 1840, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 206, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 207, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 206, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 208, }, ], ], ), ], line: 208, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 208, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 208, }, ], ], line: 208, column: 5, }, ], end: 23, }, next: None, line: 208, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 209, }, ], ], ), ], line: 209, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 31, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 209, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 209, }, ], ], line: 209, column: 5, }, ], end: 37, }, next: None, line: 209, column: 14, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 210, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 210, }, ], [ Symbol( "\"dummy\"", ), ], ], ), ), ], end: 1884, }, line: 211, column: 1, }, ], ], line: 211, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 211, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 1896, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 214, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 214, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 215, }, ], ], ), ], line: 215, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 215, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 215, }, ], ], line: 215, column: 5, }, ], end: 20, }, next: None, line: 215, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 216, }, ], ], ), ], line: 216, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 216, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 216, }, ], ], line: 216, column: 5, }, ], end: 34, }, next: None, line: 216, column: 14, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 217, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 217, }, ], [ Symbol( "\"dummy\"", ), ], ], ), ), ], end: 1937, }, line: 218, column: 1, }, ], ], line: 218, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 218, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 1949, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 221, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 221, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 222, }, ], ], ), ], line: 222, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 222, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 222, }, ], ], line: 222, column: 5, }, ], end: 20, }, next: None, line: 222, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 223, }, ], ], ), ], line: 223, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 223, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 223, }, ], ], line: 223, column: 5, }, ], end: 34, }, next: None, line: 223, column: 14, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 224, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 224, }, ], [ Symbol( "\"dummy\"", ), ], ], ), ), ], end: 1990, }, line: 225, column: 1, }, ], ], line: 227, column: 0, }, Function { local: false, name: [ Symbol( "Op", ), ], args: [ "x", ], body: CodeBlock { start: 1995, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Ident { expr: [ Symbol( "x", ), ], line: 227, }, ], ), ], line: 227, column: 8, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 227, }, ], ], ), ], line: 227, }, ], ], ), ), ], end: 2007, }, line: 227, column: 17, }, Function { local: true, name: [ Symbol( "test", ), ], args: [ "a", "b", "c", ], body: CodeBlock { start: 2017, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 230, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 230, }, ], ), Ident { expr: [], line: 230, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 230, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 230, }, ], ), Ident { expr: [], line: 230, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 230, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 230, }, ], ), Ident { expr: [], line: 230, }, ], ], ), ], line: 230, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 231, }, ], ), Ident { expr: [], line: 231, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 231, }, Operator( ( "<", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 231, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 231, }, ], ), Ident { expr: [], line: 231, }, ], ], ), ], line: 230, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 232, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 232, }, ], ), Ident { expr: [], line: 232, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 232, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 232, }, ], ), Ident { expr: [], line: 232, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 232, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 232, }, ], ), Ident { expr: [], line: 232, }, ], ], ), ], line: 231, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'a'", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 233, }, ], ), Ident { expr: [], line: 233, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 233, }, Operator( ( "<", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 233, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 233, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 233, }, ], ), Ident { expr: [], line: 233, }, ], ], ), ], line: 232, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 234, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 234, }, ], ), Ident { expr: [], line: 234, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 234, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 234, }, ], ), Ident { expr: [], line: 234, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 234, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 234, }, ], ), Ident { expr: [], line: 234, }, ], ], ), ], line: 233, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 235, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 235, }, ], ), Ident { expr: [], line: 235, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 235, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 235, }, ], ), Ident { expr: [], line: 235, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 235, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 235, }, ], ), Ident { expr: [], line: 235, }, ], ], ), ], line: 234, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 236, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 236, }, ], ), Ident { expr: [], line: 236, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 236, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 236, }, ], ), Ident { expr: [], line: 236, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 236, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 236, }, ], ), Ident { expr: [], line: 236, }, ], ], ), ], line: 235, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 237, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 237, }, ], ), Ident { expr: [], line: 237, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 237, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 237, }, ], ), Ident { expr: [], line: 237, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 237, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 237, }, ], ), Ident { expr: [], line: 237, }, ], ], ), ], line: 236, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 238, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 238, }, ], ), Ident { expr: [], line: 238, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 238, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 238, }, ], ), Ident { expr: [], line: 238, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 238, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 238, }, ], ), Ident { expr: [], line: 238, }, ], ], ), ], line: 237, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 239, }, ], ), Ident { expr: [], line: 239, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 239, }, ], ), Ident { expr: [], line: 239, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 239, }, Operator( ( ">=", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 239, }, ], ], ), ], line: 238, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 240, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 240, }, ], ), Ident { expr: [], line: 240, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 240, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 240, }, ], ), Ident { expr: [], line: 240, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 240, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 240, }, ], ), Ident { expr: [], line: 240, }, ], ], ), ], line: 239, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "'a'", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 241, }, ], ), Ident { expr: [], line: 241, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 241, }, Operator( ( ">=", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 241, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 241, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 241, }, ], ), Ident { expr: [], line: 241, }, ], ], ), ], line: 240, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 242, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 242, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 242, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 242, }, ], ], ), ], line: 241, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 243, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 243, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 243, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 243, }, ], ], ), ], line: 242, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 244, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 244, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 244, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 244, }, ], ], ), ], line: 243, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 245, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 245, }, ], ], ), ], line: 244, }, ], end: 2525, }, line: 246, column: 1, }, Ident { expr: [ Symbol( "test", ), Call( [ [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 248, }, ], [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 248, }, ], [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "3", ), ], ], ), ], line: 248, }, ], ], ), ], line: 246, }, Function { local: true, name: [ Symbol( "rawSet", ), ], args: [ "x", ], body: CodeBlock { start: 2548, code: [ Variable { names: [ ( "y", false, ), ], values: [ [ Table { data: [], line: 254, column: 5, }, ], ], line: 255, column: 0, }, ForFuncLoop { iters: [ "_", "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 255, }, ], ], ), ], line: 255, }, ], stop: None, initial: None, code: CodeBlock { start: 15, code: [ Alter { names: [ Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 255, }, ], ), Symbol( "]", ), ], line: 255, }, ], values: [ [ Symbol( "1", ), ], ], line: 255, column: 6, }, ], end: 22, }, line: 255, column: 17, }, Return( Some( [ [ Ident { expr: [ Symbol( "y", ), ], line: 256, }, ], ], ), ), ], end: 2573, }, line: 257, column: 1, }, Function { local: true, name: [ Symbol( "Set", ), ], args: [ "x", ], body: CodeBlock { start: 2579, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "rawSet", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 260, }, ], ], ), ], line: 260, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 260, }, ], ], ), ], line: 260, }, ], ], ), ), ], end: 2590, }, line: 261, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 261, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2600, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 264, }, ], ], ), ], line: 264, }, ], 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: 265, }, ], ), Symbol( "]", ), ], line: 265, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 265, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 266, }, ], ), Symbol( "]", ), ], line: 265, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 266, }, ], ], line: 266, column: 6, }, ], end: 25, }, line: 267, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 268, }, ], ], ), ], line: 268, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], ), ), ], end: 2633, }, line: 269, column: 1, }, ], ], line: 269, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 269, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2643, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 272, }, ], ], ), ], line: 272, }, ], 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: 273, }, ], ), Symbol( "]", ), ], line: 273, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 273, column: 10, }, ], end: 19, }, line: 274, column: 1, }, Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 2665, }, line: 276, column: 1, }, ], ], line: 276, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 278, column: 10, }, ], ], ), ], line: 278, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 278, column: 21, }, ], ], ), ], line: 278, }, ], ], ), ], line: 276, }, 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: 279, column: 14, }, ], ], ), ], line: 279, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 279, column: 25, }, ], ], ), ], line: 279, }, ], ), Ident { expr: [], line: 279, }, ], ], ), ], line: 278, }, 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: 280, column: 13, }, ], ], ), ], line: 280, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 280, column: 24, }, ], ], ), ], line: 280, }, ], ), Ident { expr: [], line: 280, }, ], ], ), ], line: 279, }, 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: 281, column: 13, }, ], ], ), ], line: 281, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 281, column: 24, }, ], ], ), ], line: 281, }, ], ), Ident { expr: [], line: 281, }, ], ], ), ], line: 280, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 282, column: 10, }, ], ], ), ], line: 282, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 282, column: 17, }, ], ], ), ], line: 282, }, ], ), Ident { expr: [], line: 282, }, ], ], ), ], line: 281, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 283, column: 10, }, ], ], ), ], line: 283, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 283, column: 17, }, ], ], ), ], line: 283, }, ], ), Ident { expr: [], line: 283, }, ], ], ), ], line: 282, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 284, column: 10, }, ], ], ), ], line: 284, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 284, column: 17, }, ], ], ), ], line: 284, }, ], ), Ident { expr: [], line: 284, }, ], ], ), ], line: 283, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 284, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2833, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 288, }, ], ], ), ], line: 288, }, ], 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: 289, }, ], ), Symbol( "]", ), ], line: 289, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 289, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 290, }, ], ), Symbol( "]", ), ], line: 289, }, ], values: [ [ Ident { expr: [ Symbol( "undef", ), ], line: 290, }, ], ], line: 290, column: 6, }, ], end: 25, }, line: 291, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 292, }, ], ], ), ], line: 292, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ), ], end: 2866, }, line: 293, column: 1, }, ], ], line: 295, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 295, column: 11, }, ], ], ), ], line: 295, }, ], ], line: 295, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 296, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 296, column: 12, }, ], ], ), ], line: 296, }, ], ], ), ], line: 295, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 297, }, ], [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 297, column: 15, }, ], ], ), ], line: 297, }, ], ], ), ], line: 297, }, ], ], ), ], line: 296, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 298, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 298, }, ], ], ), ], line: 298, }, ], ], ), ], line: 297, }, 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: 299, column: 12, }, ], ], ), ], line: 299, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "rawSet", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 299, column: 21, }, ], ], ), ], line: 299, }, ], ], ), ], line: 298, }, 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: 300, column: 12, }, ], ], ), ], line: 300, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 300, column: 21, }, ], ], ), ], line: 300, }, ], ], ), ], line: 299, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 301, column: 10, }, ], ], ), ], line: 301, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "6", ), ], ), ], line: 301, column: 21, }, ], ], ), ], line: 301, }, ], ], ), ], line: 300, }, 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: 304, column: 10, }, ], ], ), ], line: 304, }, ], ), Symbol( "]", ), ], line: 301, }, ], values: [ [ Symbol( "1", ), ], ], line: 304, 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: 305, column: 12, }, ], ], ), ], line: 305, }, ], ), Symbol( "]", ), ], line: 305, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "undef", ), ], line: 305, }, ], ], ), ], line: 304, }, DoBlock( CodeBlock { start: 3012, code: [ Variable { names: [ ( "mt", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__eq", ), ], ), [ Symbol( "true", ), ], ), ], line: 309, column: 8, }, ], ], line: 310, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ], line: 310, column: 8, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 310, }, ], ], ), ], line: 310, }, ], ], line: 311, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ], line: 311, column: 8, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 311, }, ], ], ), ], line: 311, }, ], ], line: 311, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 311, }, ], values: [ [ Symbol( "nil", ), ], ], line: 312, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 313, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 313, }, ], ], ), ], line: 312, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 313, }, ], values: [ [ Lambda { args: [ "x", "y", ], body: CodeBlock { start: 51, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 314, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 314, }, ], ], ), ), ], end: 62, }, line: 314, column: 21, }, ], ], line: 314, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 315, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 315, }, ], ], ), ], line: 314, }, ], end: 3081, }, ), IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "T", ), ], line: 319, }, ], body: CodeBlock { start: 3085, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 320, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 320, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\n >>> testC not active: skipping tests for \\z\nuserdata <<<\\n'", ), ], ], ), ], line: 320, }, ], end: 3094, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 3094, code: [ Variable { names: [ ( "u1", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "1", ), ], ], ), ], line: 323, }, ], ], line: 324, column: 0, }, Variable { names: [ ( "u2", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "1", ), ], ], ), ], line: 324, }, ], ], line: 325, column: 0, }, Variable { names: [ ( "u3", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], [ Symbol( "1", ), ], ], ), ], line: 325, }, ], ], line: 325, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 326, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 326, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 326, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 326, }, ], ], ), ], line: 325, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 327, }, ], [ Symbol( "1", ), ], ], ), ], line: 326, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 328, }, ], [ Symbol( "2", ), ], ], ), ], line: 327, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setuservalue", ), Call( [ [ Ident { expr: [ Symbol( "u3", ), ], line: 329, }, ], [ Symbol( "1", ), ], ], ), ], line: 328, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 330, }, ], [ Table { data: [ ( Some( [ Symbol( "__eq", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 85, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 331, }, ], ], ), ], line: 331, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getuservalue", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 331, }, ], ], ), ], line: 331, }, ], ], ), ), ], end: 100, }, line: 332, column: 1, }, ], ), ], line: 332, column: 2, }, ], ], ), ], line: 329, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 333, }, ], [ Table { data: [ ( Some( [ Symbol( "__eq", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 117, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 120, }, line: 335, column: 1, }, ], ), ], line: 335, column: 2, }, ], ], ), ], line: 332, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 336, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 336, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 336, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 336, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 336, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 336, }, ], ], ), ], line: 335, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 337, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u1", ), ], line: 337, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 337, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 337, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "u3", ), ], line: 337, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "u2", ), ], line: 337, }, ], ], ), ], line: 336, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u2", ), ], line: 338, }, Operator( ( "~=", true, ), ), Table { data: [], line: 338, column: 6, }, ], ], ), ], line: 337, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 339, }, ], [ Ident { expr: [ Symbol( "u1", ), ], line: 339, }, ], ], ), ], line: 339, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "u1", ), ], line: 339, }, ], [ Ident { expr: [ Symbol( "u3", ), ], line: 339, }, ], ], ), ], line: 339, }, ], ], ), ], line: 338, }, Variable { names: [ ( "mirror", false, ), ], values: [ [ Table { data: [], line: 341, column: 5, }, ], ], line: 341, column: 5, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u3", ), ], line: 342, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "mirror", ), ], line: 342, }, ], ), ( Some( [ Symbol( "__newindex", ), ], ), [ Ident { expr: [ Symbol( "mirror", ), ], line: 342, }, ], ), ], line: 342, column: 15, }, ], ], ), ], line: 341, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 202, code: [ Alter { names: [ Ident { expr: [ Symbol( "u3", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 343, }, ], ), Symbol( "]", ), ], line: 343, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 343, }, ], ], line: 343, column: 6, }, ], end: 209, }, line: 343, column: 14, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 216, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "u3", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 344, }, ], ), Symbol( "]", ), ], line: 344, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 344, }, ], ], ), ], line: 344, }, ], end: 226, }, line: 344, column: 17, }, ], end: 3321, }, next: None, line: 345, column: 1, }, ), line: 345, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__concat", ), ], line: 345, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 3333, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 349, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 349, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 350, }, ], ], ), ], line: 350, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 350, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "val", ), ], line: 350, }, ], ], line: 350, column: 5, }, ], end: 20, }, next: None, line: 350, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 351, }, ], ], ), ], line: 351, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 351, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "val", ), ], line: 351, }, ], ], line: 351, column: 5, }, ], end: 34, }, next: None, line: 351, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "A", ), ], line: 352, }, ], body: CodeBlock { start: 37, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 352, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 352, }, ], ], ), ), ], 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: 354, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 354, }, ], ), ], line: 354, column: 10, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 354, }, ], ], ), ], line: 354, }, ], ], ), ), ], end: 56, }, next: None, line: 355, column: 1, }, ), line: 355, column: 1, }, ], end: 3390, }, line: 356, column: 1, }, ], ], line: 356, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 356, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Symbol( "\"c\"", ), ], ), ], line: 358, column: 7, }, ], ], line: 358, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 358, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 358, }, ], ], ), ], line: 358, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 358, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Symbol( "\"d\"", ), ], ), ], line: 359, column: 7, }, ], ], line: 359, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 359, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 359, }, ], ], ), ], line: 359, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 359, }, ], values: [ [ Symbol( "true", ), ], ], line: 361, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 362, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 362, }, Operator( ( "==", true, ), ), Symbol( "'cd'", ), ], ], ), ], line: 361, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0", ), Operator( ( "..", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 363, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 363, }, Operator( ( "..", true, ), ), Symbol( "\"e\"", ), Operator( ( "..", true, ), ), Symbol( "\"f\"", ), Operator( ( "..", true, ), ), Expr( [ Symbol( "5", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 363, }, Operator( ( "..", true, ), ), Symbol( "\"g\"", ), Operator( ( "==", true, ), ), Symbol( "\"0abcdef8g\"", ), ], ], ), ], line: 362, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 363, }, ], values: [ [ Symbol( "false", ), ], ], line: 365, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "c", ), ], line: 366, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 366, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 366, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 366, }, ], ), Ident { expr: [ Symbol( ".", ), Symbol( "val", ), ], line: 366, }, Operator( ( "==", true, ), ), Symbol( "'cdcd'", ), ], ], ), ], line: 365, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 366, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 367, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 367, }, ], ], line: 367, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 368, }, ], ], ), ], line: 368, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 368, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "val", ), ], line: 368, }, Operator( ( "==", true, ), ), Symbol( "'cd'", ), ], ], ), ], line: 367, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 368, }, ], values: [ [ Symbol( "0", ), Operator( ( "..", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 369, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 369, }, Operator( ( "..", true, ), ), Symbol( "\"e\"", ), Operator( ( "..", true, ), ), Symbol( "\"f\"", ), Operator( ( "..", true, ), ), Symbol( "\"g\"", ), ], ], line: 369, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "val", ), ], line: 370, }, Operator( ( "==", true, ), ), Symbol( "\"0abcdefg\"", ), ], ], ), ], line: 369, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 370, }, ], values: [ [ Table { data: [], line: 374, column: 4, }, ], ], line: 375, column: 0, }, Variable { names: [ ( "x", false, ), ], values: [], line: 375, column: 2, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 376, }, ], [ Table { data: [ ( Some( [ Symbol( "__concat", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3538, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 377, }, ], ], ), ], line: 377, }, Operator( ( "==", true, ), ), Symbol( "\"number\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 377, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 377, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 377, }, ], ], ), ], line: 377, }, Operator( ( "==", true, ), ), Symbol( "\"number\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 377, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 377, }, ], ], ), ], line: 377, }, Return( Some( [ [ Ident { expr: [ Symbol( "c", ), ], line: 378, }, ], ], ), ), ], end: 3565, }, line: 379, column: 1, }, ], ), ], line: 379, column: 2, }, ], ], ), ], line: 375, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 380, }, Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 380, }, Operator( ( "and", true, ), ), Symbol( "5", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 380, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 380, }, ], ], ), ], line: 379, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "4", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 381, }, Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 381, }, Operator( ( "and", true, ), ), Symbol( "4", ), Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "..", true, ), ), Symbol( "6", ), Operator( ( "..", true, ), ), Symbol( "7", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 381, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 381, }, ], ], ), ], line: 380, }, Variable { names: [ ( "t1", false, ), ( "t2", false, ), ( "c", false, ), ( "d", false, ), ], values: [], line: 385, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), ], line: 385, }, ], values: [ [ Table { data: [], line: 386, column: 4, }, ], ], line: 386, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 386, }, ], values: [ [ Table { data: [], line: 386, column: 9, }, ], ], line: 386, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 386, }, ], [ Ident { expr: [ Symbol( "t1", ), ], line: 386, }, ], ], ), ], line: 386, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 386, }, ], values: [ [ Table { data: [], line: 387, column: 4, }, ], ], line: 387, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 387, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 3638, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 3641, }, line: 388, column: 10, }, ], ], line: 388, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 388, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 3648, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 3651, }, line: 389, column: 10, }, ], ], line: 389, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__le", ), ], line: 389, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 3658, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 3661, }, line: 390, column: 10, }, ], ], line: 390, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 391, }, ], [ Ident { expr: [ Symbol( "t1", ), ], line: 391, }, ], ], ), ], line: 390, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 392, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 392, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 392, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 392, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 392, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 392, }, ], ), Ident { expr: [], line: 392, }, ], ], ), ], line: 391, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), ], line: 392, }, ], values: [ [ Table { data: [], line: 393, column: 4, }, ], ], line: 393, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 393, }, ], values: [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 394, }, ], ], line: 394, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 394, }, ], values: [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 395, }, ], ], line: 395, column: 7, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 396, }, ], [ Ident { expr: [ Symbol( "t2", ), ], line: 396, }, ], ], ), ], line: 395, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 397, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 397, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 397, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 397, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 397, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 397, }, ], ), Ident { expr: [], line: 397, }, ], ], ), ], line: 396, }, Variable { names: [ ( "i", false, ), ], values: [], line: 402, column: 2, }, Variable { names: [ ( "tt", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__call", ), ], ), [ Lambda { args: [ "t", "...", ], body: CodeBlock { start: 3739, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 405, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 405, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 406, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "f", ), ], line: 406, }, ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "f", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 406, }, ], ], ), ), ], end: 18, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 18, code: [ Return( Some( [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 407, column: 4, }, ], ], ), ), ], end: 23, }, next: None, line: 408, column: 1, }, ), line: 408, column: 1, }, ], end: 3763, }, line: 409, column: 1, }, ], ), ], line: 410, column: 1, }, ], ], line: 412, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 412, column: 7, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 412, }, ], ], ), ], line: 412, }, ], ], line: 413, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 413, }, ], ), ], line: 413, column: 10, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 413, }, ], ], ), ], line: 413, }, ], ], line: 414, column: 0, }, Variable { names: [ ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Ident { expr: [ Symbol( "b", ), ], line: 414, }, ], ), ], line: 414, column: 10, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 414, }, ], ], ), ], line: 414, }, ], ], line: 414, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 414, }, ], values: [ [ Symbol( "0", ), ], ], line: 416, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 416, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), Call( [ [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 417, }, ], ], line: 417, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 418, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 418, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 418, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 417, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "X", ), ], line: 421, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 418, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 421, }, Variable { names: [ ( "_g", false, ), ], values: [ [ Ident { expr: [ Symbol( "_G", ), ], line: 425, }, ], ], line: 425, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), ], line: 425, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 426, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "_", "k", ], body: CodeBlock { start: 3863, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "_g", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 426, }, ], ), Symbol( "]", ), ], line: 426, }, ], ], ), ), ], end: 3869, }, line: 426, column: 22, }, ], ), ], line: 426, column: 23, }, ], ], ), ], line: 426, }, ], ], line: 426, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 426, }, ], values: [ [ Table { data: [], line: 429, column: 4, }, ], ], line: 429, column: 4, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 430, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 429, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 431, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 431, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 431, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 430, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 431, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 433, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3919, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 436, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 436, }, ], ], ), ), ], end: 3924, }, line: 436, column: 16, }, ], ), ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 3931, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 437, }, ], ], ), ], line: 437, }, ], ], ), ), ], end: 3939, }, line: 437, column: 14, }, ], ), ], line: 437, column: 15, }, ], ], line: 437, column: 15, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 438, }, ], ], ), ], line: 437, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 439, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 439, }, ], ], ), ], line: 438, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 440, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 439, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "\"3\"", ), ], ), Symbol( "]", ), ], line: 441, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 440, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Symbol( "3.45", ), Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 441, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "23", ), ], [ Symbol( "nil", ), ], ], ), ], line: 442, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 444, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 443, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "true", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 446, }, ], ], ), ], line: 444, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 447, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 447, }, ], ], ), ], line: 446, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__index", ), ], line: 447, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 4032, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 448, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 448, }, ], ], ), ), ], end: 4037, }, line: 448, column: 15, }, ], ], line: 448, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "true", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 449, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 448, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "false", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 450, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 449, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "false", ), ], [ Symbol( "nil", ), ], ], ), ], line: 450, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 452, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 451, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 454, }, ], ], ), ], line: 452, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 455, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 455, }, ], ], ), ], line: 454, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__add", ), ], line: 455, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 4103, code: [ Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 456, }, Operator( ( "or", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 456, }, Operator( ( "+", true, ), ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 456, }, Operator( ( "or", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 456, }, ], ], ), ), ], end: 4116, }, line: 456, column: 23, }, ], ], line: 456, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "12", ), ], ], ), ], line: 456, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), Operator( ( "+", true, ), ), Symbol( "23", ), Operator( ( "==", true, ), ), Symbol( "24", ), ], ], ), ], line: 457, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), Operator( ( "+", true, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 458, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), ], line: 459, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 461, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 460, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Table { data: [], line: 463, column: 8, }, ], ], ), ], line: 461, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 463, }, ], values: [ [ Table { data: [], line: 467, column: 4, }, ], ], line: 467, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 467, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 467, }, ], ], ), ], line: 467, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "__index", ), ], line: 467, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 467, }, ], ], line: 467, column: 18, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 467, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 467, }, ], ], line: 467, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 4200, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 468, }, ], ), Symbol( "]", ), ], line: 468, }, ], ], ), ), ], end: 4206, }, line: 468, column: 17, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 468, }, ], [ Symbol( "10", ), ], ], ), ], line: 468, }, ], ], ), ], line: 467, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 4225, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 469, }, ], ), Symbol( "]", ), ], line: 469, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 469, }, ], ], line: 469, column: 6, }, ], end: 4232, }, line: 469, column: 20, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 469, }, ], [ Symbol( "10", ), ], [ Symbol( "true", ), ], ], ), ], line: 469, }, ], ], ), ], line: 468, }, Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 469, }, Ident { expr: [ Symbol( "K", ), ], line: 472, }, Ident { expr: [ Symbol( "V", ), ], line: 472, }, ], values: [ [ Symbol( "nil", ), ], ], line: 472, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "grandparent", ), ], line: 472, }, ], values: [ [ Table { data: [], line: 473, column: 4, }, ], ], line: 473, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "grandparent", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 473, }, ], values: [ [ Lambda { args: [ "t", "k", "v", ], body: CodeBlock { start: 4263, code: [ Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 474, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 474, }, ], ], line: 474, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "K", ), ], line: 474, }, ], values: [ [ Ident { expr: [ Symbol( "k", ), ], line: 474, }, ], ], line: 474, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "V", ), ], line: 474, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 474, }, ], ], line: 474, column: 11, }, ], end: 4275, }, line: 474, column: 24, }, ], ], line: 474, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "parent", ), ], line: 474, }, ], values: [ [ Table { data: [], line: 476, column: 4, }, ], ], line: 476, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "parent", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 476, }, ], values: [ [ Ident { expr: [ Symbol( "parent", ), ], line: 477, }, ], ], line: 477, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "parent", ), ], line: 478, }, ], [ Ident { expr: [ Symbol( "grandparent", ), ], line: 478, }, ], ], ), ], line: 477, }, Alter { names: [ Ident { expr: [ Symbol( "child", ), ], line: 478, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 480, column: 6, }, ], [ Ident { expr: [ Symbol( "parent", ), ], line: 480, }, ], ], ), ], line: 480, }, ], ], line: 480, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "child", ), Symbol( ".", ), Symbol( "foo", ), ], line: 480, }, ], values: [ [ Symbol( "10", ), ], ], line: 481, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), ], line: 482, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "parent", ), ], line: 482, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "K", ), ], line: 482, }, Operator( ( "==", true, ), ), Symbol( "\"foo\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "V", ), ], line: 482, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 481, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 482, }, Return( Some( [ [ Symbol( "12", ), ], ], ), ), ]