--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/events.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing metatables'", ), ], ], ), ], line: 1, }, Alter { names: [ Ident { expr: [ Symbol( "X", ), ], line: 1, }, ], values: [ [ Symbol( "20", ), ], ], line: 3, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 3, }, ], values: [ [ Symbol( "30", ), ], ], line: 3, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), ], line: 3, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 5, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "_G", ), ], line: 5, }, ], ), ], line: 5, column: 12, }, ], ], ), ], line: 5, }, ], ], line: 5, column: 13, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 5, }, Alter { names: [ Ident { expr: [ Symbol( "X", ), ], line: 7, }, ], values: [ [ Ident { expr: [ Symbol( "X", ), ], line: 9, }, Operator( ( "+", true, ), ), Symbol( "10", ), ], ], line: 9, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "X", ), ], line: 10, }, Operator( ( "==", true, ), ), Symbol( "30", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "X", ), ], line: 10, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 9, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 10, }, ], values: [ [ Symbol( "false", ), ], ], line: 11, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "B", ), ], line: 12, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 11, }, Alter { names: [ Ident { expr: [ Symbol( "B", ), ], line: 12, }, ], values: [ [ Symbol( "nil", ), ], ], line: 13, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "B", ), ], line: 14, }, Operator( ( "==", true, ), ), Symbol( "30", ), ], ], ), ], line: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Table { data: [], line: 16, column: 5, }, ], ], ), ], line: 16, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "4", ), ], ], ), ], line: 17, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 18, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 17, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 18, }, ], values: [ [ Table { data: [], line: 19, column: 4, }, ], ], line: 19, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 19, }, ], [ Table { data: [ ( Some( [ Symbol( "__metatable", ), ], ), [ Symbol( "\"xuxu\"", ), ], ), ( Some( [ Symbol( "__tostring", ), ], ), [ Lambda { args: [ "x", ], body: CodeBlock { start: 108, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "name", ), ], line: 20, }, ], ], ), ), ], end: 113, }, line: 20, column: 11, }, ], ), ], line: 20, column: 12, }, ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 21, }, ], ], ), ], line: 21, }, Operator( ( "==", true, ), ), Symbol( "\"xuxu\"", ), ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 22, }, ], ], ), ], line: 22, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), ], line: 24, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 24, }, ], [ Table { data: [], line: 24, column: 10, }, ], ], ), ], line: 24, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 22, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "name", ), ], line: 24, }, ], values: [ [ Symbol( "\"gororoba\"", ), ], ], line: 25, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 26, }, ], ], ), ], line: 26, }, Operator( ( "==", true, ), ), Symbol( "\"gororoba\"", ), ], ], ), ], line: 25, }, 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: 28, column: 20, }, ], [ Table { data: [], line: 28, column: 23, }, ], ], line: 28, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 29, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 29, }, ], ], ), ], line: 29, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 29, }, ], ], ), ], line: 28, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 30, }, ], ], ), ], line: 30, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 30, }, ], ], ), ], line: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 31, }, ], [ Symbol( "nil", ), ], ], ), ], line: 31, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 31, }, ], ], ), ], line: 30, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 32, }, ], ], ), ], line: 32, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 33, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 33, }, ], ], ), ], line: 33, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 33, }, ], ], ), ], line: 32, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "i", "e", ], body: CodeBlock { start: 244, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "e", ), ], line: 37, }, ], ], ), ], line: 37, }, Variable { names: [ ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 38, }, ], [ Symbol( "\"parent\"", ), ], ], ), ], line: 38, }, ], ], line: 39, column: 0, }, Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "p", ), ], line: 39, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "p", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 39, }, ], ), Symbol( "]", ), ], line: 39, }, Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 39, }, ], [ Symbol( "\"dummy return\"", ), ], ], ), ), ], end: 272, }, line: 40, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__index", ), ], line: 40, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 42, }, ], ], line: 42, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "parent", ), ], line: 42, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "z", ), ], ), [ Symbol( "25", ), ], ), ( Some( [ Symbol( "x", ), ], ), [ Symbol( "12", ), ], ), ( Some( [ Symbol( "4", ), ], ), [ Symbol( "24", ), ], ), ], line: 44, column: 19, }, ], ], line: 44, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "z", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "28", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "4", ), ], ), Symbol( "]", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "27", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "\"10\"", ), ], ], ), ], line: 44, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 45, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 47, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 49, column: 6, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 49, }, ], ], ), ], line: 49, }, ], ], line: 50, column: 0, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "i", "v", ], body: CodeBlock { start: 345, code: [ Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 50, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 50, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 50, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ], ), ], line: 50, }, ], end: 356, }, line: 50, column: 20, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 51, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 51, }, ], ], ), ], line: 50, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 51, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 52, }, ], ], line: 52, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 52, }, ], values: [ [ Symbol( "30", ), ], ], line: 53, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 53, }, ], values: [ [ Symbol( "\"101\"", ), ], ], line: 53, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 53, }, ], values: [ [ Symbol( "200", ), ], ], line: 53, column: 19, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 54, }, Operator( ( "==", true, ), ), Symbol( "27", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 54, }, Operator( ( "==", true, ), ), Symbol( "98", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "5", ), ], ), Symbol( "]", ), ], line: 54, }, Operator( ( "==", true, ), ), Symbol( "197", ), ], ], ), ], line: 53, }, Variable { names: [ ( "c", false, ), ], values: [ [ Table { data: [], line: 57, column: 5, }, ], ], line: 57, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 57, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 58, column: 6, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 58, }, ], ], ), ], line: 58, }, ], ], line: 58, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 58, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 59, }, ], ], line: 59, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 59, }, ], values: [ [ Symbol( "10", ), ], ], line: 60, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 60, }, ], values: [ [ Symbol( "20", ), ], ], line: 60, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 60, }, ], values: [ [ Symbol( "90", ), ], ], line: 60, column: 20, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 61, }, Operator( ( "==", true, ), ), Symbol( "90", ), ], ], ), ], line: 60, }, DoBlock( CodeBlock { start: 471, code: [ Variable { names: [ ( "a", false, ), ], values: [], line: 65, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 65, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 66, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 66, column: 14, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 67, 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: 68, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 68, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], [ Symbol( "\"lixo\"", ), ], ], ), ), ], end: 47, }, line: 68, column: 21, }, ], ), ], line: 68, column: 22, }, ], ], ), ], line: 67, }, ], ), ], line: 68, column: 24, }, ], ], ), ], line: 66, }, ], ), ], line: 68, column: 26, }, ], ], ), ], line: 66, }, ], ], line: 68, column: 27, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 68, }, ], values: [ [ Symbol( "20", ), ], ], line: 70, 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: 71, }, Operator( ( "*", true, ), ), Symbol( "3", ), ], ), Symbol( "]", ), ], line: 71, }, Operator( ( "==", true, ), ), Symbol( "20", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 71, }, Operator( ( "*", true, ), ), Symbol( "4", ), ], ], ), ], line: 71, }, ], end: 82, }, line: 72, column: 1, }, ], end: 554, }, ), DoBlock( CodeBlock { start: 555, code: [ Variable { names: [ ( "foi", false, ), ], values: [], line: 77, column: 2, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 78, column: 5, }, ], ], line: 79, 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: 79, }, ], ), Symbol( "]", ), ], line: 79, }, ], values: [ [ Symbol( "0", ), ], ], line: 79, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a'", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 79, }, ], ), Symbol( "]", ), ], line: 79, }, ], values: [ [ Symbol( "0", ), ], ], line: 79, column: 16, }, ], end: 31, }, line: 79, column: 24, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 80, }, ], [ Table { data: [ ( Some( [ Symbol( "__newindex", ), ], ), [ Lambda { args: [ "t", "k", "v", ], body: CodeBlock { start: 46, code: [ Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 80, }, ], values: [ [ Symbol( "true", ), ], ], line: 80, column: 4, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 80, }, ], [ Ident { expr: [ Symbol( "k", ), ], line: 80, }, ], [ Ident { expr: [ Symbol( "v", ), ], line: 80, }, ], ], ), ], line: 80, }, ], end: 59, }, line: 80, column: 28, }, ], ), ], line: 80, column: 29, }, ], ], ), ], line: 79, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 80, }, ], values: [ [ Symbol( "false", ), ], ], line: 81, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 81, }, ], values: [ [ Symbol( "0", ), ], ], line: 81, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 81, }, ], ], ), ], line: 81, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 81, }, ], values: [ [ Symbol( "false", ), ], ], line: 82, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a1'", ), ], ), Symbol( "]", ), ], line: 82, }, ], values: [ [ Symbol( "0", ), ], ], line: 82, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 82, }, ], ], ), ], line: 82, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 82, }, ], values: [ [ Symbol( "false", ), ], ], line: 83, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "'a11'", ), ], ), Symbol( "]", ), ], line: 83, }, ], values: [ [ Symbol( "0", ), ], ], line: 83, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 83, }, ], ], ), ], line: 83, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 83, }, ], values: [ [ Symbol( "false", ), ], ], line: 84, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "11", ), ], ), Symbol( "]", ), ], line: 84, }, ], values: [ [ Symbol( "0", ), ], ], line: 84, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 84, }, ], ], ), ], line: 84, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 84, }, ], values: [ [ Symbol( "false", ), ], ], line: 85, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 85, }, ], values: [ [ Symbol( "nil", ), ], ], line: 85, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "foi", ), ], line: 85, }, ], ], ), ], line: 85, }, Alter { names: [ Ident { expr: [ Symbol( "foi", ), ], line: 85, }, ], values: [ [ Symbol( "false", ), ], ], line: 86, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 86, }, ], values: [ [ Symbol( "nil", ), ], ], line: 86, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "foi", ), ], line: 86, }, ], ], ), ], line: 86, }, ], end: 710, }, ), Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 90, }, ], [ Symbol( "nil", ), ], ], ), ], line: 87, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "t", "...", ], body: CodeBlock { start: 723, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), ], line: 91, }, ], [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 91, column: 6, }, ], ], ), ), ], end: 730, }, line: 91, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__call", ), ], line: 91, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), ], line: 92, }, ], ], line: 94, column: 0, }, DoBlock( CodeBlock { start: 736, 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: 95, column: 15, }, ], ], ), ], line: 95, }, ], ], ), ], line: 95, }, ], ], line: 95, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 96, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 96, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 96, }, Operator( ( "==", true, ), ), Symbol( "'a'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 96, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 96, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 95, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 96, }, Ident { expr: [ Symbol( "y", ), ], line: 97, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Call( [], ), ], line: 97, }, ], ], line: 97, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 98, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 98, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 98, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 97, }, ], end: 800, }, ), Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 102, column: 7, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 102, }, ], ], ), ], line: 102, }, ], ], line: 102, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 103, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 103, }, ], ], ), ], line: 102, }, Function { local: false, name: [ Symbol( "f", ), ], args: [ "op", ], body: CodeBlock { start: 821, code: [ Return( Some( [ [ Lambda { args: [ "...", ], body: CodeBlock { start: 5, code: [ Alter { names: [ Ident { expr: [ Symbol( "cap", ), ], line: 106, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "0", ), ], ), [ Ident { expr: [ Symbol( "op", ), ], line: 106, }, ], ), ( None, [ Symbol( "...", ), ], ), ], line: 106, column: 11, }, ], ], line: 106, column: 12, }, Return( Some( [ [ Expr( [ Symbol( "...", ), ], ), Ident { expr: [], line: 106, }, ], ], ), ), ], end: 22, }, line: 106, column: 22, }, ], ], ), ), ], end: 844, }, line: 107, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__add", ), ], line: 107, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"add\"", ), ], ], ), ], line: 108, }, ], ], line: 108, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__sub", ), ], line: 108, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"sub\"", ), ], ], ), ], line: 109, }, ], ], line: 109, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__mul", ), ], line: 109, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"mul\"", ), ], ], ), ], line: 110, }, ], ], line: 110, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__div", ), ], line: 110, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"div\"", ), ], ], ), ], line: 111, }, ], ], line: 111, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__mod", ), ], line: 111, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"mod\"", ), ], ], ), ], line: 112, }, ], ], line: 112, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__unm", ), ], line: 112, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"unm\"", ), ], ], ), ], line: 113, }, ], ], line: 113, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__pow", ), ], line: 113, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"pow\"", ), ], ], ), ], line: 114, }, ], ], line: 114, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__len", ), ], line: 114, }, ], values: [ [ Ident { expr: [ Symbol( "f", ), Call( [ [ Symbol( "\"len\"", ), ], ], ), ], line: 115, }, ], ], line: 115, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 117, }, Operator( ( "+", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 117, }, ], ], ), ], line: 115, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 118, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 118, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 118, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 117, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 119, }, Operator( ( "+", true, ), ), Symbol( "'5'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 119, }, ], ], ), ], line: 118, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 120, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 120, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 120, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 120, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 120, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 119, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 121, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 120, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 122, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 122, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 122, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 122, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 122, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 121, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'5'", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 123, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), ], ], ), ], line: 122, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "\"add\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 124, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 123, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 124, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), ], line: 125, }, Operator( ( "-", true, ), ), Symbol( "3", ), ], ], line: 125, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 125, }, ], ], ), ], line: 125, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 125, }, ], ], ), ], line: 125, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "5", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 126, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 125, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "\"sub\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "5", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 127, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 127, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 127, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 126, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'5'", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 128, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), ], ], ), ], line: 127, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "\"sub\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "'5'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 129, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 129, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 129, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 128, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 130, }, Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 130, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 130, }, ], ], ), ], line: 129, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "\"mul\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 131, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 131, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 131, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 131, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 131, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 130, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 132, }, Operator( ( "/", true, ), ), Symbol( "0", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 132, }, ], ], ), ], line: 131, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 133, }, Operator( ( "==", true, ), ), Symbol( "\"div\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 133, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 133, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 133, }, Operator( ( "==", true, ), ), Symbol( "0", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 133, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 132, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 134, }, Operator( ( "%", true, ), ), Symbol( "2", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 134, }, ], ], ), ], line: 133, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 135, }, Operator( ( "==", true, ), ), Symbol( "\"mod\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 135, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 135, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 135, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 135, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 134, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "-", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 136, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 136, }, ], ], ), ], line: 135, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 137, }, Operator( ( "==", true, ), ), Symbol( "\"unm\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 137, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 137, }, ], ], ), ], line: 136, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 138, }, Operator( ( "^", true, ), ), Symbol( "4", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 138, }, ], ], ), ], line: 137, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 139, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 139, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 139, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 140, }, Operator( ( "^", true, ), ), Symbol( "'4'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 140, }, ], ], ), ], line: 139, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 141, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 141, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "'4'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 141, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 140, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "4", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 142, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 141, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "4", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 143, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 143, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 143, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 142, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "'4'", ), Operator( ( "^", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 144, }, Operator( ( "==", true, ), ), Symbol( "'4'", ), ], ], ), ], line: 143, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 145, }, Operator( ( "==", true, ), ), Symbol( "\"pow\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 145, }, Operator( ( "==", true, ), ), Symbol( "'4'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 145, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 145, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 145, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 144, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 146, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 146, }, ], ], ), ], line: 145, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "0", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Symbol( "\"len\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "cap", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 147, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 147, }, ], ], ), ], line: 146, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 147, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 151, column: 11, }, ], [ Table { data: [ ( Some( [ Symbol( "__len", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 1481, code: [ Return( Some( [ [ Symbol( "10", ), ], ], ), ), ], end: 1484, }, line: 151, column: 21, }, ], ), ], line: 151, column: 22, }, ], ], ), ], line: 151, }, ], ], line: 151, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 152, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Ident { expr: [ Symbol( "t", ), ], line: 152, }, ], ], ), ], line: 152, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 151, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), Call( [ [ Symbol( "\"abc\"", ), ], ], ), ], line: 153, }, Operator( ( "==", true, ), ), Symbol( "3", ), ], ], ), ], line: 152, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 154, }, ], [ Ident { expr: [ Symbol( "io", ), Symbol( ".", ), Symbol( "stdin", ), ], line: 154, }, ], ], ), ], line: 154, }, ], ], ), ], line: 153, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 155, }, ], [ Symbol( "34", ), ], ], ), ], line: 155, }, ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "rawlen", ), ], line: 156, }, ], ], ), ], line: 156, }, ], ], ), ], line: 155, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 156, }, ], values: [ [ Table { data: [], line: 158, column: 4, }, ], ], line: 158, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 158, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 1553, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 160, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 161, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 160, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 162, }, ], ], ), ], line: 162, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 17, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 162, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 162, }, ], ], line: 162, column: 5, }, ], end: 23, }, next: None, line: 162, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 163, }, ], ], ), ], line: 163, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 31, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 163, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 163, }, ], ], line: 163, column: 5, }, ], end: 37, }, next: None, line: 163, column: 14, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 164, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 164, }, ], [ Symbol( "\"dummy\"", ), ], ], ), ), ], end: 1597, }, line: 165, column: 1, }, ], ], line: 167, column: 0, }, Function { local: false, name: [ Symbol( "Op", ), ], args: [ "x", ], body: CodeBlock { start: 1602, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Ident { expr: [ Symbol( "x", ), ], line: 167, }, ], ), ], line: 167, column: 8, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 167, }, ], ], ), ], line: 167, }, ], ], ), ), ], end: 1614, }, line: 167, column: 17, }, Function { local: true, name: [ Symbol( "test", ), ], args: [], body: CodeBlock { start: 1619, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 170, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 170, }, ], ), Ident { expr: [], line: 170, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 170, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 170, }, ], ), Ident { expr: [], line: 170, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 170, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 170, }, ], ), Ident { expr: [], line: 170, }, ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 171, }, ], ), Ident { expr: [], line: 171, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 171, }, Operator( ( "<", true, ), ), Symbol( "2", ), ], ), Ident { expr: [], line: 171, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "2", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 171, }, ], ), Ident { expr: [], line: 171, }, ], ], ), ], line: 170, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 172, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 172, }, ], ), Ident { expr: [], line: 172, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 172, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 172, }, ], ), Ident { expr: [], line: 172, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 172, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 172, }, ], ), Ident { expr: [], line: 172, }, ], ], ), ], line: 171, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Symbol( "'a'", ), Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 173, }, ], ), Ident { expr: [], line: 173, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 173, }, Operator( ( "<", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 173, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 173, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 173, }, ], ), Ident { expr: [], line: 173, }, ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 174, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 174, }, ], ), Ident { expr: [], line: 174, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 174, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 174, }, ], ), Ident { expr: [], line: 174, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 174, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 174, }, ], ), Ident { expr: [], line: 174, }, ], ], ), ], line: 173, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 175, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 175, }, ], ), Ident { expr: [], line: 175, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 175, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 175, }, ], ), Ident { expr: [], line: 175, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 175, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 175, }, ], ), Ident { expr: [], line: 175, }, ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 176, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 176, }, ], ), Ident { expr: [], line: 176, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 176, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 176, }, ], ), Ident { expr: [], line: 176, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 176, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 176, }, ], ), Ident { expr: [], line: 176, }, ], ], ), ], line: 175, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 177, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 177, }, ], ), Ident { expr: [], line: 177, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 177, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 177, }, ], ), Ident { expr: [], line: 177, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 177, }, Operator( ( ">", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 177, }, ], ), Ident { expr: [], line: 177, }, ], ], ), ], line: 176, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 178, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 178, }, ], ), Ident { expr: [], line: 178, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 178, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 178, }, ], ), Ident { expr: [], line: 178, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 178, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 178, }, ], ), Ident { expr: [], line: 178, }, ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 179, }, ], ), Ident { expr: [], line: 179, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Symbol( "1", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 179, }, ], ), Ident { expr: [], line: 179, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 179, }, Operator( ( ">=", true, ), ), Symbol( "1", ), ], ), Ident { expr: [], line: 179, }, ], ], ), ], line: 178, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 180, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 180, }, ], ), Ident { expr: [], line: 180, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 180, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 180, }, ], ), Ident { expr: [], line: 180, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 180, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 180, }, ], ), Ident { expr: [], line: 180, }, ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "'a'", ), Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 181, }, ], ), Ident { expr: [], line: 181, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 181, }, Operator( ( ">=", true, ), ), Symbol( "'b'", ), ], ), Ident { expr: [], line: 181, }, Operator( ( "and", true, ), ), Expr( [ Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'b'", ), ], ], ), ], line: 181, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Op", ), Call( [ [ Symbol( "'a'", ), ], ], ), ], line: 181, }, ], ), Ident { expr: [], line: 181, }, ], ], ), ], line: 180, }, ], end: 2064, }, line: 182, column: 1, }, Ident { expr: [ Symbol( "test", ), Call( [], ), ], line: 182, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 184, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 2079, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 187, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 187, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 188, }, ], ], ), ], line: 188, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 188, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 188, }, ], ], line: 188, column: 5, }, ], end: 20, }, next: None, line: 188, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 189, }, ], ], ), ], line: 189, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 189, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "x", ), ], line: 189, }, ], ], line: 189, column: 5, }, ], end: 34, }, next: None, line: 189, column: 14, }, Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 190, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 190, }, ], [ Symbol( "\"dummy\"", ), ], ], ), ), ], end: 2120, }, line: 191, column: 1, }, ], ], line: 191, column: 1, }, Ident { expr: [ Symbol( "test", ), Call( [], ), ], line: 191, }, Function { local: true, name: [ Symbol( "Set", ), ], args: [ "x", ], body: CodeBlock { start: 2129, code: [ Variable { names: [ ( "y", false, ), ], values: [ [ Table { data: [], line: 199, column: 5, }, ], ], line: 200, column: 0, }, ForFuncLoop { iters: [ "_", "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 200, }, ], ], ), ], line: 200, }, ], stop: None, initial: None, code: CodeBlock { start: 15, code: [ Alter { names: [ Ident { expr: [ Symbol( "y", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 200, }, ], ), Symbol( "]", ), ], line: 200, }, ], values: [ [ Symbol( "1", ), ], ], line: 200, column: 6, }, ], end: 22, }, line: 200, column: 17, }, Return( Some( [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 201, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 201, }, ], ], ), ], line: 201, }, ], ], ), ), ], end: 2159, }, line: 202, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 202, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2169, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 205, }, ], ], ), ], line: 205, }, ], 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: 206, }, ], ), Symbol( "]", ), ], line: 206, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 206, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 207, }, ], ), Symbol( "]", ), ], line: 206, }, ], values: [ [ Symbol( "nil", ), ], ], line: 207, column: 6, }, ], end: 25, }, line: 208, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 209, }, ], ], ), ], line: 209, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], ), ), ], end: 2202, }, line: 210, column: 1, }, ], ], line: 210, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 210, }, ], values: [ [ Symbol( "nil", ), ], ], line: 212, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 214, column: 10, }, ], ], ), ], line: 214, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 214, column: 21, }, ], ], ), ], line: 214, }, ], ], ), ], line: 212, }, 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: 215, column: 14, }, ], ], ), ], line: 215, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 215, column: 25, }, ], ], ), ], line: 215, }, ], ), Ident { expr: [], line: 215, }, ], ], ), ], line: 214, }, 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: 216, column: 13, }, ], ], ), ], line: 216, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 216, column: 24, }, ], ], ), ], line: 216, }, ], ), Ident { expr: [], line: 216, }, ], ], ), ], line: 215, }, 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: 217, column: 13, }, ], ], ), ], line: 217, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "4", ), ], ), ], line: 217, column: 24, }, ], ], ), ], line: 217, }, ], ), Ident { expr: [], line: 217, }, ], ], ), ], line: 216, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 218, column: 9, }, ], ], ), ], line: 218, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 218, column: 16, }, ], ], ), ], line: 218, }, ], ), Ident { expr: [], line: 218, }, ], ], ), ], line: 217, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__le", ), ], line: 218, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2336, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 221, }, ], ], ), ], line: 221, }, ], 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: 222, }, ], ), Symbol( "]", ), ], line: 222, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 222, column: 10, }, ], end: 19, }, line: 223, column: 1, }, Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 2358, }, line: 225, column: 1, }, ], ], line: 225, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 227, column: 10, }, ], ], ), ], line: 227, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 227, column: 17, }, ], ], ), ], line: 227, }, ], ), Ident { expr: [], line: 227, }, ], ], ), ], line: 225, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 228, column: 10, }, ], ], ), ], line: 228, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 228, column: 17, }, ], ], ), ], line: 228, }, ], ), Ident { expr: [], line: 228, }, ], ], ), ], line: 227, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ], line: 229, column: 10, }, ], ], ), ], line: 229, }, Operator( ( ">=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 229, column: 17, }, ], ], ), ], line: 229, }, ], ), Ident { expr: [], line: 229, }, ], ], ), ], line: 228, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 229, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2425, code: [ ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 232, }, ], ], ), ], line: 232, }, ], 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: 233, }, ], ), Symbol( "]", ), ], line: 233, }, ], body: CodeBlock { start: 7, code: [ Return( Some( [ [ Symbol( "false", ), ], ], ), ), ], end: 10, }, next: None, line: 233, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 234, }, ], ), Symbol( "]", ), ], line: 233, }, ], values: [ [ Symbol( "nil", ), ], ], line: 234, column: 6, }, ], end: 25, }, line: 235, column: 1, }, Return( Some( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 236, }, ], ], ), ], line: 236, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ), ], end: 2458, }, line: 237, column: 1, }, ], ], line: 239, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 239, column: 11, }, ], ], ), ], line: 239, }, ], ], line: 239, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 240, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 240, column: 12, }, ], ], ), ], line: 240, }, ], ], ), ], line: 239, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 241, }, ], [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 241, column: 15, }, ], ], ), ], line: 241, }, ], ], ), ], line: 241, }, ], ], ), ], line: 240, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "rawequal", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 242, }, ], [ Ident { expr: [ Symbol( "s", ), ], line: 242, }, ], ], ), ], line: 242, }, ], ], ), ], line: 241, }, 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: 243, column: 12, }, ], ], ), ], line: 243, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ], line: 243, column: 21, }, ], ], ), ], line: 243, }, ], ], ), ], line: 242, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ], line: 244, column: 10, }, ], ], ), ], line: 244, }, Operator( ( "~=", true, ), ), Ident { expr: [ Symbol( "Set", ), Call( [ [ Table { data: [ ( None, [ Symbol( "3", ), ], ), ( None, [ Symbol( "5", ), ], ), ( None, [ Symbol( "1", ), ], ), ( None, [ Symbol( "6", ), ], ), ], line: 244, column: 21, }, ], ], ), ], line: 244, }, ], ], ), ], line: 243, }, 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: 245, column: 10, }, ], ], ), ], line: 245, }, ], ), Symbol( "]", ), ], line: 244, }, ], values: [ [ Symbol( "1", ), ], ], line: 245, 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: 246, column: 12, }, ], ], ), ], line: 246, }, ], ), Symbol( "]", ), ], line: 246, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 245, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "__concat", ), ], line: 246, }, ], values: [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 2593, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 250, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 250, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 251, }, ], ], ), ], line: 251, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 14, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 251, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "val", ), ], line: 251, }, ], ], line: 251, column: 5, }, ], end: 20, }, next: None, line: 251, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 252, }, ], ], ), ], line: 252, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], body: CodeBlock { start: 28, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 252, }, ], values: [ [ Ident { expr: [ Symbol( "b", ), Symbol( ".", ), Symbol( "val", ), ], line: 252, }, ], ], line: 252, column: 5, }, ], end: 34, }, next: None, line: 252, column: 14, }, IfStatement { condition: [ Ident { expr: [ Symbol( "A", ), ], line: 253, }, ], body: CodeBlock { start: 37, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 253, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 253, }, ], ], ), ), ], 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: 255, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 255, }, ], ), ], line: 255, column: 10, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 255, }, ], ], ), ], line: 255, }, ], ], ), ), ], end: 56, }, next: None, line: 256, column: 1, }, ), line: 256, column: 1, }, ], end: 2650, }, line: 257, column: 1, }, ], ], line: 257, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 257, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Symbol( "\"c\"", ), ], ), ], line: 259, column: 7, }, ], ], line: 259, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 259, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 259, }, ], ], ), ], line: 259, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 259, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "val", ), ], ), [ Symbol( "\"d\"", ), ], ), ], line: 260, column: 7, }, ], ], line: 260, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 260, }, ], [ Ident { expr: [ Symbol( "t", ), ], line: 260, }, ], ], ), ], line: 260, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 260, }, ], values: [ [ Symbol( "true", ), ], ], line: 262, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 263, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 263, }, Operator( ( "==", true, ), ), Symbol( "'cd'", ), ], ], ), ], line: 262, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "0", ), Operator( ( "..", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 264, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 264, }, Operator( ( "..", true, ), ), Symbol( "\"e\"", ), Operator( ( "..", true, ), ), Symbol( "\"f\"", ), Operator( ( "..", true, ), ), Expr( [ Symbol( "5", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 264, }, Operator( ( "..", true, ), ), Symbol( "\"g\"", ), Operator( ( "==", true, ), ), Symbol( "\"0abcdef8g\"", ), ], ], ), ], line: 263, }, Alter { names: [ Ident { expr: [ Symbol( "A", ), ], line: 264, }, ], values: [ [ Symbol( "false", ), ], ], line: 266, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "c", ), ], line: 267, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 267, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 267, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 267, }, ], ), Ident { expr: [ Symbol( ".", ), Symbol( "val", ), ], line: 267, }, Operator( ( "==", true, ), ), Symbol( "'cdcd'", ), ], ], ), ], line: 266, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 267, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 268, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 268, }, ], ], line: 268, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 269, }, ], ], ), ], line: 269, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 269, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "val", ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "'cd'", ), ], ], ), ], line: 268, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 269, }, ], values: [ [ Symbol( "0", ), Operator( ( "..", true, ), ), Symbol( "\"a\"", ), Operator( ( "..", true, ), ), Symbol( "\"b\"", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 270, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 270, }, Operator( ( "..", true, ), ), Symbol( "\"e\"", ), Operator( ( "..", true, ), ), Symbol( "\"f\"", ), Operator( ( "..", true, ), ), Symbol( "\"g\"", ), ], ], line: 270, column: 17, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "x", ), Symbol( ".", ), Symbol( "val", ), ], line: 271, }, Operator( ( "==", true, ), ), Symbol( "\"0abcdefg\"", ), ], ], ), ], line: 270, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 271, }, ], values: [ [ Table { data: [], line: 275, column: 4, }, ], ], line: 276, column: 0, }, Variable { names: [ ( "x", false, ), ], values: [], line: 276, column: 2, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 277, }, ], [ Table { data: [ ( Some( [ Symbol( "__concat", ), ], ), [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 2798, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 278, }, ], ], ), ], line: 278, }, Operator( ( "==", true, ), ), Symbol( "\"number\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 278, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 278, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 278, }, ], ], ), ], line: 278, }, Operator( ( "==", true, ), ), Symbol( "\"number\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "a", ), ], line: 278, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 278, }, ], ], ), ], line: 278, }, Return( Some( [ [ Ident { expr: [ Symbol( "c", ), ], line: 279, }, ], ], ), ), ], end: 2825, }, line: 280, column: 1, }, ], ), ], line: 280, column: 2, }, ], ], ), ], line: 276, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 281, }, Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 281, }, Operator( ( "and", true, ), ), Symbol( "5", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 281, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 281, }, ], ], ), ], line: 280, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "4", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 282, }, Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 282, }, Operator( ( "and", true, ), ), Symbol( "4", ), Operator( ( "..", true, ), ), Symbol( "5", ), Operator( ( "..", true, ), ), Symbol( "6", ), Operator( ( "..", true, ), ), Symbol( "7", ), Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 282, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 282, }, ], ], ), ], line: 281, }, Variable { names: [ ( "t1", false, ), ( "t2", false, ), ( "c", false, ), ( "d", false, ), ], values: [], line: 286, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), ], line: 286, }, ], values: [ [ Table { data: [], line: 287, column: 4, }, ], ], line: 287, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "c", ), ], line: 287, }, ], values: [ [ Table { data: [], line: 287, column: 9, }, ], ], line: 287, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 287, }, ], [ Ident { expr: [ Symbol( "t1", ), ], line: 287, }, ], ], ), ], line: 287, }, Alter { names: [ Ident { expr: [ Symbol( "d", ), ], line: 287, }, ], values: [ [ Table { data: [], line: 288, column: 4, }, ], ], line: 288, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 288, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 2898, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 2901, }, line: 289, column: 10, }, ], ], line: 289, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 289, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 2908, code: [ Return( Some( [ [ Symbol( "true", ), ], ], ), ), ], end: 2911, }, line: 290, column: 10, }, ], ], line: 290, column: 10, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 291, }, ], [ Ident { expr: [ Symbol( "t1", ), ], line: 291, }, ], ], ), ], line: 290, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 292, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 292, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 292, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 292, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 292, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 292, }, ], ), Ident { expr: [], line: 292, }, ], ], ), ], line: 291, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), ], line: 292, }, ], values: [ [ Table { data: [], line: 293, column: 4, }, ], ], line: 293, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 293, }, ], values: [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__eq", ), ], line: 294, }, ], ], line: 294, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "t2", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 294, }, ], values: [ [ Ident { expr: [ Symbol( "t1", ), Symbol( ".", ), Symbol( "__lt", ), ], line: 295, }, ], ], line: 295, column: 7, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "d", ), ], line: 296, }, ], [ Ident { expr: [ Symbol( "t2", ), ], line: 296, }, ], ], ), ], line: 295, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "c", ), ], line: 297, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 297, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 297, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "d", ), ], line: 297, }, Operator( ( "and", true, ), ), Operator( ( "not", false, ), ), Expr( [ Ident { expr: [ Symbol( "d", ), ], line: 297, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "c", ), ], line: 297, }, ], ), Ident { expr: [], line: 297, }, ], ], ), ], line: 296, }, Variable { names: [ ( "i", false, ), ], values: [], line: 302, column: 2, }, Variable { names: [ ( "tt", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__call", ), ], ), [ Lambda { args: [ "t", "...", ], body: CodeBlock { start: 2989, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 305, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 305, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 306, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "f", ), ], line: 306, }, ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "f", ), Call( [ [ Symbol( "...", ), ], ], ), ], line: 306, }, ], ], ), ), ], end: 18, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 18, code: [ Return( Some( [ [ Table { data: [ ( None, [ Symbol( "...", ), ], ), ], line: 307, column: 4, }, ], ], ), ), ], end: 23, }, next: None, line: 308, column: 1, }, ), line: 308, column: 1, }, ], end: 3013, }, line: 309, column: 1, }, ], ), ], line: 310, column: 1, }, ], ], line: 312, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 312, column: 7, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 312, }, ], ], ), ], line: 312, }, ], ], line: 313, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 313, }, ], ), ], line: 313, column: 10, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 313, }, ], ], ), ], line: 313, }, ], ], line: 314, column: 0, }, Variable { names: [ ( "c", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "f", ), ], ), [ Ident { expr: [ Symbol( "b", ), ], line: 314, }, ], ), ], line: 314, column: 10, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 314, }, ], ], ), ], line: 314, }, ], ], line: 314, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 314, }, ], values: [ [ Symbol( "0", ), ], ], line: 316, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 316, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), Call( [ [ Symbol( "3", ), ], [ Symbol( "4", ), ], [ Symbol( "5", ), ], ], ), ], line: 317, }, ], ], line: 317, column: 10, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 318, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 318, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "x", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 318, }, Operator( ( "==", true, ), ), Symbol( "5", ), ], ], ), ], line: 317, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( ".", ), Symbol( "X", ), ], line: 321, }, Operator( ( "==", true, ), ), Symbol( "20", ), ], ], ), ], line: 318, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 321, }, Variable { names: [ ( "_g", false, ), ], values: [ [ Ident { expr: [ Symbol( "_G", ), ], line: 325, }, ], ], line: 325, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), ], line: 325, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 326, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__index", ), ], ), [ Lambda { args: [ "_", "k", ], body: CodeBlock { start: 3113, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "_g", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 326, }, ], ), Symbol( "]", ), ], line: 326, }, ], ], ), ), ], end: 3119, }, line: 326, column: 22, }, ], ), ], line: 326, column: 23, }, ], ], ), ], line: 326, }, ], ], line: 326, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 326, }, ], values: [ [ Table { data: [], line: 329, column: 4, }, ], ], line: 329, column: 4, }, Ident { expr: [ Symbol( "rawset", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 330, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "1", ), ], [ Symbol( "2", ), ], [ Symbol( "3", ), ], ], ), ], line: 329, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 331, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "rawget", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 331, }, ], [ Symbol( "\"x\"", ), ], [ Symbol( "3", ), ], ], ), ], line: 331, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 330, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 331, }, Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "'debug'", ), ], ], ), ], line: 336, }, ], ], line: 336, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), ], line: 336, }, ], values: [ [ Table { data: [], line: 337, column: 4, }, ], ], line: 337, column: 4, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "10", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 338, }, ], ], ), ], line: 337, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 339, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 339, }, ], ], ), ], line: 338, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__index", ), ], line: 339, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3195, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 340, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 340, }, ], ], ), ), ], end: 3200, }, line: 340, column: 15, }, ], ], line: 340, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 341, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 340, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "10", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "\"3\"", ), ], ), Symbol( "]", ), ], line: 342, }, Operator( ( "==", true, ), ), Symbol( "13", ), ], ], ), ], line: 341, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "23", ), ], [ Symbol( "nil", ), ], ], ), ], line: 342, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Operator( ( "-", false, ), ), Symbol( "2", ), ], ], ), ], line: 344, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 343, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "true", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 346, }, ], ], ), ], line: 344, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "false", ), ], ], ), ], line: 347, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 347, }, ], ], ), ], line: 346, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__index", ), ], line: 347, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3267, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 348, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 348, }, ], ], ), ), ], end: 3272, }, line: 348, column: 15, }, ], ], line: 348, column: 15, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "true", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 349, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 348, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Symbol( "false", ), ], ), Ident { expr: [ Symbol( "[", ), Expr( [ Symbol( "false", ), ], ), Symbol( "]", ), ], line: 350, }, Operator( ( "==", true, ), ), Symbol( "false", ), ], ], ), ], line: 349, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "false", ), ], [ Symbol( "nil", ), ], ], ), ], line: 350, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "true", ), ], ], ), ], line: 352, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 351, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Ident { expr: [ Symbol( "mt", ), ], line: 354, }, ], ], ), ], line: 352, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 355, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "mt", ), ], line: 355, }, ], ], ), ], line: 354, }, Alter { names: [ Ident { expr: [ Symbol( "mt", ), Symbol( ".", ), Symbol( "__add", ), ], line: 355, }, ], values: [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3338, code: [ Return( Some( [ [ Expr( [ Ident { expr: [ Symbol( "a", ), ], line: 356, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 356, }, Operator( ( "+", true, ), ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 356, }, Operator( ( "or", true, ), ), Symbol( "0", ), ], ), Ident { expr: [], line: 356, }, ], ], ), ), ], end: 3351, }, line: 356, column: 23, }, ], ], line: 356, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 356, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), Operator( ( "+", true, ), ), Symbol( "23", ), Operator( ( "==", true, ), ), Symbol( "23", ), ], ], ), ], line: 357, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Symbol( "nil", ), Operator( ( "+", true, ), ), Symbol( "nil", ), Operator( ( "==", true, ), ), Symbol( "0", ), ], ], ), ], line: 358, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Symbol( "nil", ), ], ], ), ], line: 359, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 361, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 360, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Symbol( "nil", ), ], [ Table { data: [], line: 363, column: 8, }, ], ], ), ], line: 361, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 363, }, ], values: [ [ Table { data: [], line: 367, column: 4, }, ], ], line: 367, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 367, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 367, }, ], ], ), ], line: 367, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "__index", ), ], line: 367, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 367, }, ], ], line: 367, column: 18, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 367, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), ], line: 367, }, ], ], line: 367, column: 23, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [ "a", "b", ], body: CodeBlock { start: 3435, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 368, }, ], ), Symbol( "]", ), ], line: 368, }, ], ], ), ), ], end: 3441, }, line: 368, column: 17, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 368, }, ], [ Symbol( "10", ), ], ], ), ], line: 368, }, ], ], ), ], line: 367, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Lambda { args: [ "a", "b", "c", ], body: CodeBlock { start: 3460, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "b", ), ], line: 369, }, ], ), Symbol( "]", ), ], line: 369, }, ], values: [ [ Ident { expr: [ Symbol( "c", ), ], line: 369, }, ], ], line: 369, column: 6, }, ], end: 3467, }, line: 369, column: 20, }, ], [ Ident { expr: [ Symbol( "a", ), ], line: 369, }, ], [ Symbol( "10", ), ], [ Symbol( "true", ), ], ], ), ], line: 369, }, ], ], ), ], line: 368, }, Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 369, }, Ident { expr: [ Symbol( "K", ), ], line: 372, }, Ident { expr: [ Symbol( "V", ), ], line: 372, }, ], values: [ [ Symbol( "nil", ), ], ], line: 372, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "grandparent", ), ], line: 372, }, ], values: [ [ Table { data: [], line: 373, column: 4, }, ], ], line: 373, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "grandparent", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 373, }, ], values: [ [ Lambda { args: [ "t", "k", "v", ], body: CodeBlock { start: 3498, code: [ Alter { names: [ Ident { expr: [ Symbol( "T", ), ], line: 374, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 374, }, ], ], line: 374, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "K", ), ], line: 374, }, ], values: [ [ Ident { expr: [ Symbol( "k", ), ], line: 374, }, ], ], line: 374, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "V", ), ], line: 374, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 374, }, ], ], line: 374, column: 11, }, ], end: 3510, }, line: 374, column: 24, }, ], ], line: 374, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "parent", ), ], line: 374, }, ], values: [ [ Table { data: [], line: 376, column: 4, }, ], ], line: 376, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "parent", ), Symbol( ".", ), Symbol( "__newindex", ), ], line: 376, }, ], values: [ [ Ident { expr: [ Symbol( "parent", ), ], line: 377, }, ], ], line: 377, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "parent", ), ], line: 378, }, ], [ Ident { expr: [ Symbol( "grandparent", ), ], line: 378, }, ], ], ), ], line: 377, }, Alter { names: [ Ident { expr: [ Symbol( "child", ), ], line: 378, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 380, column: 6, }, ], [ Ident { expr: [ Symbol( "parent", ), ], line: 380, }, ], ], ), ], line: 380, }, ], ], line: 380, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "child", ), Symbol( ".", ), Symbol( "foo", ), ], line: 380, }, ], values: [ [ Symbol( "10", ), ], ], line: 381, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), ], line: 382, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "parent", ), ], line: 382, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "K", ), ], line: 382, }, Operator( ( "==", true, ), ), Symbol( "\"foo\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "V", ), ], line: 382, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 381, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 382, }, Return( Some( [ [ Symbol( "12", ), ], ], ), ), ]