Program (script) @1:1
├─ ClassDeclaration @1:1
│  └─ ClassExpression "Animal" @1:1
│     ├─ constructor
│     │  └─ FunctionExpression "" [strict] [uses-this] [uses-this-from-environment] @2:5
│     │     ├─ parameters
│     │     │  └─ Identifier "name" [argument:0] @2:17
│     │     └─ body
│     │        └─ FunctionBody @3:9
│     │           └─ ExpressionStatement @3:9
│     │              └─ AssignmentExpression (=) @3:19
│     │                 ├─ MemberExpression @3:13
│     │                 │  ├─ ThisExpression @3:9
│     │                 │  └─ Identifier "name" @3:14
│     │                 └─ Identifier "name" [argument:0] @3:21
│     └─ elements
│        ├─ ClassMethod @1:1
│        │  ├─ StringLiteral "speak" @6:5
│        │  └─ FunctionExpression "" [strict] [uses-this] @6:5
│        │     └─ body
│        │        └─ FunctionBody @7:9
│        │           └─ ReturnStatement @7:9
│        │              └─ MemberExpression @7:20
│        │                 ├─ ThisExpression @7:16
│        │                 └─ Identifier "name" @7:21
│        └─ ClassMethod (getter) @1:1
│           ├─ StringLiteral "info" @10:9
│           └─ FunctionExpression "" [strict] [uses-this] @10:5
│              └─ body
│                 └─ FunctionBody @11:9
│                    └─ ReturnStatement @11:9
│                       └─ MemberExpression @11:20
│                          ├─ ThisExpression @11:16
│                          └─ Identifier "name" @11:21
└─ ClassDeclaration @15:1
   └─ ClassExpression "Dog" @15:1
      ├─ super class
      │  └─ Identifier "Animal" [global] @15:19
      └─ constructor
         └─ FunctionExpression "" [strict] [uses-this] [uses-this-from-environment] @16:5
            ├─ parameters
            │  └─ Identifier "name" [argument:0] @16:17
            └─ body
               └─ FunctionBody @17:9
                  └─ ExpressionStatement @17:9
                     └─ SuperCall @17:14
                        └─ Identifier "name" [argument:0] @17:15
