Program (script) @1:1 ├─ ClassDeclaration @1:1 │ └─ ClassExpression "Base" @1:1 │ ├─ constructor │ │ └─ FunctionExpression "Base" [strict] [uses-this] [uses-this-from-environment] @1:1 │ │ └─ body │ │ └─ BlockStatement @1:1 │ └─ elements │ └─ ClassMethod @1:1 │ ├─ StringLiteral "getValue" @2:5 │ └─ FunctionExpression "" [strict] @2:5 │ └─ body │ └─ FunctionBody @3:9 │ └─ ReturnStatement @3:9 │ └─ NumericLiteral 42 @3:16 ├─ ClassDeclaration @7:1 │ └─ ClassExpression "Derived" @7:1 │ ├─ super class │ │ └─ Identifier "Base" [global] @7:23 │ ├─ constructor │ │ └─ FunctionExpression "Derived" [strict] [uses-this] [uses-this-from-environment] @7:1 │ │ ├─ parameters │ │ │ └─ rest │ │ │ └─ Identifier "args" @7:1 │ │ └─ body │ │ └─ BlockStatement @7:1 │ │ └─ ReturnStatement @7:1 │ │ └─ SuperCall @7:1 │ │ └─ Identifier "args" @7:1 │ └─ elements │ ├─ ClassMethod @7:1 │ │ ├─ StringLiteral "getValue" @8:5 │ │ └─ FunctionExpression "" [strict] [uses-this] [uses-this-from-environment] @8:5 │ │ └─ body │ │ └─ FunctionBody @9:9 │ │ └─ ReturnStatement @9:9 │ │ └─ CallExpression @9:30 │ │ └─ MemberExpression @9:21 │ │ ├─ SuperExpression @9:16 │ │ └─ Identifier "getValue" @9:22 │ └─ ClassMethod @7:1 │ ├─ StringLiteral "getComputed" @11:5 │ └─ FunctionExpression "" [strict] [uses-this] [uses-this-from-environment] @11:5 │ ├─ parameters │ │ └─ Identifier "key" [argument:0] @11:17 │ └─ body │ └─ FunctionBody @12:9 │ └─ ReturnStatement @12:9 │ └─ MemberExpression [computed] @12:21 │ ├─ SuperExpression @12:16 │ └─ Identifier "key" [argument:0] @12:22 └─ VariableDeclaration (let) @16:1 └─ VariableDeclarator @16:1 ├─ Identifier "obj" [global] (let) @16:5 └─ ObjectExpression @16:11 └─ ObjectProperty (method) @16:11 ├─ StringLiteral "foo" @17:5 └─ FunctionExpression "" [uses-this] [uses-this-from-environment] @17:5 └─ body └─ FunctionBody @18:9 └─ ReturnStatement @18:9 └─ CallExpression @18:30 └─ MemberExpression @18:21 ├─ SuperExpression @18:16 └─ Identifier "toString" @18:22