Program (script) @2:1 ├─ FunctionDeclaration "indirect_eval" [might-need-arguments] @2:1 │ └─ body │ └─ FunctionBody @3:5 │ ├─ VariableDeclaration (let) @3:5 │ │ └─ VariableDeclarator @3:5 │ │ ├─ Identifier "x" [variable:0] (let) @3:9 │ │ └─ NumericLiteral 1 @3:13 │ ├─ ExpressionStatement @4:5 │ │ └─ CallExpression @4:14 │ │ ├─ SequenceExpression @4:6 │ │ │ ├─ NumericLiteral 0 @4:6 │ │ │ └─ Identifier "eval" [global] @4:9 │ │ └─ StringLiteral "x" @4:18 │ └─ ReturnStatement @5:5 │ └─ Identifier "x" [variable:0] (let) @5:12 ├─ FunctionDeclaration "eval_alias" [might-need-arguments] @9:1 │ └─ body │ └─ FunctionBody @10:5 │ ├─ VariableDeclaration (let) @10:5 │ │ └─ VariableDeclarator @10:5 │ │ ├─ Identifier "x" [variable:0] (let) @10:9 │ │ └─ NumericLiteral 1 @10:13 │ ├─ VariableDeclaration (var) @11:5 │ │ └─ VariableDeclarator @11:5 │ │ ├─ Identifier "e" [variable:1] (var) @11:9 │ │ └─ Identifier "eval" [global] @11:13 │ ├─ ExpressionStatement @12:5 │ │ └─ CallExpression @12:6 │ │ ├─ Identifier "e" [variable:1] (var) @12:5 │ │ └─ StringLiteral "x" @12:10 │ └─ ReturnStatement @13:5 │ └─ Identifier "x" [variable:0] (let) @13:12 ├─ FunctionDeclaration "eval_method" @17:1 │ └─ body │ └─ FunctionBody @18:5 │ ├─ VariableDeclaration (let) @18:5 │ │ └─ VariableDeclarator @18:5 │ │ ├─ Identifier "x" [variable:0] (let) @18:9 │ │ └─ NumericLiteral 1 @18:13 │ ├─ VariableDeclaration (var) @19:5 │ │ └─ VariableDeclarator @19:5 │ │ ├─ Identifier "obj" [variable:1] (var) @19:9 │ │ └─ ObjectExpression @19:15 │ │ └─ ObjectProperty @19:15 │ │ ├─ StringLiteral "eval" @19:17 │ │ └─ Identifier "eval" [global] @19:15 │ ├─ ExpressionStatement @20:5 │ │ └─ CallExpression @20:13 │ │ ├─ MemberExpression @20:8 │ │ │ ├─ Identifier "obj" [variable:1] (var) @20:5 │ │ │ └─ Identifier "eval" @20:9 │ │ └─ StringLiteral "x" @20:17 │ └─ ReturnStatement @21:5 │ └─ Identifier "x" [variable:0] (let) @21:12 └─ FunctionDeclaration "local_eval_name" [direct-eval] [uses-this] [might-need-arguments] @25:1 └─ body └─ FunctionBody @26:5 ├─ VariableDeclaration (let) @26:5 │ └─ VariableDeclarator @26:5 │ ├─ Identifier "x" (let) @26:9 │ └─ NumericLiteral 1 @26:13 ├─ VariableDeclaration (let) @27:5 │ └─ VariableDeclarator @27:5 │ ├─ Identifier "eval" (let) @27:9 │ └─ FunctionExpression "" [arrow] @27:16 │ ├─ parameters │ │ └─ Identifier "s" [argument:0] @27:16 │ └─ body │ └─ FunctionBody @27:16 │ └─ ReturnStatement @27:16 │ └─ Identifier "s" [argument:0] @27:21 ├─ ExpressionStatement @28:5 │ └─ CallExpression @28:9 │ ├─ Identifier "eval" (let) @28:5 │ └─ StringLiteral "x" @28:13 └─ ReturnStatement @29:5 └─ Identifier "x" (let) @29:12