[
  {
    "classElements": [
      {
        "getter": {
          "endPosition": "96",
          "kind": "FUNCTION_EXPRESSION",
          "name": "null",
          "body": {
            "endPosition": "143",
            "kind": "BLOCK",
            "statements": [
              {
                "expression": {
                  "condition": {
                    "expression": {
                      "identifier": "count_",
                      "expression": {
                        "endPosition": "118",
                        "kind": "IDENTIFIER",
                        "this": "true",
                        "name": "this",
                        "startPosition": "114"
                      },
                      "endPosition": "125",
                      "kind": "MEMBER_SELECT",
                      "startPosition": "114"
                    },
                    "endPosition": "125",
                    "kind": "LOGICAL_COMPLEMENT",
                    "startPosition": "113"
                  },
                  "endPosition": "143",
                  "kind": "CONDITIONAL_EXPRESSION",
                  "trueExpression": {
                    "endPosition": "129",
                    "kind": "NUMBER_LITERAL",
                    "value": "0",
                    "startPosition": "128"
                  },
                  "falseExpression": {
                    "identifier": "count_",
                    "expression": {
                      "endPosition": "136",
                      "kind": "IDENTIFIER",
                      "this": "true",
                      "name": "this",
                      "startPosition": "132"
                    },
                    "endPosition": "143",
                    "kind": "MEMBER_SELECT",
                    "startPosition": "132"
                  },
                  "startPosition": "126"
                },
                "endPosition": "143",
                "kind": "RETURN",
                "startPosition": "106"
              }
            ],
            "startPosition": "96"
          },
          "strict": "true",
          "startPosition": "96",
          "parameters": []
        },
        "static": "true",
        "endPosition": "149",
        "kind": "PROPERTY",
        "setter": {
          "endPosition": "181",
          "kind": "FUNCTION_EXPRESSION",
          "name": "null",
          "body": {
            "endPosition": "209",
            "kind": "BLOCK",
            "statements": [
              {
                "expression": {
                  "expression": {
                    "endPosition": "209",
                    "kind": "IDENTIFIER",
                    "name": "val",
                    "startPosition": "206"
                  },
                  "endPosition": "209",
                  "kind": "ASSIGNMENT",
                  "variable": {
                    "identifier": "count_",
                    "expression": {
                      "endPosition": "196",
                      "kind": "IDENTIFIER",
                      "this": "true",
                      "name": "this",
                      "startPosition": "192"
                    },
                    "endPosition": "203",
                    "kind": "MEMBER_SELECT",
                    "startPosition": "192"
                  },
                  "startPosition": "192"
                },
                "endPosition": "209",
                "kind": "EXPRESSION_STATEMENT",
                "startPosition": "192"
              }
            ],
            "startPosition": "181"
          },
          "strict": "true",
          "startPosition": "181",
          "parameters": [
            {
              "endPosition": "179",
              "kind": "IDENTIFIER",
              "name": "val",
              "startPosition": "176"
            }
          ]
        },
        "value": "null",
        "startPosition": "80",
        "key": {
          "endPosition": "93",
          "kind": "IDENTIFIER",
          "name": "numShapes",
          "startPosition": "84"
        }
      }
    ],
    "endPosition": "12",
    "kind": "CLASS",
    "classHeritage": "null",
    "name": {
      "endPosition": "12",
      "kind": "IDENTIFIER",
      "name": "Shape",
      "startPosition": "7"
    },
    "constructor": {
      "getter": "null",
      "endPosition": "67",
      "kind": "PROPERTY",
      "setter": "null",
      "value": {
        "endPosition": "33",
        "kind": "FUNCTION_EXPRESSION",
        "name": {
          "endPosition": "30",
          "kind": "IDENTIFIER",
          "name": "constructor",
          "startPosition": "19"
        },
        "body": {
          "endPosition": "61",
          "kind": "BLOCK",
          "statements": [
            {
              "expression": {
                "expression": {
                  "identifier": "numShapes",
                  "expression": {
                    "endPosition": "48",
                    "kind": "IDENTIFIER",
                    "name": "Shape",
                    "startPosition": "43"
                  },
                  "endPosition": "58",
                  "kind": "MEMBER_SELECT",
                  "startPosition": "43"
                },
                "endPosition": "60",
                "kind": "POSTFIX_INCREMENT",
                "startPosition": "43"
              },
              "endPosition": "60",
              "kind": "EXPRESSION_STATEMENT",
              "startPosition": "43"
            }
          ],
          "startPosition": "33"
        },
        "strict": "true",
        "startPosition": "33",
        "parameters": []
      },
      "startPosition": "19",
      "key": {
        "endPosition": "30",
        "kind": "IDENTIFIER",
        "name": "constructor",
        "startPosition": "19"
      }
    },
    "startPosition": "1"
  },
  {
    "classElements": [
      {
        "getter": "null",
        "static": "true",
        "endPosition": "419",
        "kind": "PROPERTY",
        "setter": "null",
        "value": {
          "endPosition": "388",
          "kind": "FUNCTION_EXPRESSION",
          "name": {
            "endPosition": "371",
            "kind": "IDENTIFIER",
            "name": "draw",
            "startPosition": "367"
          },
          "body": {
            "endPosition": "389",
            "kind": "BLOCK",
            "statements": [],
            "startPosition": "388"
          },
          "strict": "true",
          "startPosition": "388",
          "parameters": [
            {
              "endPosition": "378",
              "kind": "IDENTIFIER",
              "name": "circle",
              "startPosition": "372"
            },
            {
              "endPosition": "386",
              "kind": "IDENTIFIER",
              "name": "canvas",
              "startPosition": "380"
            }
          ]
        },
        "startPosition": "367",
        "key": {
          "endPosition": "371",
          "kind": "IDENTIFIER",
          "name": "draw",
          "startPosition": "367"
        }
      },
      {
        "getter": {
          "endPosition": "449",
          "kind": "FUNCTION_EXPRESSION",
          "name": "null",
          "body": {
            "endPosition": "496",
            "kind": "BLOCK",
            "statements": [
              {
                "expression": {
                  "condition": {
                    "expression": {
                      "identifier": "count_",
                      "expression": {
                        "endPosition": "471",
                        "kind": "IDENTIFIER",
                        "this": "true",
                        "name": "this",
                        "startPosition": "467"
                      },
                      "endPosition": "478",
                      "kind": "MEMBER_SELECT",
                      "startPosition": "467"
                    },
                    "endPosition": "478",
                    "kind": "LOGICAL_COMPLEMENT",
                    "startPosition": "466"
                  },
                  "endPosition": "496",
                  "kind": "CONDITIONAL_EXPRESSION",
                  "trueExpression": {
                    "endPosition": "482",
                    "kind": "NUMBER_LITERAL",
                    "value": "0",
                    "startPosition": "481"
                  },
                  "falseExpression": {
                    "identifier": "count_",
                    "expression": {
                      "endPosition": "489",
                      "kind": "IDENTIFIER",
                      "this": "true",
                      "name": "this",
                      "startPosition": "485"
                    },
                    "endPosition": "496",
                    "kind": "MEMBER_SELECT",
                    "startPosition": "485"
                  },
                  "startPosition": "479"
                },
                "endPosition": "496",
                "kind": "RETURN",
                "startPosition": "459"
              }
            ],
            "startPosition": "449"
          },
          "strict": "true",
          "startPosition": "449",
          "parameters": []
        },
        "static": "true",
        "endPosition": "502",
        "kind": "PROPERTY",
        "setter": {
          "endPosition": "535",
          "kind": "FUNCTION_EXPRESSION",
          "name": "null",
          "body": {
            "endPosition": "563",
            "kind": "BLOCK",
            "statements": [
              {
                "expression": {
                  "expression": {
                    "endPosition": "563",
                    "kind": "IDENTIFIER",
                    "name": "val",
                    "startPosition": "560"
                  },
                  "endPosition": "563",
                  "kind": "ASSIGNMENT",
                  "variable": {
                    "identifier": "count_",
                    "expression": {
                      "endPosition": "550",
                      "kind": "IDENTIFIER",
                      "this": "true",
                      "name": "this",
                      "startPosition": "546"
                    },
                    "endPosition": "557",
                    "kind": "MEMBER_SELECT",
                    "startPosition": "546"
                  },
                  "startPosition": "546"
                },
                "endPosition": "563",
                "kind": "EXPRESSION_STATEMENT",
                "startPosition": "546"
              }
            ],
            "startPosition": "535"
          },
          "strict": "true",
          "startPosition": "535",
          "parameters": [
            {
              "endPosition": "533",
              "kind": "IDENTIFIER",
              "name": "val",
              "startPosition": "530"
            }
          ]
        },
        "value": "null",
        "startPosition": "432",
        "key": {
          "endPosition": "446",
          "kind": "IDENTIFIER",
          "name": "numCircles",
          "startPosition": "436"
        }
      },
      {
        "getter": "null",
        "endPosition": "639",
        "kind": "PROPERTY",
        "setter": "null",
        "value": {
          "endPosition": "582",
          "kind": "FUNCTION_EXPRESSION",
          "name": {
            "endPosition": "579",
            "kind": "IDENTIFIER",
            "name": "area",
            "startPosition": "575"
          },
          "body": {
            "endPosition": "633",
            "kind": "BLOCK",
            "statements": [
              {
                "expression": {
                  "leftOperand": {
                    "endPosition": "623",
                    "kind": "FUNCTION_INVOCATION",
                    "functionSelect": {
                      "identifier": "pow",
                      "expression": {
                        "endPosition": "603",
                        "kind": "IDENTIFIER",
                        "name": "Math",
                        "startPosition": "599"
                      },
                      "endPosition": "607",
                      "kind": "MEMBER_SELECT",
                      "startPosition": "599"
                    },
                    "arguments": [
                      {
                        "identifier": "radius",
                        "expression": {
                          "endPosition": "612",
                          "kind": "IDENTIFIER",
                          "this": "true",
                          "name": "this",
                          "startPosition": "608"
                        },
                        "endPosition": "619",
                        "kind": "MEMBER_SELECT",
                        "startPosition": "608"
                      },
                      {
                        "endPosition": "622",
                        "kind": "NUMBER_LITERAL",
                        "value": "2",
                        "startPosition": "621"
                      }
                    ],
                    "startPosition": "599"
                  },
                  "endPosition": "633",
                  "kind": "MULTIPLY",
                  "rightOperand": {
                    "identifier": "PI",
                    "expression": {
                      "endPosition": "630",
                      "kind": "IDENTIFIER",
                      "name": "Math",
                      "startPosition": "626"
                    },
                    "endPosition": "633",
                    "kind": "MEMBER_SELECT",
                    "startPosition": "626"
                  },
                  "startPosition": "599"
                },
                "endPosition": "633",
                "kind": "RETURN",
                "startPosition": "592"
              }
            ],
            "startPosition": "582"
          },
          "strict": "true",
          "startPosition": "582",
          "parameters": []
        },
        "startPosition": "575",
        "key": {
          "endPosition": "579",
          "kind": "IDENTIFIER",
          "name": "area",
          "startPosition": "575"
        }
      },
      {
        "getter": {
          "endPosition": "658",
          "kind": "FUNCTION_EXPRESSION",
          "name": "null",
          "body": {
            "endPosition": "687",
            "kind": "BLOCK",
            "statements": [
              {
                "expression": {
                  "identifier": "radius_",
                  "expression": {
                    "endPosition": "679",
                    "kind": "IDENTIFIER",
                    "this": "true",
                    "name": "this",
                    "startPosition": "675"
                  },
                  "endPosition": "687",
                  "kind": "MEMBER_SELECT",
                  "startPosition": "675"
                },
                "endPosition": "687",
                "kind": "RETURN",
                "startPosition": "668"
              }
            ],
            "startPosition": "658"
          },
          "strict": "true",
          "startPosition": "658",
          "parameters": []
        },
        "endPosition": "693",
        "kind": "PROPERTY",
        "setter": {
          "endPosition": "718",
          "kind": "FUNCTION_EXPRESSION",
          "name": "null",
          "body": {
            "endPosition": "852",
            "kind": "BLOCK",
            "statements": [
              {
                "condition": {
                  "expression": {
                    "endPosition": "757",
                    "kind": "FUNCTION_INVOCATION",
                    "functionSelect": {
                      "identifier": "isInteger",
                      "expression": {
                        "endPosition": "739",
                        "kind": "IDENTIFIER",
                        "name": "Number",
                        "startPosition": "733"
                      },
                      "endPosition": "749",
                      "kind": "MEMBER_SELECT",
                      "startPosition": "733"
                    },
                    "arguments": [
                      {
                        "endPosition": "756",
                        "kind": "IDENTIFIER",
                        "name": "radius",
                        "startPosition": "750"
                      }
                    ],
                    "startPosition": "733"
                  },
                  "endPosition": "757",
                  "kind": "LOGICAL_COMPLEMENT",
                  "startPosition": "732"
                },
                "elseStatement": "null",
                "endPosition": "822",
                "kind": "IF",
                "startPosition": "728",
                "thenStatement": {
                  "expression": {
                    "constructorExpression": {
                      "endPosition": "821",
                      "kind": "FUNCTION_INVOCATION",
                      "functionSelect": {
                        "endPosition": "790",
                        "kind": "IDENTIFIER",
                        "name": "TypeError",
                        "startPosition": "781"
                      },
                      "arguments": [
                        {
                          "endPosition": "819",
                          "kind": "STRING_LITERAL",
                          "value": "Circle radius is not an int",
                          "startPosition": "792"
                        }
                      ],
                      "startPosition": "781"
                    },
                    "endPosition": "821",
                    "kind": "NEW",
                    "startPosition": "777"
                  },
                  "endPosition": "822",
                  "kind": "THROW",
                  "startPosition": "771"
                }
              },
              {
                "expression": {
                  "expression": {
                    "endPosition": "852",
                    "kind": "IDENTIFIER",
                    "name": "radius",
                    "startPosition": "846"
                  },
                  "endPosition": "852",
                  "kind": "ASSIGNMENT",
                  "variable": {
                    "identifier": "radius_",
                    "expression": {
                      "endPosition": "835",
                      "kind": "IDENTIFIER",
                      "this": "true",
                      "name": "this",
                      "startPosition": "831"
                    },
                    "endPosition": "843",
                    "kind": "MEMBER_SELECT",
                    "startPosition": "831"
                  },
                  "startPosition": "831"
                },
                "endPosition": "852",
                "kind": "EXPRESSION_STATEMENT",
                "startPosition": "831"
              }
            ],
            "startPosition": "718"
          },
          "strict": "true",
          "startPosition": "718",
          "parameters": [
            {
              "endPosition": "716",
              "kind": "IDENTIFIER",
              "name": "radius",
              "startPosition": "710"
            }
          ]
        },
        "value": "null",
        "startPosition": "645",
        "key": {
          "endPosition": "655",
          "kind": "IDENTIFIER",
          "name": "radius",
          "startPosition": "649"
        }
      }
    ],
    "endPosition": "231",
    "kind": "CLASS",
    "classHeritage": {
      "endPosition": "245",
      "kind": "IDENTIFIER",
      "name": "Shape",
      "startPosition": "240"
    },
    "name": {
      "endPosition": "231",
      "kind": "IDENTIFIER",
      "name": "Circle",
      "startPosition": "225"
    },
    "constructor": {
      "getter": "null",
      "endPosition": "354",
      "kind": "PROPERTY",
      "setter": "null",
      "value": {
        "endPosition": "272",
        "kind": "FUNCTION_EXPRESSION",
        "name": {
          "endPosition": "263",
          "kind": "IDENTIFIER",
          "name": "constructor",
          "startPosition": "252"
        },
        "body": {
          "endPosition": "348",
          "kind": "BLOCK",
          "statements": [
            {
              "expression": {
                "endPosition": "289",
                "kind": "FUNCTION_INVOCATION",
                "functionSelect": {
                  "super": "true",
                  "endPosition": "287",
                  "kind": "IDENTIFIER",
                  "name": "super",
                  "startPosition": "282"
                },
                "arguments": [],
                "startPosition": "282"
              },
              "endPosition": "289",
              "kind": "EXPRESSION_STATEMENT",
              "startPosition": "282"
            },
            {
              "expression": {
                "expression": {
                  "endPosition": "320",
                  "kind": "IDENTIFIER",
                  "name": "radius",
                  "startPosition": "314"
                },
                "endPosition": "320",
                "kind": "ASSIGNMENT",
                "variable": {
                  "identifier": "radius_",
                  "expression": {
                    "endPosition": "303",
                    "kind": "IDENTIFIER",
                    "this": "true",
                    "name": "this",
                    "startPosition": "299"
                  },
                  "endPosition": "311",
                  "kind": "MEMBER_SELECT",
                  "startPosition": "299"
                },
                "startPosition": "299"
              },
              "endPosition": "320",
              "kind": "EXPRESSION_STATEMENT",
              "startPosition": "299"
            },
            {
              "expression": {
                "expression": {
                  "identifier": "numCircles",
                  "expression": {
                    "endPosition": "335",
                    "kind": "IDENTIFIER",
                    "name": "Circle",
                    "startPosition": "329"
                  },
                  "endPosition": "346",
                  "kind": "MEMBER_SELECT",
                  "startPosition": "329"
                },
                "endPosition": "348",
                "kind": "POSTFIX_INCREMENT",
                "startPosition": "329"
              },
              "endPosition": "348",
              "kind": "EXPRESSION_STATEMENT",
              "startPosition": "329"
            }
          ],
          "startPosition": "272"
        },
        "strict": "true",
        "startPosition": "272",
        "parameters": [
          {
            "endPosition": "270",
            "kind": "IDENTIFIER",
            "name": "radius",
            "startPosition": "264"
          }
        ]
      },
      "startPosition": "252",
      "key": {
        "endPosition": "263",
        "kind": "IDENTIFIER",
        "name": "constructor",
        "startPosition": "252"
      }
    },
    "startPosition": "219"
  }
]