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
