Program (script) @1:1
├─ FunctionDeclaration "with_basic" @1:1
│  ├─ parameters
│  │  └─ Identifier "obj" [argument:0] @1:21
│  └─ body
│     └─ FunctionBody @2:5
│        └─ WithStatement @2:5
│           ├─ object
│           │  └─ Identifier "obj" [argument:0] @2:11
│           └─ body
│              └─ BlockStatement @2:16
│                 └─ ReturnStatement @3:9
│                    └─ Identifier "x" @3:16
├─ FunctionDeclaration "with_and_local" @7:1
│  ├─ parameters
│  │  └─ Identifier "obj" [argument:0] @7:25
│  └─ body
│     └─ FunctionBody @8:5
│        ├─ VariableDeclaration (let) @8:5
│        │  └─ VariableDeclarator @8:5
│        │     ├─ Identifier "y" (let) @8:9
│        │     └─ NumericLiteral 1 @8:13
│        └─ WithStatement @9:5
│           ├─ object
│           │  └─ Identifier "obj" [argument:0] @9:11
│           └─ body
│              └─ BlockStatement @9:16
│                 └─ ReturnStatement @10:9
│                    └─ BinaryExpression (+) @10:18
│                       ├─ Identifier "x" @10:16
│                       └─ Identifier "y" (let) @10:20
└─ FunctionDeclaration "with_nested_function" @14:1
   ├─ parameters
   │  └─ Identifier "obj" [argument:0] @14:31
   └─ body
      └─ FunctionBody @15:5
         └─ WithStatement @15:5
            ├─ object
            │  └─ Identifier "obj" [argument:0] @15:11
            └─ body
               └─ BlockStatement @15:16
                  ├─ FunctionDeclaration "inner" @16:9
                  │  └─ body
                  │     └─ FunctionBody @17:13
                  │        ├─ VariableDeclaration (let) @17:13
                  │        │  └─ VariableDeclarator @17:13
                  │        │     ├─ Identifier "z" [variable:0] (let) @17:17
                  │        │     └─ NumericLiteral 2 @17:21
                  │        └─ ReturnStatement @18:13
                  │           └─ Identifier "z" [variable:0] (let) @18:20
                  └─ ReturnStatement @20:9
                     └─ CallExpression @20:21
                        └─ Identifier "inner" @20:16
