1 [
   2   {
   3     "classElements": [
   4       {
   5         "getter": {
   6           "endPosition": "96",
   7           "kind": "FUNCTION_EXPRESSION",
   8           "name": "null",
   9           "body": {
  10             "endPosition": "143",
  11             "kind": "BLOCK",
  12             "statements": [
  13               {
  14                 "expression": {
  15                   "condition": {
  16                     "expression": {
  17                       "identifier": "count_",
  18                       "expression": {
  19                         "endPosition": "118",
  20                         "kind": "IDENTIFIER",
  21                         "this": "true",
  22                         "name": "this",
  23                         "startPosition": "114"
  24                       },
  25                       "endPosition": "125",
  26                       "kind": "MEMBER_SELECT",
  27                       "startPosition": "114"
  28                     },
  29                     "endPosition": "125",
  30                     "kind": "LOGICAL_COMPLEMENT",
  31                     "startPosition": "113"
  32                   },
  33                   "endPosition": "143",
  34                   "kind": "CONDITIONAL_EXPRESSION",
  35                   "trueExpression": {
  36                     "endPosition": "129",
  37                     "kind": "NUMBER_LITERAL",
  38                     "value": "0",
  39                     "startPosition": "128"
  40                   },
  41                   "falseExpression": {
  42                     "identifier": "count_",
  43                     "expression": {
  44                       "endPosition": "136",
  45                       "kind": "IDENTIFIER",
  46                       "this": "true",
  47                       "name": "this",
  48                       "startPosition": "132"
  49                     },
  50                     "endPosition": "143",
  51                     "kind": "MEMBER_SELECT",
  52                     "startPosition": "132"
  53                   },
  54                   "startPosition": "126"
  55                 },
  56                 "endPosition": "143",
  57                 "kind": "RETURN",
  58                 "startPosition": "106"
  59               }
  60             ],
  61             "startPosition": "96"
  62           },
  63           "strict": "true",
  64           "startPosition": "96",
  65           "parameters": []
  66         },
  67         "static": "true",
  68         "endPosition": "149",
  69         "kind": "PROPERTY",
  70         "setter": {
  71           "endPosition": "181",
  72           "kind": "FUNCTION_EXPRESSION",
  73           "name": "null",
  74           "body": {
  75             "endPosition": "209",
  76             "kind": "BLOCK",
  77             "statements": [
  78               {
  79                 "expression": {
  80                   "expression": {
  81                     "endPosition": "209",
  82                     "kind": "IDENTIFIER",
  83                     "name": "val",
  84                     "startPosition": "206"
  85                   },
  86                   "endPosition": "209",
  87                   "kind": "ASSIGNMENT",
  88                   "variable": {
  89                     "identifier": "count_",
  90                     "expression": {
  91                       "endPosition": "196",
  92                       "kind": "IDENTIFIER",
  93                       "this": "true",
  94                       "name": "this",
  95                       "startPosition": "192"
  96                     },
  97                     "endPosition": "203",
  98                     "kind": "MEMBER_SELECT",
  99                     "startPosition": "192"
 100                   },
 101                   "startPosition": "192"
 102                 },
 103                 "endPosition": "209",
 104                 "kind": "EXPRESSION_STATEMENT",
 105                 "startPosition": "192"
 106               }
 107             ],
 108             "startPosition": "181"
 109           },
 110           "strict": "true",
 111           "startPosition": "181",
 112           "parameters": [
 113             {
 114               "endPosition": "179",
 115               "kind": "IDENTIFIER",
 116               "name": "val",
 117               "startPosition": "176"
 118             }
 119           ]
 120         },
 121         "value": "null",
 122         "startPosition": "80",
 123         "key": {
 124           "endPosition": "93",
 125           "kind": "IDENTIFIER",
 126           "name": "numShapes",
 127           "startPosition": "84"
 128         }
 129       }
 130     ],
 131     "endPosition": "12",
 132     "kind": "CLASS",
 133     "classHeritage": "null",
 134     "name": {
 135       "endPosition": "12",
 136       "kind": "IDENTIFIER",
 137       "name": "Shape",
 138       "startPosition": "7"
 139     },
 140     "constructor": {
 141       "getter": "null",
 142       "endPosition": "67",
 143       "kind": "PROPERTY",
 144       "setter": "null",
 145       "value": {
 146         "endPosition": "33",
 147         "kind": "FUNCTION_EXPRESSION",
 148         "name": {
 149           "endPosition": "30",
 150           "kind": "IDENTIFIER",
 151           "name": "constructor",
 152           "startPosition": "19"
 153         },
 154         "body": {
 155           "endPosition": "61",
 156           "kind": "BLOCK",
 157           "statements": [
 158             {
 159               "expression": {
 160                 "expression": {
 161                   "identifier": "numShapes",
 162                   "expression": {
 163                     "endPosition": "48",
 164                     "kind": "IDENTIFIER",
 165                     "name": "Shape",
 166                     "startPosition": "43"
 167                   },
 168                   "endPosition": "58",
 169                   "kind": "MEMBER_SELECT",
 170                   "startPosition": "43"
 171                 },
 172                 "endPosition": "60",
 173                 "kind": "POSTFIX_INCREMENT",
 174                 "startPosition": "43"
 175               },
 176               "endPosition": "60",
 177               "kind": "EXPRESSION_STATEMENT",
 178               "startPosition": "43"
 179             }
 180           ],
 181           "startPosition": "33"
 182         },
 183         "strict": "true",
 184         "startPosition": "33",
 185         "parameters": []
 186       },
 187       "startPosition": "19",
 188       "key": {
 189         "endPosition": "30",
 190         "kind": "IDENTIFIER",
 191         "name": "constructor",
 192         "startPosition": "19"
 193       }
 194     },
 195     "startPosition": "1"
 196   },
 197   {
 198     "classElements": [
 199       {
 200         "getter": "null",
 201         "static": "true",
 202         "endPosition": "419",
 203         "kind": "PROPERTY",
 204         "setter": "null",
 205         "value": {
 206           "endPosition": "388",
 207           "kind": "FUNCTION_EXPRESSION",
 208           "name": {
 209             "endPosition": "371",
 210             "kind": "IDENTIFIER",
 211             "name": "draw",
 212             "startPosition": "367"
 213           },
 214           "body": {
 215             "endPosition": "389",
 216             "kind": "BLOCK",
 217             "statements": [],
 218             "startPosition": "388"
 219           },
 220           "strict": "true",
 221           "startPosition": "388",
 222           "parameters": [
 223             {
 224               "endPosition": "378",
 225               "kind": "IDENTIFIER",
 226               "name": "circle",
 227               "startPosition": "372"
 228             },
 229             {
 230               "endPosition": "386",
 231               "kind": "IDENTIFIER",
 232               "name": "canvas",
 233               "startPosition": "380"
 234             }
 235           ]
 236         },
 237         "startPosition": "367",
 238         "key": {
 239           "endPosition": "371",
 240           "kind": "IDENTIFIER",
 241           "name": "draw",
 242           "startPosition": "367"
 243         }
 244       },
 245       {
 246         "getter": {
 247           "endPosition": "449",
 248           "kind": "FUNCTION_EXPRESSION",
 249           "name": "null",
 250           "body": {
 251             "endPosition": "496",
 252             "kind": "BLOCK",
 253             "statements": [
 254               {
 255                 "expression": {
 256                   "condition": {
 257                     "expression": {
 258                       "identifier": "count_",
 259                       "expression": {
 260                         "endPosition": "471",
 261                         "kind": "IDENTIFIER",
 262                         "this": "true",
 263                         "name": "this",
 264                         "startPosition": "467"
 265                       },
 266                       "endPosition": "478",
 267                       "kind": "MEMBER_SELECT",
 268                       "startPosition": "467"
 269                     },
 270                     "endPosition": "478",
 271                     "kind": "LOGICAL_COMPLEMENT",
 272                     "startPosition": "466"
 273                   },
 274                   "endPosition": "496",
 275                   "kind": "CONDITIONAL_EXPRESSION",
 276                   "trueExpression": {
 277                     "endPosition": "482",
 278                     "kind": "NUMBER_LITERAL",
 279                     "value": "0",
 280                     "startPosition": "481"
 281                   },
 282                   "falseExpression": {
 283                     "identifier": "count_",
 284                     "expression": {
 285                       "endPosition": "489",
 286                       "kind": "IDENTIFIER",
 287                       "this": "true",
 288                       "name": "this",
 289                       "startPosition": "485"
 290                     },
 291                     "endPosition": "496",
 292                     "kind": "MEMBER_SELECT",
 293                     "startPosition": "485"
 294                   },
 295                   "startPosition": "479"
 296                 },
 297                 "endPosition": "496",
 298                 "kind": "RETURN",
 299                 "startPosition": "459"
 300               }
 301             ],
 302             "startPosition": "449"
 303           },
 304           "strict": "true",
 305           "startPosition": "449",
 306           "parameters": []
 307         },
 308         "static": "true",
 309         "endPosition": "502",
 310         "kind": "PROPERTY",
 311         "setter": {
 312           "endPosition": "535",
 313           "kind": "FUNCTION_EXPRESSION",
 314           "name": "null",
 315           "body": {
 316             "endPosition": "563",
 317             "kind": "BLOCK",
 318             "statements": [
 319               {
 320                 "expression": {
 321                   "expression": {
 322                     "endPosition": "563",
 323                     "kind": "IDENTIFIER",
 324                     "name": "val",
 325                     "startPosition": "560"
 326                   },
 327                   "endPosition": "563",
 328                   "kind": "ASSIGNMENT",
 329                   "variable": {
 330                     "identifier": "count_",
 331                     "expression": {
 332                       "endPosition": "550",
 333                       "kind": "IDENTIFIER",
 334                       "this": "true",
 335                       "name": "this",
 336                       "startPosition": "546"
 337                     },
 338                     "endPosition": "557",
 339                     "kind": "MEMBER_SELECT",
 340                     "startPosition": "546"
 341                   },
 342                   "startPosition": "546"
 343                 },
 344                 "endPosition": "563",
 345                 "kind": "EXPRESSION_STATEMENT",
 346                 "startPosition": "546"
 347               }
 348             ],
 349             "startPosition": "535"
 350           },
 351           "strict": "true",
 352           "startPosition": "535",
 353           "parameters": [
 354             {
 355               "endPosition": "533",
 356               "kind": "IDENTIFIER",
 357               "name": "val",
 358               "startPosition": "530"
 359             }
 360           ]
 361         },
 362         "value": "null",
 363         "startPosition": "432",
 364         "key": {
 365           "endPosition": "446",
 366           "kind": "IDENTIFIER",
 367           "name": "numCircles",
 368           "startPosition": "436"
 369         }
 370       },
 371       {
 372         "getter": "null",
 373         "endPosition": "639",
 374         "kind": "PROPERTY",
 375         "setter": "null",
 376         "value": {
 377           "endPosition": "582",
 378           "kind": "FUNCTION_EXPRESSION",
 379           "name": {
 380             "endPosition": "579",
 381             "kind": "IDENTIFIER",
 382             "name": "area",
 383             "startPosition": "575"
 384           },
 385           "body": {
 386             "endPosition": "633",
 387             "kind": "BLOCK",
 388             "statements": [
 389               {
 390                 "expression": {
 391                   "leftOperand": {
 392                     "endPosition": "623",
 393                     "kind": "FUNCTION_INVOCATION",
 394                     "functionSelect": {
 395                       "identifier": "pow",
 396                       "expression": {
 397                         "endPosition": "603",
 398                         "kind": "IDENTIFIER",
 399                         "name": "Math",
 400                         "startPosition": "599"
 401                       },
 402                       "endPosition": "607",
 403                       "kind": "MEMBER_SELECT",
 404                       "startPosition": "599"
 405                     },
 406                     "arguments": [
 407                       {
 408                         "identifier": "radius",
 409                         "expression": {
 410                           "endPosition": "612",
 411                           "kind": "IDENTIFIER",
 412                           "this": "true",
 413                           "name": "this",
 414                           "startPosition": "608"
 415                         },
 416                         "endPosition": "619",
 417                         "kind": "MEMBER_SELECT",
 418                         "startPosition": "608"
 419                       },
 420                       {
 421                         "endPosition": "622",
 422                         "kind": "NUMBER_LITERAL",
 423                         "value": "2",
 424                         "startPosition": "621"
 425                       }
 426                     ],
 427                     "startPosition": "599"
 428                   },
 429                   "endPosition": "633",
 430                   "kind": "MULTIPLY",
 431                   "rightOperand": {
 432                     "identifier": "PI",
 433                     "expression": {
 434                       "endPosition": "630",
 435                       "kind": "IDENTIFIER",
 436                       "name": "Math",
 437                       "startPosition": "626"
 438                     },
 439                     "endPosition": "633",
 440                     "kind": "MEMBER_SELECT",
 441                     "startPosition": "626"
 442                   },
 443                   "startPosition": "599"
 444                 },
 445                 "endPosition": "633",
 446                 "kind": "RETURN",
 447                 "startPosition": "592"
 448               }
 449             ],
 450             "startPosition": "582"
 451           },
 452           "strict": "true",
 453           "startPosition": "582",
 454           "parameters": []
 455         },
 456         "startPosition": "575",
 457         "key": {
 458           "endPosition": "579",
 459           "kind": "IDENTIFIER",
 460           "name": "area",
 461           "startPosition": "575"
 462         }
 463       },
 464       {
 465         "getter": {
 466           "endPosition": "658",
 467           "kind": "FUNCTION_EXPRESSION",
 468           "name": "null",
 469           "body": {
 470             "endPosition": "687",
 471             "kind": "BLOCK",
 472             "statements": [
 473               {
 474                 "expression": {
 475                   "identifier": "radius_",
 476                   "expression": {
 477                     "endPosition": "679",
 478                     "kind": "IDENTIFIER",
 479                     "this": "true",
 480                     "name": "this",
 481                     "startPosition": "675"
 482                   },
 483                   "endPosition": "687",
 484                   "kind": "MEMBER_SELECT",
 485                   "startPosition": "675"
 486                 },
 487                 "endPosition": "687",
 488                 "kind": "RETURN",
 489                 "startPosition": "668"
 490               }
 491             ],
 492             "startPosition": "658"
 493           },
 494           "strict": "true",
 495           "startPosition": "658",
 496           "parameters": []
 497         },
 498         "endPosition": "693",
 499         "kind": "PROPERTY",
 500         "setter": {
 501           "endPosition": "718",
 502           "kind": "FUNCTION_EXPRESSION",
 503           "name": "null",
 504           "body": {
 505             "endPosition": "852",
 506             "kind": "BLOCK",
 507             "statements": [
 508               {
 509                 "condition": {
 510                   "expression": {
 511                     "endPosition": "757",
 512                     "kind": "FUNCTION_INVOCATION",
 513                     "functionSelect": {
 514                       "identifier": "isInteger",
 515                       "expression": {
 516                         "endPosition": "739",
 517                         "kind": "IDENTIFIER",
 518                         "name": "Number",
 519                         "startPosition": "733"
 520                       },
 521                       "endPosition": "749",
 522                       "kind": "MEMBER_SELECT",
 523                       "startPosition": "733"
 524                     },
 525                     "arguments": [
 526                       {
 527                         "endPosition": "756",
 528                         "kind": "IDENTIFIER",
 529                         "name": "radius",
 530                         "startPosition": "750"
 531                       }
 532                     ],
 533                     "startPosition": "733"
 534                   },
 535                   "endPosition": "757",
 536                   "kind": "LOGICAL_COMPLEMENT",
 537                   "startPosition": "732"
 538                 },
 539                 "elseStatement": "null",
 540                 "endPosition": "822",
 541                 "kind": "IF",
 542                 "startPosition": "728",
 543                 "thenStatement": {
 544                   "expression": {
 545                     "constructorExpression": {
 546                       "endPosition": "821",
 547                       "kind": "FUNCTION_INVOCATION",
 548                       "functionSelect": {
 549                         "endPosition": "790",
 550                         "kind": "IDENTIFIER",
 551                         "name": "TypeError",
 552                         "startPosition": "781"
 553                       },
 554                       "arguments": [
 555                         {
 556                           "endPosition": "819",
 557                           "kind": "STRING_LITERAL",
 558                           "value": "Circle radius is not an int",
 559                           "startPosition": "792"
 560                         }
 561                       ],
 562                       "startPosition": "781"
 563                     },
 564                     "endPosition": "821",
 565                     "kind": "NEW",
 566                     "startPosition": "777"
 567                   },
 568                   "endPosition": "822",
 569                   "kind": "THROW",
 570                   "startPosition": "771"
 571                 }
 572               },
 573               {
 574                 "expression": {
 575                   "expression": {
 576                     "endPosition": "852",
 577                     "kind": "IDENTIFIER",
 578                     "name": "radius",
 579                     "startPosition": "846"
 580                   },
 581                   "endPosition": "852",
 582                   "kind": "ASSIGNMENT",
 583                   "variable": {
 584                     "identifier": "radius_",
 585                     "expression": {
 586                       "endPosition": "835",
 587                       "kind": "IDENTIFIER",
 588                       "this": "true",
 589                       "name": "this",
 590                       "startPosition": "831"
 591                     },
 592                     "endPosition": "843",
 593                     "kind": "MEMBER_SELECT",
 594                     "startPosition": "831"
 595                   },
 596                   "startPosition": "831"
 597                 },
 598                 "endPosition": "852",
 599                 "kind": "EXPRESSION_STATEMENT",
 600                 "startPosition": "831"
 601               }
 602             ],
 603             "startPosition": "718"
 604           },
 605           "strict": "true",
 606           "startPosition": "718",
 607           "parameters": [
 608             {
 609               "endPosition": "716",
 610               "kind": "IDENTIFIER",
 611               "name": "radius",
 612               "startPosition": "710"
 613             }
 614           ]
 615         },
 616         "value": "null",
 617         "startPosition": "645",
 618         "key": {
 619           "endPosition": "655",
 620           "kind": "IDENTIFIER",
 621           "name": "radius",
 622           "startPosition": "649"
 623         }
 624       }
 625     ],
 626     "endPosition": "231",
 627     "kind": "CLASS",
 628     "classHeritage": {
 629       "endPosition": "245",
 630       "kind": "IDENTIFIER",
 631       "name": "Shape",
 632       "startPosition": "240"
 633     },
 634     "name": {
 635       "endPosition": "231",
 636       "kind": "IDENTIFIER",
 637       "name": "Circle",
 638       "startPosition": "225"
 639     },
 640     "constructor": {
 641       "getter": "null",
 642       "endPosition": "354",
 643       "kind": "PROPERTY",
 644       "setter": "null",
 645       "value": {
 646         "endPosition": "272",
 647         "kind": "FUNCTION_EXPRESSION",
 648         "name": {
 649           "endPosition": "263",
 650           "kind": "IDENTIFIER",
 651           "name": "constructor",
 652           "startPosition": "252"
 653         },
 654         "body": {
 655           "endPosition": "348",
 656           "kind": "BLOCK",
 657           "statements": [
 658             {
 659               "expression": {
 660                 "endPosition": "289",
 661                 "kind": "FUNCTION_INVOCATION",
 662                 "functionSelect": {
 663                   "super": "true",
 664                   "endPosition": "287",
 665                   "kind": "IDENTIFIER",
 666                   "name": "super",
 667                   "startPosition": "282"
 668                 },
 669                 "arguments": [],
 670                 "startPosition": "282"
 671               },
 672               "endPosition": "289",
 673               "kind": "EXPRESSION_STATEMENT",
 674               "startPosition": "282"
 675             },
 676             {
 677               "expression": {
 678                 "expression": {
 679                   "endPosition": "320",
 680                   "kind": "IDENTIFIER",
 681                   "name": "radius",
 682                   "startPosition": "314"
 683                 },
 684                 "endPosition": "320",
 685                 "kind": "ASSIGNMENT",
 686                 "variable": {
 687                   "identifier": "radius_",
 688                   "expression": {
 689                     "endPosition": "303",
 690                     "kind": "IDENTIFIER",
 691                     "this": "true",
 692                     "name": "this",
 693                     "startPosition": "299"
 694                   },
 695                   "endPosition": "311",
 696                   "kind": "MEMBER_SELECT",
 697                   "startPosition": "299"
 698                 },
 699                 "startPosition": "299"
 700               },
 701               "endPosition": "320",
 702               "kind": "EXPRESSION_STATEMENT",
 703               "startPosition": "299"
 704             },
 705             {
 706               "expression": {
 707                 "expression": {
 708                   "identifier": "numCircles",
 709                   "expression": {
 710                     "endPosition": "335",
 711                     "kind": "IDENTIFIER",
 712                     "name": "Circle",
 713                     "startPosition": "329"
 714                   },
 715                   "endPosition": "346",
 716                   "kind": "MEMBER_SELECT",
 717                   "startPosition": "329"
 718                 },
 719                 "endPosition": "348",
 720                 "kind": "POSTFIX_INCREMENT",
 721                 "startPosition": "329"
 722               },
 723               "endPosition": "348",
 724               "kind": "EXPRESSION_STATEMENT",
 725               "startPosition": "329"
 726             }
 727           ],
 728           "startPosition": "272"
 729         },
 730         "strict": "true",
 731         "startPosition": "272",
 732         "parameters": [
 733           {
 734             "endPosition": "270",
 735             "kind": "IDENTIFIER",
 736             "name": "radius",
 737             "startPosition": "264"
 738           }
 739         ]
 740       },
 741       "startPosition": "252",
 742       "key": {
 743         "endPosition": "263",
 744         "kind": "IDENTIFIER",
 745         "name": "constructor",
 746         "startPosition": "252"
 747       }
 748     },
 749     "startPosition": "219"
 750   }
 751 ]