1[
   2  {
   3    "type": "declaration",
   4    "named": true,
   5    "subtypes": [
   6      {
   7        "type": "?",
   8        "named": false
   9      },
  10      {
  11        "type": "address",
  12        "named": true
  13      },
  14      {
  15        "type": "binary_expression",
  16        "named": true
  17      },
  18      {
  19        "type": "bit_field_declaration",
  20        "named": true
  21      },
  22      {
  23        "type": "build_tag",
  24        "named": true
  25      },
  26      {
  27        "type": "call_expression",
  28        "named": true
  29      },
  30      {
  31        "type": "cast_expression",
  32        "named": true
  33      },
  34      {
  35        "type": "const_declaration",
  36        "named": true
  37      },
  38      {
  39        "type": "const_type_declaration",
  40        "named": true
  41      },
  42      {
  43        "type": "distinct_type",
  44        "named": true
  45      },
  46      {
  47        "type": "enum_declaration",
  48        "named": true
  49      },
  50      {
  51        "type": "foreign_block",
  52        "named": true
  53      },
  54      {
  55        "type": "identifier",
  56        "named": true
  57      },
  58      {
  59        "type": "import_declaration",
  60        "named": true
  61      },
  62      {
  63        "type": "in_expression",
  64        "named": true
  65      },
  66      {
  67        "type": "index_expression",
  68        "named": true
  69      },
  70      {
  71        "type": "literal",
  72        "named": true
  73      },
  74      {
  75        "type": "map_type",
  76        "named": true
  77      },
  78      {
  79        "type": "matrix_type",
  80        "named": true
  81      },
  82      {
  83        "type": "member_expression",
  84        "named": true
  85      },
  86      {
  87        "type": "or_break_expression",
  88        "named": true
  89      },
  90      {
  91        "type": "or_continue_expression",
  92        "named": true
  93      },
  94      {
  95        "type": "or_return_expression",
  96        "named": true
  97      },
  98      {
  99        "type": "overloaded_procedure_declaration",
 100        "named": true
 101      },
 102      {
 103        "type": "package_declaration",
 104        "named": true
 105      },
 106      {
 107        "type": "parenthesized_expression",
 108        "named": true
 109      },
 110      {
 111        "type": "procedure_declaration",
 112        "named": true
 113      },
 114      {
 115        "type": "range_expression",
 116        "named": true
 117      },
 118      {
 119        "type": "selector_call_expression",
 120        "named": true
 121      },
 122      {
 123        "type": "slice_expression",
 124        "named": true
 125      },
 126      {
 127        "type": "struct_declaration",
 128        "named": true
 129      },
 130      {
 131        "type": "ternary_expression",
 132        "named": true
 133      },
 134      {
 135        "type": "unary_expression",
 136        "named": true
 137      },
 138      {
 139        "type": "union_declaration",
 140        "named": true
 141      },
 142      {
 143        "type": "var_declaration",
 144        "named": true
 145      },
 146      {
 147        "type": "variable_declaration",
 148        "named": true
 149      },
 150      {
 151        "type": "variadic_expression",
 152        "named": true
 153      },
 154      {
 155        "type": "when_statement",
 156        "named": true
 157      }
 158    ]
 159  },
 160  {
 161    "type": "expression",
 162    "named": true,
 163    "subtypes": [
 164      {
 165        "type": "?",
 166        "named": false
 167      },
 168      {
 169        "type": "address",
 170        "named": true
 171      },
 172      {
 173        "type": "binary_expression",
 174        "named": true
 175      },
 176      {
 177        "type": "call_expression",
 178        "named": true
 179      },
 180      {
 181        "type": "cast_expression",
 182        "named": true
 183      },
 184      {
 185        "type": "distinct_type",
 186        "named": true
 187      },
 188      {
 189        "type": "identifier",
 190        "named": true
 191      },
 192      {
 193        "type": "in_expression",
 194        "named": true
 195      },
 196      {
 197        "type": "index_expression",
 198        "named": true
 199      },
 200      {
 201        "type": "literal",
 202        "named": true
 203      },
 204      {
 205        "type": "map_type",
 206        "named": true
 207      },
 208      {
 209        "type": "matrix_type",
 210        "named": true
 211      },
 212      {
 213        "type": "member_expression",
 214        "named": true
 215      },
 216      {
 217        "type": "or_break_expression",
 218        "named": true
 219      },
 220      {
 221        "type": "or_continue_expression",
 222        "named": true
 223      },
 224      {
 225        "type": "or_return_expression",
 226        "named": true
 227      },
 228      {
 229        "type": "parenthesized_expression",
 230        "named": true
 231      },
 232      {
 233        "type": "range_expression",
 234        "named": true
 235      },
 236      {
 237        "type": "selector_call_expression",
 238        "named": true
 239      },
 240      {
 241        "type": "slice_expression",
 242        "named": true
 243      },
 244      {
 245        "type": "tag",
 246        "named": true
 247      },
 248      {
 249        "type": "ternary_expression",
 250        "named": true
 251      },
 252      {
 253        "type": "unary_expression",
 254        "named": true
 255      },
 256      {
 257        "type": "variadic_expression",
 258        "named": true
 259      }
 260    ]
 261  },
 262  {
 263    "type": "literal",
 264    "named": true,
 265    "subtypes": [
 266      {
 267        "type": "bit_set",
 268        "named": true
 269      },
 270      {
 271        "type": "boolean",
 272        "named": true
 273      },
 274      {
 275        "type": "character",
 276        "named": true
 277      },
 278      {
 279        "type": "float",
 280        "named": true
 281      },
 282      {
 283        "type": "map",
 284        "named": true
 285      },
 286      {
 287        "type": "matrix",
 288        "named": true
 289      },
 290      {
 291        "type": "nil",
 292        "named": true
 293      },
 294      {
 295        "type": "number",
 296        "named": true
 297      },
 298      {
 299        "type": "string",
 300        "named": true
 301      },
 302      {
 303        "type": "struct",
 304        "named": true
 305      },
 306      {
 307        "type": "uninitialized",
 308        "named": true
 309      }
 310    ]
 311  },
 312  {
 313    "type": "statement",
 314    "named": true,
 315    "subtypes": [
 316      {
 317        "type": "?",
 318        "named": false
 319      },
 320      {
 321        "type": "address",
 322        "named": true
 323      },
 324      {
 325        "type": "assignment_statement",
 326        "named": true
 327      },
 328      {
 329        "type": "binary_expression",
 330        "named": true
 331      },
 332      {
 333        "type": "bit_field_declaration",
 334        "named": true
 335      },
 336      {
 337        "type": "block",
 338        "named": true
 339      },
 340      {
 341        "type": "break_statement",
 342        "named": true
 343      },
 344      {
 345        "type": "call_expression",
 346        "named": true
 347      },
 348      {
 349        "type": "cast_expression",
 350        "named": true
 351      },
 352      {
 353        "type": "const_declaration",
 354        "named": true
 355      },
 356      {
 357        "type": "continue_statement",
 358        "named": true
 359      },
 360      {
 361        "type": "defer_statement",
 362        "named": true
 363      },
 364      {
 365        "type": "distinct_type",
 366        "named": true
 367      },
 368      {
 369        "type": "enum_declaration",
 370        "named": true
 371      },
 372      {
 373        "type": "fallthrough_statement",
 374        "named": true
 375      },
 376      {
 377        "type": "for_statement",
 378        "named": true
 379      },
 380      {
 381        "type": "foreign_block",
 382        "named": true
 383      },
 384      {
 385        "type": "identifier",
 386        "named": true
 387      },
 388      {
 389        "type": "if_statement",
 390        "named": true
 391      },
 392      {
 393        "type": "import_declaration",
 394        "named": true
 395      },
 396      {
 397        "type": "in_expression",
 398        "named": true
 399      },
 400      {
 401        "type": "index_expression",
 402        "named": true
 403      },
 404      {
 405        "type": "label_statement",
 406        "named": true
 407      },
 408      {
 409        "type": "literal",
 410        "named": true
 411      },
 412      {
 413        "type": "map_type",
 414        "named": true
 415      },
 416      {
 417        "type": "matrix_type",
 418        "named": true
 419      },
 420      {
 421        "type": "member_expression",
 422        "named": true
 423      },
 424      {
 425        "type": "or_break_expression",
 426        "named": true
 427      },
 428      {
 429        "type": "or_continue_expression",
 430        "named": true
 431      },
 432      {
 433        "type": "or_return_expression",
 434        "named": true
 435      },
 436      {
 437        "type": "overloaded_procedure_declaration",
 438        "named": true
 439      },
 440      {
 441        "type": "parenthesized_expression",
 442        "named": true
 443      },
 444      {
 445        "type": "procedure_declaration",
 446        "named": true
 447      },
 448      {
 449        "type": "range_expression",
 450        "named": true
 451      },
 452      {
 453        "type": "return_statement",
 454        "named": true
 455      },
 456      {
 457        "type": "selector_call_expression",
 458        "named": true
 459      },
 460      {
 461        "type": "slice_expression",
 462        "named": true
 463      },
 464      {
 465        "type": "struct_declaration",
 466        "named": true
 467      },
 468      {
 469        "type": "switch_statement",
 470        "named": true
 471      },
 472      {
 473        "type": "tagged_block",
 474        "named": true
 475      },
 476      {
 477        "type": "ternary_expression",
 478        "named": true
 479      },
 480      {
 481        "type": "unary_expression",
 482        "named": true
 483      },
 484      {
 485        "type": "union_declaration",
 486        "named": true
 487      },
 488      {
 489        "type": "update_statement",
 490        "named": true
 491      },
 492      {
 493        "type": "using_statement",
 494        "named": true
 495      },
 496      {
 497        "type": "var_declaration",
 498        "named": true
 499      },
 500      {
 501        "type": "variadic_expression",
 502        "named": true
 503      },
 504      {
 505        "type": "when_statement",
 506        "named": true
 507      }
 508    ]
 509  },
 510  {
 511    "type": "address",
 512    "named": true,
 513    "fields": {},
 514    "children": {
 515      "multiple": false,
 516      "required": true,
 517      "types": [
 518        {
 519          "type": "expression",
 520          "named": true
 521        }
 522      ]
 523    }
 524  },
 525  {
 526    "type": "array_type",
 527    "named": true,
 528    "fields": {},
 529    "children": {
 530      "multiple": true,
 531      "required": false,
 532      "types": [
 533        {
 534          "type": "expression",
 535          "named": true
 536        },
 537        {
 538          "type": "type",
 539          "named": true
 540        }
 541      ]
 542    }
 543  },
 544  {
 545    "type": "assignment_statement",
 546    "named": true,
 547    "fields": {},
 548    "children": {
 549      "multiple": true,
 550      "required": true,
 551      "types": [
 552        {
 553          "type": "attributes",
 554          "named": true
 555        },
 556        {
 557          "type": "expression",
 558          "named": true
 559        },
 560        {
 561          "type": "procedure",
 562          "named": true
 563        }
 564      ]
 565    }
 566  },
 567  {
 568    "type": "attribute",
 569    "named": true,
 570    "fields": {},
 571    "children": {
 572      "multiple": true,
 573      "required": true,
 574      "types": [
 575        {
 576          "type": "expression",
 577          "named": true
 578        }
 579      ]
 580    }
 581  },
 582  {
 583    "type": "attributes",
 584    "named": true,
 585    "fields": {},
 586    "children": {
 587      "multiple": true,
 588      "required": true,
 589      "types": [
 590        {
 591          "type": "attribute",
 592          "named": true
 593        }
 594      ]
 595    }
 596  },
 597  {
 598    "type": "binary_expression",
 599    "named": true,
 600    "fields": {
 601      "left": {
 602        "multiple": false,
 603        "required": true,
 604        "types": [
 605          {
 606            "type": "expression",
 607            "named": true
 608          }
 609        ]
 610      },
 611      "operator": {
 612        "multiple": false,
 613        "required": true,
 614        "types": [
 615          {
 616            "type": "!=",
 617            "named": false
 618          },
 619          {
 620            "type": "%",
 621            "named": false
 622          },
 623          {
 624            "type": "%%",
 625            "named": false
 626          },
 627          {
 628            "type": "&",
 629            "named": false
 630          },
 631          {
 632            "type": "&&",
 633            "named": false
 634          },
 635          {
 636            "type": "&~",
 637            "named": false
 638          },
 639          {
 640            "type": "*",
 641            "named": false
 642          },
 643          {
 644            "type": "+",
 645            "named": false
 646          },
 647          {
 648            "type": "-",
 649            "named": false
 650          },
 651          {
 652            "type": "/",
 653            "named": false
 654          },
 655          {
 656            "type": "<",
 657            "named": false
 658          },
 659          {
 660            "type": "<<",
 661            "named": false
 662          },
 663          {
 664            "type": "<=",
 665            "named": false
 666          },
 667          {
 668            "type": "==",
 669            "named": false
 670          },
 671          {
 672            "type": ">",
 673            "named": false
 674          },
 675          {
 676            "type": ">=",
 677            "named": false
 678          },
 679          {
 680            "type": ">>",
 681            "named": false
 682          },
 683          {
 684            "type": "or_else",
 685            "named": false
 686          },
 687          {
 688            "type": "|",
 689            "named": false
 690          },
 691          {
 692            "type": "||",
 693            "named": false
 694          },
 695          {
 696            "type": "~",
 697            "named": false
 698          },
 699          {
 700            "type": "~=",
 701            "named": false
 702          }
 703        ]
 704      },
 705      "right": {
 706        "multiple": false,
 707        "required": true,
 708        "types": [
 709          {
 710            "type": "expression",
 711            "named": true
 712          }
 713        ]
 714      }
 715    }
 716  },
 717  {
 718    "type": "bit_field_declaration",
 719    "named": true,
 720    "fields": {},
 721    "children": {
 722      "multiple": true,
 723      "required": true,
 724      "types": [
 725        {
 726          "type": "attributes",
 727          "named": true
 728        },
 729        {
 730          "type": "expression",
 731          "named": true
 732        },
 733        {
 734          "type": "type",
 735          "named": true
 736        }
 737      ]
 738    }
 739  },
 740  {
 741    "type": "bit_field_type",
 742    "named": true,
 743    "fields": {},
 744    "children": {
 745      "multiple": true,
 746      "required": true,
 747      "types": [
 748        {
 749          "type": "expression",
 750          "named": true
 751        },
 752        {
 753          "type": "type",
 754          "named": true
 755        }
 756      ]
 757    }
 758  },
 759  {
 760    "type": "bit_set",
 761    "named": true,
 762    "fields": {
 763      "underlying_type": {
 764        "multiple": false,
 765        "required": false,
 766        "types": [
 767          {
 768            "type": "type",
 769            "named": true
 770          }
 771        ]
 772      }
 773    },
 774    "children": {
 775      "multiple": true,
 776      "required": true,
 777      "types": [
 778        {
 779          "type": "expression",
 780          "named": true
 781        }
 782      ]
 783    }
 784  },
 785  {
 786    "type": "bit_set_type",
 787    "named": true,
 788    "fields": {},
 789    "children": {
 790      "multiple": true,
 791      "required": true,
 792      "types": [
 793        {
 794          "type": "constant_type",
 795          "named": true
 796        },
 797        {
 798          "type": "expression",
 799          "named": true
 800        },
 801        {
 802          "type": "type",
 803          "named": true
 804        }
 805      ]
 806    }
 807  },
 808  {
 809    "type": "block",
 810    "named": true,
 811    "fields": {},
 812    "children": {
 813      "multiple": true,
 814      "required": false,
 815      "types": [
 816        {
 817          "type": "statement",
 818          "named": true
 819        },
 820        {
 821          "type": "tag",
 822          "named": true
 823        }
 824      ]
 825    }
 826  },
 827  {
 828    "type": "boolean",
 829    "named": true,
 830    "fields": {}
 831  },
 832  {
 833    "type": "break_statement",
 834    "named": true,
 835    "fields": {},
 836    "children": {
 837      "multiple": false,
 838      "required": false,
 839      "types": [
 840        {
 841          "type": "identifier",
 842          "named": true
 843        }
 844      ]
 845    }
 846  },
 847  {
 848    "type": "build_tag",
 849    "named": true,
 850    "fields": {}
 851  },
 852  {
 853    "type": "call_expression",
 854    "named": true,
 855    "fields": {
 856      "argument": {
 857        "multiple": true,
 858        "required": false,
 859        "types": [
 860          {
 861            "type": "array_type",
 862            "named": true
 863          },
 864          {
 865            "type": "expression",
 866            "named": true
 867          },
 868          {
 869            "type": "pointer_type",
 870            "named": true
 871          },
 872          {
 873            "type": "procedure",
 874            "named": true
 875          },
 876          {
 877            "type": "struct_type",
 878            "named": true
 879          }
 880        ]
 881      },
 882      "function": {
 883        "multiple": true,
 884        "required": true,
 885        "types": [
 886          {
 887            "type": "?",
 888            "named": false
 889          },
 890          {
 891            "type": "address",
 892            "named": true
 893          },
 894          {
 895            "type": "binary_expression",
 896            "named": true
 897          },
 898          {
 899            "type": "call_expression",
 900            "named": true
 901          },
 902          {
 903            "type": "cast_expression",
 904            "named": true
 905          },
 906          {
 907            "type": "distinct_type",
 908            "named": true
 909          },
 910          {
 911            "type": "identifier",
 912            "named": true
 913          },
 914          {
 915            "type": "in_expression",
 916            "named": true
 917          },
 918          {
 919            "type": "index_expression",
 920            "named": true
 921          },
 922          {
 923            "type": "literal",
 924            "named": true
 925          },
 926          {
 927            "type": "map_type",
 928            "named": true
 929          },
 930          {
 931            "type": "matrix_type",
 932            "named": true
 933          },
 934          {
 935            "type": "member_expression",
 936            "named": true
 937          },
 938          {
 939            "type": "or_break_expression",
 940            "named": true
 941          },
 942          {
 943            "type": "or_continue_expression",
 944            "named": true
 945          },
 946          {
 947            "type": "or_return_expression",
 948            "named": true
 949          },
 950          {
 951            "type": "parenthesized_expression",
 952            "named": true
 953          },
 954          {
 955            "type": "range_expression",
 956            "named": true
 957          },
 958          {
 959            "type": "selector_call_expression",
 960            "named": true
 961          },
 962          {
 963            "type": "slice_expression",
 964            "named": true
 965          },
 966          {
 967            "type": "tag",
 968            "named": true
 969          },
 970          {
 971            "type": "ternary_expression",
 972            "named": true
 973          },
 974          {
 975            "type": "unary_expression",
 976            "named": true
 977          },
 978          {
 979            "type": "variadic_expression",
 980            "named": true
 981          }
 982        ]
 983      }
 984    },
 985    "children": {
 986      "multiple": true,
 987      "required": false,
 988      "types": [
 989        {
 990          "type": "expression",
 991          "named": true
 992        }
 993      ]
 994    }
 995  },
 996  {
 997    "type": "calling_convention",
 998    "named": true,
 999    "fields": {}
1000  },
1001  {
1002    "type": "cast_expression",
1003    "named": true,
1004    "fields": {},
1005    "children": {
1006      "multiple": true,
1007      "required": true,
1008      "types": [
1009        {
1010          "type": "array_type",
1011          "named": true
1012        },
1013        {
1014          "type": "expression",
1015          "named": true
1016        },
1017        {
1018          "type": "pointer_type",
1019          "named": true
1020        },
1021        {
1022          "type": "procedure_type",
1023          "named": true
1024        },
1025        {
1026          "type": "type",
1027          "named": true
1028        }
1029      ]
1030    }
1031  },
1032  {
1033    "type": "character",
1034    "named": true,
1035    "fields": {},
1036    "children": {
1037      "multiple": false,
1038      "required": false,
1039      "types": [
1040        {
1041          "type": "escape_sequence",
1042          "named": true
1043        }
1044      ]
1045    }
1046  },
1047  {
1048    "type": "conditional_type",
1049    "named": true,
1050    "fields": {},
1051    "children": {
1052      "multiple": true,
1053      "required": true,
1054      "types": [
1055        {
1056          "type": "expression",
1057          "named": true
1058        },
1059        {
1060          "type": "type",
1061          "named": true
1062        }
1063      ]
1064    }
1065  },
1066  {
1067    "type": "const_declaration",
1068    "named": true,
1069    "fields": {},
1070    "children": {
1071      "multiple": true,
1072      "required": true,
1073      "types": [
1074        {
1075          "type": "array_type",
1076          "named": true
1077        },
1078        {
1079          "type": "attributes",
1080          "named": true
1081        },
1082        {
1083          "type": "bit_set_type",
1084          "named": true
1085        },
1086        {
1087          "type": "expression",
1088          "named": true
1089        },
1090        {
1091          "type": "pointer_type",
1092          "named": true
1093        },
1094        {
1095          "type": "type",
1096          "named": true
1097        }
1098      ]
1099    }
1100  },
1101  {
1102    "type": "const_type_declaration",
1103    "named": true,
1104    "fields": {},
1105    "children": {
1106      "multiple": true,
1107      "required": true,
1108      "types": [
1109        {
1110          "type": "attributes",
1111          "named": true
1112        },
1113        {
1114          "type": "expression",
1115          "named": true
1116        },
1117        {
1118          "type": "type",
1119          "named": true
1120        }
1121      ]
1122    }
1123  },
1124  {
1125    "type": "constant_type",
1126    "named": true,
1127    "fields": {},
1128    "children": {
1129      "multiple": false,
1130      "required": true,
1131      "types": [
1132        {
1133          "type": "type",
1134          "named": true
1135        }
1136      ]
1137    }
1138  },
1139  {
1140    "type": "continue_statement",
1141    "named": true,
1142    "fields": {},
1143    "children": {
1144      "multiple": false,
1145      "required": false,
1146      "types": [
1147        {
1148          "type": "identifier",
1149          "named": true
1150        }
1151      ]
1152    }
1153  },
1154  {
1155    "type": "default_parameter",
1156    "named": true,
1157    "fields": {},
1158    "children": {
1159      "multiple": true,
1160      "required": true,
1161      "types": [
1162        {
1163          "type": "expression",
1164          "named": true
1165        }
1166      ]
1167    }
1168  },
1169  {
1170    "type": "default_type",
1171    "named": true,
1172    "fields": {},
1173    "children": {
1174      "multiple": true,
1175      "required": true,
1176      "types": [
1177        {
1178          "type": "expression",
1179          "named": true
1180        }
1181      ]
1182    }
1183  },
1184  {
1185    "type": "defer_statement",
1186    "named": true,
1187    "fields": {},
1188    "children": {
1189      "multiple": false,
1190      "required": true,
1191      "types": [
1192        {
1193          "type": "statement",
1194          "named": true
1195        }
1196      ]
1197    }
1198  },
1199  {
1200    "type": "distinct_type",
1201    "named": true,
1202    "fields": {},
1203    "children": {
1204      "multiple": true,
1205      "required": true,
1206      "types": [
1207        {
1208          "type": "tag",
1209          "named": true
1210        },
1211        {
1212          "type": "type",
1213          "named": true
1214        }
1215      ]
1216    }
1217  },
1218  {
1219    "type": "else_clause",
1220    "named": true,
1221    "fields": {
1222      "consequence": {
1223        "multiple": false,
1224        "required": true,
1225        "types": [
1226          {
1227            "type": "statement",
1228            "named": true
1229          }
1230        ]
1231      }
1232    }
1233  },
1234  {
1235    "type": "else_if_clause",
1236    "named": true,
1237    "fields": {
1238      "condition": {
1239        "multiple": false,
1240        "required": true,
1241        "types": [
1242          {
1243            "type": "expression",
1244            "named": true
1245          }
1246        ]
1247      },
1248      "consequence": {
1249        "multiple": false,
1250        "required": true,
1251        "types": [
1252          {
1253            "type": "statement",
1254            "named": true
1255          }
1256        ]
1257      },
1258      "initializer": {
1259        "multiple": false,
1260        "required": false,
1261        "types": [
1262          {
1263            "type": "assignment_statement",
1264            "named": true
1265          }
1266        ]
1267      }
1268    }
1269  },
1270  {
1271    "type": "else_when_clause",
1272    "named": true,
1273    "fields": {},
1274    "children": {
1275      "multiple": true,
1276      "required": true,
1277      "types": [
1278        {
1279          "type": "block",
1280          "named": true
1281        },
1282        {
1283          "type": "expression",
1284          "named": true
1285        }
1286      ]
1287    }
1288  },
1289  {
1290    "type": "empty_type",
1291    "named": true,
1292    "fields": {}
1293  },
1294  {
1295    "type": "enum_declaration",
1296    "named": true,
1297    "fields": {},
1298    "children": {
1299      "multiple": true,
1300      "required": true,
1301      "types": [
1302        {
1303          "type": "attributes",
1304          "named": true
1305        },
1306        {
1307          "type": "expression",
1308          "named": true
1309        },
1310        {
1311          "type": "type",
1312          "named": true
1313        }
1314      ]
1315    }
1316  },
1317  {
1318    "type": "enum_type",
1319    "named": true,
1320    "fields": {
1321      "underlying_type": {
1322        "multiple": false,
1323        "required": false,
1324        "types": [
1325          {
1326            "type": "type",
1327            "named": true
1328          }
1329        ]
1330      }
1331    },
1332    "children": {
1333      "multiple": true,
1334      "required": true,
1335      "types": [
1336        {
1337          "type": "expression",
1338          "named": true
1339        }
1340      ]
1341    }
1342  },
1343  {
1344    "type": "field",
1345    "named": true,
1346    "fields": {},
1347    "children": {
1348      "multiple": true,
1349      "required": true,
1350      "types": [
1351        {
1352          "type": "identifier",
1353          "named": true
1354        },
1355        {
1356          "type": "string",
1357          "named": true
1358        },
1359        {
1360          "type": "tag",
1361          "named": true
1362        },
1363        {
1364          "type": "type",
1365          "named": true
1366        }
1367      ]
1368    }
1369  },
1370  {
1371    "type": "field_identifier",
1372    "named": true,
1373    "fields": {},
1374    "children": {
1375      "multiple": true,
1376      "required": true,
1377      "types": [
1378        {
1379          "type": "identifier",
1380          "named": true
1381        }
1382      ]
1383    }
1384  },
1385  {
1386    "type": "field_type",
1387    "named": true,
1388    "fields": {},
1389    "children": {
1390      "multiple": true,
1391      "required": true,
1392      "types": [
1393        {
1394          "type": "identifier",
1395          "named": true
1396        }
1397      ]
1398    }
1399  },
1400  {
1401    "type": "for_statement",
1402    "named": true,
1403    "fields": {
1404      "condition": {
1405        "multiple": false,
1406        "required": false,
1407        "types": [
1408          {
1409            "type": "expression",
1410            "named": true
1411          }
1412        ]
1413      },
1414      "consequence": {
1415        "multiple": true,
1416        "required": true,
1417        "types": [
1418          {
1419            "type": "do",
1420            "named": false
1421          },
1422          {
1423            "type": "statement",
1424            "named": true
1425          }
1426        ]
1427      },
1428      "initializer": {
1429        "multiple": false,
1430        "required": false,
1431        "types": [
1432          {
1433            "type": "assignment_statement",
1434            "named": true
1435          },
1436          {
1437            "type": "update_statement",
1438            "named": true
1439          },
1440          {
1441            "type": "var_declaration",
1442            "named": true
1443          }
1444        ]
1445      },
1446      "post": {
1447        "multiple": false,
1448        "required": false,
1449        "types": [
1450          {
1451            "type": "assignment_statement",
1452            "named": true
1453          },
1454          {
1455            "type": "update_statement",
1456            "named": true
1457          }
1458        ]
1459      }
1460    },
1461    "children": {
1462      "multiple": true,
1463      "required": false,
1464      "types": [
1465        {
1466          "type": "expression",
1467          "named": true
1468        }
1469      ]
1470    }
1471  },
1472  {
1473    "type": "foreign_block",
1474    "named": true,
1475    "fields": {},
1476    "children": {
1477      "multiple": true,
1478      "required": true,
1479      "types": [
1480        {
1481          "type": "attributes",
1482          "named": true
1483        },
1484        {
1485          "type": "block",
1486          "named": true
1487        },
1488        {
1489          "type": "identifier",
1490          "named": true
1491        }
1492      ]
1493    }
1494  },
1495  {
1496    "type": "if_statement",
1497    "named": true,
1498    "fields": {
1499      "condition": {
1500        "multiple": false,
1501        "required": true,
1502        "types": [
1503          {
1504            "type": "expression",
1505            "named": true
1506          }
1507        ]
1508      },
1509      "consequence": {
1510        "multiple": false,
1511        "required": true,
1512        "types": [
1513          {
1514            "type": "statement",
1515            "named": true
1516          }
1517        ]
1518      },
1519      "initializer": {
1520        "multiple": false,
1521        "required": false,
1522        "types": [
1523          {
1524            "type": "assignment_statement",
1525            "named": true
1526          },
1527          {
1528            "type": "update_statement",
1529            "named": true
1530          },
1531          {
1532            "type": "var_declaration",
1533            "named": true
1534          }
1535        ]
1536      }
1537    },
1538    "children": {
1539      "multiple": true,
1540      "required": false,
1541      "types": [
1542        {
1543          "type": "else_clause",
1544          "named": true
1545        },
1546        {
1547          "type": "else_if_clause",
1548          "named": true
1549        },
1550        {
1551          "type": "tag",
1552          "named": true
1553        }
1554      ]
1555    }
1556  },
1557  {
1558    "type": "import_declaration",
1559    "named": true,
1560    "fields": {
1561      "alias": {
1562        "multiple": false,
1563        "required": false,
1564        "types": [
1565          {
1566            "type": "identifier",
1567            "named": true
1568          }
1569        ]
1570      }
1571    },
1572    "children": {
1573      "multiple": true,
1574      "required": true,
1575      "types": [
1576        {
1577          "type": "attributes",
1578          "named": true
1579        },
1580        {
1581          "type": "identifier",
1582          "named": true
1583        },
1584        {
1585          "type": "string",
1586          "named": true
1587        }
1588      ]
1589    }
1590  },
1591  {
1592    "type": "in_expression",
1593    "named": true,
1594    "fields": {},
1595    "children": {
1596      "multiple": true,
1597      "required": true,
1598      "types": [
1599        {
1600          "type": "expression",
1601          "named": true
1602        }
1603      ]
1604    }
1605  },
1606  {
1607    "type": "index_expression",
1608    "named": true,
1609    "fields": {},
1610    "children": {
1611      "multiple": true,
1612      "required": true,
1613      "types": [
1614        {
1615          "type": "expression",
1616          "named": true
1617        }
1618      ]
1619    }
1620  },
1621  {
1622    "type": "label_statement",
1623    "named": true,
1624    "fields": {},
1625    "children": {
1626      "multiple": true,
1627      "required": true,
1628      "types": [
1629        {
1630          "type": "block",
1631          "named": true
1632        },
1633        {
1634          "type": "expression",
1635          "named": true
1636        },
1637        {
1638          "type": "for_statement",
1639          "named": true
1640        },
1641        {
1642          "type": "if_statement",
1643          "named": true
1644        },
1645        {
1646          "type": "switch_statement",
1647          "named": true
1648        }
1649      ]
1650    }
1651  },
1652  {
1653    "type": "map",
1654    "named": true,
1655    "fields": {},
1656    "children": {
1657      "multiple": true,
1658      "required": true,
1659      "types": [
1660        {
1661          "type": "expression",
1662          "named": true
1663        },
1664        {
1665          "type": "type",
1666          "named": true
1667        }
1668      ]
1669    }
1670  },
1671  {
1672    "type": "map_type",
1673    "named": true,
1674    "fields": {},
1675    "children": {
1676      "multiple": true,
1677      "required": true,
1678      "types": [
1679        {
1680          "type": "type",
1681          "named": true
1682        }
1683      ]
1684    }
1685  },
1686  {
1687    "type": "matrix",
1688    "named": true,
1689    "fields": {},
1690    "children": {
1691      "multiple": true,
1692      "required": true,
1693      "types": [
1694        {
1695          "type": "expression",
1696          "named": true
1697        },
1698        {
1699          "type": "type",
1700          "named": true
1701        }
1702      ]
1703    }
1704  },
1705  {
1706    "type": "matrix_type",
1707    "named": true,
1708    "fields": {},
1709    "children": {
1710      "multiple": true,
1711      "required": true,
1712      "types": [
1713        {
1714          "type": "constant_type",
1715          "named": true
1716        },
1717        {
1718          "type": "expression",
1719          "named": true
1720        },
1721        {
1722          "type": "type",
1723          "named": true
1724        }
1725      ]
1726    }
1727  },
1728  {
1729    "type": "member_expression",
1730    "named": true,
1731    "fields": {},
1732    "children": {
1733      "multiple": true,
1734      "required": true,
1735      "types": [
1736        {
1737          "type": "expression",
1738          "named": true
1739        }
1740      ]
1741    }
1742  },
1743  {
1744    "type": "named_type",
1745    "named": true,
1746    "fields": {},
1747    "children": {
1748      "multiple": true,
1749      "required": true,
1750      "types": [
1751        {
1752          "type": "identifier",
1753          "named": true
1754        },
1755        {
1756          "type": "literal",
1757          "named": true
1758        },
1759        {
1760          "type": "type",
1761          "named": true
1762        }
1763      ]
1764    }
1765  },
1766  {
1767    "type": "or_break_expression",
1768    "named": true,
1769    "fields": {},
1770    "children": {
1771      "multiple": true,
1772      "required": true,
1773      "types": [
1774        {
1775          "type": "expression",
1776          "named": true
1777        }
1778      ]
1779    }
1780  },
1781  {
1782    "type": "or_continue_expression",
1783    "named": true,
1784    "fields": {
1785      "label": {
1786        "multiple": false,
1787        "required": false,
1788        "types": [
1789          {
1790            "type": "identifier",
1791            "named": true
1792          }
1793        ]
1794      }
1795    },
1796    "children": {
1797      "multiple": false,
1798      "required": true,
1799      "types": [
1800        {
1801          "type": "expression",
1802          "named": true
1803        }
1804      ]
1805    }
1806  },
1807  {
1808    "type": "or_return_expression",
1809    "named": true,
1810    "fields": {},
1811    "children": {
1812      "multiple": false,
1813      "required": true,
1814      "types": [
1815        {
1816          "type": "expression",
1817          "named": true
1818        }
1819      ]
1820    }
1821  },
1822  {
1823    "type": "overloaded_procedure_declaration",
1824    "named": true,
1825    "fields": {},
1826    "children": {
1827      "multiple": true,
1828      "required": true,
1829      "types": [
1830        {
1831          "type": "attributes",
1832          "named": true
1833        },
1834        {
1835          "type": "expression",
1836          "named": true
1837        }
1838      ]
1839    }
1840  },
1841  {
1842    "type": "package_declaration",
1843    "named": true,
1844    "fields": {},
1845    "children": {
1846      "multiple": false,
1847      "required": true,
1848      "types": [
1849        {
1850          "type": "identifier",
1851          "named": true
1852        }
1853      ]
1854    }
1855  },
1856  {
1857    "type": "parameter",
1858    "named": true,
1859    "fields": {},
1860    "children": {
1861      "multiple": true,
1862      "required": true,
1863      "types": [
1864        {
1865          "type": "array_type",
1866          "named": true
1867        },
1868        {
1869          "type": "expression",
1870          "named": true
1871        },
1872        {
1873          "type": "field_type",
1874          "named": true
1875        },
1876        {
1877          "type": "pointer_type",
1878          "named": true
1879        },
1880        {
1881          "type": "procedure_type",
1882          "named": true
1883        },
1884        {
1885          "type": "type",
1886          "named": true
1887        },
1888        {
1889          "type": "variadic_type",
1890          "named": true
1891        }
1892      ]
1893    }
1894  },
1895  {
1896    "type": "parameters",
1897    "named": true,
1898    "fields": {},
1899    "children": {
1900      "multiple": true,
1901      "required": false,
1902      "types": [
1903        {
1904          "type": "default_parameter",
1905          "named": true
1906        },
1907        {
1908          "type": "parameter",
1909          "named": true
1910        }
1911      ]
1912    }
1913  },
1914  {
1915    "type": "parenthesized_expression",
1916    "named": true,
1917    "fields": {},
1918    "children": {
1919      "multiple": false,
1920      "required": true,
1921      "types": [
1922        {
1923          "type": "expression",
1924          "named": true
1925        }
1926      ]
1927    }
1928  },
1929  {
1930    "type": "pointer_type",
1931    "named": true,
1932    "fields": {},
1933    "children": {
1934      "multiple": false,
1935      "required": true,
1936      "types": [
1937        {
1938          "type": "type",
1939          "named": true
1940        }
1941      ]
1942    }
1943  },
1944  {
1945    "type": "polymorphic_parameters",
1946    "named": true,
1947    "fields": {},
1948    "children": {
1949      "multiple": true,
1950      "required": true,
1951      "types": [
1952        {
1953          "type": "identifier",
1954          "named": true
1955        },
1956        {
1957          "type": "type",
1958          "named": true
1959        }
1960      ]
1961    }
1962  },
1963  {
1964    "type": "polymorphic_type",
1965    "named": true,
1966    "fields": {},
1967    "children": {
1968      "multiple": true,
1969      "required": true,
1970      "types": [
1971        {
1972          "type": "literal",
1973          "named": true
1974        },
1975        {
1976          "type": "type",
1977          "named": true
1978        }
1979      ]
1980    }
1981  },
1982  {
1983    "type": "procedure",
1984    "named": true,
1985    "fields": {},
1986    "children": {
1987      "multiple": true,
1988      "required": true,
1989      "types": [
1990        {
1991          "type": "block",
1992          "named": true
1993        },
1994        {
1995          "type": "calling_convention",
1996          "named": true
1997        },
1998        {
1999          "type": "named_type",
2000          "named": true
2001        },
2002        {
2003          "type": "parameters",
2004          "named": true
2005        },
2006        {
2007          "type": "tag",
2008          "named": true
2009        },
2010        {
2011          "type": "type",
2012          "named": true
2013        },
2014        {
2015          "type": "uninitialized",
2016          "named": true
2017        },
2018        {
2019          "type": "where_clause",
2020          "named": true
2021        }
2022      ]
2023    }
2024  },
2025  {
2026    "type": "procedure_declaration",
2027    "named": true,
2028    "fields": {},
2029    "children": {
2030      "multiple": true,
2031      "required": true,
2032      "types": [
2033        {
2034          "type": "attributes",
2035          "named": true
2036        },
2037        {
2038          "type": "expression",
2039          "named": true
2040        },
2041        {
2042          "type": "procedure",
2043          "named": true
2044        }
2045      ]
2046    }
2047  },
2048  {
2049    "type": "procedure_type",
2050    "named": true,
2051    "fields": {},
2052    "children": {
2053      "multiple": true,
2054      "required": true,
2055      "types": [
2056        {
2057          "type": "block",
2058          "named": true
2059        },
2060        {
2061          "type": "calling_convention",
2062          "named": true
2063        },
2064        {
2065          "type": "named_type",
2066          "named": true
2067        },
2068        {
2069          "type": "parameters",
2070          "named": true
2071        },
2072        {
2073          "type": "tag",
2074          "named": true
2075        },
2076        {
2077          "type": "type",
2078          "named": true
2079        },
2080        {
2081          "type": "uninitialized",
2082          "named": true
2083        },
2084        {
2085          "type": "where_clause",
2086          "named": true
2087        }
2088      ]
2089    }
2090  },
2091  {
2092    "type": "range_expression",
2093    "named": true,
2094    "fields": {},
2095    "children": {
2096      "multiple": true,
2097      "required": true,
2098      "types": [
2099        {
2100          "type": "expression",
2101          "named": true
2102        }
2103      ]
2104    }
2105  },
2106  {
2107    "type": "return_statement",
2108    "named": true,
2109    "fields": {},
2110    "children": {
2111      "multiple": true,
2112      "required": false,
2113      "types": [
2114        {
2115          "type": "expression",
2116          "named": true
2117        },
2118        {
2119          "type": "procedure_type",
2120          "named": true
2121        }
2122      ]
2123    }
2124  },
2125  {
2126    "type": "selector_call_expression",
2127    "named": true,
2128    "fields": {
2129      "function": {
2130        "multiple": false,
2131        "required": true,
2132        "types": [
2133          {
2134            "type": "expression",
2135            "named": true
2136          }
2137        ]
2138      }
2139    },
2140    "children": {
2141      "multiple": false,
2142      "required": true,
2143      "types": [
2144        {
2145          "type": "call_expression",
2146          "named": true
2147        }
2148      ]
2149    }
2150  },
2151  {
2152    "type": "slice_expression",
2153    "named": true,
2154    "fields": {
2155      "end": {
2156        "multiple": false,
2157        "required": false,
2158        "types": [
2159          {
2160            "type": "expression",
2161            "named": true
2162          }
2163        ]
2164      },
2165      "start": {
2166        "multiple": false,
2167        "required": false,
2168        "types": [
2169          {
2170            "type": "expression",
2171            "named": true
2172          }
2173        ]
2174      }
2175    },
2176    "children": {
2177      "multiple": false,
2178      "required": true,
2179      "types": [
2180        {
2181          "type": "expression",
2182          "named": true
2183        }
2184      ]
2185    }
2186  },
2187  {
2188    "type": "source_file",
2189    "named": true,
2190    "root": true,
2191    "fields": {},
2192    "children": {
2193      "multiple": true,
2194      "required": false,
2195      "types": [
2196        {
2197          "type": "declaration",
2198          "named": true
2199        }
2200      ]
2201    }
2202  },
2203  {
2204    "type": "specialized_type",
2205    "named": true,
2206    "fields": {},
2207    "children": {
2208      "multiple": true,
2209      "required": true,
2210      "types": [
2211        {
2212          "type": "type",
2213          "named": true
2214        }
2215      ]
2216    }
2217  },
2218  {
2219    "type": "string",
2220    "named": true,
2221    "fields": {},
2222    "children": {
2223      "multiple": true,
2224      "required": false,
2225      "types": [
2226        {
2227          "type": "escape_sequence",
2228          "named": true
2229        },
2230        {
2231          "type": "string_content",
2232          "named": true
2233        }
2234      ]
2235    }
2236  },
2237  {
2238    "type": "struct",
2239    "named": true,
2240    "fields": {},
2241    "children": {
2242      "multiple": true,
2243      "required": false,
2244      "types": [
2245        {
2246          "type": "expression",
2247          "named": true
2248        },
2249        {
2250          "type": "field_identifier",
2251          "named": true
2252        },
2253        {
2254          "type": "struct_field",
2255          "named": true
2256        },
2257        {
2258          "type": "type",
2259          "named": true
2260        }
2261      ]
2262    }
2263  },
2264  {
2265    "type": "struct_declaration",
2266    "named": true,
2267    "fields": {},
2268    "children": {
2269      "multiple": true,
2270      "required": true,
2271      "types": [
2272        {
2273          "type": "attributes",
2274          "named": true
2275        },
2276        {
2277          "type": "expression",
2278          "named": true
2279        },
2280        {
2281          "type": "field",
2282          "named": true
2283        },
2284        {
2285          "type": "number",
2286          "named": true
2287        },
2288        {
2289          "type": "polymorphic_parameters",
2290          "named": true
2291        },
2292        {
2293          "type": "where_clause",
2294          "named": true
2295        }
2296      ]
2297    }
2298  },
2299  {
2300    "type": "struct_field",
2301    "named": true,
2302    "fields": {},
2303    "children": {
2304      "multiple": true,
2305      "required": true,
2306      "types": [
2307        {
2308          "type": "expression",
2309          "named": true
2310        },
2311        {
2312          "type": "procedure_type",
2313          "named": true
2314        }
2315      ]
2316    }
2317  },
2318  {
2319    "type": "struct_member",
2320    "named": true,
2321    "fields": {},
2322    "children": {
2323      "multiple": true,
2324      "required": true,
2325      "types": [
2326        {
2327          "type": "identifier",
2328          "named": true
2329        },
2330        {
2331          "type": "string",
2332          "named": true
2333        },
2334        {
2335          "type": "tag",
2336          "named": true
2337        },
2338        {
2339          "type": "type",
2340          "named": true
2341        }
2342      ]
2343    }
2344  },
2345  {
2346    "type": "struct_type",
2347    "named": true,
2348    "fields": {},
2349    "children": {
2350      "multiple": true,
2351      "required": false,
2352      "types": [
2353        {
2354          "type": "number",
2355          "named": true
2356        },
2357        {
2358          "type": "polymorphic_parameters",
2359          "named": true
2360        },
2361        {
2362          "type": "struct_member",
2363          "named": true
2364        },
2365        {
2366          "type": "tag",
2367          "named": true
2368        }
2369      ]
2370    }
2371  },
2372  {
2373    "type": "switch_case",
2374    "named": true,
2375    "fields": {
2376      "condition": {
2377        "multiple": true,
2378        "required": false,
2379        "types": [
2380          {
2381            "type": "array_type",
2382            "named": true
2383          },
2384          {
2385            "type": "expression",
2386            "named": true
2387          },
2388          {
2389            "type": "pointer_type",
2390            "named": true
2391          }
2392        ]
2393      }
2394    },
2395    "children": {
2396      "multiple": true,
2397      "required": false,
2398      "types": [
2399        {
2400          "type": "statement",
2401          "named": true
2402        },
2403        {
2404          "type": "tag",
2405          "named": true
2406        }
2407      ]
2408    }
2409  },
2410  {
2411    "type": "switch_statement",
2412    "named": true,
2413    "fields": {
2414      "condition": {
2415        "multiple": true,
2416        "required": false,
2417        "types": [
2418          {
2419            "type": ";",
2420            "named": false
2421          },
2422          {
2423            "type": "assignment_statement",
2424            "named": true
2425          },
2426          {
2427            "type": "expression",
2428            "named": true
2429          }
2430        ]
2431      }
2432    },
2433    "children": {
2434      "multiple": true,
2435      "required": false,
2436      "types": [
2437        {
2438          "type": "switch_case",
2439          "named": true
2440        }
2441      ]
2442    }
2443  },
2444  {
2445    "type": "tagged_block",
2446    "named": true,
2447    "fields": {},
2448    "children": {
2449      "multiple": true,
2450      "required": true,
2451      "types": [
2452        {
2453          "type": "block",
2454          "named": true
2455        },
2456        {
2457          "type": "tag",
2458          "named": true
2459        }
2460      ]
2461    }
2462  },
2463  {
2464    "type": "ternary_expression",
2465    "named": true,
2466    "fields": {
2467      "alternative": {
2468        "multiple": false,
2469        "required": true,
2470        "types": [
2471          {
2472            "type": "expression",
2473            "named": true
2474          }
2475        ]
2476      },
2477      "condition": {
2478        "multiple": false,
2479        "required": true,
2480        "types": [
2481          {
2482            "type": "?",
2483            "named": false
2484          },
2485          {
2486            "type": "address",
2487            "named": true
2488          },
2489          {
2490            "type": "binary_expression",
2491            "named": true
2492          },
2493          {
2494            "type": "call_expression",
2495            "named": true
2496          },
2497          {
2498            "type": "cast_expression",
2499            "named": true
2500          },
2501          {
2502            "type": "distinct_type",
2503            "named": true
2504          },
2505          {
2506            "type": "identifier",
2507            "named": true
2508          },
2509          {
2510            "type": "in_expression",
2511            "named": true
2512          },
2513          {
2514            "type": "index_expression",
2515            "named": true
2516          },
2517          {
2518            "type": "literal",
2519            "named": true
2520          },
2521          {
2522            "type": "map_type",
2523            "named": true
2524          },
2525          {
2526            "type": "matrix_type",
2527            "named": true
2528          },
2529          {
2530            "type": "member_expression",
2531            "named": true
2532          },
2533          {
2534            "type": "or_break_expression",
2535            "named": true
2536          },
2537          {
2538            "type": "or_continue_expression",
2539            "named": true
2540          },
2541          {
2542            "type": "or_return_expression",
2543            "named": true
2544          },
2545          {
2546            "type": "parenthesized_expression",
2547            "named": true
2548          },
2549          {
2550            "type": "range_expression",
2551            "named": true
2552          },
2553          {
2554            "type": "selector_call_expression",
2555            "named": true
2556          },
2557          {
2558            "type": "slice_expression",
2559            "named": true
2560          },
2561          {
2562            "type": "ternary_expression",
2563            "named": true
2564          },
2565          {
2566            "type": "unary_expression",
2567            "named": true
2568          },
2569          {
2570            "type": "variadic_expression",
2571            "named": true
2572          }
2573        ]
2574      },
2575      "consequence": {
2576        "multiple": false,
2577        "required": true,
2578        "types": [
2579          {
2580            "type": "expression",
2581            "named": true
2582          }
2583        ]
2584      }
2585    }
2586  },
2587  {
2588    "type": "tuple_type",
2589    "named": true,
2590    "fields": {},
2591    "children": {
2592      "multiple": true,
2593      "required": false,
2594      "types": [
2595        {
2596          "type": "default_type",
2597          "named": true
2598        },
2599        {
2600          "type": "named_type",
2601          "named": true
2602        },
2603        {
2604          "type": "type",
2605          "named": true
2606        }
2607      ]
2608    }
2609  },
2610  {
2611    "type": "type",
2612    "named": true,
2613    "fields": {},
2614    "children": {
2615      "multiple": false,
2616      "required": false,
2617      "types": [
2618        {
2619          "type": "array_type",
2620          "named": true
2621        },
2622        {
2623          "type": "bit_field_type",
2624          "named": true
2625        },
2626        {
2627          "type": "bit_set_type",
2628          "named": true
2629        },
2630        {
2631          "type": "conditional_type",
2632          "named": true
2633        },
2634        {
2635          "type": "constant_type",
2636          "named": true
2637        },
2638        {
2639          "type": "distinct_type",
2640          "named": true
2641        },
2642        {
2643          "type": "empty_type",
2644          "named": true
2645        },
2646        {
2647          "type": "enum_type",
2648          "named": true
2649        },
2650        {
2651          "type": "field_type",
2652          "named": true
2653        },
2654        {
2655          "type": "identifier",
2656          "named": true
2657        },
2658        {
2659          "type": "map_type",
2660          "named": true
2661        },
2662        {
2663          "type": "matrix_type",
2664          "named": true
2665        },
2666        {
2667          "type": "pointer_type",
2668          "named": true
2669        },
2670        {
2671          "type": "polymorphic_type",
2672          "named": true
2673        },
2674        {
2675          "type": "procedure_type",
2676          "named": true
2677        },
2678        {
2679          "type": "specialized_type",
2680          "named": true
2681        },
2682        {
2683          "type": "struct_type",
2684          "named": true
2685        },
2686        {
2687          "type": "tuple_type",
2688          "named": true
2689        },
2690        {
2691          "type": "union_type",
2692          "named": true
2693        },
2694        {
2695          "type": "variadic_type",
2696          "named": true
2697        }
2698      ]
2699    }
2700  },
2701  {
2702    "type": "unary_expression",
2703    "named": true,
2704    "fields": {
2705      "argument": {
2706        "multiple": false,
2707        "required": true,
2708        "types": [
2709          {
2710            "type": "expression",
2711            "named": true
2712          }
2713        ]
2714      },
2715      "operator": {
2716        "multiple": false,
2717        "required": true,
2718        "types": [
2719          {
2720            "type": "!",
2721            "named": false
2722          },
2723          {
2724            "type": "&",
2725            "named": false
2726          },
2727          {
2728            "type": "+",
2729            "named": false
2730          },
2731          {
2732            "type": "-",
2733            "named": false
2734          },
2735          {
2736            "type": "~",
2737            "named": false
2738          }
2739        ]
2740      }
2741    }
2742  },
2743  {
2744    "type": "union_declaration",
2745    "named": true,
2746    "fields": {},
2747    "children": {
2748      "multiple": true,
2749      "required": true,
2750      "types": [
2751        {
2752          "type": "attributes",
2753          "named": true
2754        },
2755        {
2756          "type": "expression",
2757          "named": true
2758        },
2759        {
2760          "type": "polymorphic_parameters",
2761          "named": true
2762        },
2763        {
2764          "type": "type",
2765          "named": true
2766        }
2767      ]
2768    }
2769  },
2770  {
2771    "type": "union_type",
2772    "named": true,
2773    "fields": {},
2774    "children": {
2775      "multiple": true,
2776      "required": true,
2777      "types": [
2778        {
2779          "type": "type",
2780          "named": true
2781        }
2782      ]
2783    }
2784  },
2785  {
2786    "type": "update_statement",
2787    "named": true,
2788    "fields": {},
2789    "children": {
2790      "multiple": true,
2791      "required": true,
2792      "types": [
2793        {
2794          "type": "expression",
2795          "named": true
2796        }
2797      ]
2798    }
2799  },
2800  {
2801    "type": "using_statement",
2802    "named": true,
2803    "fields": {},
2804    "children": {
2805      "multiple": false,
2806      "required": true,
2807      "types": [
2808        {
2809          "type": "expression",
2810          "named": true
2811        }
2812      ]
2813    }
2814  },
2815  {
2816    "type": "var_declaration",
2817    "named": true,
2818    "fields": {},
2819    "children": {
2820      "multiple": true,
2821      "required": true,
2822      "types": [
2823        {
2824          "type": "attributes",
2825          "named": true
2826        },
2827        {
2828          "type": "expression",
2829          "named": true
2830        },
2831        {
2832          "type": "type",
2833          "named": true
2834        }
2835      ]
2836    }
2837  },
2838  {
2839    "type": "variable_declaration",
2840    "named": true,
2841    "fields": {},
2842    "children": {
2843      "multiple": true,
2844      "required": true,
2845      "types": [
2846        {
2847          "type": "attributes",
2848          "named": true
2849        },
2850        {
2851          "type": "expression",
2852          "named": true
2853        },
2854        {
2855          "type": "procedure",
2856          "named": true
2857        }
2858      ]
2859    }
2860  },
2861  {
2862    "type": "variadic_expression",
2863    "named": true,
2864    "fields": {},
2865    "children": {
2866      "multiple": false,
2867      "required": true,
2868      "types": [
2869        {
2870          "type": "expression",
2871          "named": true
2872        }
2873      ]
2874    }
2875  },
2876  {
2877    "type": "variadic_type",
2878    "named": true,
2879    "fields": {},
2880    "children": {
2881      "multiple": false,
2882      "required": true,
2883      "types": [
2884        {
2885          "type": "type",
2886          "named": true
2887        }
2888      ]
2889    }
2890  },
2891  {
2892    "type": "when_statement",
2893    "named": true,
2894    "fields": {},
2895    "children": {
2896      "multiple": true,
2897      "required": true,
2898      "types": [
2899        {
2900          "type": "else_clause",
2901          "named": true
2902        },
2903        {
2904          "type": "else_when_clause",
2905          "named": true
2906        },
2907        {
2908          "type": "expression",
2909          "named": true
2910        },
2911        {
2912          "type": "statement",
2913          "named": true
2914        }
2915      ]
2916    }
2917  },
2918  {
2919    "type": "where_clause",
2920    "named": true,
2921    "fields": {},
2922    "children": {
2923      "multiple": true,
2924      "required": true,
2925      "types": [
2926        {
2927          "type": "expression",
2928          "named": true
2929        }
2930      ]
2931    }
2932  },
2933  {
2934    "type": "!",
2935    "named": false
2936  },
2937  {
2938    "type": "!=",
2939    "named": false
2940  },
2941  {
2942    "type": "\"",
2943    "named": false
2944  },
2945  {
2946    "type": "\"c\"",
2947    "named": false
2948  },
2949  {
2950    "type": "\"cdecl\"",
2951    "named": false
2952  },
2953  {
2954    "type": "\"contextless\"",
2955    "named": false
2956  },
2957  {
2958    "type": "\"fast\"",
2959    "named": false
2960  },
2961  {
2962    "type": "\"fastcall\"",
2963    "named": false
2964  },
2965  {
2966    "type": "\"none\"",
2967    "named": false
2968  },
2969  {
2970    "type": "\"odin\"",
2971    "named": false
2972  },
2973  {
2974    "type": "\"std\"",
2975    "named": false
2976  },
2977  {
2978    "type": "\"stdcall\"",
2979    "named": false
2980  },
2981  {
2982    "type": "\"system\"",
2983    "named": false
2984  },
2985  {
2986    "type": "#+",
2987    "named": false
2988  },
2989  {
2990    "type": "$",
2991    "named": false
2992  },
2993  {
2994    "type": "%",
2995    "named": false
2996  },
2997  {
2998    "type": "%%",
2999    "named": false
3000  },
3001  {
3002    "type": "%=",
3003    "named": false
3004  },
3005  {
3006    "type": "&",
3007    "named": false
3008  },
3009  {
3010    "type": "&&",
3011    "named": false
3012  },
3013  {
3014    "type": "&&=",
3015    "named": false
3016  },
3017  {
3018    "type": "&=",
3019    "named": false
3020  },
3021  {
3022    "type": "&~",
3023    "named": false
3024  },
3025  {
3026    "type": "&~=",
3027    "named": false
3028  },
3029  {
3030    "type": "'",
3031    "named": false
3032  },
3033  {
3034    "type": "(",
3035    "named": false
3036  },
3037  {
3038    "type": ")",
3039    "named": false
3040  },
3041  {
3042    "type": "*",
3043    "named": false
3044  },
3045  {
3046    "type": "*=",
3047    "named": false
3048  },
3049  {
3050    "type": "+",
3051    "named": false
3052  },
3053  {
3054    "type": "+=",
3055    "named": false
3056  },
3057  {
3058    "type": ",",
3059    "named": false
3060  },
3061  {
3062    "type": "-",
3063    "named": false
3064  },
3065  {
3066    "type": "-=",
3067    "named": false
3068  },
3069  {
3070    "type": "->",
3071    "named": false
3072  },
3073  {
3074    "type": ".",
3075    "named": false
3076  },
3077  {
3078    "type": "..",
3079    "named": false
3080  },
3081  {
3082    "type": "...",
3083    "named": false
3084  },
3085  {
3086    "type": "..<",
3087    "named": false
3088  },
3089  {
3090    "type": "..=",
3091    "named": false
3092  },
3093  {
3094    "type": "/",
3095    "named": false
3096  },
3097  {
3098    "type": "/=",
3099    "named": false
3100  },
3101  {
3102    "type": ":",
3103    "named": false
3104  },
3105  {
3106    "type": "::",
3107    "named": false
3108  },
3109  {
3110    "type": ":=",
3111    "named": false
3112  },
3113  {
3114    "type": ";",
3115    "named": false
3116  },
3117  {
3118    "type": "<",
3119    "named": false
3120  },
3121  {
3122    "type": "<<",
3123    "named": false
3124  },
3125  {
3126    "type": "<<=",
3127    "named": false
3128  },
3129  {
3130    "type": "<=",
3131    "named": false
3132  },
3133  {
3134    "type": "=",
3135    "named": false
3136  },
3137  {
3138    "type": "==",
3139    "named": false
3140  },
3141  {
3142    "type": ">",
3143    "named": false
3144  },
3145  {
3146    "type": ">=",
3147    "named": false
3148  },
3149  {
3150    "type": ">>",
3151    "named": false
3152  },
3153  {
3154    "type": ">>=",
3155    "named": false
3156  },
3157  {
3158    "type": "?",
3159    "named": false
3160  },
3161  {
3162    "type": "@",
3163    "named": false
3164  },
3165  {
3166    "type": "[",
3167    "named": false
3168  },
3169  {
3170    "type": "]",
3171    "named": false
3172  },
3173  {
3174    "type": "^",
3175    "named": false
3176  },
3177  {
3178    "type": "^=",
3179    "named": false
3180  },
3181  {
3182    "type": "`",
3183    "named": false
3184  },
3185  {
3186    "type": "auto_cast",
3187    "named": false
3188  },
3189  {
3190    "type": "bit_field",
3191    "named": false
3192  },
3193  {
3194    "type": "bit_set",
3195    "named": false
3196  },
3197  {
3198    "type": "block_comment",
3199    "named": true
3200  },
3201  {
3202    "type": "break",
3203    "named": false
3204  },
3205  {
3206    "type": "case",
3207    "named": false
3208  },
3209  {
3210    "type": "cast",
3211    "named": false
3212  },
3213  {
3214    "type": "comment",
3215    "named": true
3216  },
3217  {
3218    "type": "continue",
3219    "named": false
3220  },
3221  {
3222    "type": "defer",
3223    "named": false
3224  },
3225  {
3226    "type": "distinct",
3227    "named": false
3228  },
3229  {
3230    "type": "do",
3231    "named": false
3232  },
3233  {
3234    "type": "dynamic",
3235    "named": false
3236  },
3237  {
3238    "type": "else",
3239    "named": false
3240  },
3241  {
3242    "type": "enum",
3243    "named": false
3244  },
3245  {
3246    "type": "escape_sequence",
3247    "named": true
3248  },
3249  {
3250    "type": "fallthrough_statement",
3251    "named": true
3252  },
3253  {
3254    "type": "false",
3255    "named": false
3256  },
3257  {
3258    "type": "float",
3259    "named": true
3260  },
3261  {
3262    "type": "for",
3263    "named": false
3264  },
3265  {
3266    "type": "foreign",
3267    "named": false
3268  },
3269  {
3270    "type": "identifier",
3271    "named": true
3272  },
3273  {
3274    "type": "if",
3275    "named": false
3276  },
3277  {
3278    "type": "import",
3279    "named": false
3280  },
3281  {
3282    "type": "in",
3283    "named": false
3284  },
3285  {
3286    "type": "map",
3287    "named": false
3288  },
3289  {
3290    "type": "matrix",
3291    "named": false
3292  },
3293  {
3294    "type": "nil",
3295    "named": true
3296  },
3297  {
3298    "type": "not_in",
3299    "named": false
3300  },
3301  {
3302    "type": "number",
3303    "named": true
3304  },
3305  {
3306    "type": "or_break",
3307    "named": false
3308  },
3309  {
3310    "type": "or_continue",
3311    "named": false
3312  },
3313  {
3314    "type": "or_else",
3315    "named": false
3316  },
3317  {
3318    "type": "or_return",
3319    "named": false
3320  },
3321  {
3322    "type": "package",
3323    "named": false
3324  },
3325  {
3326    "type": "proc",
3327    "named": false
3328  },
3329  {
3330    "type": "return",
3331    "named": false
3332  },
3333  {
3334    "type": "string_content",
3335    "named": true
3336  },
3337  {
3338    "type": "struct",
3339    "named": false
3340  },
3341  {
3342    "type": "switch",
3343    "named": false
3344  },
3345  {
3346    "type": "tag",
3347    "named": true
3348  },
3349  {
3350    "type": "transmute",
3351    "named": false
3352  },
3353  {
3354    "type": "true",
3355    "named": false
3356  },
3357  {
3358    "type": "uninitialized",
3359    "named": true
3360  },
3361  {
3362    "type": "union",
3363    "named": false
3364  },
3365  {
3366    "type": "using",
3367    "named": false
3368  },
3369  {
3370    "type": "when",
3371    "named": false
3372  },
3373  {
3374    "type": "where",
3375    "named": false
3376  },
3377  {
3378    "type": "{",
3379    "named": false
3380  },
3381  {
3382    "type": "|",
3383    "named": false
3384  },
3385  {
3386    "type": "|=",
3387    "named": false
3388  },
3389  {
3390    "type": "||",
3391    "named": false
3392  },
3393  {
3394    "type": "||=",
3395    "named": false
3396  },
3397  {
3398    "type": "}",
3399    "named": false
3400  },
3401  {
3402    "type": "~",
3403    "named": false
3404  },
3405  {
3406    "type": "~=",
3407    "named": false
3408  }
3409]