Program (script) @2:1
├─ VariableDeclaration (var) @2:1
│  └─ VariableDeclarator @2:1
│     ├─ Identifier "C" [global] (var) @2:5
│     └─ ClassExpression "MyClass" @2:9
│        ├─ constructor
│        │  └─ FunctionExpression "MyClass" [strict] [uses-this] [uses-this-from-environment] @2:9
│        │     └─ body
│        │        └─ BlockStatement @2:9
│        └─ elements
│           └─ ClassMethod @2:9
│              ├─ StringLiteral "method" @3:5
│              └─ FunctionExpression "" [strict] @3:5
│                 └─ body
│                    └─ FunctionBody @4:9
│                       └─ ReturnStatement @4:9
│                          └─ Identifier "MyClass" @4:16
├─ FunctionDeclaration "uses_class" @9:1
│  └─ body
│     └─ FunctionBody @10:5
│        ├─ ClassDeclaration @10:5
│        │  └─ ClassExpression "Foo" @10:5
│        │     ├─ constructor
│        │     │  └─ FunctionExpression "Foo" [strict] [uses-this] [uses-this-from-environment] @10:5
│        │     │     └─ body
│        │     │        └─ BlockStatement @10:5
│        │     └─ elements
│        │        └─ ClassMethod @10:5
│        │           ├─ StringLiteral "method" @11:9
│        │           └─ FunctionExpression "" [strict] @11:9
│        │              └─ body
│        │                 └─ FunctionBody @12:13
│        │                    └─ ReturnStatement @12:13
│        │                       └─ NewExpression @12:20
│        │                          └─ Identifier "Foo" @12:24
│        └─ ReturnStatement @15:5
│           └─ NewExpression @15:12
│              └─ Identifier "Foo" [variable:0] @15:16
├─ FunctionDeclaration "computed_key" @19:1
│  └─ body
│     └─ FunctionBody @20:5
│        ├─ VariableDeclaration (let) @20:5
│        │  └─ VariableDeclarator @20:5
│        │     ├─ Identifier "key" [variable:0] (let) @20:9
│        │     └─ StringLiteral "hello" @20:22
│        ├─ ClassDeclaration @21:5
│        │  └─ ClassExpression "Bar" @21:5
│        │     ├─ constructor
│        │     │  └─ FunctionExpression "Bar" [strict] [uses-this] [uses-this-from-environment] @21:5
│        │     │     └─ body
│        │     │        └─ BlockStatement @21:5
│        │     └─ elements
│        │        └─ ClassMethod @21:5
│        │           ├─ Identifier "key" [variable:0] (let) @22:10
│        │           └─ FunctionExpression "" [strict] @22:9
│        │              └─ body
│        │                 └─ FunctionBody @23:13
│        │                    └─ ReturnStatement @23:13
│        │                       └─ NumericLiteral 1 @23:20
│        └─ ReturnStatement @26:5
│           └─ NewExpression @26:12
│              └─ Identifier "Bar" [variable:1] @26:16
└─ FunctionDeclaration "static_members" @30:1
   └─ body
      └─ FunctionBody @31:5
         ├─ ClassDeclaration @31:5
         │  └─ ClassExpression "Baz" @31:5
         │     ├─ constructor
         │     │  └─ FunctionExpression "Baz" [strict] [uses-this] [uses-this-from-environment] @31:5
         │     │     └─ body
         │     │        └─ BlockStatement @31:5
         │     └─ elements
         │        ├─ ClassField static @31:5
         │        │  ├─ StringLiteral "x" @32:16
         │        │  └─ initializer
         │        │     └─ NumericLiteral 1 @32:20
         │        └─ ClassMethod static @31:5
         │           ├─ StringLiteral "method" @33:16
         │           └─ FunctionExpression "" [strict] @33:16
         │              └─ body
         │                 └─ FunctionBody @34:13
         │                    └─ ReturnStatement @34:13
         │                       └─ MemberExpression @34:23
         │                          ├─ Identifier "Baz" @34:20
         │                          └─ Identifier "x" @34:24
         └─ ReturnStatement @37:5
            └─ CallExpression @37:22
               └─ MemberExpression @37:15
                  ├─ Identifier "Baz" [variable:0] @37:12
                  └─ Identifier "method" @37:16
