Program (script) @2:1
├─ FunctionDeclaration "for_expression_init" @2:1
│  └─ body
│     └─ FunctionBody @3:5
│        └─ ForStatement @3:5
│           ├─ init
│           │  └─ AssignmentExpression (=) @3:12
│           │     ├─ Identifier "x" [global] @3:10
│           │     └─ NumericLiteral 0 @3:14
│           ├─ test
│           │  └─ BinaryExpression (<) @3:19
│           │     ├─ Identifier "x" [global] @3:17
│           │     └─ NumericLiteral 10 @3:21
│           ├─ update
│           │  └─ UpdateExpression (++, postfix) @3:26
│           │     └─ Identifier "x" [global] @3:25
│           └─ body
│              └─ BlockStatement @3:30
├─ FunctionDeclaration "for_declaration_init" @7:1
│  └─ body
│     └─ FunctionBody @8:5
│        └─ ForStatement @8:5
│           ├─ init
│           │  └─ VariableDeclaration (var) @8:10
│           │     └─ VariableDeclarator @8:10
│           │        ├─ Identifier "i" [variable:0] (var) @8:14
│           │        └─ NumericLiteral 0 @8:18
│           ├─ test
│           │  └─ BinaryExpression (<) @8:23
│           │     ├─ Identifier "i" [variable:0] (var) @8:21
│           │     └─ NumericLiteral 10 @8:25
│           ├─ update
│           │  └─ UpdateExpression (++, postfix) @8:30
│           │     └─ Identifier "i" [variable:0] (var) @8:29
│           └─ body
│              └─ BlockStatement @8:34
├─ FunctionDeclaration "for_let_init" @12:1
│  └─ body
│     └─ FunctionBody @13:5
│        └─ ForStatement @13:5
│           ├─ init
│           │  └─ VariableDeclaration (let) @13:10
│           │     └─ VariableDeclarator @13:10
│           │        ├─ Identifier "i" [variable:0] (let) @13:14
│           │        └─ NumericLiteral 0 @13:18
│           ├─ test
│           │  └─ BinaryExpression (<) @13:23
│           │     ├─ Identifier "i" [variable:0] (let) @13:21
│           │     └─ NumericLiteral 10 @13:25
│           ├─ update
│           │  └─ UpdateExpression (++, postfix) @13:30
│           │     └─ Identifier "i" [variable:0] (let) @13:29
│           └─ body
│              └─ BlockStatement @13:34
└─ FunctionDeclaration "for_no_init" @17:1
   └─ body
      └─ FunctionBody @18:5
         └─ ForStatement @18:5
            ├─ test
            │  └─ BinaryExpression (<) @18:14
            │     ├─ Identifier "x" [global] @18:12
            │     └─ NumericLiteral 10 @18:16
            ├─ update
            │  └─ UpdateExpression (++, postfix) @18:21
            │     └─ Identifier "x" [global] @18:20
            └─ body
               └─ BlockStatement @18:25
