pub const NODE_TYPES: &str = "[\n  {\n    \"type\": \"arrInitializer\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"arrInitializer\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"recInitializer\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"asm\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"asmBody\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAsm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"asmBody\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"assignment\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varAssignDef\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"kAssign\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kAssignAdd\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kAssignDiv\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kAssignMul\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kAssignSub\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"block\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"asm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"case\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for\",\n          \"named\": true\n        },\n        {\n          \"type\": \"foreach\",\n          \"named\": true\n        },\n        {\n          \"type\": \"goto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ifElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kBegin\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raise\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try\",\n          \"named\": true\n        },\n        {\n          \"type\": \"varDef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while\",\n          \"named\": true\n        },\n        {\n          \"type\": \"with\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"blockTr\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"asm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"case\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for\",\n          \"named\": true\n        },\n        {\n          \"type\": \"foreach\",\n          \"named\": true\n        },\n        {\n          \"type\": \"goto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ifElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kBegin\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raise\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try\",\n          \"named\": true\n        },\n        {\n          \"type\": \"varDef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while\",\n          \"named\": true\n        },\n        {\n          \"type\": \"with\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"case\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"asm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"case\",\n          \"named\": true\n        },\n        {\n          \"type\": \"caseCase\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for\",\n          \"named\": true\n        },\n        {\n          \"type\": \"foreach\",\n          \"named\": true\n        },\n        {\n          \"type\": \"goto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ifElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kCase\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raise\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try\",\n          \"named\": true\n        },\n        {\n          \"type\": \"varDef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while\",\n          \"named\": true\n        },\n        {\n          \"type\": \"with\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"caseCase\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      },\n      \"label\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"caseLabel\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"caseLabel\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declArg\",\n    \"named\": true,\n    \"fields\": {\n      \"defaultValue\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"defaultValue\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"kConst\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kConstref\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOut\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kVar\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declArgs\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"declArg\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declArray\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kArray\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPacked\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declClass\",\n    \"named\": true,\n    \"fields\": {\n      \"parent\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"(\",\n            \"named\": false\n          },\n          {\n            \"type\": \")\",\n            \"named\": false\n          },\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declField\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProp\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declSection\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVariant\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAbstract\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kExternal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kName\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kObjccategory\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kObjcclass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kObjcprotocol\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kObject\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPacked\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kRecord\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSealed\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declConst\",\n    \"named\": true,\n    \"fields\": {\n      \"attribute\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"procAttribute\",\n            \"named\": true\n          },\n          {\n            \"type\": \"procExternal\",\n            \"named\": true\n          }\n        ]\n      },\n      \"defaultValue\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"defaultValue\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"rttiAttributes\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declConsts\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declConst\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kConst\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kResourcestring\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declEnum\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declEnumValue\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declEnumValue\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"defaultValue\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"declExport\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"genericDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"genericTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kIndex\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kName\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declExports\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declExport\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kExports\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declField\",\n    \"named\": true,\n    \"fields\": {\n      \"defaultValue\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"defaultValue\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"rttiAttributes\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declFile\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kFile\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declHelper\",\n    \"named\": true,\n    \"fields\": {\n      \"parent\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"(\",\n            \"named\": false\n          },\n          {\n            \"type\": \")\",\n            \"named\": false\n          },\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declField\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProp\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declSection\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVariant\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFor\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kHelper\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kRecord\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kType\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typeref\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declIntf\",\n    \"named\": true,\n    \"fields\": {\n      \"guid\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"guid\",\n            \"named\": true\n          }\n        ]\n      },\n      \"parent\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"(\",\n            \"named\": false\n          },\n          {\n            \"type\": \")\",\n            \"named\": false\n          },\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declField\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProp\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declSection\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVariant\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDispInterface\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kInterface\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPacked\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declLabel\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"declLabels\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declLabel\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLabel\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declMetaClass\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typeref\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declProc\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"declArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"assign\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"defaultValue\",\n            \"named\": true\n          }\n        ]\n      },\n      \"attribute\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"procAttribute\",\n            \"named\": true\n          },\n          {\n            \"type\": \"procExternal\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"genericDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"genericTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"operatorName\",\n            \"named\": true\n          }\n        ]\n      },\n      \"resultName\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"type\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kConstructor\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDestructor\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kForward\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFunction\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kGeneric\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOperator\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kProcedure\",\n          \"named\": true\n        },\n        {\n          \"type\": \"procExternal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"rttiAttributes\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declProcRef\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"declArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kFunction\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kObject\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kProcedure\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kReference\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTo\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declProp\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"declPropArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"attribute\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"procAttribute\",\n            \"named\": true\n          },\n          {\n            \"type\": \"procExternal\",\n            \"named\": true\n          }\n        ]\n      },\n      \"defaultValue\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"dispid\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"getter\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"implements\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"index\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"setter\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"stored\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDefault\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDispId\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kImplements\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kIndex\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNodefault\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kProperty\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kRead\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kStored\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kWrite\",\n          \"named\": true\n        },\n        {\n          \"type\": \"rttiAttributes\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declPropArgs\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"declArg\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declSection\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declField\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProp\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOptional\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPrivate\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kProtected\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPublic\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPublished\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kRequired\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kStrict\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declSet\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kOf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSet\",\n          \"named\": true\n        },\n        {\n          \"type\": \"type\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declString\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declType\",\n    \"named\": true,\n    \"fields\": {\n      \"attribute\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"procAttribute\",\n            \"named\": true\n          },\n          {\n            \"type\": \"procExternal\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"genericDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"genericTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"declClass\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declHelper\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declIntf\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kType\",\n            \"named\": true\n          },\n          {\n            \"type\": \"type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kEq\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kGeneric\",\n          \"named\": true\n        },\n        {\n          \"type\": \"rttiAttributes\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declTypes\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declType\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kType\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declUses\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kUses\",\n          \"named\": true\n        },\n        {\n          \"type\": \"moduleName\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declVar\",\n    \"named\": true,\n    \"fields\": {\n      \"attribute\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"procAttribute\",\n            \"named\": true\n          },\n          {\n            \"type\": \"procExternal\",\n            \"named\": true\n          }\n        ]\n      },\n      \"defaultValue\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"defaultValue\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"type\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAbsolute\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"procExternal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"rttiAttributes\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declVariant\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \":\",\n            \"named\": false\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declVariantClause\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kCase\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOf\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declVariantClause\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"caseLabel\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declField\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVariant\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"declVars\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declVar\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kThreadvar\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kVar\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"defProc\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          }\n        ]\n      },\n      \"header\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"declProc\",\n            \"named\": true\n          }\n        ]\n      },\n      \"local\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"blockTr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declConsts\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declExports\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declLabels\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declProc\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declTypes\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declUses\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declVars\",\n            \"named\": true\n          },\n          {\n            \"type\": \"defProc\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"pp\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"defaultValue\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"arrInitializer\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEq\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"recInitializer\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exceptionElse\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"asm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"case\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for\",\n          \"named\": true\n        },\n        {\n          \"type\": \"foreach\",\n          \"named\": true\n        },\n        {\n          \"type\": \"goto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ifElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raise\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try\",\n          \"named\": true\n        },\n        {\n          \"type\": \"varDef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while\",\n          \"named\": true\n        },\n        {\n          \"type\": \"with\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exceptionHandler\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      },\n      \"exception\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      },\n      \"variable\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \":\",\n            \"named\": false\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kDo\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOn\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exprArgs\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"legacyFormat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exprBinary\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"kAdd\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kAnd\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kAs\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kDiv\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kEq\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFdiv\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kGt\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kGte\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kIn\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kIs\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kLt\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kLte\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kMod\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kMul\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNeq\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kOr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kShl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kShr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSub\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kXor\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"exprBrackets\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"range\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exprCall\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"exprArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"entity\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"exprDot\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"kDot\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"exprParens\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exprSubscript\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"entity\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"exprTpl\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"entity\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kGt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLt\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"exprUnary\",\n    \"named\": true,\n    \"fields\": {\n      \"operand\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"kAdd\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kAt\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kHat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSub\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"finalization\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"asm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"case\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for\",\n          \"named\": true\n        },\n        {\n          \"type\": \"foreach\",\n          \"named\": true\n        },\n        {\n          \"type\": \"goto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ifElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFinalization\",\n          \"named\": true\n        },\n        {\n          \"type\": \"label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raise\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try\",\n          \"named\": true\n        },\n        {\n          \"type\": \"varDef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while\",\n          \"named\": true\n        },\n        {\n          \"type\": \"with\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"for\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      },\n      \"end\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"start\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kDo\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDownto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFor\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTo\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"foreach\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      },\n      \"iterable\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"iterator\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kDo\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFor\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kIn\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"genericArg\",\n    \"named\": true,\n    \"fields\": {\n      \"defaultValue\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"defaultValue\",\n            \"named\": true\n          }\n        ]\n      },\n      \"name\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \",\",\n            \"named\": false\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \":\",\n            \"named\": false\n          },\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"genericArgs\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"genericArg\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"genericDot\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"genericDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"genericTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"kDot\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"genericDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"genericTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"operatorName\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"genericTpl\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"genericArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"entity\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"genericDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"genericTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kGt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLt\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"goto\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kGoto\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"guid\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"if\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"then\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kIf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kThen\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"ifElse\",\n    \"named\": true,\n    \"fields\": {\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      },\n      \"else\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      },\n      \"then\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kIf\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kThen\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"implementation\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"blockTr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declExports\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declLabels\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declUses\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"defProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kImplementation\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"inherited\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kInherited\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"initialization\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"asm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"case\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for\",\n          \"named\": true\n        },\n        {\n          \"type\": \"foreach\",\n          \"named\": true\n        },\n        {\n          \"type\": \"goto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ifElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kInitialization\",\n          \"named\": true\n        },\n        {\n          \"type\": \"label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raise\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try\",\n          \"named\": true\n        },\n        {\n          \"type\": \"varDef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while\",\n          \"named\": true\n        },\n        {\n          \"type\": \"with\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"interface\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declExports\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declLabels\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProp\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declUses\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kInterface\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"kDot\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"kEndDot\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"label\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"lambda\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"declArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"body\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          }\n        ]\n      },\n      \"local\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"blockTr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declConsts\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declExports\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declLabels\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declProc\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declTypes\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declUses\",\n            \"named\": true\n          },\n          {\n            \"type\": \"declVars\",\n            \"named\": true\n          },\n          {\n            \"type\": \"defProc\",\n            \"named\": true\n          }\n        ]\n      },\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kFunction\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kProcedure\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"legacyFormat\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"library\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"blockTr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declExports\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declLabels\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declUses\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"defProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEndDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLibrary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"moduleName\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"literalChar\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"literalNumber\",\n    \"named\": true,\n    \"fields\": {}\n  },\n  {\n    \"type\": \"literalString\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"literalChar\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"moduleName\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDot\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"operatorName\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kAdd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAssign\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDiv\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEq\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFdiv\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kGt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kGte\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kIn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLte\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kMod\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kMul\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNeq\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kShl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kShr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSub\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kXor\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"procAttribute\",\n    \"named\": true,\n    \"fields\": {\n      \"dispid\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kDispId\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAbstract\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAlias\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kAssembler\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kCdecl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kCppdecl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kCvar\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDefault\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDeprecated\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDynamic\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kExperimental\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kExport\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFar\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kHardfloat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kInline\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kInterrupt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kIocheck\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLocal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kMessage\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kMs_abi_cdecl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kMs_abi_default\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kMwpascal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kName\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNear\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNodefault\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNoreturn\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNostackframe\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOverload\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kOverride\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPascal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPlatform\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kPublic\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kRegister\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kReintroduce\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSafecall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSaveregisters\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSoftfloat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kStatic\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kStdcall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSysv_abi_cdecl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSysv_abi_default\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kUnimplemented\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kVarargs\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kVectorcall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kVirtual\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kWinapi\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"procExternal\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDelayed\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kExternal\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kIndex\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kName\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"program\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"blockTr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declExports\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declLabels\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declUses\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"defProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEndDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kProgram\",\n          \"named\": true\n        },\n        {\n          \"type\": \"moduleName\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"raise\",\n    \"named\": true,\n    \"fields\": {\n      \"exception\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": false,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kRaise\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"range\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"recInitializer\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"recInitializerField\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"recInitializerField\",\n    \"named\": true,\n    \"fields\": {\n      \"name\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          }\n        ]\n      },\n      \"value\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"arrInitializer\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          },\n          {\n            \"type\": \"recInitializer\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"repeat\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"statements\",\n            \"named\": true\n          }\n        ]\n      },\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kRepeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kUntil\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"root\",\n    \"named\": true,\n    \"root\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"blockTr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declConsts\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declExports\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declLabels\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declTypes\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declUses\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declVars\",\n          \"named\": true\n        },\n        {\n          \"type\": \"defProc\",\n          \"named\": true\n        },\n        {\n          \"type\": \"library\",\n          \"named\": true\n        },\n        {\n          \"type\": \"program\",\n          \"named\": true\n        },\n        {\n          \"type\": \"unit\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"rttiAttributes\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"statement\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"statements\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": false,\n      \"types\": [\n        {\n          \"type\": \"asm\",\n          \"named\": true\n        },\n        {\n          \"type\": \"assignment\",\n          \"named\": true\n        },\n        {\n          \"type\": \"block\",\n          \"named\": true\n        },\n        {\n          \"type\": \"case\",\n          \"named\": true\n        },\n        {\n          \"type\": \"for\",\n          \"named\": true\n        },\n        {\n          \"type\": \"foreach\",\n          \"named\": true\n        },\n        {\n          \"type\": \"goto\",\n          \"named\": true\n        },\n        {\n          \"type\": \"if\",\n          \"named\": true\n        },\n        {\n          \"type\": \"ifElse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"label\",\n          \"named\": true\n        },\n        {\n          \"type\": \"raise\",\n          \"named\": true\n        },\n        {\n          \"type\": \"repeat\",\n          \"named\": true\n        },\n        {\n          \"type\": \"statement\",\n          \"named\": true\n        },\n        {\n          \"type\": \"try\",\n          \"named\": true\n        },\n        {\n          \"type\": \"varDef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"while\",\n          \"named\": true\n        },\n        {\n          \"type\": \"with\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"try\",\n    \"named\": true,\n    \"fields\": {\n      \"except\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"exceptionElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exceptionHandler\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kExcept\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statements\",\n            \"named\": true\n          }\n        ]\n      },\n      \"finally\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"kFinally\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statements\",\n            \"named\": true\n          }\n        ]\n      },\n      \"try\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"statements\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTry\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"type\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"declArray\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declEnum\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declFile\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declMetaClass\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declProcRef\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declSet\",\n          \"named\": true\n        },\n        {\n          \"type\": \"declString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"pp\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typeref\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"typeref\",\n    \"named\": true,\n    \"fields\": {\n      \"_dummy\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"exprBinary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprBrackets\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprCall\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprParens\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprSubscript\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprTpl\",\n          \"named\": true\n        },\n        {\n          \"type\": \"exprUnary\",\n          \"named\": true\n        },\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"inherited\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kDeprecated\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kFalse\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kNil\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kSpecialize\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kTrue\",\n          \"named\": true\n        },\n        {\n          \"type\": \"lambda\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalNumber\",\n          \"named\": true\n        },\n        {\n          \"type\": \"literalString\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typerefDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typerefPtr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typerefTpl\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"typerefArgs\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typerefDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typerefPtr\",\n          \"named\": true\n        },\n        {\n          \"type\": \"typerefTpl\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"typerefDot\",\n    \"named\": true,\n    \"fields\": {\n      \"lhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefPtr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefTpl\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"kDot\",\n            \"named\": true\n          }\n        ]\n      },\n      \"rhs\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefPtr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefTpl\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"typerefPtr\",\n    \"named\": true,\n    \"fields\": {\n      \"operand\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefPtr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefTpl\",\n            \"named\": true\n          }\n        ]\n      },\n      \"operator\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"kHat\",\n            \"named\": true\n          }\n        ]\n      }\n    }\n  },\n  {\n    \"type\": \"typerefTpl\",\n    \"named\": true,\n    \"fields\": {\n      \"args\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"typerefArgs\",\n            \"named\": true\n          }\n        ]\n      },\n      \"entity\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefPtr\",\n            \"named\": true\n          },\n          {\n            \"type\": \"typerefTpl\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kGt\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kLt\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"unit\",\n    \"named\": true,\n    \"fields\": {},\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"finalization\",\n          \"named\": true\n        },\n        {\n          \"type\": \"implementation\",\n          \"named\": true\n        },\n        {\n          \"type\": \"initialization\",\n          \"named\": true\n        },\n        {\n          \"type\": \"interface\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEnd\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kEndDot\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kUnit\",\n          \"named\": true\n        },\n        {\n          \"type\": \"moduleName\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"varAssignDef\",\n    \"named\": true,\n    \"fields\": {\n      \"type\": {\n        \"multiple\": false,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kVar\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"varDef\",\n    \"named\": true,\n    \"fields\": {\n      \"type\": {\n        \"multiple\": false,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"typeref\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"identifier\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kVar\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"while\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      },\n      \"condition\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kDo\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kWhile\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"with\",\n    \"named\": true,\n    \"fields\": {\n      \"body\": {\n        \"multiple\": true,\n        \"required\": false,\n        \"types\": [\n          {\n            \"type\": \";\",\n            \"named\": false\n          },\n          {\n            \"type\": \"asm\",\n            \"named\": true\n          },\n          {\n            \"type\": \"assignment\",\n            \"named\": true\n          },\n          {\n            \"type\": \"block\",\n            \"named\": true\n          },\n          {\n            \"type\": \"case\",\n            \"named\": true\n          },\n          {\n            \"type\": \"for\",\n            \"named\": true\n          },\n          {\n            \"type\": \"foreach\",\n            \"named\": true\n          },\n          {\n            \"type\": \"goto\",\n            \"named\": true\n          },\n          {\n            \"type\": \"if\",\n            \"named\": true\n          },\n          {\n            \"type\": \"ifElse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"raise\",\n            \"named\": true\n          },\n          {\n            \"type\": \"repeat\",\n            \"named\": true\n          },\n          {\n            \"type\": \"statement\",\n            \"named\": true\n          },\n          {\n            \"type\": \"try\",\n            \"named\": true\n          },\n          {\n            \"type\": \"varDef\",\n            \"named\": true\n          },\n          {\n            \"type\": \"while\",\n            \"named\": true\n          },\n          {\n            \"type\": \"with\",\n            \"named\": true\n          }\n        ]\n      },\n      \"entity\": {\n        \"multiple\": true,\n        \"required\": true,\n        \"types\": [\n          {\n            \"type\": \"exprBinary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprBrackets\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprCall\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprDot\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprParens\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprSubscript\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprTpl\",\n            \"named\": true\n          },\n          {\n            \"type\": \"exprUnary\",\n            \"named\": true\n          },\n          {\n            \"type\": \"identifier\",\n            \"named\": true\n          },\n          {\n            \"type\": \"inherited\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kFalse\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kNil\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kSpecialize\",\n            \"named\": true\n          },\n          {\n            \"type\": \"kTrue\",\n            \"named\": true\n          },\n          {\n            \"type\": \"lambda\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalNumber\",\n            \"named\": true\n          },\n          {\n            \"type\": \"literalString\",\n            \"named\": true\n          }\n        ]\n      }\n    },\n    \"children\": {\n      \"multiple\": true,\n      \"required\": true,\n      \"types\": [\n        {\n          \"type\": \"kDo\",\n          \"named\": true\n        },\n        {\n          \"type\": \"kWith\",\n          \"named\": true\n        }\n      ]\n    }\n  },\n  {\n    \"type\": \"#\",\n    \"named\": false\n  },\n  {\n    \"type\": \"(\",\n    \"named\": false\n  },\n  {\n    \"type\": \")\",\n    \"named\": false\n  },\n  {\n    \"type\": \",\",\n    \"named\": false\n  },\n  {\n    \"type\": \".\",\n    \"named\": false\n  },\n  {\n    \"type\": \"..\",\n    \"named\": false\n  },\n  {\n    \"type\": \":\",\n    \"named\": false\n  },\n  {\n    \"type\": \";\",\n    \"named\": false\n  },\n  {\n    \"type\": \"[\",\n    \"named\": false\n  },\n  {\n    \"type\": \"]\",\n    \"named\": false\n  },\n  {\n    \"type\": \"comment\",\n    \"named\": true\n  },\n  {\n    \"type\": \"identifier\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAbsolute\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAbstract\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAdd\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAlias\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAnd\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kArray\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAs\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAsm\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAssembler\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAssign\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAssignAdd\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAssignDiv\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAssignMul\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAssignSub\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kAt\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kBegin\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kCase\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kCdecl\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kClass\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kConst\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kConstref\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kConstructor\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kCppdecl\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kCvar\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDefault\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDelayed\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDeprecated\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDestructor\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDispId\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDispInterface\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDiv\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDo\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDownto\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kDynamic\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kElse\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kEnd\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kEq\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kExcept\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kExperimental\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kExport\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kExports\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kExternal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFalse\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFar\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFdiv\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFile\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFinalization\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFinally\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFor\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kForward\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kFunction\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kGeneric\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kGoto\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kGt\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kGte\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kHardfloat\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kHat\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kHelper\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kIf\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kImplementation\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kImplements\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kIn\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kIndex\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kInherited\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kInitialization\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kInline\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kInterface\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kInterrupt\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kIocheck\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kIs\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kLabel\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kLibrary\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kLocal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kLt\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kLte\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kMessage\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kMod\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kMs_abi_cdecl\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kMs_abi_default\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kMul\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kMwpascal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kName\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kNear\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kNeq\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kNil\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kNodefault\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kNoreturn\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kNostackframe\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kNot\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kObjccategory\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kObjcclass\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kObjcprotocol\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kObject\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOf\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOn\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOperator\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOptional\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOr\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOut\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOverload\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kOverride\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kPacked\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kPascal\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kPlatform\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kPrivate\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kProcedure\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kProgram\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kProperty\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kProtected\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kPublic\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kPublished\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kRaise\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kRead\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kRecord\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kReference\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kRegister\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kReintroduce\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kRepeat\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kRequired\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kResourcestring\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSafecall\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSaveregisters\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSealed\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSet\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kShl\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kShr\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSoftfloat\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSpecialize\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kStatic\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kStdcall\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kStored\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kStrict\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kString\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSub\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSysv_abi_cdecl\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kSysv_abi_default\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kThen\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kThreadvar\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kTo\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kTrue\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kTry\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kType\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kUnimplemented\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kUnit\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kUntil\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kUses\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kVar\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kVarargs\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kVectorcall\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kVirtual\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kWhile\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kWinapi\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kWith\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kWrite\",\n    \"named\": true\n  },\n  {\n    \"type\": \"kXor\",\n    \"named\": true\n  },\n  {\n    \"type\": \"pp\",\n    \"named\": true\n  }\n]";
Expand description

The content of the node-types.json file for this grammar.