Program (script) @2:1
├─ FunctionDeclaration "captured_by_closure" @2:1
│  ├─ parameters
│  │  └─ BindingPattern (object)
│  │     └─ entry
│  │        └─ name
│  │           └─ Identifier "x" @2:32
│  └─ body
│     └─ FunctionBody @3:5
│        └─ ReturnStatement @3:5
│           └─ FunctionExpression "" @3:12
│              └─ body
│                 └─ FunctionBody @4:9
│                    └─ ReturnStatement @4:9
│                       └─ Identifier "x" @4:16
├─ FunctionDeclaration "eval_defeats" [direct-eval] [uses-this] [might-need-arguments] @9:1
│  ├─ parameters
│  │  └─ BindingPattern (object)
│  │     ├─ entry
│  │     │  └─ name
│  │     │     └─ Identifier "a" @9:25
│  │     └─ entry
│  │        └─ name
│  │           └─ Identifier "b" @9:28
│  └─ body
│     └─ FunctionBody @10:5
│        ├─ ExpressionStatement @10:5
│        │  └─ CallExpression @10:9
│        │     ├─ Identifier "eval" [in-eval-scope] @10:5
│        │     └─ StringLiteral "" @10:12
│        └─ ReturnStatement @11:5
│           └─ BinaryExpression (+) @11:14
│              ├─ Identifier "a" @11:12
│              └─ Identifier "b" @11:16
├─ FunctionDeclaration "with_defeats" @15:1
│  ├─ parameters
│  │  ├─ BindingPattern (object)
│  │  │  └─ entry
│  │  │     └─ name
│  │  │        └─ Identifier "x" @15:25
│  │  └─ Identifier "obj" [argument:1] @15:23
│  └─ body
│     └─ FunctionBody @16:5
│        └─ WithStatement @16:5
│           ├─ object
│           │  └─ Identifier "obj" [argument:1] @16:11
│           └─ body
│              └─ BlockStatement @16:16
│                 └─ ReturnStatement @17:9
│                    └─ Identifier "x" @17:16
├─ FunctionDeclaration "arguments_access" [might-need-arguments] @22:1
│  ├─ parameters
│  │  └─ BindingPattern (object)
│  │     └─ entry
│  │        └─ name
│  │           └─ Identifier "x" @22:29
│  └─ body
│     └─ FunctionBody @23:5
│        └─ ReturnStatement @23:5
│           └─ MemberExpression [computed] @23:21
│              ├─ Identifier "arguments" [variable:0] @23:12
│              └─ NumericLiteral 0 @23:22
└─ FunctionDeclaration "mixed_no_defeat" @28:1
   ├─ parameters
   │  ├─ Identifier "first" [argument:0] @28:26
   │  └─ BindingPattern (array)
   │     ├─ entry
   │     │  └─ alias
   │     │     └─ Identifier "a" [variable:0] @28:34
   │     └─ entry
   │        └─ alias
   │           └─ Identifier "b" [variable:1] @28:37
   └─ body
      └─ FunctionBody @29:5
         └─ ReturnStatement @29:5
            └─ BinaryExpression (+) @29:22
               ├─ BinaryExpression (+) @29:18
               │  ├─ Identifier "first" [argument:0] @29:12
               │  └─ Identifier "a" [variable:0] @29:20
               └─ Identifier "b" [variable:1] @29:24
