--- source: src/main.rs expression: parsed input_file: test-data/lua5.2-tests/gc.lua --- [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'testing garbage collection'", ), ], ], ), ], line: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"isrunning\"", ), ], ], ), ], line: 5, }, ], ], ), ], line: 3, }, Function { local: true, name: [ Symbol( "gcinfo", ), ], args: [], body: CodeBlock { start: 19, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 7, }, Operator( ( "*", true, ), ), Symbol( "1024", ), ], ], ), ), ], end: 25, }, line: 7, column: 11, }, DoBlock( CodeBlock { start: 26, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"setpause\"", ), ], [ Symbol( "200", ), ], ], ), ], line: 13, }, ], ], line: 14, column: 0, }, Variable { names: [ ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"setstepmul\"", ), ], [ Symbol( "200", ), ], ], ), ], line: 14, }, ], ], line: 15, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( None, [ Symbol( "0", ), ], ), ( None, [ Symbol( "2", ), ], ), ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "90", ), ], ), ( None, [ Symbol( "500", ), ], ), ( None, [ Symbol( "5000", ), ], ), ( None, [ Symbol( "30000", ), ], ), ( None, [ Symbol( "2", ), Operator( ( "^", true, ), ), Symbol( "31", ), Operator( ( "-", true, ), ), Symbol( "2", ), ], ), ], line: 15, column: 24, }, ], ], line: 16, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 16, }, ], step: None, code: CodeBlock { start: 50, code: [ Variable { names: [ ( "p", false, ), ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 17, }, ], ), Symbol( "]", ), ], line: 17, }, ], ], line: 18, column: 0, }, ForLoop { iter: "j", start: [ Symbol( "1", ), ], end: [ Operator( ( "#", false, ), ), Ident { expr: [ Symbol( "t", ), ], line: 18, }, ], step: None, code: CodeBlock { start: 15, code: [ Variable { names: [ ( "m", false, ), ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "j", ), ], line: 19, }, ], ), Symbol( "]", ), ], line: 19, }, ], ], line: 19, column: 7, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"setpause\"", ), ], [ Ident { expr: [ Symbol( "p", ), ], line: 20, }, ], ], ), ], line: 19, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"setstepmul\"", ), ], [ Ident { expr: [ Symbol( "m", ), ], line: 21, }, ], ], ), ], line: 20, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"step\"", ), ], [ Symbol( "0", ), ], ], ), ], line: 21, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"step\"", ), ], [ Symbol( "10000", ), ], ], ), ], line: 22, }, ], end: 47, }, line: 24, column: 1, }, ], end: 98, }, line: 25, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"setpause\"", ), ], [ Ident { expr: [ Symbol( "a", ), ], line: 27, }, ], ], ), ], line: 25, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"setstepmul\"", ), ], [ Ident { expr: [ Symbol( "b", ), ], line: 28, }, ], ], ), ], line: 27, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 28, }, ], end: 140, }, ), Alter { names: [ Ident { expr: [ Symbol( "_G", ), Symbol( "[", ), Expr( [ Symbol( "\"while\"", ), ], ), Symbol( "]", ), ], line: 30, }, ], values: [ [ Symbol( "234", ), ], ], line: 33, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "limit", ), ], line: 33, }, ], values: [ [ Symbol( "5000", ), ], ], line: 38, column: 0, }, Function { local: true, name: [ Symbol( "GC1", ), ], args: [], body: CodeBlock { start: 154, code: [ Variable { names: [ ( "u", false, ), ], values: [], line: 39, column: 2, }, Variable { names: [ ( "b", false, ), ], values: [], line: 40, column: 2, }, Variable { names: [ ( "finish", false, ), ], values: [ [ Symbol( "false", ), ], ], line: 41, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 41, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 42, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 21, code: [ Alter { names: [ Ident { expr: [ Symbol( "finish", ), ], line: 42, }, ], values: [ [ Symbol( "true", ), ], ], line: 42, column: 3, }, ], end: 25, }, line: 42, column: 17, }, ], ), ], line: 42, column: 18, }, ], ], ), ], line: 42, }, ], ], line: 42, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 42, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "34", ), ], ), ], line: 43, column: 5, }, ], ], line: 44, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "finish", ), ], line: 44, }, ], body: CodeBlock { start: 33, code: [ Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 44, }, ], values: [ [ Table { data: [], line: 44, column: 4, }, ], ], line: 44, column: 4, }, ], end: 38, }, line: 44, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 45, }, Operator( ( "==", true, ), ), Symbol( "34", ), ], ], ), ], line: 44, }, Alter { names: [ Ident { expr: [ Symbol( "finish", ), ], line: 45, }, ], values: [ [ Symbol( "false", ), ], ], line: 47, column: 4, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 47, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 47, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 48, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 69, code: [ Alter { names: [ Ident { expr: [ Symbol( "finish", ), ], line: 48, }, ], values: [ [ Symbol( "true", ), ], ], line: 48, column: 3, }, ], end: 73, }, line: 48, column: 17, }, ], ), ], line: 48, column: 18, }, ], ], ), ], line: 48, }, ], ], line: 49, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "finish", ), ], line: 49, }, ], body: CodeBlock { start: 76, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 49, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 49, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 49, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 49, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 49, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 49, }, ], ], line: 49, column: 11, }, ], end: 88, }, line: 49, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 50, }, Operator( ( "==", true, ), ), Symbol( "34", ), ], ], ), ], line: 49, }, Alter { names: [ Ident { expr: [ Symbol( "finish", ), ], line: 50, }, ], values: [ [ Symbol( "false", ), ], ], line: 52, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 52, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 53, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 114, code: [ Alter { names: [ Ident { expr: [ Symbol( "finish", ), ], line: 53, }, ], values: [ [ Symbol( "true", ), ], ], line: 53, column: 3, }, ], end: 118, }, line: 53, column: 17, }, ], ), ], line: 53, column: 18, }, ], ], ), ], line: 53, }, ], ], line: 54, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "finish", ), ], line: 54, }, ], body: CodeBlock { start: 121, code: [ Variable { names: [ ( "i", false, ), ], values: [], line: 54, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 54, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 8, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 54, }, ], ], ), ), ], end: 11, }, line: 54, column: 11, }, ], ], line: 54, column: 11, }, ], end: 133, }, line: 54, column: 14, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 55, }, Operator( ( "==", true, ), ), Symbol( "34", ), ], ], ), ], line: 54, }, ], end: 298, }, line: 56, column: 1, }, Function { local: true, name: [ Symbol( "GC", ), ], args: [], body: CodeBlock { start: 303, code: [ Ident { expr: [ Symbol( "GC1", ), Call( [], ), ], line: 58, }, Ident { expr: [ Symbol( "GC1", ), Call( [], ), ], line: 58, }, ], end: 311, }, line: 58, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 58, }, ], values: [ [ Symbol( "0", ), ], ], line: 61, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'tables'", ), ], ], ), ], line: 61, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 64, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "limit", ), ], line: 64, }, ], body: CodeBlock { start: 323, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 65, column: 5, }, ], ], line: 65, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 65, }, ], values: [ [ Symbol( "nil", ), ], ], line: 65, column: 9, }, Alter { names: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 65, }, ], values: [ [ Ident { expr: [ Symbol( "contCreate", ), ], line: 66, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 66, column: 5, }, ], end: 338, }, line: 67, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 67, }, ], values: [ [ Symbol( "\"a\"", ), ], ], line: 69, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 69, }, ], values: [ [ Symbol( "0", ), ], ], line: 71, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'strings'", ), ], ], ), ], line: 71, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 73, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "limit", ), ], line: 73, }, ], body: CodeBlock { start: 353, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 74, }, ], values: [ [ Ident { expr: [ Symbol( "contCreate", ), ], line: 74, }, Operator( ( "..", true, ), ), Symbol( "\"b\"", ), ], ], line: 74, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 74, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 75, }, ], [ Symbol( "'(%d%d*)'", ), ], [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "upper", ), ], line: 75, }, ], ], ), ], line: 75, }, ], ], line: 75, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 75, }, ], values: [ [ Symbol( "\"a\"", ), ], ], line: 76, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 76, }, ], values: [ [ Ident { expr: [ Symbol( "contCreate", ), ], line: 77, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 77, column: 5, }, ], end: 382, }, line: 78, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 78, }, ], values: [ [ Symbol( "0", ), ], ], line: 81, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 81, }, ], values: [ [ Table { data: [], line: 83, column: 4, }, ], ], line: 83, column: 4, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'functions'", ), ], ], ), ], line: 83, }, Function { local: false, name: [ Symbol( "a", ), Symbol( ":", ), Symbol( "test", ), ], args: [], body: CodeBlock { start: 399, code: [ WhileLoop { condition: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 87, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "limit", ), ], line: 87, }, ], body: CodeBlock { start: 5, code: [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "\"function temp(a) return 'a%d' end\"", ), ], [ Ident { expr: [ Symbol( "contCreate", ), ], line: 88, }, ], ], ), ], line: 88, }, ], ], ), Call( [], ), ], line: 88, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "temp", ), Call( [], ), ], line: 89, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "format", ), Call( [ [ Symbol( "'a%d'", ), ], [ Ident { expr: [ Symbol( "contCreate", ), ], line: 89, }, ], ], ), ], line: 89, }, ], ], ), ], line: 88, }, Alter { names: [ Ident { expr: [ Symbol( "contCreate", ), ], line: 89, }, ], values: [ [ Ident { expr: [ Symbol( "contCreate", ), ], line: 90, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 90, column: 5, }, ], end: 39, }, line: 91, column: 1, }, ], end: 439, }, line: 92, column: 1, }, Ident { expr: [ Symbol( "a", ), Symbol( ":", ), Symbol( "test", ), Call( [], ), ], line: 92, }, DoBlock( CodeBlock { start: 445, code: [ Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [], body: CodeBlock { start: 6, code: [], end: 7, }, line: 97, column: 7, }, ], ], line: 97, column: 7, }, ], end: 453, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"functions with errors\"", ), ], ], ), ], line: 97, }, Alter { names: [ Ident { expr: [ Symbol( "prog", ), ], line: 100, }, ], values: [ [ MultilineString( "[[\ndo\n a = 10;\n function foo(x,y)\n a = sin(a+0.456-0.23e-12);\n return function (z) return sin(%x+z) end\n end\n local x = function (w) a=a+w; end\nend\n]]", ), ], ], line: 111, column: 0, }, DoBlock( CodeBlock { start: 461, code: [ Variable { names: [ ( "step", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 113, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "_soft", ), ], line: 113, }, ], body: CodeBlock { start: 7, code: [ Alter { names: [ Ident { expr: [ Symbol( "step", ), ], line: 113, }, ], values: [ [ Symbol( "13", ), ], ], line: 113, column: 3, }, ], end: 11, }, next: None, line: 113, column: 7, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 114, }, ], ], ), ], line: 114, }, ], step: Some( [ Ident { expr: [ Symbol( "step", ), ], line: 114, }, ], ), code: CodeBlock { start: 25, code: [ ForLoop { iter: "j", start: [ Ident { expr: [ Symbol( "i", ), ], line: 115, }, ], end: [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 115, }, ], ], ), ], line: 115, }, ], step: Some( [ Ident { expr: [ Symbol( "step", ), ], line: 115, }, ], ), code: CodeBlock { start: 14, code: [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "load", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "prog", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "i", ), ], line: 116, }, ], [ Ident { expr: [ Symbol( "j", ), ], line: 116, }, ], ], ), ], line: 116, }, ], ], ), ], line: 116, }, ], ], ), ], line: 116, }, ], end: 31, }, line: 117, column: 1, }, ], end: 57, }, line: 118, column: 1, }, ], end: 519, }, ), Alter { names: [ Ident { expr: [ Symbol( "foo", ), ], line: 119, }, ], values: [ [ Symbol( "nil", ), ], ], line: 121, column: 3, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'long strings'", ), ], ], ), ], line: 121, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 122, }, ], values: [ [ Symbol( "\"01234567890123456789012345678901234567890123456789012345678901234567890123456789\"", ), ], ], line: 123, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 124, }, ], ], ), ], line: 124, }, Operator( ( "==", true, ), ), Symbol( "80", ), ], ], ), ], line: 123, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 124, }, ], values: [ [ Symbol( "''", ), ], ], line: 125, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 125, }, ], values: [ [ Symbol( "0", ), ], ], line: 126, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 126, }, ], values: [ [ Symbol( "300", ), ], ], line: 128, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 128, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 128, }, ], body: CodeBlock { start: 554, code: [ Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 128, }, ], values: [ [ Ident { expr: [ Symbol( "s", ), ], line: 128, }, Operator( ( "..", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 128, }, ], ], line: 128, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 128, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 128, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 128, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "j", ), ], line: 128, }, ], values: [ [ Ident { expr: [ Symbol( "tostring", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 128, }, ], ], ), ], line: 128, }, ], ], line: 128, column: 18, }, ], end: 573, }, line: 128, column: 24, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "len", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 129, }, ], ], ), ], line: 129, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 129, }, Operator( ( "*", true, ), ), Symbol( "80", ), ], ], ), ], line: 128, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 129, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "sub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 130, }, ], [ Symbol( "1", ), ], [ Symbol( "20000", ), ], ], ), ], line: 130, }, ], ], line: 130, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 130, }, Ident { expr: [ Symbol( "i", ), ], line: 131, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "gsub", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 131, }, ], [ Symbol( "'(%d%d%d%d)'", ), ], [ Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "sin", ), ], line: 131, }, ], ], ), ], line: 131, }, ], ], line: 131, column: 16, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 132, }, Operator( ( "==", true, ), ), Symbol( "20000", ), Operator( ( "/", true, ), ), Symbol( "4", ), ], ], ), ], line: 131, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 132, }, ], values: [ [ Symbol( "nil", ), ], ], line: 133, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 133, }, ], values: [ [ Symbol( "nil", ), ], ], line: 134, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "_G", ), Symbol( "[", ), Expr( [ Symbol( "\"while\"", ), ], ), Symbol( "]", ), ], line: 136, }, Operator( ( "==", true, ), ), Symbol( "234", ), ], ], ), ], line: 134, }, Variable { names: [ ( "k", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"count\"", ), ], ], ), ], line: 138, }, ], ], line: 138, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "k", ), ], line: 139, }, Operator( ( "*", true, ), ), Symbol( "1024", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "math", ), Symbol( ".", ), Symbol( "floor", ), Call( [ [ Ident { expr: [ Symbol( "k", ), ], line: 139, }, ], ], ), ], line: 139, }, Operator( ( "*", true, ), ), Symbol( "1024", ), Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "b", ), ], line: 139, }, ], ], ), ], line: 138, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"steps\"", ), ], ], ), ], line: 139, }, Variable { names: [ ( "bytes", false, ), ], values: [ [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 143, }, ], ], line: 144, column: 0, }, WhileLoop { condition: [ Symbol( "1", ), ], body: CodeBlock { start: 676, code: [ Variable { names: [ ( "nbytes", false, ), ], values: [ [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 145, }, ], ], line: 146, column: 0, }, IfStatement { condition: [ Ident { expr: [ Symbol( "nbytes", ), ], line: 146, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "bytes", ), ], line: 146, }, ], body: CodeBlock { start: 11, code: [ Break, ], end: 13, }, next: None, line: 146, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "bytes", ), ], line: 146, }, ], values: [ [ Ident { expr: [ Symbol( "nbytes", ), ], line: 147, }, ], ], line: 147, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 147, }, ], values: [ [ Table { data: [], line: 148, column: 4, }, ], ], line: 148, column: 4, }, ], end: 697, }, line: 149, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"steps (2)\"", ), ], ], ), ], line: 149, }, Function { local: true, name: [ Symbol( "dosteps", ), ], args: [ "siz", ], body: CodeBlock { start: 707, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"isrunning\"", ), ], ], ), ], line: 154, }, ], ], ), ], line: 154, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 154, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"isrunning\"", ), ], ], ), ], line: 156, }, ], ], ), ], line: 155, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 157, column: 5, }, ], ], line: 158, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "100", ), ], step: None, code: CodeBlock { start: 31, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 158, }, ], ), Symbol( "]", ), ], line: 158, }, ], values: [ [ Table { data: [ ( None, [ Table { data: [], line: 158, column: 8, }, ], ), ], line: 158, column: 9, }, ], ], line: 158, column: 10, }, Variable { names: [ ( "b", false, ), ], values: [ [ Table { data: [], line: 158, column: 15, }, ], ], line: 158, column: 15, }, ], end: 47, }, line: 158, column: 23, }, Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 159, }, ], ], line: 160, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 161, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"step\"", ), ], [ Ident { expr: [ Symbol( "siz", ), ], line: 163, }, ], ], ), ], line: 163, }, ], body: CodeBlock { start: 58, code: [ Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 162, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 162, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 162, column: 5, }, ], end: 64, }, line: 163, column: 7, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 164, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 164, }, ], ], ), ], line: 163, }, Return( Some( [ [ Ident { expr: [ Symbol( "i", ), ], line: 165, }, ], ], ), ), ], end: 788, }, line: 166, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 166, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_port", ), ], line: 170, }, ], body: CodeBlock { start: 794, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dosteps", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 172, }, Operator( ( ">", true, ), ), Symbol( "10", ), ], ], ), ], line: 172, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dosteps", ), Call( [ [ Symbol( "10", ), ], ], ), ], line: 173, }, Operator( ( "<", true, ), ), Ident { expr: [ Symbol( "dosteps", ), Call( [ [ Symbol( "2", ), ], ], ), ], line: 173, }, ], ], ), ], line: 172, }, ], end: 816, }, next: None, line: 174, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "dosteps", ), Call( [ [ Symbol( "100000", ), ], ], ), ], line: 177, }, Operator( ( "==", true, ), ), Symbol( "1", ), ], ], ), ], line: 174, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"step\"", ), ], [ Symbol( "1000000", ), ], ], ), ], line: 178, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 177, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"step\"", ), ], [ Symbol( "1000000", ), ], ], ), ], line: 179, }, Operator( ( "==", true, ), ), Symbol( "true", ), ], ], ), ], line: 178, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"isrunning\"", ), ], ], ), ], line: 181, }, ], ], ), ], line: 179, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 181, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"isrunning\"", ), ], ], ), ], line: 183, }, ], ], ), ], line: 182, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_port", ), ], line: 186, }, ], body: CodeBlock { start: 868, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 188, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 188, }, Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 189, }, ], ], line: 189, column: 6, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 189, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"isrunning\"", ), ], ], ), ], line: 191, }, ], ], ), ], line: 190, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 194, }, Operator( ( ">", true, ), ), Symbol( "3", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 194, }, ], body: CodeBlock { start: 24, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 193, column: 5, }, ], ], line: 193, column: 5, }, ], end: 30, }, line: 194, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 194, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"isrunning\"", ), ], ], ), ], line: 196, }, ], ], ), ], line: 195, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 199, }, Operator( ( "<=", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 199, }, Operator( ( "*", true, ), ), Symbol( "2", ), ], body: CodeBlock { start: 47, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 198, column: 5, }, ], ], line: 198, column: 5, }, ], end: 53, }, line: 199, column: 8, }, ], end: 929, }, next: None, line: 200, column: 1, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"clearing tables\"", ), ], ], ), ], line: 200, }, Alter { names: [ Ident { expr: [ Symbol( "lim", ), ], line: 203, }, ], values: [ [ Symbol( "15", ), ], ], line: 204, column: 3, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 204, }, ], values: [ [ Table { data: [], line: 205, column: 4, }, ], ], line: 207, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 207, }, ], step: None, code: CodeBlock { start: 947, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Table { data: [], line: 207, column: 4, }, ], ), Symbol( "]", ), ], line: 207, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 207, }, ], ], line: 207, column: 7, }, ], end: 955, }, line: 207, column: 15, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 207, }, ], values: [ [ Table { data: [], line: 208, column: 4, }, ], ], line: 209, column: 0, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 209, }, ], ], ), ], line: 209, }, ], stop: None, initial: None, code: CodeBlock { start: 969, code: [ Alter { names: [ Ident { expr: [ Symbol( "b", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 209, }, ], ), Symbol( "]", ), ], line: 209, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 209, }, ], ], line: 209, column: 6, }, ], end: 976, }, line: 209, column: 17, }, ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 211, }, ], ], ), ], line: 211, }, ], stop: None, initial: None, code: CodeBlock { start: 984, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 212, }, ], ), Symbol( "]", ), ], line: 212, }, ], values: [ [ Symbol( "nil", ), ], ], line: 212, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 213, }, ], ], ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "n", ), ], line: 213, }, ], ], ), ], line: 213, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 212, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 213, }, ], end: 1010, }, line: 215, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "b", ), ], line: 215, }, ], values: [ [ Symbol( "nil", ), ], ], line: 216, column: 3, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 216, }, ForFuncLoop { iters: [ "n", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 218, }, ], ], ), ], line: 218, }, ], stop: None, initial: None, code: CodeBlock { start: 1024, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "'cannot be here'", ), ], ], ), ], line: 218, }, ], end: 1027, }, line: 218, column: 11, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 219, }, ], step: None, code: CodeBlock { start: 1034, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 219, }, ], ), Symbol( "]", ), ], line: 219, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 219, }, ], ], line: 219, column: 6, }, ], end: 1041, }, line: 219, column: 14, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 220, }, ], step: None, code: CodeBlock { start: 1048, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 220, }, ], ), Symbol( "]", ), ], line: 220, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 220, }, ], ], ), ], line: 220, }, ], end: 1058, }, line: 220, column: 17, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'weak tables'", ), ], ], ), ], line: 220, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 223, }, ], values: [ [ Table { data: [], line: 224, column: 4, }, ], ], line: 224, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 224, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'k'", ), ], ), ], line: 224, column: 14, }, ], ], ), ], line: 224, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 226, }, ], step: None, code: CodeBlock { start: 1085, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Table { data: [], line: 226, column: 4, }, ], ), Symbol( "]", ), ], line: 226, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 226, }, ], ], line: 226, column: 7, }, ], end: 1093, }, line: 226, column: 15, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 228, }, ], step: None, code: CodeBlock { start: 1100, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 228, }, ], ), Symbol( "]", ), ], line: 228, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 228, }, ], ], line: 228, column: 6, }, ], end: 1107, }, line: 228, column: 14, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 229, }, ], step: None, code: CodeBlock { start: 1114, code: [ Variable { names: [ ( "s", false, ), ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'@'", ), ], [ Ident { expr: [ Symbol( "i", ), ], line: 229, }, ], ], ), ], line: 229, }, ], ], line: 229, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "s", ), ], line: 229, }, ], ), Symbol( "]", ), ], line: 229, }, ], values: [ [ Ident { expr: [ Symbol( "s", ), ], line: 229, }, Operator( ( "..", true, ), ), Symbol( "'#'", ), ], ], line: 229, column: 20, }, ], end: 1135, }, line: 229, column: 28, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 229, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 232, column: 0, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 232, }, ], ], ), ], line: 232, }, ], stop: None, initial: None, code: CodeBlock { start: 1152, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "k", ), ], line: 232, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 232, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 232, }, Operator( ( "..", true, ), ), Symbol( "'#'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 232, }, ], ], ), ], line: 232, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 232, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 232, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 232, column: 18, }, ], end: 1171, }, line: 232, column: 29, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 233, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 233, }, ], ], ), ], line: 232, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 233, }, ], values: [ [ Table { data: [], line: 235, column: 4, }, ], ], line: 235, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 235, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'v'", ), ], ), ], line: 235, column: 14, }, ], ], ), ], line: 235, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 235, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'b'", ), ], [ Symbol( "21", ), ], ], ), ], line: 236, }, ], ], line: 236, column: 13, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 236, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 238, }, ], ], ), ], line: 237, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 238, }, ], values: [ [ Symbol( "nil", ), ], ], line: 241, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 241, }, ], step: None, code: CodeBlock { start: 1231, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 241, }, ], ), Symbol( "]", ), ], line: 241, }, ], values: [ [ Table { data: [], line: 241, column: 7, }, ], ], line: 241, column: 7, }, ], end: 1239, }, line: 241, column: 15, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 242, }, ], step: None, code: CodeBlock { start: 1246, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 242, }, Operator( ( "..", true, ), ), Symbol( "'x'", ), ], ), Symbol( "]", ), ], line: 242, }, ], values: [ [ Table { data: [], line: 242, column: 9, }, ], ], line: 242, column: 9, }, ], end: 1256, }, line: 242, column: 17, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 244, }, ], step: None, code: CodeBlock { start: 1263, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [], line: 244, column: 5, }, ], ], line: 244, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "t", ), ], line: 244, }, ], ), Symbol( "]", ), ], line: 244, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 244, }, ], ], line: 244, column: 12, }, ], end: 1276, }, line: 244, column: 20, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 245, }, ], step: None, code: CodeBlock { start: 1283, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 245, }, Operator( ( "+", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 245, }, ], ), Symbol( "]", ), ], line: 245, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 245, }, Operator( ( "..", true, ), ), Symbol( "'x'", ), ], ], line: 245, column: 10, }, ], end: 1294, }, line: 245, column: 18, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 245, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 248, column: 0, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 248, }, ], ], ), ], line: 248, }, ], stop: None, initial: None, code: CodeBlock { start: 1311, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "k", ), ], line: 248, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 248, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 248, }, Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 248, }, Operator( ( "..", true, ), ), Symbol( "'x'", ), Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 248, }, ], ], ), ], line: 248, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 248, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 248, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 248, column: 20, }, ], end: 1332, }, line: 248, column: 31, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 249, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "lim", ), ], line: 249, }, ], ], ), ], line: 248, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 249, }, ], values: [ [ Table { data: [], line: 251, column: 4, }, ], ], line: 251, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 251, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'vk'", ), ], ), ], line: 251, column: 14, }, ], ], ), ], line: 251, }, Variable { names: [ ( "x", false, ), ( "y", false, ), ( "z", false, ), ], values: [ [ Table { data: [], line: 252, column: 9, }, ], [ Table { data: [], line: 252, column: 12, }, ], [ Table { data: [], line: 252, column: 15, }, ], ], line: 252, column: 15, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 252, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "2", ), ], ), Symbol( "]", ), ], line: 254, }, Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "3", ), ], ), Symbol( "]", ), ], line: 254, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 254, }, ], [ Ident { expr: [ Symbol( "y", ), ], line: 254, }, ], [ Ident { expr: [ Symbol( "z", ), ], line: 254, }, ], ], line: 254, column: 20, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'$'", ), ], [ Symbol( "11", ), ], ], ), ], line: 255, }, ], ), Symbol( "]", ), ], line: 254, }, ], values: [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'$'", ), ], [ Symbol( "11", ), ], ], ), ], line: 255, }, ], ], line: 257, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "4", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 257, }, ], step: None, code: CodeBlock { start: 1418, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 257, }, ], ), Symbol( "]", ), ], line: 257, }, ], values: [ [ Table { data: [], line: 257, column: 7, }, ], ], line: 257, column: 7, }, ], end: 1426, }, line: 257, column: 15, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 258, }, ], step: None, code: CodeBlock { start: 1433, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Table { data: [], line: 258, column: 4, }, ], ), Symbol( "]", ), ], line: 258, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 258, }, ], ], line: 258, column: 7, }, ], end: 1441, }, line: 258, column: 15, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Ident { expr: [ Symbol( "lim", ), ], line: 259, }, ], step: None, code: CodeBlock { start: 1448, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [], line: 259, column: 5, }, ], ], line: 259, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "t", ), ], line: 259, }, ], ), Symbol( "]", ), ], line: 259, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 259, }, ], ], line: 259, column: 12, }, ], end: 1461, }, line: 259, column: 20, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 259, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 261, }, ], ], ), ], line: 261, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], ), ], line: 260, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 263, column: 0, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 263, }, ], ], ), ], line: 263, }, ], stop: None, initial: None, code: CodeBlock { start: 1487, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 264, }, Operator( ( "==", true, ), ), Symbol( "1", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 264, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 264, }, ], ), Ident { expr: [], line: 264, }, Operator( ( "or", true, ), ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 265, }, Operator( ( "==", true, ), ), Symbol( "2", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 265, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "y", ), ], line: 265, }, ], ), Ident { expr: [], line: 265, }, Operator( ( "or", true, ), ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 266, }, Operator( ( "==", true, ), ), Symbol( "3", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 266, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "z", ), ], line: 266, }, ], ), Ident { expr: [], line: 266, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "k", ), ], line: 266, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "v", ), ], line: 266, }, ], ], ), ], line: 264, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 266, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 267, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 267, column: 5, }, ], end: 1530, }, line: 268, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 269, }, Operator( ( "==", true, ), ), Symbol( "4", ), ], ], ), ], line: 268, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 269, }, Ident { expr: [ Symbol( "y", ), ], line: 270, }, Ident { expr: [ Symbol( "z", ), ], line: 270, }, ], values: [ [ Symbol( "nil", ), ], ], line: 270, column: 7, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 270, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 272, }, ], ], ), ], line: 272, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "rep", ), Call( [ [ Symbol( "'$'", ), ], [ Symbol( "11", ), ], ], ), ], line: 272, }, ], ], ), ], line: 271, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 272, }, ], values: [ [ Table { data: [], line: 276, column: 4, }, ], ], line: 277, column: 0, }, Variable { names: [ ( "t", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "x", ), ], ), [ Symbol( "10", ), ], ), ], line: 277, column: 8, }, ], ], line: 278, column: 0, }, Variable { names: [ ( "C", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Symbol( "key", ), ], ), [ Ident { expr: [ Symbol( "t", ), ], line: 278, }, ], ), ], line: 278, column: 10, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'v'", ), ], ), ], line: 278, column: 16, }, ], ], ), ], line: 278, }, ], ], line: 279, column: 0, }, Variable { names: [ ( "C1", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "t", ), ], line: 279, }, ], ), [ Symbol( "1", ), ], ), ], line: 279, column: 12, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'k'", ), ], ), ], line: 279, column: 18, }, ], ], ), ], line: 279, }, ], ], line: 279, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( ".", ), Symbol( "x", ), ], line: 279, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), ], line: 280, }, ], ], line: 280, column: 5, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 283, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "u", ], body: CodeBlock { start: 1626, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "C", ), Symbol( ".", ), Symbol( "key", ), ], line: 284, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 284, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "C1", ), ], line: 285, }, ], ], ), ], line: 285, }, ], ], ), ], line: 285, }, Operator( ( "==", true, ), ), Symbol( "'table'", ), ], ], ), ], line: 284, }, ], end: 1647, }, line: 286, column: 1, }, ], ), ], line: 286, column: 2, }, ], ], ), ], line: 280, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 286, }, Ident { expr: [ Symbol( "t", ), ], line: 288, }, ], values: [ [ Symbol( "nil", ), ], ], line: 288, column: 5, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 288, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 289, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "C", ), ], line: 291, }, ], ], ), ], line: 291, }, Operator( ( "==", true, ), ), Symbol( "nil", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "C1", ), ], line: 291, }, ], ], ), ], line: 291, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 290, }, Alter { names: [ Ident { expr: [ Symbol( "C", ), ], line: 291, }, Ident { expr: [ Symbol( "C1", ), ], line: 292, }, ], values: [ [ Symbol( "nil", ), ], ], line: 296, column: 0, }, Variable { names: [ ( "mt", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'k'", ), ], ), ], line: 296, column: 8, }, ], ], line: 296, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 296, }, ], values: [ [ Table { data: [ ( None, [ Symbol( "10", ), ], ), ( None, [ Symbol( "20", ), ], ), ( None, [ Symbol( "30", ), ], ), ( None, [ Symbol( "40", ), ], ), ], line: 297, column: 11, }, ], ], line: 297, column: 12, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 297, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 297, }, ], ], ), ], line: 297, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 297, }, ], values: [ [ Symbol( "nil", ), ], ], line: 299, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "100", ), ], step: None, code: CodeBlock { start: 1717, code: [ Variable { names: [ ( "n", false, ), ], values: [ [ Table { data: [], line: 299, column: 5, }, ], ], line: 299, column: 6, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 299, }, ], ), Symbol( "]", ), ], line: 299, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "k", ), ], ), [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "x", ), ], line: 299, }, ], ), ], line: 299, column: 17, }, ], ), ], line: 299, column: 18, }, ], ], line: 299, column: 19, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 299, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 299, }, ], ], line: 299, column: 22, }, ], end: 1740, }, line: 299, column: 30, }, Ident { expr: [ Symbol( "GC", ), Call( [], ), ], line: 299, }, Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 301, }, ], ], line: 302, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 303, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 303, }, ], body: CodeBlock { start: 1754, code: [ Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 303, }, ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 303, }, ], ), Symbol( "]", ), Symbol( ".", ), Symbol( "k", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 303, }, ], ], line: 303, column: 12, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 303, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 303, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 303, column: 17, }, ], end: 1772, }, line: 303, column: 21, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 304, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 303, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 304, }, ], values: [ [ Symbol( "nil", ), ], ], line: 305, column: 3, }, Ident { expr: [ Symbol( "GC", ), Call( [], ), ], line: 305, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "4", ), ], step: None, code: CodeBlock { start: 1791, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 307, }, ], ), Symbol( "]", ), ], line: 307, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "i", ), ], line: 307, }, Operator( ( "*", true, ), ), Symbol( "10", ), ], ], ), ], line: 307, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 307, }, ], ), Symbol( "]", ), ], line: 307, }, ], values: [ [ Symbol( "nil", ), ], ], line: 307, column: 18, }, ], end: 1810, }, line: 307, column: 26, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 308, }, ], ], ), ], line: 308, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 307, }, Variable { names: [ ( "K", false, ), ], values: [ [ Table { data: [], line: 310, column: 5, }, ], ], line: 310, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "K", ), ], line: 311, }, ], ), Symbol( "]", ), ], line: 310, }, ], values: [ [ Table { data: [], line: 311, column: 7, }, ], ], line: 312, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 1838, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "K", ), ], line: 312, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 312, }, ], ), Symbol( "]", ), ], line: 312, }, ], values: [ [ Table { data: [], line: 312, column: 10, }, ], ], line: 312, column: 11, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "K", ), ], line: 312, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 312, }, ], ), Symbol( "]", ), ], line: 312, }, ], ), Symbol( "]", ), ], line: 312, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 312, column: 26, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 312, }, ], ], ), ], line: 312, }, ], ], line: 312, column: 29, }, ], end: 1868, }, line: 312, column: 37, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 312, }, ], values: [ [ Symbol( "nil", ), ], ], line: 314, column: 0, }, Variable { names: [ ( "k", false, ), ], values: [ [ Symbol( "1", ), ], ], line: 315, column: 0, }, ForLoop { iter: "j", start: [ Symbol( "1", ), ], end: [ Symbol( "100", ), ], step: None, code: CodeBlock { start: 1882, code: [ Variable { names: [ ( "n", false, ), ], values: [ [ Table { data: [], line: 316, column: 5, }, ], ], line: 316, column: 6, }, Variable { names: [ ( "nk", false, ), ], values: [ [ Ident { expr: [ Symbol( "k", ), ], line: 316, }, Operator( ( "%", true, ), ), Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 316, column: 14, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "K", ), ], line: 317, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "nk", ), ], line: 317, }, ], ), Symbol( "]", ), ], line: 317, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 317, }, ], ), Symbol( "]", ), ], line: 316, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "x", ), ], line: 317, }, ], ), ( Some( [ Symbol( "k", ), ], ), [ Ident { expr: [ Symbol( "k", ), ], line: 317, }, ], ), ], line: 317, column: 21, }, ], ], line: 317, column: 22, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 317, }, ], values: [ [ Ident { expr: [ Symbol( "n", ), ], line: 317, }, ], ], line: 317, column: 26, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 317, }, ], values: [ [ Ident { expr: [ Symbol( "nk", ), ], line: 317, }, ], ], line: 317, column: 29, }, ], end: 1926, }, line: 318, column: 1, }, Ident { expr: [ Symbol( "GC", ), Call( [], ), ], line: 318, }, Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 320, }, ], ], line: 321, column: 0, }, Variable { names: [ ( "i", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 322, column: 0, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "n", ), ], line: 322, }, ], body: CodeBlock { start: 1940, code: [ Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "K", ), ], line: 322, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 322, }, ], ), Symbol( "]", ), ], line: 322, }, ], ), Symbol( "]", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 322, }, ], ), Symbol( "]", ), ], line: 322, }, ], ], line: 322, column: 17, }, Alter { names: [ Ident { expr: [ Symbol( "n", ), ], line: 322, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( "[", ), Expr( [ Symbol( "1", ), ], ), Symbol( "]", ), ], line: 322, }, ], ], line: 322, column: 24, }, Alter { names: [ Ident { expr: [ Symbol( "k", ), ], line: 322, }, ], values: [ [ Ident { expr: [ Symbol( "t", ), Symbol( ".", ), Symbol( "k", ), ], line: 322, }, ], ], line: 322, column: 30, }, Alter { names: [ Ident { expr: [ Symbol( "i", ), ], line: 322, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 322, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 322, column: 35, }, ], end: 1976, }, line: 322, column: 39, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "i", ), ], line: 323, }, Operator( ( "==", true, ), ), Symbol( "100", ), ], ], ), ], line: 322, }, Alter { names: [ Ident { expr: [ Symbol( "K", ), ], line: 323, }, ], values: [ [ Symbol( "nil", ), ], ], line: 324, column: 3, }, Ident { expr: [ Symbol( "GC", ), Call( [], ), ], line: 324, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 326, }, ], ], ), ], line: 326, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 325, }, DoBlock( CodeBlock { start: 1998, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 331, }, Variable { names: [ ( "u", false, ), ], values: [ [ Table { data: [], line: 332, column: 5, }, ], ], line: 333, column: 0, }, Variable { names: [ ( "s", false, ), ], values: [ [ Table { data: [], line: 333, column: 5, }, ], ], line: 333, column: 6, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 333, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'k'", ), ], ), ], line: 333, column: 15, }, ], ], ), ], line: 333, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 334, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "o", ], body: CodeBlock { start: 36, code: [ Variable { names: [ ( "i", false, ), ], values: [ [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "o", ), ], line: 335, }, ], ), Symbol( "]", ), ], line: 335, }, ], ], line: 335, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 336, }, ], ), Symbol( "]", ), ], line: 335, }, ], values: [ [ Symbol( "true", ), ], ], line: 336, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 337, }, Operator( ( "-", true, ), ), Symbol( "1", ), ], ), Symbol( "]", ), ], line: 337, }, ], ], ), ], line: 336, }, IfStatement { condition: [ Ident { expr: [ Symbol( "i", ), ], line: 338, }, Operator( ( "==", true, ), ), Symbol( "8", ), ], body: CodeBlock { start: 28, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"here\"", ), ], ], ), ], line: 338, }, ], end: 33, }, next: None, line: 338, column: 10, }, ], end: 70, }, line: 339, column: 1, }, ], ), ], line: 339, column: 2, }, ], ], ), ], line: 333, }, ForLoop { iter: "i", start: [ Symbol( "6", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 79, code: [ Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 342, column: 7, }, ], [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 342, }, ], ], ), ], line: 342, }, ], ], ), ], line: 342, }, ], ], line: 342, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 343, }, ], ), Symbol( "]", ), ], line: 342, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 343, }, ], ], line: 343, column: 6, }, ], end: 99, }, line: 344, column: 1, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), ], line: 346, }, ], ], ), ], line: 346, }, ], ], ), ], line: 344, }, ForLoop { iter: "i", start: [ Symbol( "8", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 114, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 347, }, ], ), Symbol( "]", ), ], line: 347, }, ], ], ), ], line: 347, }, ], end: 122, }, line: 347, column: 15, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "5", ), ], step: None, code: CodeBlock { start: 129, code: [ Variable { names: [ ( "n", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 350, column: 7, }, ], [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 350, }, ], ], ), ], line: 350, }, ], ], ), ], line: 350, }, ], ], line: 350, column: 13, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "n", ), ], line: 351, }, ], ), Symbol( "]", ), ], line: 350, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 351, }, ], ], line: 351, column: 6, }, ], end: 149, }, line: 352, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 352, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 159, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 355, }, ], ), Symbol( "]", ), ], line: 355, }, ], ], ), ], line: 355, }, ], end: 167, }, line: 355, column: 15, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 357, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 355, }, ], values: [ [ Symbol( "false", ), ], ], line: 357, column: 8, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 361, column: 4, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 186, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Table { data: [], line: 361, column: 3, }, ], ], ), ], line: 361, }, ], end: 190, }, line: 361, column: 15, }, ], ), ], line: 361, column: 16, }, ], ], ), ], line: 357, }, Variable { names: [ ( "a", false, ), ( "b", false, ), ], values: [ [ Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), ], line: 362, }, ], ], ), ], line: 362, }, ], ], line: 362, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "a", ), ], line: 363, }, Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "type", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 363, }, ], ], ), ], line: 363, }, Operator( ( "==", true, ), ), Symbol( "\"string\"", ), Operator( ( "and", true, ), ), Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "b", ), ], line: 363, }, ], [ Symbol( "\"error in __gc\"", ), ], ], ), ], line: 363, }, ], ], ), ], line: 362, }, ], end: 2221, }, ), Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'+'", ), ], ], ), ], line: 365, }, IfStatement { condition: [ Ident { expr: [ Symbol( "T", ), ], line: 370, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], body: CodeBlock { start: 2228, code: [ Expr( [ Ident { expr: [ Symbol( "Message", ), ], line: 371, }, Operator( ( "or", true, ), ), Ident { expr: [ Symbol( "print", ), ], line: 371, }, ], ), Ident { expr: [ Call( [ [ Symbol( "'\\a\\n >>> testC not active: skipping userdata GC tests <<<\\n\\a'", ), ], ], ), ], line: 371, }, ], end: 2237, }, next: Some( IfStatement { condition: [], body: CodeBlock { start: 2237, code: [ Function { local: true, name: [ Symbol( "newproxy", ), ], args: [ "u", ], body: CodeBlock { start: 6, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 376, }, ], [ Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 376, }, ], ], ), ], line: 376, }, ], ], ), ], line: 376, }, ], ], ), ), ], end: 26, }, line: 377, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 377, }, Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "newproxy", ), Call( [ [ Symbol( "nil", ), ], ], ), ], line: 380, }, ], ], line: 380, column: 7, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 381, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Symbol( "true", ), ], ), ], line: 381, column: 11, }, ], ], ), ], line: 380, }, Variable { names: [ ( "s", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 383, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( Some( [ Ident { expr: [ Symbol( "u", ), ], line: 383, }, ], ), [ Symbol( "0", ), ], ), ], line: 383, column: 10, }, ], ], line: 383, column: 11, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 383, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "'vk'", ), ], ), ], line: 383, column: 20, }, ], ], ), ], line: 383, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 81, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "newproxy", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 384, }, ], ], ), ], line: 384, }, ], ), Symbol( "]", ), ], line: 384, }, ], values: [ [ Ident { expr: [ Symbol( "i", ), ], line: 384, }, ], ], line: 384, column: 9, }, ], end: 91, }, line: 384, column: 17, }, ForFuncLoop { iters: [ "k", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 385, }, ], ], ), ], line: 385, }, ], stop: None, initial: None, code: CodeBlock { start: 99, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "k", ), ], line: 385, }, ], ], ), ], line: 385, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 385, }, ], ], ), ], line: 385, }, ], ], ), ], line: 385, }, ], end: 112, }, line: 385, column: 21, }, Variable { names: [ ( "a1", false, ), ], values: [ [ Table { data: [], line: 386, column: 5, }, ], ], line: 386, column: 6, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 386, }, ], ], ), ], line: 386, }, ], stop: None, initial: None, code: CodeBlock { start: 128, code: [ Alter { names: [ Ident { expr: [ Symbol( "a1", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "k", ), ], line: 386, }, ], ), Symbol( "]", ), ], line: 386, }, ], values: [ [ Ident { expr: [ Symbol( "v", ), ], line: 386, }, ], ], line: 386, column: 6, }, ], end: 135, }, line: 386, column: 23, }, ForFuncLoop { iters: [ "k", "v", ], expr: [ Ident { expr: [ Symbol( "pairs", ), Call( [ [ Ident { expr: [ Symbol( "a1", ), ], line: 387, }, ], ], ), ], line: 387, }, ], stop: None, initial: None, code: CodeBlock { start: 145, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "v", ), ], line: 387, }, ], ), Symbol( "]", ), ], line: 387, }, ], values: [ [ Ident { expr: [ Symbol( "k", ), ], line: 387, }, ], ], line: 387, column: 6, }, ], end: 152, }, line: 387, column: 17, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 159, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "i", ), ], line: 388, }, ], ), Symbol( "]", ), ], line: 388, }, ], ], ), ], line: 388, }, ], end: 167, }, line: 388, column: 15, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 389, }, ], ], ), Symbol( ".", ), Symbol( "a", ), ], line: 388, }, ], values: [ [ Ident { expr: [ Symbol( "a1", ), ], line: 389, }, ], ], line: 389, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 390, }, ], ], ), Symbol( ".", ), Symbol( "u", ), ], line: 389, }, ], values: [ [ Ident { expr: [ Symbol( "u", ), ], line: 390, }, ], ], line: 391, column: 0, }, DoBlock( CodeBlock { start: 184, code: [ Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "u", ), ], line: 392, }, ], ], line: 392, column: 4, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 393, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 392, }, ], values: [ [ Lambda { args: [ "o", ], body: CodeBlock { start: 15, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "o", ), ], line: 394, }, ], ), Symbol( "]", ), ], line: 394, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 394, }, ], ], ), ], line: 394, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "a", ), Symbol( "[", ), Expr( [ Symbol( "10", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 395, }, ], ), Symbol( "]", ), ], line: 395, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 394, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "o", ), ], line: 396, }, ], ], ), ], line: 396, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 396, }, ], ], ), ], line: 396, }, ], ], ), ], line: 395, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "o", ), ], line: 397, }, ], ], ), Symbol( ".", ), Symbol( "a", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "o", ), ], line: 397, }, ], ), Symbol( "]", ), ], line: 397, }, Operator( ( "==", true, ), ), Symbol( "10", ), Operator( ( "-", true, ), ), Ident { expr: [ Symbol( "s", ), ], line: 397, }, ], ], ), ], line: 396, }, Alter { names: [ Ident { expr: [ Symbol( "s", ), ], line: 397, }, ], values: [ [ Ident { expr: [ Symbol( "s", ), ], line: 398, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 398, column: 5, }, ], end: 71, }, line: 399, column: 1, }, ], ], line: 399, column: 1, }, ], end: 256, }, ), Alter { names: [ Ident { expr: [ Symbol( "a1", ), ], line: 400, }, Ident { expr: [ Symbol( "u", ), ], line: 401, }, ], values: [ [ Symbol( "nil", ), ], ], line: 401, column: 5, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 402, }, ], ], ), ], line: 402, }, Operator( ( "~=", true, ), ), Symbol( "nil", ), ], ], ), ], line: 401, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 402, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "s", ), ], line: 404, }, Operator( ( "==", true, ), ), Symbol( "11", ), ], ], ), ], line: 403, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 404, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "a", ), ], line: 406, }, ], ], ), ], line: 406, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 405, }, ], end: 2529, }, next: None, line: 407, column: 1, }, ), line: 407, column: 1, }, Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 411, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Symbol( "true", ), ], ), ], line: 411, column: 13, }, ], ], ), ], line: 411, }, ], ], line: 411, column: 14, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 413, }, ], ], ), ], line: 413, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "\"v\"", ), ], ), ], line: 413, column: 12, }, ], ], ), ], line: 411, }, Alter { names: [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 414, }, ], ], ), Symbol( ".", ), Symbol( "__gc", ), ], line: 413, }, ], values: [ [ Lambda { args: [ "o", ], body: CodeBlock { start: 2567, code: [ Ident { expr: [ Symbol( "os", ), Symbol( ".", ), Symbol( "exit", ), Call( [ [ Symbol( "1", ), ], ], ), ], line: 414, }, ], end: 2574, }, line: 414, column: 18, }, ], ], line: 414, column: 18, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 414, }, ], values: [ [ Symbol( "nil", ), ], ], line: 415, column: 3, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 415, }, Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 418, column: 7, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Symbol( "true", ), ], ), ], line: 418, column: 13, }, ], ], ), ], line: 418, }, ], ], line: 419, column: 0, }, Variable { names: [ ( "m", false, ), ], values: [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "u", ), ], line: 419, }, ], ], ), ], line: 419, }, ], ], line: 419, column: 7, }, Alter { names: [ Ident { expr: [ Symbol( "m", ), Symbol( ".", ), Symbol( "x", ), ], line: 419, }, ], values: [ [ Table { data: [ ( Some( [ Table { data: [ ( None, [ Symbol( "0", ), ], ), ], line: 420, column: 9, }, ], ), [ Symbol( "1", ), ], ), ( Some( [ Symbol( "0", ), ], ), [ Table { data: [ ( None, [ Symbol( "1", ), ], ), ], line: 420, column: 20, }, ], ), ], line: 420, column: 21, }, ], ], line: 420, column: 22, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "m", ), Symbol( ".", ), Symbol( "x", ), ], line: 420, }, ], [ Table { data: [ ( Some( [ Symbol( "__mode", ), ], ), [ Symbol( "\"kv\"", ), ], ), ], line: 420, column: 33, }, ], ], ), ], line: 420, }, Alter { names: [ Ident { expr: [ Symbol( "m", ), Symbol( ".", ), Symbol( "__gc", ), ], line: 420, }, ], values: [ [ Lambda { args: [ "o", ], body: CodeBlock { start: 2644, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "next", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "o", ), ], line: 422, }, ], ], ), Symbol( ".", ), Symbol( "x", ), ], line: 422, }, ], ], ), ], line: 422, }, Operator( ( "==", true, ), ), Symbol( "nil", ), ], ], ), ], line: 422, }, Alter { names: [ Ident { expr: [ Symbol( "m", ), ], line: 422, }, ], values: [ [ Symbol( "10", ), ], ], line: 423, column: 3, }, ], end: 2662, }, line: 424, column: 1, }, ], ], line: 424, column: 1, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 424, }, Ident { expr: [ Symbol( "m", ), ], line: 425, }, ], values: [ [ Symbol( "nil", ), ], ], line: 425, column: 5, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 425, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "m", ), ], line: 427, }, Operator( ( "==", true, ), ), Symbol( "10", ), ], ], ), ], line: 426, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 427, }, ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 431, column: 6, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [], body: CodeBlock { start: 2689, code: [ Ident { expr: [ Symbol( "error", ), Call( [ [ Symbol( "\"!!!\"", ), ], ], ), ], line: 431, }, ], end: 2692, }, line: 431, column: 16, }, ], ), ], line: 431, column: 17, }, ], ], ), ], line: 431, }, ], ], line: 431, column: 18, }, Alter { names: [ Ident { expr: [ Symbol( "u", ), ], line: 431, }, ], values: [ [ Symbol( "nil", ), ], ], line: 432, column: 3, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "pcall", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), ], line: 433, }, ], ], ), ], line: 433, }, ], ], ), ], line: 432, }, IfStatement { condition: [ Operator( ( "not", false, ), ), Ident { expr: [ Symbol( "_soft", ), ], line: 436, }, ], body: CodeBlock { start: 2709, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"deep structures\"", ), ], ], ), ], line: 437, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 438, column: 5, }, ], ], line: 439, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "200000", ), ], step: None, code: CodeBlock { start: 16, code: [ Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 440, }, ], values: [ [ Table { data: [ ( Some( [ Symbol( "next", ), ], ), [ Ident { expr: [ Symbol( "a", ), ], line: 440, }, ], ), ], line: 440, column: 7, }, ], ], line: 440, column: 7, }, ], end: 24, }, line: 441, column: 1, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 441, }, ], end: 2737, }, next: None, line: 443, column: 1, }, Variable { names: [ ( "thread_id", false, ), ], values: [ [ Symbol( "0", ), ], ], line: 447, column: 0, }, Variable { names: [ ( "threads", false, ), ], values: [ [ Table { data: [], line: 447, column: 5, }, ], ], line: 449, column: 0, }, Function { local: true, name: [ Symbol( "fn", ), ], args: [ "thread", ], body: CodeBlock { start: 2752, code: [ Variable { names: [ ( "x", false, ), ], values: [ [ Table { data: [], line: 450, column: 5, }, ], ], line: 450, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "threads", ), Symbol( "[", ), Expr( [ Ident { expr: [ Symbol( "thread_id", ), ], line: 451, }, ], ), Symbol( "]", ), ], line: 450, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 13, code: [ Alter { names: [ Ident { expr: [ Symbol( "thread", ), ], line: 452, }, ], values: [ [ Ident { expr: [ Symbol( "x", ), ], line: 452, }, ], ], line: 452, column: 3, }, ], end: 17, }, line: 453, column: 1, }, ], ], line: 453, column: 1, }, Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "yield", ), Call( [], ), ], line: 453, }, ], end: 2775, }, line: 455, column: 1, }, WhileLoop { condition: [ Ident { expr: [ Symbol( "thread_id", ), ], line: 457, }, Operator( ( "<", true, ), ), Symbol( "1000", ), ], body: CodeBlock { start: 2780, code: [ Variable { names: [ ( "thread", false, ), ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "create", ), Call( [ [ Ident { expr: [ Symbol( "fn", ), ], line: 458, }, ], ], ), ], line: 458, }, ], ], line: 458, column: 9, }, Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "resume", ), Call( [ [ Ident { expr: [ Symbol( "thread", ), ], line: 459, }, ], [ Ident { expr: [ Symbol( "thread", ), ], line: 459, }, ], ], ), ], line: 458, }, Alter { names: [ Ident { expr: [ Symbol( "thread_id", ), ], line: 459, }, ], values: [ [ Ident { expr: [ Symbol( "thread_id", ), ], line: 460, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], line: 460, column: 5, }, ], end: 2803, }, line: 461, column: 1, }, DoBlock( CodeBlock { start: 2804, code: [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 464, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 464, }, Variable { names: [ ( "x", false, ), ], values: [ [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 466, }, ], ], line: 467, column: 0, }, RepeatLoop { condition: [ Ident { expr: [ Symbol( "gcinfo", ), Call( [], ), ], line: 470, }, Operator( ( ">", true, ), ), Symbol( "2", ), Operator( ( "*", true, ), ), Ident { expr: [ Symbol( "x", ), ], line: 470, }, ], body: CodeBlock { start: 12, code: [ ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "1000", ), ], step: None, code: CodeBlock { start: 7, code: [ Alter { names: [ Ident { expr: [ Symbol( "_ENV", ), Symbol( ".", ), Symbol( "a", ), ], line: 468, }, ], values: [ [ Table { data: [], line: 468, column: 6, }, ], ], line: 468, column: 6, }, ], end: 14, }, line: 468, column: 14, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"step\"", ), ], [ Symbol( "1", ), ], ], ), ], line: 468, }, ], end: 33, }, line: 470, column: 8, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 470, }, ], end: 2847, }, ), IfStatement { condition: [ Ident { expr: [ Symbol( "T", ), ], line: 475, }, ], body: CodeBlock { start: 2850, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "1200", ), ], ], line: 477, column: 0, }, Variable { names: [ ( "f", false, ), ], values: [ [ Lambda { args: [], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 477, }, ], ], ), ), ], end: 13, }, line: 477, column: 9, }, ], ], line: 477, column: 9, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 478, }, Operator( ( "==", true, ), ), Symbol( "1200", ), ], ], ), ], line: 477, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"pause\"", ), ], ], ), ], line: 478, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 481, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 481, }, ], values: [ [ Symbol( "nil", ), ], ], line: 482, column: 3, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"sweepstring\"", ), ], ], ), ], line: 482, }, Alter { names: [ Ident { expr: [ Symbol( "f", ), ], line: 483, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 46, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "a", ), ], line: 486, }, ], ], ), ), ], end: 49, }, line: 486, column: 8, }, ], ], line: 486, column: 8, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 487, }, Operator( ( "==", true, ), ), Symbol( "1200", ), ], ], ), ], line: 486, }, Variable { names: [ ( "co", false, ), ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "wrap", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 67, code: [ Variable { names: [ ( "b", false, ), ], values: [ [ Symbol( "150", ), ], ], line: 491, column: 4, }, Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "yield", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 11, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "b", ), ], line: 492, }, ], ], ), ), ], end: 14, }, line: 492, column: 10, }, ], ], ), ], line: 491, }, ], end: 83, }, line: 493, column: 1, }, ], ], ), ], line: 490, }, ], ], line: 493, column: 2, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"pause\"", ), ], ], ), ], line: 493, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "co", ), Call( [], ), Call( [], ), ], line: 496, }, Operator( ( "==", true, ), ), Symbol( "150", ), ], ], ), ], line: 495, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"sweepstring\"", ), ], ], ), ], line: 496, }, Ident { expr: [ Symbol( "co", ), Call( [], ), ], line: 499, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "f", ), Call( [], ), ], line: 503, }, Operator( ( "==", true, ), ), Symbol( "1200", ), ], ], ), ], line: 501, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 503, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"+\"", ), ], ], ), ], line: 504, }, ], end: 2974, }, next: None, line: 507, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "T", ), ], line: 510, }, ], body: CodeBlock { start: 2977, code: [ Variable { names: [ ( "debug", false, ), ], values: [ [ Ident { expr: [ Symbol( "require", ), Call( [ [ Symbol( "\"debug\"", ), ], ], ), ], line: 511, }, ], ], line: 511, column: 5, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"generational\"", ), ], ], ), ], line: 511, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"stop\"", ), ], ], ), ], line: 512, }, Alter { names: [ Ident { expr: [ Symbol( "x", ), ], line: 512, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 513, }, ], ], line: 513, column: 8, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"propagate\"", ), ], ], ), ], line: 513, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"sweepstring\"", ), ], ], ), ], line: 514, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gcstate", ), Call( [ [ Symbol( "\"propagate\"", ), ], ], ), ], line: 515, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gccolor", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 517, }, ], ], ), ], line: 517, }, ], [ Symbol( "\"/old\"", ), ], ], ), ], line: 517, }, ], ], ), ], line: 516, }, Variable { names: [ ( "y", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "newuserdata", ), Call( [ [ Symbol( "0", ), ], ], ), ], line: 518, }, ], ], line: 518, column: 9, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 519, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Symbol( "true", ), ], ), ], line: 519, column: 11, }, ], ], ), ], line: 518, }, Ident { expr: [ Symbol( "debug", ), Symbol( ".", ), Symbol( "setmetatable", ), Call( [ [ Ident { expr: [ Symbol( "x", ), ], line: 520, }, ], [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Symbol( "true", ), ], ), ], line: 520, column: 11, }, ], ], ), ], line: 519, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "string", ), Symbol( ".", ), Symbol( "find", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "gccolor", ), Call( [ [ Ident { expr: [ Symbol( "y", ), ], line: 521, }, ], ], ), ], line: 521, }, ], [ Symbol( "\"white\"", ), ], ], ), ], line: 521, }, ], ], ), ], line: 520, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "checkmemory", ), Call( [], ), ], line: 521, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"incremental\"", ), ], ], ), ], line: 522, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "\"restart\"", ), ], ], ), ], line: 523, }, ], end: 3097, }, next: None, line: 524, column: 1, }, IfStatement { condition: [ Ident { expr: [ Symbol( "T", ), ], line: 527, }, ], body: CodeBlock { start: 3100, code: [ Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\"emergency collections\"", ), ], ], ), ], line: 528, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 528, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 529, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [], ), ], line: 531, }, Operator( ( "+", true, ), ), Symbol( "200", ), ], ], ), ], line: 530, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "200", ), ], step: None, code: CodeBlock { start: 29, code: [ Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [], line: 532, column: 5, }, ], ], line: 532, column: 5, }, ], end: 35, }, line: 532, column: 13, }, Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "1000000000", ), ], ], ), ], line: 532, }, Ident { expr: [ Symbol( "collectgarbage", ), Call( [], ), ], line: 533, }, Variable { names: [ ( "t", false, ), ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"table\"", ), ], ], ), ], line: 535, }, ], ], line: 536, column: 0, }, Variable { names: [ ( "a", false, ), ], values: [ [ Table { data: [ ( None, [ Table { data: [], line: 536, column: 6, }, ], ), ( None, [ Table { data: [], line: 536, column: 9, }, ], ), ( None, [ Table { data: [], line: 536, column: 12, }, ], ), ], line: 536, column: 13, }, ], ], line: 536, column: 13, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"table\"", ), ], ], ), ], line: 537, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 537, }, Operator( ( "+", true, ), ), Symbol( "4", ), ], ], ), ], line: 536, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 537, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"function\"", ), ], ], ), ], line: 538, }, ], ], line: 538, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 538, }, ], values: [ [ Lambda { args: [], body: CodeBlock { start: 92, code: [], end: 93, }, line: 539, column: 6, }, ], ], line: 539, column: 6, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"function\"", ), ], ], ), ], line: 540, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 540, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 539, }, Alter { names: [ Ident { expr: [ Symbol( "t", ), ], line: 540, }, ], values: [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"thread\"", ), ], ], ), ], line: 541, }, ], ], line: 541, column: 8, }, Alter { names: [ Ident { expr: [ Symbol( "a", ), ], line: 541, }, ], values: [ [ Ident { expr: [ Symbol( "coroutine", ), Symbol( ".", ), Symbol( "create", ), Call( [ [ Lambda { args: [], body: CodeBlock { start: 123, code: [], end: 124, }, line: 542, column: 10, }, ], ], ), ], line: 542, }, ], ], line: 542, column: 11, }, Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "T", ), Symbol( ".", ), Symbol( "totalmem", ), Call( [ [ Symbol( "\"thread\"", ), ], ], ), ], line: 543, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "t", ), ], line: 543, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ], line: 542, }, ], end: 3239, }, next: None, line: 544, column: 1, }, DoBlock( CodeBlock { start: 3240, code: [ Variable { names: [ ( "setmetatable", false, ), ( "assert", false, ), ( "type", false, ), ( "print", false, ), ( "getmetatable", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), ], line: 548, }, ], [ Ident { expr: [ Symbol( "assert", ), ], line: 549, }, ], [ Ident { expr: [ Symbol( "type", ), ], line: 549, }, ], [ Ident { expr: [ Symbol( "print", ), ], line: 549, }, ], [ Ident { expr: [ Symbol( "getmetatable", ), ], line: 549, }, ], ], line: 550, column: 0, }, Variable { names: [ ( "tt", false, ), ], values: [ [ Table { data: [], line: 550, column: 5, }, ], ], line: 550, column: 5, }, Alter { names: [ Ident { expr: [ Symbol( "tt", ), Symbol( ".", ), Symbol( "__gc", ), ], line: 550, }, ], values: [ [ Lambda { args: [ "o", ], body: CodeBlock { start: 33, code: [ Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "getmetatable", ), Call( [ [ Ident { expr: [ Symbol( "o", ), ], line: 552, }, ], ], ), ], line: 552, }, Operator( ( "==", true, ), ), Ident { expr: [ Symbol( "tt", ), ], line: 552, }, ], ], ), ], line: 552, }, Variable { names: [ ( "a", false, ), ], values: [ [ Symbol( "'xuxu'", ), Operator( ( "..", true, ), ), Expr( [ Symbol( "10", ), Operator( ( "+", true, ), ), Symbol( "3", ), ], ), Ident { expr: [], line: 554, }, Operator( ( "..", true, ), ), Symbol( "'joao'", ), ], [ Table { data: [], line: 554, column: 15, }, ], ], line: 554, column: 15, }, Alter { names: [ Ident { expr: [ Symbol( "___Glob", ), ], line: 554, }, ], values: [ [ Ident { expr: [ Symbol( "o", ), ], line: 555, }, ], ], line: 555, column: 3, }, Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 556, column: 4, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 556, }, ], ], ), ], line: 555, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "\">>> closing state \"", ), Operator( ( "..", true, ), ), Symbol( "\"<<<\\n\"", ), ], ], ), ], line: 556, }, ], end: 74, }, line: 558, column: 1, }, ], ], line: 559, column: 0, }, Variable { names: [ ( "u", false, ), ], values: [ [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 559, column: 7, }, ], [ Ident { expr: [ Symbol( "tt", ), ], line: 559, }, ], ], ), ], line: 559, }, ], ], line: 559, column: 10, }, Alter { names: [ Ident { expr: [ Symbol( "___Glob", ), ], line: 559, }, ], values: [ [ Table { data: [ ( None, [ Ident { expr: [ Symbol( "u", ), ], line: 560, }, ], ), ], line: 560, column: 5, }, ], ], line: 560, column: 5, }, ], end: 3330, }, ), DoBlock( CodeBlock { start: 3331, code: [ Variable { names: [ ( "mt", false, ), ], values: [ [ Table { data: [ ( Some( [ Symbol( "__gc", ), ], ), [ Lambda { args: [ "o", ], body: CodeBlock { start: 10, code: [ Return( Some( [ [ Ident { expr: [ Symbol( "o", ), ], line: 565, }, Operator( ( "+", true, ), ), Symbol( "1", ), ], ], ), ), ], end: 15, }, line: 565, column: 15, }, ], ), ], line: 565, column: 16, }, ], ], line: 566, column: 0, }, ForLoop { iter: "i", start: [ Symbol( "1", ), ], end: [ Symbol( "10", ), ], step: None, code: CodeBlock { start: 23, code: [ Ident { expr: [ Symbol( "table", ), Symbol( ".", ), Symbol( "insert", ), Call( [ [ Ident { expr: [ Symbol( "___Glob", ), ], line: 568, }, ], [ Ident { expr: [ Symbol( "setmetatable", ), Call( [ [ Table { data: [], line: 568, column: 10, }, ], [ Ident { expr: [ Symbol( "mt", ), ], line: 568, }, ], ], ), ], line: 568, }, ], ], ), ], line: 568, }, ], end: 38, }, line: 569, column: 1, }, ], end: 3370, }, ), Ident { expr: [ Symbol( "assert", ), Call( [ [ Ident { expr: [ Symbol( "collectgarbage", ), Call( [ [ Symbol( "'isrunning'", ), ], ], ), ], line: 573, }, ], ], ), ], line: 570, }, Ident { expr: [ Symbol( "print", ), Call( [ [ Symbol( "'OK'", ), ], ], ), ], line: 573, }, ]