Program (script) @1:1 └─ FunctionDeclaration "f" @1:1 ├─ parameters │ └─ Identifier "x" [argument:0] @1:12 └─ body └─ FunctionBody @2:5 ├─ VariableDeclaration (let) @2:5 │ └─ VariableDeclarator @2:5 │ ├─ Identifier "a" [variable:0] (let) @2:9 │ └─ BinaryExpression (**) @2:19 │ ├─ UpdateExpression (++, prefix) @2:14 │ │ └─ Identifier "x" [argument:0] @2:16 │ └─ NumericLiteral 2 @2:22 ├─ VariableDeclaration (let) @3:5 │ └─ VariableDeclarator @3:5 │ ├─ Identifier "b" [variable:1] (let) @3:9 │ └─ BinaryExpression (**) @3:19 │ ├─ UpdateExpression (--, prefix) @3:14 │ │ └─ Identifier "x" [argument:0] @3:16 │ └─ NumericLiteral 2 @3:22 ├─ VariableDeclaration (let) @4:5 │ └─ VariableDeclarator @4:5 │ ├─ Identifier "c" [variable:2] (let) @4:9 │ └─ BinaryExpression (**) @4:19 │ ├─ UpdateExpression (++, prefix) @4:14 │ │ └─ Identifier "x" [argument:0] @4:16 │ └─ NumericLiteral 2 @4:22 └─ ReturnStatement @5:5 └─ BinaryExpression (+) @5:18 ├─ BinaryExpression (+) @5:14 │ ├─ Identifier "a" [variable:0] (let) @5:12 │ └─ Identifier "b" [variable:1] (let) @5:16 └─ Identifier "c" [variable:2] (let) @5:20