{
  "type": "Script",
  "span": {
    "start": 0,
    "end": 317,
    "ctxt": 0
  },
  "body": [
    {
      "type": "ClassDeclaration",
      "identifier": {
        "type": "Identifier",
        "span": {
          "start": 6,
          "end": 7,
          "ctxt": 0
        },
        "value": "C",
        "optional": false
      },
      "declare": false,
      "span": {
        "start": 0,
        "end": 183,
        "ctxt": 0
      },
      "decorators": [],
      "body": [
        {
          "type": "ClassMethod",
          "span": {
            "start": 14,
            "end": 42,
            "ctxt": 0
          },
          "key": {
            "type": "Identifier",
            "span": {
              "start": 21,
              "end": 23,
              "ctxt": 0
            },
            "value": "fn",
            "optional": false
          },
          "function": {
            "params": [],
            "decorators": [],
            "span": {
              "start": 14,
              "end": 42,
              "ctxt": 0
            },
            "body": {
              "type": "BlockStatement",
              "span": {
                "start": 26,
                "end": 42,
                "ctxt": 0
              },
              "stmts": [
                {
                  "type": "ReturnStatement",
                  "span": {
                    "start": 28,
                    "end": 40,
                    "ctxt": 0
                  },
                  "argument": {
                    "type": "ThisExpression",
                    "span": {
                      "start": 35,
                      "end": 39,
                      "ctxt": 0
                    }
                  }
                }
              ]
            },
            "generator": false,
            "async": false,
            "typeParameters": null,
            "returnType": null
          },
          "kind": "method",
          "isStatic": true,
          "accessibility": null,
          "isAbstract": false,
          "isOptional": false,
          "isOverride": false
        },
        {
          "type": "ClassMethod",
          "span": {
            "start": 47,
            "end": 75,
            "ctxt": 0
          },
          "key": {
            "type": "Identifier",
            "span": {
              "start": 58,
              "end": 59,
              "ctxt": 0
            },
            "value": "x",
            "optional": false
          },
          "function": {
            "params": [],
            "decorators": [],
            "span": {
              "start": 47,
              "end": 75,
              "ctxt": 0
            },
            "body": {
              "type": "BlockStatement",
              "span": {
                "start": 62,
                "end": 75,
                "ctxt": 0
              },
              "stmts": [
                {
                  "type": "ReturnStatement",
                  "span": {
                    "start": 64,
                    "end": 73,
                    "ctxt": 0
                  },
                  "argument": {
                    "type": "NumericLiteral",
                    "span": {
                      "start": 71,
                      "end": 72,
                      "ctxt": 0
                    },
                    "value": 1.0
                  }
                }
              ]
            },
            "generator": false,
            "async": false,
            "typeParameters": null,
            "returnType": null
          },
          "kind": "getter",
          "isStatic": true,
          "accessibility": null,
          "isAbstract": false,
          "isOptional": false,
          "isOverride": false
        },
        {
          "type": "ClassMethod",
          "span": {
            "start": 80,
            "end": 99,
            "ctxt": 0
          },
          "key": {
            "type": "Identifier",
            "span": {
              "start": 91,
              "end": 92,
              "ctxt": 0
            },
            "value": "x",
            "optional": false
          },
          "function": {
            "params": [
              {
                "type": "Parameter",
                "span": {
                  "start": 93,
                  "end": 94,
                  "ctxt": 0
                },
                "decorators": [],
                "pat": {
                  "type": "Identifier",
                  "span": {
                    "start": 93,
                    "end": 94,
                    "ctxt": 0
                  },
                  "value": "v",
                  "optional": false,
                  "typeAnnotation": null
                }
              }
            ],
            "decorators": [],
            "span": {
              "start": 80,
              "end": 99,
              "ctxt": 0
            },
            "body": {
              "type": "BlockStatement",
              "span": {
                "start": 96,
                "end": 99,
                "ctxt": 0
              },
              "stmts": []
            },
            "generator": false,
            "async": false,
            "typeParameters": null,
            "returnType": null
          },
          "kind": "setter",
          "isStatic": true,
          "accessibility": null,
          "isAbstract": false,
          "isOptional": false,
          "isOverride": false
        },
        {
          "type": "Constructor",
          "span": {
            "start": 104,
            "end": 156,
            "ctxt": 0
          },
          "key": {
            "type": "Identifier",
            "span": {
              "start": 104,
              "end": 115,
              "ctxt": 0
            },
            "value": "constructor",
            "optional": false
          },
          "params": [
            {
              "type": "TsParameterProperty",
              "span": {
                "start": 116,
                "end": 132,
                "ctxt": 0
              },
              "decorators": [],
              "accessibility": "public",
              "override": false,
              "readonly": false,
              "param": {
                "type": "Identifier",
                "span": {
                  "start": 123,
                  "end": 132,
                  "ctxt": 0
                },
                "value": "a",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 124,
                    "end": 132,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 126,
                      "end": 132,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            },
            {
              "type": "TsParameterProperty",
              "span": {
                "start": 134,
                "end": 151,
                "ctxt": 0
              },
              "decorators": [],
              "accessibility": "private",
              "override": false,
              "readonly": false,
              "param": {
                "type": "Identifier",
                "span": {
                  "start": 142,
                  "end": 151,
                  "ctxt": 0
                },
                "value": "b",
                "optional": false,
                "typeAnnotation": {
                  "type": "TsTypeAnnotation",
                  "span": {
                    "start": 143,
                    "end": 151,
                    "ctxt": 0
                  },
                  "typeAnnotation": {
                    "type": "TsKeywordType",
                    "span": {
                      "start": 145,
                      "end": 151,
                      "ctxt": 0
                    },
                    "kind": "number"
                  }
                }
              }
            }
          ],
          "body": {
            "type": "BlockStatement",
            "span": {
              "start": 153,
              "end": 156,
              "ctxt": 0
            },
            "stmts": []
          },
          "accessibility": null,
          "isOptional": false
        },
        {
          "type": "ClassProperty",
          "span": {
            "start": 161,
            "end": 180,
            "ctxt": 0
          },
          "key": {
            "type": "Identifier",
            "span": {
              "start": 168,
              "end": 171,
              "ctxt": 0
            },
            "value": "foo",
            "optional": false
          },
          "value": null,
          "typeAnnotation": {
            "type": "TsTypeAnnotation",
            "span": {
              "start": 171,
              "end": 179,
              "ctxt": 0
            },
            "typeAnnotation": {
              "type": "TsKeywordType",
              "span": {
                "start": 173,
                "end": 179,
                "ctxt": 0
              },
              "kind": "string"
            }
          },
          "isStatic": true,
          "decorators": [],
          "accessibility": null,
          "isAbstract": false,
          "isOptional": false,
          "isOverride": false,
          "readonly": false,
          "declare": false,
          "definite": false
        }
      ],
      "superClass": null,
      "isAbstract": false,
      "typeParams": null,
      "superTypeParams": null,
      "implements": []
    },
    {
      "type": "VariableDeclaration",
      "span": {
        "start": 185,
        "end": 200,
        "ctxt": 0
      },
      "kind": "var",
      "declare": false,
      "declarations": [
        {
          "type": "VariableDeclarator",
          "span": {
            "start": 189,
            "end": 199,
            "ctxt": 0
          },
          "id": {
            "type": "Identifier",
            "span": {
              "start": 189,
              "end": 190,
              "ctxt": 0
            },
            "value": "r",
            "optional": false,
            "typeAnnotation": null
          },
          "init": {
            "type": "CallExpression",
            "span": {
              "start": 193,
              "end": 199,
              "ctxt": 0
            },
            "callee": {
              "type": "MemberExpression",
              "span": {
                "start": 193,
                "end": 197,
                "ctxt": 0
              },
              "object": {
                "type": "Identifier",
                "span": {
                  "start": 193,
                  "end": 194,
                  "ctxt": 0
                },
                "value": "C",
                "optional": false
              },
              "property": {
                "type": "Identifier",
                "span": {
                  "start": 195,
                  "end": 197,
                  "ctxt": 0
                },
                "value": "fn",
                "optional": false
              }
            },
            "arguments": [],
            "typeArguments": null
          },
          "definite": false
        }
      ]
    },
    {
      "type": "VariableDeclaration",
      "span": {
        "start": 201,
        "end": 214,
        "ctxt": 0
      },
      "kind": "var",
      "declare": false,
      "declarations": [
        {
          "type": "VariableDeclarator",
          "span": {
            "start": 205,
            "end": 213,
            "ctxt": 0
          },
          "id": {
            "type": "Identifier",
            "span": {
              "start": 205,
              "end": 207,
              "ctxt": 0
            },
            "value": "r2",
            "optional": false,
            "typeAnnotation": null
          },
          "init": {
            "type": "MemberExpression",
            "span": {
              "start": 210,
              "end": 213,
              "ctxt": 0
            },
            "object": {
              "type": "Identifier",
              "span": {
                "start": 210,
                "end": 211,
                "ctxt": 0
              },
              "value": "r",
              "optional": false
            },
            "property": {
              "type": "Identifier",
              "span": {
                "start": 212,
                "end": 213,
                "ctxt": 0
              },
              "value": "x",
              "optional": false
            }
          },
          "definite": false
        }
      ]
    },
    {
      "type": "VariableDeclaration",
      "span": {
        "start": 215,
        "end": 230,
        "ctxt": 0
      },
      "kind": "var",
      "declare": false,
      "declarations": [
        {
          "type": "VariableDeclarator",
          "span": {
            "start": 219,
            "end": 229,
            "ctxt": 0
          },
          "id": {
            "type": "Identifier",
            "span": {
              "start": 219,
              "end": 221,
              "ctxt": 0
            },
            "value": "r3",
            "optional": false,
            "typeAnnotation": null
          },
          "init": {
            "type": "MemberExpression",
            "span": {
              "start": 224,
              "end": 229,
              "ctxt": 0
            },
            "object": {
              "type": "Identifier",
              "span": {
                "start": 224,
                "end": 225,
                "ctxt": 0
              },
              "value": "r",
              "optional": false
            },
            "property": {
              "type": "Identifier",
              "span": {
                "start": 226,
                "end": 229,
                "ctxt": 0
              },
              "value": "foo",
              "optional": false
            }
          },
          "definite": false
        }
      ]
    },
    {
      "type": "ClassDeclaration",
      "identifier": {
        "type": "Identifier",
        "span": {
          "start": 238,
          "end": 239,
          "ctxt": 0
        },
        "value": "D",
        "optional": false
      },
      "declare": false,
      "span": {
        "start": 232,
        "end": 270,
        "ctxt": 0
      },
      "decorators": [],
      "body": [
        {
          "type": "ClassProperty",
          "span": {
            "start": 256,
            "end": 268,
            "ctxt": 0
          },
          "key": {
            "type": "Identifier",
            "span": {
              "start": 256,
              "end": 259,
              "ctxt": 0
            },
            "value": "bar",
            "optional": false
          },
          "value": null,
          "typeAnnotation": {
            "type": "TsTypeAnnotation",
            "span": {
              "start": 259,
              "end": 267,
              "ctxt": 0
            },
            "typeAnnotation": {
              "type": "TsKeywordType",
              "span": {
                "start": 261,
                "end": 267,
                "ctxt": 0
              },
              "kind": "string"
            }
          },
          "isStatic": false,
          "decorators": [],
          "accessibility": null,
          "isAbstract": false,
          "isOptional": false,
          "isOverride": false,
          "readonly": false,
          "declare": false,
          "definite": false
        }
      ],
      "superClass": {
        "type": "Identifier",
        "span": {
          "start": 248,
          "end": 249,
          "ctxt": 0
        },
        "value": "C",
        "optional": false
      },
      "isAbstract": false,
      "typeParams": null,
      "superTypeParams": null,
      "implements": []
    },
    {
      "type": "VariableDeclaration",
      "span": {
        "start": 272,
        "end": 287,
        "ctxt": 0
      },
      "kind": "var",
      "declare": false,
      "declarations": [
        {
          "type": "VariableDeclarator",
          "span": {
            "start": 276,
            "end": 286,
            "ctxt": 0
          },
          "id": {
            "type": "Identifier",
            "span": {
              "start": 276,
              "end": 277,
              "ctxt": 0
            },
            "value": "r",
            "optional": false,
            "typeAnnotation": null
          },
          "init": {
            "type": "CallExpression",
            "span": {
              "start": 280,
              "end": 286,
              "ctxt": 0
            },
            "callee": {
              "type": "MemberExpression",
              "span": {
                "start": 280,
                "end": 284,
                "ctxt": 0
              },
              "object": {
                "type": "Identifier",
                "span": {
                  "start": 280,
                  "end": 281,
                  "ctxt": 0
                },
                "value": "D",
                "optional": false
              },
              "property": {
                "type": "Identifier",
                "span": {
                  "start": 282,
                  "end": 284,
                  "ctxt": 0
                },
                "value": "fn",
                "optional": false
              }
            },
            "arguments": [],
            "typeArguments": null
          },
          "definite": false
        }
      ]
    },
    {
      "type": "VariableDeclaration",
      "span": {
        "start": 288,
        "end": 301,
        "ctxt": 0
      },
      "kind": "var",
      "declare": false,
      "declarations": [
        {
          "type": "VariableDeclarator",
          "span": {
            "start": 292,
            "end": 300,
            "ctxt": 0
          },
          "id": {
            "type": "Identifier",
            "span": {
              "start": 292,
              "end": 294,
              "ctxt": 0
            },
            "value": "r2",
            "optional": false,
            "typeAnnotation": null
          },
          "init": {
            "type": "MemberExpression",
            "span": {
              "start": 297,
              "end": 300,
              "ctxt": 0
            },
            "object": {
              "type": "Identifier",
              "span": {
                "start": 297,
                "end": 298,
                "ctxt": 0
              },
              "value": "r",
              "optional": false
            },
            "property": {
              "type": "Identifier",
              "span": {
                "start": 299,
                "end": 300,
                "ctxt": 0
              },
              "value": "x",
              "optional": false
            }
          },
          "definite": false
        }
      ]
    },
    {
      "type": "VariableDeclaration",
      "span": {
        "start": 302,
        "end": 317,
        "ctxt": 0
      },
      "kind": "var",
      "declare": false,
      "declarations": [
        {
          "type": "VariableDeclarator",
          "span": {
            "start": 306,
            "end": 316,
            "ctxt": 0
          },
          "id": {
            "type": "Identifier",
            "span": {
              "start": 306,
              "end": 308,
              "ctxt": 0
            },
            "value": "r3",
            "optional": false,
            "typeAnnotation": null
          },
          "init": {
            "type": "MemberExpression",
            "span": {
              "start": 311,
              "end": 316,
              "ctxt": 0
            },
            "object": {
              "type": "Identifier",
              "span": {
                "start": 311,
                "end": 312,
                "ctxt": 0
              },
              "value": "r",
              "optional": false
            },
            "property": {
              "type": "Identifier",
              "span": {
                "start": 313,
                "end": 316,
                "ctxt": 0
              },
              "value": "foo",
              "optional": false
            }
          },
          "definite": false
        }
      ]
    }
  ],
  "interpreter": null
}