Program (script) @1:1
├─ FunctionDeclaration "foo" @1:1
│  ├─ parameters
│  │  ├─ Identifier "a" [argument:0] @1:14
│  │  └─ Identifier "b" [argument:1] @1:14
│  └─ body
│     └─ FunctionBody @2:5
│        ├─ VariableDeclaration (let) @2:5
│        │  └─ VariableDeclarator @2:5
│        │     ├─ Identifier "c" [variable:0] (let) @2:9
│        │     └─ BinaryExpression (+) @2:15
│        │        ├─ Identifier "a" [argument:0] @2:13
│        │        └─ Identifier "b" [argument:1] @2:17
│        └─ ReturnStatement @3:5
│           └─ Identifier "c" [variable:0] (let) @3:12
├─ VariableDeclaration (var) @6:1
│  └─ VariableDeclarator @6:1
│     ├─ Identifier "x" [global] (var) @6:5
│     └─ CallExpression @6:12
│        ├─ Identifier "foo" [global] @6:9
│        ├─ NumericLiteral 1 @6:13
│        └─ NumericLiteral 2 @6:16
└─ ExpressionStatement @7:1
   └─ CallExpression @7:12
      ├─ MemberExpression @7:8
      │  ├─ Identifier "console" [global] @7:1
      │  └─ Identifier "log" @7:9
      └─ Identifier "x" [global] (var) @7:13
