Program (script) @3:1 ├─ FunctionDeclaration "outer" [uses-this] [uses-this-from-environment] [might-need-arguments] @3:1 │ └─ body │ └─ FunctionBody @4:5 │ ├─ VariableDeclaration (let) @4:5 │ │ └─ VariableDeclarator @4:5 │ │ ├─ Identifier "x" (let) @4:9 │ │ └─ NumericLiteral 1 @4:13 │ ├─ VariableDeclaration (let) @5:5 │ │ └─ VariableDeclarator @5:5 │ │ ├─ Identifier "f" (let) @5:9 │ │ └─ FunctionExpression "" [arrow] [direct-eval] [uses-this] [uses-this-from-environment] @5:13 │ │ └─ body │ │ └─ FunctionBody @6:9 │ │ ├─ ExpressionStatement @6:9 │ │ │ └─ CallExpression @6:13 │ │ │ ├─ Identifier "eval" [in-eval-scope] @6:9 │ │ │ └─ StringLiteral "" @6:16 │ │ └─ ReturnStatement @7:9 │ │ └─ Identifier "x" (let) [in-eval-scope] @7:16 │ └─ ReturnStatement @9:5 │ └─ CallExpression @9:13 │ └─ Identifier "f" (let) @9:12 ├─ FunctionDeclaration "deep_arrow" [uses-this] [uses-this-from-environment] [might-need-arguments] @13:1 │ └─ body │ └─ FunctionBody @14:5 │ ├─ VariableDeclaration (let) @14:5 │ │ └─ VariableDeclarator @14:5 │ │ ├─ Identifier "a" (let) @14:9 │ │ └─ NumericLiteral 1 @14:13 │ ├─ VariableDeclaration (let) @15:5 │ │ └─ VariableDeclarator @15:5 │ │ ├─ Identifier "f" (let) @15:9 │ │ └─ FunctionExpression "" [arrow] [uses-this] [uses-this-from-environment] @15:13 │ │ └─ body │ │ └─ FunctionBody @16:9 │ │ ├─ VariableDeclaration (let) @16:9 │ │ │ └─ VariableDeclarator @16:9 │ │ │ ├─ Identifier "b" (let) @16:13 │ │ │ └─ NumericLiteral 2 @16:17 │ │ ├─ VariableDeclaration (let) @17:9 │ │ │ └─ VariableDeclarator @17:9 │ │ │ ├─ Identifier "g" (let) @17:13 │ │ │ └─ FunctionExpression "" [arrow] [direct-eval] [uses-this] [uses-this-from-environment] @17:17 │ │ │ └─ body │ │ │ └─ FunctionBody @18:13 │ │ │ ├─ ExpressionStatement @18:13 │ │ │ │ └─ CallExpression @18:17 │ │ │ │ ├─ Identifier "eval" [in-eval-scope] @18:13 │ │ │ │ └─ StringLiteral "" @18:20 │ │ │ └─ ReturnStatement @19:13 │ │ │ └─ BinaryExpression (+) @19:22 │ │ │ ├─ Identifier "a" (let) [in-eval-scope] @19:20 │ │ │ └─ Identifier "b" (let) [in-eval-scope] @19:24 │ │ └─ ReturnStatement @21:9 │ │ └─ CallExpression @21:17 │ │ └─ Identifier "g" (let) @21:16 │ └─ ReturnStatement @23:5 │ └─ CallExpression @23:13 │ └─ Identifier "f" (let) @23:12 └─ FunctionDeclaration "sibling" [uses-this] [uses-this-from-environment] [might-need-arguments] @27:1 └─ body └─ FunctionBody @28:5 ├─ VariableDeclaration (let) @28:5 │ └─ VariableDeclarator @28:5 │ ├─ Identifier "s" (let) @28:9 │ └─ NumericLiteral 1 @28:13 ├─ VariableDeclaration (let) @29:5 │ └─ VariableDeclarator @29:5 │ ├─ Identifier "poison" (let) @29:9 │ └─ FunctionExpression "" [arrow] [direct-eval] [uses-this-from-environment] @29:18 │ └─ body │ └─ FunctionBody @29:18 │ └─ ReturnStatement @29:18 │ └─ CallExpression @29:28 │ ├─ Identifier "eval" [in-eval-scope] @29:24 │ └─ StringLiteral "" @29:31 ├─ FunctionDeclaration "clean" @30:5 │ └─ body │ └─ FunctionBody @31:9 │ └─ ReturnStatement @31:9 │ └─ Identifier "s" (let) @31:16 └─ ReturnStatement @33:5 └─ CallExpression @33:17 └─ Identifier "clean" @33:12