Program (script) @3:1
├─ FunctionDeclaration "outer" [direct-eval] [uses-this] [might-need-arguments] @3:1
│  └─ body
│     └─ FunctionBody @4:5
│        ├─ VariableDeclaration (let) @4:5
│        │  └─ VariableDeclarator @4:5
│        │     ├─ Identifier "a" (let) @4:9
│        │     └─ NumericLiteral 1 @4:13
│        ├─ VariableDeclaration (let) @5:5
│        │  └─ VariableDeclarator @5:5
│        │     ├─ Identifier "b" (let) @5:9
│        │     └─ NumericLiteral 2 @5:13
│        ├─ ExpressionStatement @6:5
│        │  └─ CallExpression @6:9
│        │     ├─ Identifier "eval" [in-eval-scope] @6:5
│        │     └─ StringLiteral "" @6:12
│        └─ ReturnStatement @7:5
│           └─ BinaryExpression (+) @7:14
│              ├─ Identifier "a" (let) @7:12
│              └─ Identifier "b" (let) @7:16
├─ FunctionDeclaration "block_eval" [direct-eval] [uses-this] [might-need-arguments] @11:1
│  └─ body
│     └─ FunctionBody @12:5
│        ├─ VariableDeclaration (let) @12:5
│        │  └─ VariableDeclarator @12:5
│        │     ├─ Identifier "x" (let) @12:9
│        │     └─ NumericLiteral 1 @12:13
│        ├─ BlockStatement @13:5
│        │  └─ ExpressionStatement @14:9
│        │     └─ CallExpression @14:13
│        │        ├─ Identifier "eval" [in-eval-scope] @14:9
│        │        └─ StringLiteral "" @14:16
│        └─ ReturnStatement @16:5
│           └─ Identifier "x" (let) @16:12
└─ FunctionDeclaration "outer_safe" [uses-this] @20:1
   └─ body
      └─ FunctionBody @21:5
         ├─ VariableDeclaration (let) @21:5
         │  └─ VariableDeclarator @21:5
         │     ├─ Identifier "clean" (let) @21:9
         │     └─ NumericLiteral 1 @21:17
         ├─ FunctionDeclaration "inner" [direct-eval] [uses-this] [might-need-arguments] @22:5
         │  └─ body
         │     └─ FunctionBody @23:9
         │        └─ ExpressionStatement @23:9
         │           └─ CallExpression @23:13
         │              ├─ Identifier "eval" [in-eval-scope] @23:9
         │              └─ StringLiteral "" @23:16
         └─ ReturnStatement @25:5
            └─ Identifier "clean" (let) @25:12
